Newer
Older
Marco Zimmer
committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using UnityEngine;
using static CommunicationEvents;
public class SolutionOrganizer : FactOrganizer
{
private const string
endingSol = "_sol",
endingVal = "_val";
private static List<Directories>
hierVal = new List<Directories> { Directories.ValidationSets };
public List<(HashSet<string> MasterIDs, FactComparer Comparer)> ValidationSet;
public SolutionOrganizer(bool invoke = false): base(invoke)
{
ValidationSet = new List<(HashSet<string> MasterIDs, FactComparer Comparer)>();
}
public List<Fact> getMasterFactsByIndex (int i)
{
return ValidationSet[i].MasterIDs.Select(id => this[id]).ToList();
}
public new void store(string name, List<Directories> hierarchie = null, bool use_install_folder = false)
{
hierarchie ??= new List<Directories>();
hierarchie.AddRange(hierVal.AsEnumerable());
base.store(name + endingSol, hierarchie, use_install_folder);
string path = CreatePathToFile(out _, name + endingVal, "JSON", hierarchie, use_install_folder);
JSONManager.WriteToJsonFile(path, this.ValidationSet.Select(e => (e.MasterIDs, e.Comparer.ToString())), 0);
hierarchie.RemoveRange(hierarchie.Count - hierVal.Count, hierVal.Count);
}
public static bool load(ref SolutionOrganizer set, bool draw, string name, List<Directories> hierarchie = null, bool use_install_folder = false, bool reset_Fact = false)
{
hierarchie ??= new List<Directories>();
hierarchie.AddRange(hierVal.AsEnumerable());
string path = CreatePathToFile(out bool loadable, name + endingVal, "JSON", hierarchie, use_install_folder);
if (!loadable)
{
hierarchie.RemoveRange(hierarchie.Count - hierVal.Count, hierVal.Count);
return false;
}
Marco Zimmer
committed
FactOrganizer save = StageStatic.stage.factState;
StageStatic.stage.factState = new SolutionOrganizer(false) as FactOrganizer;
Marco Zimmer
committed
Marco Zimmer
committed
loadable = FactOrganizer.load(ref StageStatic.stage.factState, draw, name + endingSol, hierarchie, use_install_folder, reset_Fact);
Marco Zimmer
committed
if (loadable)
Marco Zimmer
committed
set = (SolutionOrganizer) StageStatic.stage.factState;
Marco Zimmer
committed
Marco Zimmer
committed
StageStatic.stage.factState = save;
Marco Zimmer
committed
hierarchie.RemoveRange(hierarchie.Count - hierVal.Count, hierVal.Count);
if (!loadable)
return false;
var JsonTmp = JSONManager.ReadFromJsonFile < List<(HashSet<string> MasterIDs, string ComparerString)> > (path);
foreach (var element in JsonTmp)
{
var FactCompTypes = Assembly.GetExecutingAssembly().GetTypes().Where(typeof(FactComparer).IsAssignableFrom);
var typ = FactCompTypes.First(t => t.Name == element.ComparerString);
FactComparer Comparer = Activator.CreateInstance(typ) as FactComparer;
set.ValidationSet.Add((element.MasterIDs, Comparer));
}
return true;
}
}