Пример #1
0
    public bool Use__equip_reap(string equipReapItem_id, out string equipId)
    {
        equipId = string.Empty;
        if (SDDataManager.Instance.getConsumableNum(equipReapItem_id) <= 0)
        {
            return(false);
        }
        bool flag = SDDataManager.Instance.checkIfHaveOpKey(SDConstants.MaterialType.equip_reap
                                                            , out string keyId);

        if (!flag)
        {
            return(false);
        }
        consumableItem item = SDDataManager.Instance.getConsumableById(equipReapItem_id);

        if (!item)
        {
            return(false);
        }
        string str = item.SpecialStr;

        string[]      strings = str.Split('_');
        EquipPosition pos     = ROHelp.EQUIP_POS(strings[0]);
        int           rank    = GetArmorRank(strings[1]);

        equipId = ReapNormalEquip(pos, rank);
        SDDataManager.Instance.consumeConsumable(keyId, out int r);
        return(true);
    }
Пример #2
0
    public static List <Dictionary <string, string> > ReadVSC(string csvName)
    {
        List <Dictionary <string, string> > xxListResult
            = new List <Dictionary <string, string> >();
        TextAsset       chadata = Resources.Load("Data/" + csvName) as TextAsset;
        List <string[]> cDatas  = LocalizationReader.ReadCSV(chadata.text);

        xxListResult = ROHelp.ConvertCsvListToDictWithAttritubes(cDatas);

        return(xxListResult);
    }
Пример #3
0
 public static RoleAttributeList RALByResistStr(RoleAttributeList ral, string str)
 {
     if (!string.IsNullOrEmpty(str))
     {
         RoleAttributeList RAL   = ral;
         string[]          allSs = str.Split('|');
         for (int i = 0; i < allSs.Length; i++)
         {
             string[] Ss = allSs[i].Split(':');
             RAL.Set(StringToInteger(Ss[1]), ROHelp.STATE_TAG(Ss[0]));
         }
         return(RAL);
     }
     return(ral);
 }
Пример #4
0
    public void checkSpecialStr(string specialStr, string propid)
    {
        UseState = false;
        _state   = new StandardState(propid);
        functionsWithoutState = new List <string>();
        //state
        int lastTime = 0;
        List <StandardState.ChangeInRAL> ralList = new List <StandardState.ChangeInRAL>();

        //
        string[] strings = specialStr.Split('|');
        for (int i = 0; i < strings.Length; i++)
        {
            string[] tmp      = strings[i].Split(':');
            string   fn       = tmp[0];
            string[] paramStr = tmp[1].Split(',');
            if (fn.Contains("add") && paramStr.Length > 1)
            {
                UseState = true;
                int time = SDDataManager.Instance.getInteger(paramStr[1]);
                lastTime = Mathf.Max(lastTime, time);
                int        d = SDDataManager.Instance.getInteger(paramStr[0]);
                NumberData D = new NumberData(d);
                if (fn.Contains("_pc"))
                {
                    D.dataTag = NumberData.DataType.percent;
                }
                //
                if (fn.Contains("HP"))
                {
                    _state.ChangeInBarChart.HP = D;
                }
                else if (fn.Contains("MP"))
                {
                    _state.ChangeInBarChart.MP = D;
                }
                else if (fn.Contains("TP"))
                {
                    _state.ChangeInBarChart.TP = D;
                }
            }
            else if (fn.Contains("up_"))
            {
                UseState = true;
                int time = SDDataManager.Instance.getInteger(paramStr[1]);
                lastTime = Mathf.Max(lastTime, time);
                int        d = SDDataManager.Instance.getInteger(paramStr[0]);
                NumberData D = new NumberData(d);
                if (fn.Contains("_pc"))
                {
                    D.dataTag = NumberData.DataType.percent;
                }
                StandardState.ChangeInRAL cral;
                bool isad = ROHelp.CheckStringIsADElseST(fn.Split('_')[1]
                                                         , out AttributeData ad, out StateTag st);
                if (isad)
                {
                    cral = new StandardState.ChangeInRAL(D, ad);
                }
                else
                {
                    cral = new StandardState.ChangeInRAL(D, st);
                }
                ralList.Add(cral);
            }
            else if (fn.Contains("debuff_"))
            {
                StateTag tag = ROHelp.STATE_TAG(fn.Split('_')[1]);
                if (fn.Split('_')[1].ToLower() == "random")
                {
                    tag = (StateTag)(UnityEngine.Random.Range(0, (int)StateTag.End));
                }
                _state.stateTag = tag;
            }
            else if (fn.Contains("stateDmg"))
            {
                UseState = true;
                int time = SDDataManager.Instance.getInteger(paramStr[1]);
                lastTime = Mathf.Max(lastTime, time);
                int        d = SDDataManager.Instance.getInteger(paramStr[0]);
                NumberData D = new NumberData(d);
                if (fn.Contains("_pc"))
                {
                    D.dataTag = NumberData.DataType.percent;
                }
                _state.ExtraDmg = D;
            }
            //其余转为直接影响列表
            else
            {
                functionsWithoutState.Add(strings[i]);
            }
        }
    }
Пример #5
0
    void UsePropWithoutState(string FN, SDConstants.AOEType AOE
                             , BattleRoleData currentActionUnit, BattleRoleData propTargetUnit)
    {
        string[] fns = FN.Split(':');
        string[] fnElements = fns[0].Split('_');
        string[] paramstrs = fns[1].Split(',');
        int      p0 = 0; int p1 = 0;

        p0 = SDDataManager.Instance.getInteger(paramstrs[0]);
        if (paramstrs.Length > 1)
        {
            p1 = SDDataManager.Instance.getInteger(paramstrs[1]);
        }

        NumberData param0 = new NumberData(p0); NumberData param1 = new NumberData(p1);
        string     functionName = fns[0];

        if (functionName.Contains("addHP"))
        {
            addHp(currentActionUnit, propTargetUnit, param0
                  , AOE);
        }
        else if (functionName.Contains("addMP"))
        {
            addMp(currentActionUnit, propTargetUnit, param0
                  , AOE);
        }
        else if (functionName.Contains("addTP"))
        {
            addTp(currentActionUnit, propTargetUnit, param0
                  , AOE);
        }
        else if (functionName.Contains("revive"))
        {
            bool flag = false;
            if (propTargetUnit.IsDead)
            {
                flag = true;
            }
            else
            {
                List <BattleRoleData> lit = DealWithAOEAction(currentActionUnit
                                                              , propTargetUnit, AOE);
                foreach (BattleRoleData unit in lit)
                {
                    if (unit.IsDead)
                    {
                        flag           = true;
                        propTargetUnit = unit;
                        break;
                    }
                }
            }
            if (flag)
            {
                revive(currentActionUnit, propTargetUnit, param0, param1
                       , AOE);
            }
        }
        else if (functionName.Contains("catch"))
        {
            if (!propTargetUnit.IsDead &&
                propTargetUnit.HpController.CurrentHp * 1f / propTargetUnit.HpController.MaxHp
                <= 0.2f)
            {
                catchSlave(currentActionUnit, propTargetUnit, param0);
            }
        }
        else if (functionName.Contains("remove"))
        {
            List <BattleRoleData> list = DealWithAOEAction
                                             (currentActionUnit, propTargetUnit, AOE);
            if (fnElements[1].ToLower() != "all")
            {
                StateTag tag = ROHelp.STATE_TAG(fnElements[1]);
                if (fnElements[1].ToLower() == "random")
                {
                    tag = (StateTag)(UnityEngine.Random.Range(0, (int)StateTag.End));
                }
                for (int i = 0; i < list.Count; i++)
                {
                    list[i].clearPerTagStates(tag);
                }
            }
            else
            {
                for (int i = 0; i < list.Count; i++)
                {
                    list[i].clearAllStates();
                }
            }
        }
        else if (functionName.Contains("damage"))
        {
            damage(currentActionUnit, propTargetUnit, param0, AOE);
        }
    }
Пример #6
0
    private static void CreateArmorConfig()
    {
        List <Dictionary <string, string> > xxListResult;


        #region BasicHeros
        xxListResult = ReadVSC("hero");
        HeroRace[]      heroRaces   = Resources.LoadAll <HeroRace>("");
        RoleCareer[]    careers     = Resources.LoadAll <RoleCareer>("");
        List <HeroInfo> AlreadyHave = Resources.LoadAll <HeroInfo>("").ToList();
        for (int i = 0; i < xxListResult.Count; i++)
        {
            Dictionary <string, string> Dic = xxListResult[i];

            if (AlreadyHave.Exists(x => x.ID == Dic["id"]))
            {
                continue;
            }
            //
            HeroInfo     mi  = ScriptableObject.CreateInstance <HeroInfo>();
            CharacterSex sex = (CharacterSex)(StringToInteger(Dic["gender"]));
            mi.initData(Dic["id"], Dic["name"], Dic["desc"], sex, "");
            int Race = StringToInteger(Dic["race"]);
            foreach (HeroRace race in heroRaces)
            {
                if (race.Index == Race)
                {
                    mi.Race = race; break;
                }
            }
            int career = StringToInteger(Dic["career"]);
            foreach (RoleCareer c in careers)
            {
                if (c.Index == career)
                {
                    mi.Career = c; break;
                }
            }
            mi.InitRAL(RALByDictionary(Dic));
            mi.WeaponRaceList = GetWeaponTypeList(Dic["weaponClass"]);
            mi.SpecialStr     = Dic["specialStr"];
            mi.AddSkillData(
                getSkillsByString(Dic["skill0"])
                , getSkillsByString(Dic["skill1"])
                , getSkillsByString(Dic["skillOmega"])
                );
            //
            AssetDatabase.CreateAsset(mi, "Assets/Resources/ScriptableObjects/heroes/"
                                      + career + "_"
                                      + mi.ID.Substring(mi.ID.Length - 3) + "_" + mi.Name + ".asset");
        }
        #endregion
        return;

        #region enemy
        xxListResult = CreateConfig.ReadVSC("enemy");
        EnemyRank[] eRanks = Resources.LoadAll <EnemyRank>("");
        for (int i = 0; i < xxListResult.Count; i++)
        {
            Dictionary <string, string> Dic = xxListResult[i];
            EnemyInfo    mi  = ScriptableObject.CreateInstance <EnemyInfo>();
            CharacterSex sex = (CharacterSex)(StringToInteger(Dic["gender"]));
            mi.initData(Dic["id"], Dic["name"], Dic["desc"], sex, "");
            mi.Race = EnemyRaces(Dic["race"]);

            int ranktype = StringToInteger(Dic["rank"]);
            foreach (EnemyRank rank in eRanks)
            {
                if (rank.Index == ranktype)
                {
                    mi.EnemyRank = rank; break;
                }
            }
            mi.RAL              = RALByDictionary(Dic);
            mi.weight           = StringToInteger(Dic["weight"]);
            mi.dropPercent      = StringToInteger(Dic["dropRate"]);
            mi.StartAppearLevel = StringToInteger(Dic["startLevel"]);
            mi.EndAppearLevel   = StringToInteger(Dic["endLevel"]);
            //
            AssetDatabase.CreateAsset(mi, "Assets/Resources/ScriptableObjects/enemies/"
                                      + mi.ID.Split('#')[1] + mi.Name + ".asset");
        }
        #endregion
        return;

        #region Equip
        xxListResult = CreateConfig.ReadVSC("equip");
        ArmorRank[]        armor_ranks  = Resources.LoadAll <ArmorRank>("");
        WeaponRace[]       waepon_races = Resources.LoadAll <WeaponRace>("");
        List <SpriteAtlas> allAtlas     = Resources.LoadAll <SpriteAtlas>("Sprites/atlas").ToList();
        for (int i = 0; i < xxListResult.Count; i++)
        {
            Dictionary <string, string> Dic = xxListResult[i];
            EquipItem ei = ScriptableObject.CreateInstance <EquipItem>();
            ei.initData(Dic["id"], Dic["name"], Dic["desc"], CreateConfig.StringToInteger(Dic["level"])
                        , false, true, true, true, false, Dic["specialStr"]);
            ei.ResistStr = Dic["resistStr"];
            //
            int rankType = CreateConfig.StringToInteger(Dic["type"]);
            foreach (ArmorRank rank in armor_ranks)
            {
                if (rank.Index == rankType)
                {
                    ei.ArmorRank = rank; break;
                }
            }
            if (!string.IsNullOrEmpty(Dic["suit"]))
            {
                ei.SuitBelong = true; ei.SuitId = Dic["suit"];
            }
            //
            ei.RAL           = RALBySpecialStr(RoleAttributeList.zero, Dic["specialStr"]);
            ei.RAL           = RALByResistStr(ei.RAL, Dic["resistStr"]);
            ei.PassiveEffect = Dic["passiveEffect"];
            //
            string        _class = Dic["class"];
            EquipPosition pos    = ROHelp.EQUIP_POS(_class);
            ei.EquipPos = pos;
            if (pos == EquipPosition.Hand)
            {
                string weaponClass = Dic["weaponClass"].ToLower();
                foreach (WeaponRace r in waepon_races)
                {
                    if (weaponClass == r.NAME.ToLower())
                    {
                        ei.WeaponRace = r; break;
                    }
                }
            }


            //
            AssetDatabase.CreateAsset(ei, "Assets/Resources/ScriptableObjects/items/Equips/"
                                      + (int)ei.EquipPos + "_"
                                      + ei.LEVEL + "_" + ei.NAME + ".asset");
        }
        #endregion
        return;

        xxListResult = ReadVSC("hero");
        //HeroRace[] heroRaces = Resources.LoadAll<HeroRace>("");
        //RoleCareer[] careers = Resources.LoadAll<RoleCareer>("");
        for (int i = 0; i < xxListResult.Count; i++)
        {
            Dictionary <string, string> Dic = xxListResult[i];
            HeroInfo     mi  = ScriptableObject.CreateInstance <HeroInfo>();
            CharacterSex sex = (CharacterSex)(StringToInteger(Dic["gender"]));
            mi.initData(Dic["id"], Dic["name"], Dic["desc"], sex, "");
            int Race = StringToInteger(Dic["race"]);
            foreach (HeroRace race in heroRaces)
            {
                if (race.Index == Race)
                {
                    mi.Race = race; break;
                }
            }
            int career = StringToInteger(Dic["career"]);
            foreach (RoleCareer c in careers)
            {
                if (c.Index == career)
                {
                    mi.Career = c; break;
                }
            }
            mi.InitRAL(RALByDictionary(Dic));
            mi.WeaponRaceList = GetWeaponTypeList(Dic["weaponClass"]);
            mi.SpecialStr     = Dic["specialStr"];
            mi.AddSkillData(
                getSkillsByString(Dic["skill0"])
                , getSkillsByString(Dic["skill1"])
                , getSkillsByString(Dic["skillOmega"])
                );
            //
            AssetDatabase.CreateAsset(mi, "Assets/Resources/ScriptableObjects/heroes/"
                                      + career + "_"
                                      + mi.ID.Substring(mi.ID.Length - 3) + "_" + mi.Name + ".asset");
        }

        return;



        return;

        #region Consumable
        xxListResult = CreateConfig.ReadVSC("material");
        for (int i = 0; i < xxListResult.Count; i++)
        {
            Dictionary <string, string> Dic = xxListResult[i];
            SDConstants.MaterialType    MT  = CreateConfig.getMTypeByString(Dic["materialType"]);
            consumableItem mi = ScriptableObject.CreateInstance <consumableItem>();
            mi.initData(Dic["id"], Dic["name"], Dic["desc"], CreateConfig.StringToInteger(Dic["level"])
                        , false, true, true, true, false, Dic["specialStr"], SDConstants.ItemType.Consumable);
            mi.MaterialType     = MT;
            mi.buyPrice_coin    = StringToInteger(Dic["buyPrice_coin"]);
            mi.buyPrice_diamond = StringToInteger(Dic["buyPrice_diamond"]);
            mi.minLv            = StringToInteger(Dic["minLv"]);
            mi.maxLv            = StringToInteger(Dic["maxLv"]);
            mi.exchangeType     = StringToInteger(Dic["exchangeType"]);
            mi.weight           = StringToInteger(Dic["weight"]);
            mi.ConsumableType   = (SDConstants.ConsumableType)StringToInteger(Dic["consumableType"]);
            if (Dic.ContainsKey("range"))
            {
                mi.AOE = ROHelp.AOE_TYPE(Dic["range"]);
            }
            if (Dic.ContainsKey("target"))
            {
                mi.AIM = Dic["target"].ToUpper();
            }
            //
            AssetDatabase.CreateAsset(mi, "Assets/Resources/ScriptableObjects/items/Consumables/"
                                      + mi.ID.Substring(mi.ID.Length - 3) + mi.NAME + ".asset");
        }
        #endregion
    }