Beispiel #1
0
    void LoadAbilities()
    {
        _BaseAbilityTable   = new Dictionary <int, AbilityBase> ();
        _BaseAbilityIdTable = new Dictionary <string, int>();
        TextAsset[] textAssets = Resources.LoadAll <TextAsset> (ResourcesFolderPath.json_ability);
        foreach (TextAsset tAsset in textAssets)
        {
            string jsonString = tAsset.text;
            var    dict       = MiniJSON.Json.Deserialize(jsonString) as Dictionary <string, object>;
            Dictionary <string, object> abilitiesInfo = dict ["ability"] as Dictionary <string, object>;
            foreach (string abilityName in abilitiesInfo.Keys)
            {
                //Detect existence of cardName
                if (_BaseAbilityIdTable.ContainsKey(abilityName))
                {
                    Debug.Log(string.Format("Ability name has existed -name:{0} in folder: 'Resources/Json/Ability/{1}'", abilityName, tAsset.name));
                    throw new System.Exception(string.Format("Ability name has existed -name:{0} in folder: 'Resources/Json/Card/{1}'", abilityName, tAsset.name));
                }
                KeyValuePair <string, Dictionary <string, object> > abilityInfo
                    = new KeyValuePair <string, Dictionary <string, object> > (abilityName, abilitiesInfo [abilityName] as Dictionary <string, object>);

                AbilityBase abilityBase;
                try {
                    abilityBase = AbilityBase.GeneAbilityBase(abilityInfo);
                } catch (System.Exception e) {
                    Debug.Log(string.Format("Fail to Generate AbilityBase via ability data that named:{0}", abilityName));
                    throw e;
                }
                int id = abilityBase.id;
                //Detect existence of baseCard's id
                if (_BaseAbilityTable.ContainsKey(id))
                {
                    Debug.Log(string.Format("Ability id has existed -name:{0} in folder: 'Resources/Json/Ability/{1}'", abilityName, tAsset.name));
                    throw new System.Exception(string.Format("Ability id has existed -name:{0} in folder: 'Resources/Json/Ability/{1}'", abilityName, tAsset.name));
                }
                //Check the validity of ability
                if (!CheckAbilityValidity(abilityBase))
                {
                    Debug.Log(string.Format("Failure to pass ability validity test about ability named :{0} in folder: 'Resources/Json/Ability/{1}'", abilityName, tAsset.name));
                    throw new System.Exception(string.Format("Failure to pass ability validity test about ability named :{0} in folder: 'Resources/Json/Ability/{1}'", abilityName, tAsset.name));
                }
                _BaseAbilityIdTable.Add(abilityName, id);
                _BaseAbilityTable.Add(id, abilityBase);
            }
        }
    }