示例#1
0
        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);
        }
示例#2
0
    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);
    }
示例#3
0
    /// <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);
    }
示例#4
0
    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);
    }