private Impact CreateTimerImpact(ImpactInfo info_) { PeriodImpactData periodImpactData = Main.Inst.Data.Get <PeriodImpactData>(info_.impactObjectId); if (periodImpactData.impactInfos == null || periodImpactData.impactInfos.Length <= 0) { Debug.LogError(string.Format("{0} (id:{1}) has no impacts to apply ", periodImpactData.GetType().Name, periodImpactData.ObjectId)); return(null); } //create impacts int cnt = periodImpactData.impactInfos.Length; Impact[] impacts = new Impact[cnt]; for (int i = 0; i < cnt; i++) { ImpactInfo info = periodImpactData.impactInfos[i]; Impact impact = Create(info); impacts[i] = impact; } //create timer TimerData timerData = Main.Inst.Data.Get <TimerData>(periodImpactData.timerId); PeriodImpact periodImpact = new PeriodImpact(timerData, impacts); return(periodImpact); }
public override IBaseData Create(string jsonString_) { //first override all simple type fields... PeriodImpactData data = DefaultJsonFactory.Create <PeriodImpactData>(jsonString_); //...and then more complex fields JSONObject jo = new JSONObject(jsonString_); //IMPACTS JSONObject arrayJo = jo["impact"]; if (arrayJo != null) { int cnt = arrayJo.list.Count; data.impactInfos = new ImpactInfo[cnt]; for (int i = 0; i < cnt; i++) { ImpactInfo info = //JsonFactory.Instance.Create<ImpactInfo>(arrayJo.list[i].ToString()); JsonUtility.FromJson <ImpactInfo>(arrayJo.list[i].ToString()); data.impactInfos[i] = info; } } //targetTypes data.targetTypes = GetStringArray(jo, "targetTypes"); return(data); }