public void Add(SkCond colCond) { SkFuncInOutPara funcOut = new SkFuncInOutPara(_inst, colCond._para); SkCondColDesc cols = funcOut.GetColDesc(); if (cols.colTypes[0] == SkCondColDesc.ColType.ColName) { foreach (string str in cols.colStrings[0]) { Collider col = _inst._caster.GetCollider(str); if (col != null && !_colPositions.ContainsKey(col)) { _colPositions[col] = new Positions(col.Pos()); } } } else { //TODO : Getcollider by layer Debug.LogError("Unimplemented code for getting collider from collayer cond"); /* * foreach(string str in cols.colStrings[0]) * { * Collider col = _inst._caster.GetCollider(str); * if(col != null && !_colPositions.ContainsKey(col)) * { * _colPositions[col] = new Positions(col.Pos()); * } * } */ } }
public static void LoadData() { if (s_SkTriggerEventTbl != null) { return; } SqliteDataReader reader = LocalDatabase.Instance.ReadFullTable("skTriggerEvent"); //reader.Read(); // skip title if needed s_SkTriggerEventTbl = new Dictionary <int, SkTriggerEvent>(); while (reader.Read()) { SkTriggerEvent skEvent = new SkTriggerEvent(); skEvent._id = Convert.ToInt32(reader.GetString(reader.GetOrdinal("_id"))); skEvent._cond = SkCond.Create(reader.GetString(reader.GetOrdinal("_cond"))); skEvent._force = Convert.ToSingle(reader.GetString(reader.GetOrdinal("_force"))); skEvent._modsCaster = SkAttribsModifier.Create(reader.GetString(reader.GetOrdinal("_modsCaster"))); skEvent._modsTarget = SkAttribsModifier.Create(reader.GetString(reader.GetOrdinal("_modsTarget"))); SkEffect.s_SkEffectTbl.TryGetValue(Convert.ToInt32(reader.GetString(reader.GetOrdinal("_effOnHitCaster"))), out skEvent._effOnHitCaster); SkEffect.s_SkEffectTbl.TryGetValue(Convert.ToInt32(reader.GetString(reader.GetOrdinal("_effOnHitTarget"))), out skEvent._effOnHitTarget); try{ s_SkTriggerEventTbl.Add(skEvent._id, skEvent); }catch (Exception e) { Debug.LogError("Exception on skTriggerEvent " + skEvent._id + " " + e); } } }
void Awake() { SkData skDigTerrain = new SkData(); skDigTerrain._condToLoop = SkCond.Create("lasthit"); skDigTerrain._pretimeOfMain = new float[] { 0.5f }; skDigTerrain._postimeOfMain = new float[] { 0.5f }; skDigTerrain._events = new List <List <SkTriggerEvent> >(); skDigTerrain._events.Add(new List <SkTriggerEvent>()); SkTriggerEvent skDigEvent = new SkTriggerEvent(); skDigEvent._cond = SkCond.Create("CondToDig"); skDigEvent._modsTarget = SkAttribsModifier.Create("mad,0,1,-1"); skDigTerrain._events[0].Add(skDigEvent); SkData.s_SkillTbl = new Dictionary <int, SkData>(); SkData.s_SkillTbl.Add(0, skDigTerrain); }
public static SkCond Create(string desc) { string[] strCond = desc.Split(new char[] { ';' }); List <SkCond> lstCond = new List <SkCond>(); foreach (string condDesc in strCond) { try { int cnt = Convert.ToInt32(condDesc); if (lstCond.Count == 0) { lstCond.Add(CreateSub("true")); } for (int i = 1; i < cnt; i++) { lstCond.Add(lstCond[lstCond.Count - 1]); } } catch { lstCond.Add(CreateSub(condDesc)); } } SkCond cond; if (lstCond.Count == 1) { cond = lstCond[0]; } else { cond = new SkCond(); cond._para = lstCond; cond._cond = (SkInst inst, System.Object y) => { List <SkCond> paraLstCond = y as List <SkCond>; if (inst.GuideCnt > 0 && inst.GuideCnt <= paraLstCond.Count && paraLstCond[inst.GuideCnt - 1].Tst(inst)) { return(new SkFuncInOutPara(inst, paraLstCond[inst.GuideCnt - 1]._retTars, true)); } return(new SkFuncInOutPara(inst, y, false)); }; } return(cond); }
public static void LoadData() { if (s_SkillTbl != null) { return; } #if DBG_COL_ATK SkDebug.LoadIds(); #endif SkEffect.LoadData(); SkBuff.LoadData(); SkTriggerEvent.LoadData(); SqliteDataReader reader = LocalDatabase.Instance.ReadFullTable("skMain"); //reader.Read(); // skip title if needed s_SkillTbl = new Dictionary <int, SkData>(); while (reader.Read()) { SkData skill = new SkData(); skill._id = Convert.ToInt32(reader.GetString(reader.GetOrdinal("_id"))); skill._desc = Convert.ToInt32(reader.GetString(reader.GetOrdinal("_desc"))); skill._icon = reader.GetString(reader.GetOrdinal("_icon")); skill._name = reader.GetString(reader.GetOrdinal("_name")); skill._interruptable = reader.GetString(reader.GetOrdinal("_interruptable")).Equals("1"); skill._coolingTime = Convert.ToSingle(reader.GetString(reader.GetOrdinal("_coolingTime"))); skill._coolingTimeType = Convert.ToInt32(reader.GetString(reader.GetOrdinal("_coolingTimeType"))); skill._coolingTimeShared = Convert.ToSingle(reader.GetString(reader.GetOrdinal("_coolingTimeShared"))); skill._pretimeOfPrepare = Convert.ToSingle(reader.GetString(reader.GetOrdinal("_pretimeOfPrepare"))); skill._postimeOfPrepare = Convert.ToSingle(reader.GetString(reader.GetOrdinal("_postimeOfPrepare"))); SkEffect.s_SkEffectTbl.TryGetValue(Convert.ToInt32(reader.GetString(reader.GetOrdinal("_effPrepare"))), out skill._effPrepare); skill._condToLoop = SkCond.Create(reader.GetString(reader.GetOrdinal("_cond"))); skill._pretimeOfMain = ToSingleArray(reader.GetString(reader.GetOrdinal("_pretimeOfMain"))); skill._timeOfMain = ToSingleArray(reader.GetString(reader.GetOrdinal("_timeOfMain"))); skill._postimeOfMain = ToSingleArray(reader.GetString(reader.GetOrdinal("_postimeOfMain"))); skill._effMainEachTime = ToSkEffectArray(reader.GetString(reader.GetOrdinal("_effMainEachTime"))); SkEffect.s_SkEffectTbl.TryGetValue(Convert.ToInt32(reader.GetString(reader.GetOrdinal("_effMainOneTime"))), out skill._effMainOneTime); string[] strEventsList = reader.GetString(reader.GetOrdinal("_triggerEvents")).Split(';'); foreach (string strEvents in strEventsList) { List <SkTriggerEvent> curEvents = new List <SkTriggerEvent>(); string[] strCurEvents = strEvents.Split(','); foreach (string strEvent in strCurEvents) { int eventId = Convert.ToInt32(strEvent); SkTriggerEvent curEvent; SkTriggerEvent.s_SkTriggerEventTbl.TryGetValue(eventId, out curEvent); if (curEvent != null) { curEvents.Add(curEvent); } } skill._events.Add(curEvents); } skill._pretimeOfEnding = Convert.ToSingle(reader.GetString(reader.GetOrdinal("_pretimeOfEnding"))); skill._postimeOfEnding = Convert.ToSingle(reader.GetString(reader.GetOrdinal("_postimeOfEnding"))); SkEffect.s_SkEffectTbl.TryGetValue(Convert.ToInt32(reader.GetString(reader.GetOrdinal("_effEnding"))), out skill._effEnding); try{ s_SkillTbl.Add(skill._id, skill); }catch (Exception e) { Debug.LogError("Exception on skMain " + skill._id + " " + e); } } new Thread(new ThreadStart(SkInst.s_ExpCompiler.Compile)).Start(); //SkInst.s_ExpCompiler.Compile(); }
private static SkCond CreateSub(string desc) { SkCond cond = new SkCond(); try{ string[] strCond = desc.Split(new char[] { ',' }, 2); switch (strCond[0].ToLower()) { case "loopcnt": cond._cond = (SkInst inst, System.Object y) => new SkFuncInOutPara(inst, y, inst.GuideCnt > 0 && inst.GuideCnt < Convert.ToInt32(strCond[1])); break; case "key": cond._cond = (SkInst inst, System.Object y) => new SkFuncInOutPara(inst, y, //Input.GetKey(strCond[1])); Input.GetKey(KeyCode.Q)); break; case "lasthit": cond._cond = (SkInst inst, System.Object y) => new SkFuncInOutPara(inst, y, inst.LastHit); break; case "col": cond._para = strCond[1]; cond._cond = TstCol; cond._type = CondType.TypeRTCol; break; case "colname": cond._para = strCond[1]; cond._cond = TstColName; cond._type = CondType.TypeRTCol; break; case "collayer": cond._para = strCond[1]; cond._cond = TstColLayer; cond._type = CondType.TypeRTCol; break; case "colinfo": cond._cond = TstColInfo; cond._type = CondType.TypeRTCol; break; case "range": cond._para = strCond[1]; cond._cond = TstInRange; break; case "true": cond._cond = (SkInst inst, System.Object y) => new SkFuncInOutPara(inst, y, true); break; case "false": cond._cond = (SkInst inst, System.Object y) => new SkFuncInOutPara(inst, y, false); break; default: cond._para = strCond; cond._cond = TstExternalFunc; break; } } catch { Debug.LogError("[SKERR]Unrecognized sk cond:" + desc); } return(cond); }