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); }
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); }
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); }
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]); } } }
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); } }
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 }