public void Init() { ItemModels = new List <Item>(); foreach (EItemType it in Enum.GetValues(typeof(EItemType))) { if (it != EItemType.None) { ItemModels.Add(Resources.Load <Item>("Items/" + it.ToString())); } } _impacts = StreamingAssetAccessor.FromJson <ImpactsWrapper>(impactsPath); List <KeyValuePair <string, BudgetWorldValues> > pairImpact = FileManager.GenerateList <BudgetWorldValues, ImpactWrap>(_impacts.objects); DicWrapper <BudgetWorldValues> wrapperImpact = FileManager.GenerateDicWrapper(pairImpact); _impactsDatabase = FileManager.GenerateDicFromJson <EWorldImpactType, BudgetWorldValues>(wrapperImpact); foreach (KeyValuePair <EWorldImpactType, BudgetWorldValues> item in _impactsDatabase) { _bonusValues.Add(item.Key, 0); } _budgets = StreamingAssetAccessor.FromJson <BudgetWrapper>(valuesPath); List <KeyValuePair <string, BudgetValues> > pairBudget = FileManager.GenerateList <BudgetValues, BudgetWrap>(_budgets.objects); DicWrapper <BudgetValues> wrapperBudget = FileManager.GenerateDicWrapper(pairBudget); _budgetValues = FileManager.GenerateDicFromJson <EWorldImpactType, BudgetValues>(wrapperBudget); _npcs = StreamingAssetAccessor.FromJson <NPCWrapper>(npcPath); DialogueWrapper dialogueWrapper = StreamingAssetAccessor.FromJson <DialogueWrapper>(dialoguesPath); List <KeyValuePair <string, DialoguePNJ> > dialoguePairs = FileManager.GenerateList <DialoguePNJ, DialogueWrap>(dialogueWrapper.objects); DicWrapper <DialoguePNJ> wrapperDialogue = FileManager.GenerateDicWrapper(dialoguePairs); InteractablePNJ.DialoguesDatabase = FileManager.GenerateDicFromJson(wrapperDialogue); }
public static DicWrapper <T> GenerateDicWrapper <T>(List <KeyValuePair <string, T> > values) where T : class { DicWrapper <T> newDic = new DicWrapper <T>(); foreach (KeyValuePair <string, T> e in values) { PairWrapper <T> wrap = new PairWrapper <T>(); wrap.key = e.Key; wrap.value = e.Value; newDic.objects.Add(wrap); } return(newDic); }
/// <summary> /// Json should be like : /// { /// "objects" : [ /// { /// "keyName" : keyString, /// "valueName" : /// { /// *properties* /// } /// } /// ] /// } /// Json wrapper should be like : /// class JsonWrapper { /// List<JsonObject> objects; /// } /// class JsonObject { /// string keyName; /// OtherJsonObject valueName; /// } /// class OtherJsonObject { /// *properties* /// } /// </summary> /// <typeparam name="T">key type</typeparam> /// <typeparam name="T2">value type</typeparam> /// <returns></returns> public static Dictionary <string, T> GenerateDicFromJson <T>(DicWrapper <T> wrapper) where T : class { Dictionary <string, T> dic = new Dictionary <string, T>(); foreach (PairWrapper <T> obj in wrapper.objects) { if (!dic.ContainsKey(obj.key)) { dic.Add(obj.key, obj.value); } } return(dic); }
public static Dictionary <T, T2> GenerateDicFromJson <T, T2>(DicWrapper <T2> wrapper) where T : struct, IConvertible where T2 : class { Dictionary <T, T2> dic = new Dictionary <T, T2>(); foreach (PairWrapper <T2> obj in wrapper.objects) { T type = PropertyUtils.CastEnum <T>(obj.key); if (!dic.ContainsKey(type)) { dic.Add(type, obj.value); } } return(dic); }