Init() public méthode

public Init ( Dsl config ) : bool
config Dsl
Résultat bool
        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.
                 *      }
                 *    }
                 *  }
                 * }
                 * }*/
            }
        }
Exemple #6
0
 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;
        }
        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.
                                //}
                            }
                        }
                    }
                }
            }
        }