/* 支持 ["","",""] 或 {bg:"",list:["","",""]} 或 {bg:"",list:[{url:"",time:"mm::ss.xx"},{...}]} 或 {bg:"",logo:"",name:"",list:[{url:"",time:"mm::ss.xx"},{...}]} */ public virtual void loadByJson(SdNode config, params String[] jsons) { if (jsons == null || jsons.Length == 0) return; foreach (String json in jsons) { StateTag state = new StateTag(); loadByJsonData(config, json, state); } }
public void playCommonEffectTagState(Vector3 pos, StateTag stateTag = StateTag.Hush) { }
public int ReadCurrentRoleRA(StateTag Tag) { return(ThisRoleAttributes.read(Tag) + AllARevision.read(Tag) + extraRALChangeData.read(Tag)); }
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); } }
protected void loadByJsonData(SdNode config, String json, StateTag state) { ONode list = null; ONode obj = ONode.tryLoad(json); if (obj.isObject) { list = obj.get("list").asArray(); String bg = obj.get("bg").getString(); if (TextUtils.isEmpty(bg) == false) { bgUrl = bg; } if (TextUtils.isEmpty(name)) { name = obj.get("name").getString(); logo = obj.get("logo").getString(); } } else { list = obj; } foreach (ONode n in list) { PicModel pic = null; if (n.isObject) { pic = new PicModel(section(), n.get("url").getString(), n.get("time").getInt(), state.value); } else { pic = new PicModel(section(), n.getString(), 0, state.value); } pic.cacheID = items.Count; doAddItem(pic, state); state.value++; } }
protected abstract void doAddItem(PicModel pic, StateTag state);
public OneAttritube(int figure, StateTag ad, int figureType = 0) { this.figure = figure; this.index = (int)ad; this.isAD = false; this.Type = (FigureType)figureType; }
public void AddPerc(int figure, StateTag tag) { AllResistData[(int)tag] = (int)(AllResistData[(int)tag] * AllRandomSetClass.SimplePercentToDecimal(100 + figure)); }
public void Add(int figure, StateTag tag) { AllResistData[(int)tag] += figure; }
public AiState GetState(StateTag tag) { return(states[tag]); }