Skip to content
Snippets Groups Projects
Commit 21e49b9e authored by Marco Zimmer's avatar Marco Zimmer
Browse files

+exp repair for cloning/saving stages -- needs testing

parent 036a8d5a
No related branches found
No related tags found
No related merge requests found
......@@ -52,12 +52,46 @@ private static List<Directories>
public Stage()
{
solution = new SolutionOrganizer();
player_record = new PlayerRecord(record_name);
player_record_list = new Dictionary<string, PlayerRecord>();
InitOOP();
}
public Stage(string category, int number, string name, string description, string scene, bool local = true)
{
InitFields(category, number, name, description, scene, local);
InitOOP();
}
public Stage(Stage get, string category, int number, string name, string description, string scene, bool local = true)
{
Stage cpy = new Stage();
// "DeepCopy" of ref-types, 'cause screw c# and ICloneable
load(ref cpy, get.name, null, get.use_install_folder);
this.hierarchie = cpy.hierarchie;
this.solution = cpy.solution;
this.player_record = cpy.player_record;
this.player_record_list = cpy.player_record_list;
InitFields(category, number, name, description, scene, local);
hierarchie ??= new List<Directories>();
hierarchie.AddRange(hierStage.AsEnumerable());
player_record.load(hierarchie);
player_record.name = player_record.name.Replace(get.record_name, record_name);
player_record.store(hierarchie, false);
foreach (var record in player_record_list.Values)
{
record.load(hierarchie);
record.name = record.name.Replace(get.record_name, record_name);
record.store(hierarchie, false);
}
hierarchie.RemoveRange(hierarchie.Count - hierStage.Count, hierStage.Count);
store(false);
}
public void InitFields(string category, int number, string name, string description, string scene, bool local)
{
this.category = category;
this.number = number;
......@@ -65,29 +99,55 @@ public Stage(string category, int number, string name, string description, strin
this.description = description;
this.scene = scene;
this.use_install_folder = !local;
}
private void InitOOP()
{
solution = new SolutionOrganizer();
player_record = new PlayerRecord(record_name);
player_record_list = new Dictionary<string, PlayerRecord>();
}
public void CopyStates(Stage get)
public void ClearAll()
{
ClearSolution();
ClearPlay();
ClearALLRecords();
}
public void ClearSolution()
{
this.solution = get.solution;
this.player_record = get.player_record;
this.player_record_list = get.player_record_list;
solution.hardreset(false);
solution = new SolutionOrganizer();
}
public void deletet_record(PlayerRecord record)
public void ClearPlay()
{
player_record.factState.hardreset(false);
player_record = new PlayerRecord(record_name);
}
public void ClearALLRecords()
{
foreach (var record in player_record_list.Values)
deletet_record(record, false);
player_record_list = new Dictionary<string, PlayerRecord>();
}
public void deletet_record(PlayerRecord record, bool b_store = true)
{
hierarchie ??= new List<Directories>();
hierarchie.AddRange(hierStage.AsEnumerable());
if (record.factState != null)
record.factState.hardreset();
record.delete(hierarchie);
player_record_list.Remove(record.name);
hierarchie.RemoveRange(hierarchie.Count - hierStage.Count, hierStage.Count);
store();
if(b_store)
store();
}
public bool set_record(PlayerRecord record)
......@@ -183,13 +243,13 @@ public void delete(bool player_record_too)
hierarchie.RemoveRange(hierarchie.Count - hierStage.Count, hierStage.Count);
}
public void store(bool reset = false)
public void store(bool reset_player = false)
{
hierarchie ??= new List<Directories>();
hierarchie.AddRange(hierStage.AsEnumerable());
player_record.name = record_name;
if (reset)
if (reset_player)
player_record = new PlayerRecord(record_name);
//if (creatorMode || StageStatic.devel)
......@@ -320,14 +380,14 @@ public static Dictionary<string, Stage> Grup(List<Directories> hierarchie = null
public void ResetPlay()
{
player_record = new PlayerRecord(record_name);
ClearPlay();
store(true);
}
public void ResetSaves()
{
player_record = new PlayerRecord(record_name);
player_record_list = new Dictionary<string, PlayerRecord>();
ClearPlay();
ClearALLRecords();
store(true);
}
......
......@@ -13,6 +13,8 @@ void Start()
private void OnDestroy()
{
StageStatic.devel = false;
StageStatic.stage.solution.hardreset();
StageStatic.stage.factState.hardreset();
}
public void SetDevel(bool devel)
......
......@@ -61,9 +61,8 @@ private bool _Clone(bool overwrite)
return false;
}
Stage new_stage = new Stage(category, id, name, description, scene, true);
new_stage.CopyStates(original_stage);
if(!overwrite)
Stage new_stage = new Stage(original_stage, category, id, name, description, scene, true);
if (!overwrite)
new_stage.ResetSaves();
StageStatic.stage = new_stage;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment