private void Load(int id, Dsl.FunctionData funcData) { if (null != funcData) { string key = funcData.GetId(); if (key == "skill" || key == "skilldsl") { Dsl.CallData callData = funcData.Call; if (null != callData) { int dslId = id; if (callData.HaveParam()) { dslId = int.Parse(callData.GetParamId(0)); } SkillInstance instance = new SkillInstance(); instance.Init(funcData); instance.OuterDslSkillId = dslId; if (!m_SkillInstances.ContainsKey(dslId)) { m_SkillInstances.Add(dslId, instance); } else { m_SkillInstances[dslId] = instance; } LogSystem.Debug("ParseSkill {0}", dslId); } } } }
private void Load(int id, Dsl.DslFile dataFile) { lock (m_Lock) { for (int i = 0; i < dataFile.DslInfos.Count; i++) { if (dataFile.DslInfos[i].GetId() == "skill") { Dsl.FunctionData funcData = dataFile.DslInfos[i].First; if (null != funcData) { Dsl.CallData callData = funcData.Call; if (null != callData) { int dslId = id; if (callData.HaveParam()) { dslId = int.Parse(callData.GetParamId(0)); } if (!m_SkillInstances.ContainsKey(dslId)) { SkillInstance instance = new SkillInstance(); instance.Init(dataFile.DslInfos[i]); instance.OuterDslSkillId = dslId; m_SkillInstances.Add(dslId, instance); LogSystem.Debug("ParseSkill {0}", dslId); } } } } } } }
static public int Init(IntPtr l) { try { int argc = LuaDLL.lua_gettop(l); if (matchType(l, argc, 2, typeof(Dsl.FunctionData))) { SkillSystem.SkillInstance self = (SkillSystem.SkillInstance)checkSelf(l); Dsl.FunctionData a1; checkType(l, 2, out a1); var ret = self.Init(a1); pushValue(l, true); pushValue(l, ret); return(2); } else if (matchType(l, argc, 2, typeof(Dsl.DslInfo))) { SkillSystem.SkillInstance self = (SkillSystem.SkillInstance)checkSelf(l); Dsl.DslInfo a1; checkType(l, 2, out a1); var ret = self.Init(a1); pushValue(l, true); pushValue(l, ret); return(2); } pushValue(l, false); LuaDLL.lua_pushstring(l, "No matched override function to call"); return(2); } catch (Exception e) { return(error(l, e)); } }
private void Load(Dsl.DslFile dataFile) { lock (m_Lock) { for (int i = 0; i < dataFile.DslInfos.Count; i++) { if (dataFile.DslInfos[i].GetId() == "skill") { Dsl.FunctionData funcData = dataFile.DslInfos[i].First; if (null != funcData) { Dsl.CallData callData = funcData.Call; if (null != callData && callData.HaveParam()) { int id = int.Parse(callData.GetParamId(0)); if (!m_SkillInstances.ContainsKey(id)) { SkillInstance instance = new SkillInstance(); instance.Init(dataFile.DslInfos[i]); m_SkillInstances.Add(id, instance); LogSystem.Debug("ParseSkill {0}", id); } //else //{ //repeated skill config. //} } } } } } }
private void Load(ScriptableData.ScriptableDataFile dataFile) { lock (m_Lock) { for (int i = 0; i < dataFile.ScriptableDatas.Count; i++) { if (dataFile.ScriptableDatas[i].GetId() == "skill") { ScriptableData.FunctionData funcData = dataFile.ScriptableDatas[i].First; if (null != funcData) { ScriptableData.CallData callData = funcData.Call; if (null != callData && callData.HaveParam()) { int id = int.Parse(callData.GetParamId(0)); if (!m_SkillInstances.ContainsKey(id)) { SkillInstance instance = new SkillInstance(); instance.Init(dataFile.ScriptableDatas[i]); m_SkillInstances.Add(id, instance); LogSystem.Debug("ParseSkill {0}", id); } //else //{ //repeated skill config. //} } } } } /* * foreach (ScriptableData.ScriptableDataInfo info in dataFile.ScriptableDatas) { * if (info.GetId() == "skill") { * ScriptableData.FunctionData funcData = info.First; * if (null != funcData) { * ScriptableData.CallData callData = funcData.Call; * if (null != callData && callData.HaveParam()) { * int id = int.Parse(callData.GetParamId(0)); * if (!m_SkillInstances.ContainsKey(id)) { * SkillInstance instance = new SkillInstance(); * instance.Init(info); * m_SkillInstances.Add(id, instance); * * LogSystem.Debug("ParseSkill {0}", id); * } else { * //repeated skill config. * } * } * } * } * }*/ } }
static public int Init(IntPtr l) { try { SkillSystem.SkillInstance self = (SkillSystem.SkillInstance)checkSelf(l); Dsl.DslInfo a1; checkType(l, 2, out a1); var ret = self.Init(a1); pushValue(l, true); pushValue(l, ret); return(2); } catch (Exception e) { return(error(l, e)); } }
private bool Init(Dsl.FunctionData skill) { bool ret = false; m_UseImpactsForInit = new List<SkillSectionOrMessageTriggers>(); m_ImpactsForInit = new List<SkillSectionOrMessageTriggers>(); m_DamagesForInit = new List<SkillSectionOrMessageTriggers>(); if (null != skill && (skill.GetId() == "skill" || skill.GetId() == "emitskill" || skill.GetId() == "hitskill")) { ret = true; Dsl.CallData callData = skill.Call; if (null != callData && callData.HaveParam()) { m_OuterDslSkillId = int.Parse(callData.GetParamId(0)); m_DslSkillId = m_OuterDslSkillId; } for (int i = 0; i < skill.Statements.Count; i++) { if (skill.Statements[i].GetId() == "section") { m_UseImpactsForInit.Add(new SkillSectionOrMessageTriggers(SectionOrMessageType.Section)); m_ImpactsForInit.Add(new SkillSectionOrMessageTriggers(SectionOrMessageType.Section)); m_DamagesForInit.Add(new SkillSectionOrMessageTriggers(SectionOrMessageType.Section)); Dsl.FunctionData sectionData = skill.Statements[i] as Dsl.FunctionData; if (null != sectionData) { SkillSection section = new SkillSection(); section.Load(sectionData, this); m_Sections.Add(section); } else { #if DEBUG string err = string.Format("Skill {0} DSL, section must be a function ! line:{1} section:{2}", m_DslSkillId, skill.Statements[i].GetLine(), skill.Statements[i].ToScriptString()); throw new Exception(err); #else LogSystem.Error("Skill {0} DSL, section must be a function !", m_DslSkillId); #endif } } else if (skill.Statements[i].GetId() == "onmessage") { m_UseImpactsForInit.Add(new SkillSectionOrMessageTriggers(SectionOrMessageType.Message)); m_ImpactsForInit.Add(new SkillSectionOrMessageTriggers(SectionOrMessageType.Message)); m_DamagesForInit.Add(new SkillSectionOrMessageTriggers(SectionOrMessageType.Message)); Dsl.FunctionData sectionData = skill.Statements[i] as Dsl.FunctionData; if (null != sectionData) { SkillMessageHandler handler = new SkillMessageHandler(); handler.Load(sectionData, this); m_MessageHandlers.Add(handler); } else { #if DEBUG string err = string.Format("Skill {0} DSL, onmessage must be a function ! line:{1} onmessage:{2}", m_DslSkillId, skill.Statements[i].GetLine(), skill.Statements[i].ToScriptString()); throw new Exception(err); #else LogSystem.Error("Skill {0} DSL, onmessage must be a function !", m_DslSkillId); #endif } } else if (skill.Statements[i].GetId() == "onstop") { m_UseImpactsForInit.Add(new SkillSectionOrMessageTriggers(SectionOrMessageType.OnStop)); m_ImpactsForInit.Add(new SkillSectionOrMessageTriggers(SectionOrMessageType.OnStop)); m_DamagesForInit.Add(new SkillSectionOrMessageTriggers(SectionOrMessageType.OnStop)); Dsl.FunctionData sectionData = skill.Statements[i] as Dsl.FunctionData; if (null != sectionData) { m_StopSection = new SkillMessageHandler(); m_StopSection.Load(sectionData, this); } else { #if DEBUG string err = string.Format("Skill {0} DSL, onstop must be a function ! line:{1} onmessage:{2}", m_DslSkillId, skill.Statements[i].GetLine(), skill.Statements[i].ToScriptString()); throw new Exception(err); #else LogSystem.Error("Skill {0} DSL, onstop must be a function !", m_DslSkillId); #endif } } else if (skill.Statements[i].GetId() == "oninterrupt") { m_UseImpactsForInit.Add(new SkillSectionOrMessageTriggers(SectionOrMessageType.OnInterrupt)); m_ImpactsForInit.Add(new SkillSectionOrMessageTriggers(SectionOrMessageType.OnInterrupt)); m_DamagesForInit.Add(new SkillSectionOrMessageTriggers(SectionOrMessageType.OnInterrupt)); Dsl.FunctionData sectionData = skill.Statements[i] as Dsl.FunctionData; if (null != sectionData) { m_InterruptSection = new SkillMessageHandler(); m_InterruptSection.Load(sectionData, this); } else { #if DEBUG string err = string.Format("Skill {0} DSL, oninterrupt must be a function ! line:{1} onmessage:{2}", m_DslSkillId, skill.Statements[i].GetLine(), skill.Statements[i].ToScriptString()); throw new Exception(err); #else LogSystem.Error("Skill {0} DSL, oninterrupt must be a function !", m_DslSkillId); #endif } } else if (skill.Statements[i].GetId() == "emitskill") { Dsl.FunctionData sectionData = skill.Statements[i] as Dsl.FunctionData; if (null != sectionData) { PrepareInnerEmitSkillInstances(); SkillInstance inst = new SkillInstance(); inst.Init(sectionData); Dsl.CallData header = sectionData.Call; int innerId = 0; if (header.GetParamNum() > 0) { innerId = int.Parse(header.GetParamId(0)); } inst.m_InnerDslSkillId = GenInnerEmitSkillId(innerId); inst.m_OuterDslSkillId = m_DslSkillId; inst.m_DslSkillId = m_DslSkillId; if (!m_EmitSkillInstances.ContainsKey(inst.InnerDslSkillId)) { m_EmitSkillInstances.Add(inst.InnerDslSkillId, inst); } else { #if DEBUG string err = string.Format("Skill {0} DSL, emitskill id duplicate ! line:{1} onmessage:{2}", m_DslSkillId, skill.Statements[i].GetLine(), skill.Statements[i].ToScriptString()); throw new Exception(err); #else LogSystem.Error("Skill {0} DSL, emitskill id duplicate !", m_DslSkillId); #endif } } else { #if DEBUG string err = string.Format("Skill {0} DSL, emitskill must be a function ! line:{1} onmessage:{2}", m_DslSkillId, skill.Statements[i].GetLine(), skill.Statements[i].ToScriptString()); throw new Exception(err); #else LogSystem.Error("Skill {0} DSL, oninterrupt must be a function !", m_DslSkillId); #endif } } else if (skill.Statements[i].GetId() == "hitskill") { Dsl.FunctionData sectionData = skill.Statements[i] as Dsl.FunctionData; if (null != sectionData) { PrepareInnerHitSkillInstances(); SkillInstance inst = new SkillInstance(); inst.Init(sectionData); Dsl.CallData header = sectionData.Call; int innerId = 0; if (header.GetParamNum() > 0) { innerId = int.Parse(header.GetParamId(0)); } inst.m_InnerDslSkillId = GenInnerHitSkillId(innerId); inst.m_OuterDslSkillId = m_DslSkillId; inst.m_DslSkillId = m_DslSkillId; if (!m_HitSkillInstances.ContainsKey(inst.InnerDslSkillId)) { m_HitSkillInstances.Add(inst.InnerDslSkillId, inst); } else { #if DEBUG string err = string.Format("Skill {0} DSL, hitskill id duplicate ! line:{1} onmessage:{2}", m_DslSkillId, skill.Statements[i].GetLine(), skill.Statements[i].ToScriptString()); throw new Exception(err); #else LogSystem.Error("Skill {0} DSL, hitskill id duplicate !", m_DslSkillId); #endif } } else { #if DEBUG string err = string.Format("Skill {0} DSL, hitskill must be a function ! line:{1} onmessage:{2}", m_DslSkillId, skill.Statements[i].GetLine(), skill.Statements[i].ToScriptString()); throw new Exception(err); #else LogSystem.Error("Skill {0} DSL, oninterrupt must be a function !", m_DslSkillId); #endif } } else { #if DEBUG string err = string.Format("SkillInstance::Init, Skill {0} unknown part {1}, line:{2} section:{3}", m_DslSkillId, skill.Statements[i].GetId(), skill.Statements[i].GetLine(), skill.Statements[i].ToScriptString()); throw new Exception(err); #else LogSystem.Error("SkillInstance::Init, Skill {0} unknown part {1}", m_DslSkillId, skill.Statements[i].GetId()); #endif } } } else { #if DEBUG string err = string.Format("SkillInstance::Init, isn't skill DSL, line:{0} skill:{1}", skill.GetLine(), skill.ToScriptString()); throw new Exception(err); #else LogSystem.Error("SkillInstance::Init, isn't skill DSL"); #endif } BuildImpactAndDamageInfo(); LogSystem.Debug("SkillInstance.Init section num:{0} {1} skill {2}", m_Sections.Count, ret, m_DslSkillId); return ret; }