Example #1
0
    private bool LoadSkillData()
    {
        SkillMap.Clear();
        PerformMap.Clear();

        string strKey = null;

        string[] strFilePathes = new string[] { "Configs/SkillData_1.xml", "Configs/SkillData_2.xml" };
        foreach (string strFilePath in strFilePathes)
        {
#if USING_SYSTEM_XML
            XmlDocument doc = new XmlDocument();
			doc.LoadXml(AFileWrapper.af_ReadAllText(strFilePath));

            XmlElement root = doc.DocumentElement;
            foreach (XmlNode skillNode in root.ChildNodes)
            {
                XmlElement skillEle = skillNode as XmlElement;
                if (skillEle == null)
                    continue;

                int iSkillID = Convert.ToInt32(skillEle.GetAttribute("ID"));
                if (SkillMap.ContainsKey(iSkillID))
                {
                    Debug.LogWarning("Failed to add skill, ID: " + iSkillID);
                    return false;
                }

                ECSkill skill = new ECSkill();
                skill.Type = (e_Skill_Type)Convert.ToInt32(skillEle.GetAttribute("Type"));
                skill.ID = iSkillID;
                skill.Name = skillEle.GetAttribute("Name");
                skill.Rank = Convert.ToInt32(skillEle.GetAttribute("Rank"));
                skill.CtrlRank = Convert.ToInt32(skillEle.GetAttribute("CtrlRank"));

                strKey = "Move";
                if (skillEle.HasAttribute(strKey))
                    skill.CanPushMove = (Convert.ToInt32(skillEle.GetAttribute(strKey)) != 0);

                strKey = "CastInCtrl";
                if (skillEle.HasAttribute(strKey))
                    skill.CastInCtrl = (Convert.ToInt32(skillEle.GetAttribute(strKey)) != 0);

                skill.MinDisplace = Convert.ToSingle(skillEle.GetAttribute("MinDistance"));
                skill.MaxDisplace = Convert.ToSingle(skillEle.GetAttribute("MaxDistance"));

                strKey = "CooldownID";
                if (skillEle.HasAttribute(strKey))
                    skill.CooldownID = Convert.ToInt32(skillEle.GetAttribute(strKey));

                strKey = "Cooldown";
                if (skillEle.HasAttribute(strKey))
                    skill.CooldownTime = Convert.ToSingle(skillEle.GetAttribute(strKey));
                
                SkillMap[skill.ID] = skill;

                foreach (XmlNode node in skillEle.ChildNodes)
                {
                    XmlElement ele = node as XmlElement;
                    if (ele == null)
                        continue;

                    if (ele.Name == "Perform")
                    {
                        int iPerformID = Convert.ToInt32(ele.GetAttribute("ID"));
                        ECPerform perform;
                        if (!PerformMap.TryGetValue(iPerformID, out perform))
                        {
                            perform = new ECPerform();
                            perform.Type = (e_Perform_Type)Convert.ToInt32(ele.GetAttribute("Type"));
                            perform.Type2 = (e_Perform_Type2)Convert.ToInt32(ele.GetAttribute("PerformType"));
                            perform.ID = iPerformID;
                            perform.TTL = Convert.ToSingle(ele.GetAttribute("Time"));
                            perform.AnmName = ele.GetAttribute("AnmName");
                            perform.CtrlType = (e_Ctrl_Type)Convert.ToInt32(ele.GetAttribute("CtrlType1"));
                            perform.CtrlArg = (e_Ctrl_Arg)Convert.ToInt32(ele.GetAttribute("CtrlType2"));
                            perform.Grab = (Convert.ToInt32(ele.GetAttribute("IsGrab")) != 0);
                            perform.Weak = (Convert.ToInt32(ele.GetAttribute("IsWeak")) != 0);
                            perform.AttackType = (EXP_ATTACK_TYPE)Convert.ToInt32(ele.GetAttribute("AttackType"));
                            perform.Att = Convert.ToInt32(ele.GetAttribute("Att"));
                            perform.HitGfxID = Convert.ToInt32(ele.GetAttribute("HitGfx"));
                            perform.HitSfxID = Convert.ToInt32(ele.GetAttribute("HitSfx"));
                            perform.ShoutOdds = Convert.ToSingle(ele.GetAttribute("ShoutOdds"));
                            
                            for (int i = 0; i < ECPerform.FxIDNum; ++i)
                            {
                                string strName = string.Format("SkillGfxID{0}", i + 1);
                                perform.SkillGfxIDs[i] = Convert.ToInt32(ele.GetAttribute(strName));
                            }

                            for (int i = 0; i < ECPerform.FxIDNum; ++i)
                            {
                                string strName = string.Format("SkillSfxID{0}", i + 1);
                                perform.SkillSfxIDs[i] = Convert.ToInt32(ele.GetAttribute(strName));
                            }

                            PerformMap[iPerformID] = perform;
                        }

                        skill.PerformList.Add(perform);
                        skill.PerformCount = skill.PerformList.Count;

                        string strForce = ele.GetAttribute("Force");
                        if (strForce.Length > 1)
                            skill.ForceParams.Add(strForce);

                        skill.TTL += perform.TTL;
                    }
                    else if (ele.Name == "ChangeSelfPosInfo")
                    {
                        skill.ChangeSelfPos = true;
                        skill.ChangeSelfPosPerformIdx = Convert.ToInt32(ele.GetAttribute("PerformIdx"));
                        skill.ChangeSelfPosType = (e_ChangeSelfPos_Type)Convert.ToInt32(ele.GetAttribute("Type"));
                        skill.DistToDestRatio = Convert.ToSingle(ele.GetAttribute("DistToDestRatio"));
                        skill.MinDisplace = Convert.ToSingle(ele.GetAttribute("MinDisplace"));
                        skill.MaxDisplace = Convert.ToSingle(ele.GetAttribute("MaxDisplace"));
                        skill.Passable = (Convert.ToInt32(ele.GetAttribute("Pass")) == 1);
                        skill.ServerMove = (Convert.ToInt32(ele.GetAttribute("ServerMove")) == 1);
                        skill.MultiMove = (Convert.ToInt32(ele.GetAttribute("MultiMove")) == 1);
                    }
                    else if (ele.Name == "MoveJumpInfo")
                    {
                        ECSkillMoveJumpInfo skillMoveJumpInfo = new ECSkillMoveJumpInfo();
                        skillMoveJumpInfo.Type = (e_SkillMoveJumpInfo_Type)Convert.ToInt32(ele.GetAttribute("Type"));
                        skillMoveJumpInfo.PerformIdx = Convert.ToInt32(ele.GetAttribute("PerformIdx"));
                        skillMoveJumpInfo.BeginTime = Convert.ToSingle(ele.GetAttribute("BeginTime"));
                        skillMoveJumpInfo.EndTime = Convert.ToSingle(ele.GetAttribute("EndTime"));
                        skillMoveJumpInfo.UpTimeRatio = Convert.ToSingle(ele.GetAttribute("UpTimeRatio"));
                        skillMoveJumpInfo.UpDisplace = Convert.ToSingle(ele.GetAttribute("UpAcceleration"));

                        skill.SkillMoveJumpInfoList.Add(skillMoveJumpInfo);
                    }
                }
            }
#else
            SecurityParser doc = new SecurityParser();
			doc.LoadXml(AFileWrapper.af_ReadAllText(strFilePath));
            SecurityElement root = doc.ToXml();

            foreach (SecurityElement skillEle in root.Children)
            {
                if (skillEle == null)
                    continue;

                int iSkillID = Convert.ToInt32(skillEle.Attribute("ID"));
                if (SkillMap.ContainsKey(iSkillID))
                {
                    Debug.LogWarning("Failed to add skill, ID: " + iSkillID);
                    return false;
                }

                ECSkill skill = new ECSkill();
                skill.Type = (e_Skill_Type)Convert.ToInt32(skillEle.Attribute("Type"));
                skill.ID = iSkillID;
                skill.Name = skillEle.Attribute("Name");
                skill.Rank = Convert.ToInt32(skillEle.Attribute("Rank"));
                skill.CtrlRank = Convert.ToInt32(skillEle.Attribute("CtrlRank"));

                strKey = "Move";
                if (skillEle.Attribute(strKey) != "")
                    skill.CanPushMove = (Convert.ToInt32(skillEle.Attribute(strKey)) != 0);

                strKey = "CastInCtrl";
                if (skillEle.Attribute(strKey) != "")
                    skill.CastInCtrl = (Convert.ToInt32(skillEle.Attribute(strKey)) != 0);

                skill.MinDisplace = Convert.ToSingle(skillEle.Attribute("MinDistance"));
                skill.MaxDisplace = Convert.ToSingle(skillEle.Attribute("MaxDistance"));

                //strKey = "CooldownID";
                //if (skillEle.Attribute(strKey) != "")
                //    skill.CooldownID = Convert.ToInt32(skillEle.Attribute(strKey));

                //strKey = "Cooldown";
                //if (skillEle.Attribute(strKey) != "")
                 //   skill.CooldownTime = Convert.ToSingle(skillEle.Attribute(strKey));

                SkillMap[skill.ID] = skill;

                foreach (SecurityElement ele in skillEle.Children)
                {
                    if (ele == null)
                        continue;

                    if (ele.Tag == "Perform")
                    {
                        int iPerformID = Convert.ToInt32(ele.Attribute("ID"));
                        ECPerform perform;
                        if (!PerformMap.TryGetValue(iPerformID, out perform))
                        {
                            perform = new ECPerform();
                            perform.Type = (e_Perform_Type)Convert.ToInt32(ele.Attribute("Type"));
                            perform.Type2 = (e_Perform_Type2)Convert.ToInt32(ele.Attribute("PerformType"));
                            perform.ID = iPerformID;
                            perform.TTL = Convert.ToSingle(ele.Attribute("Time"));
                            perform.AnmName = ele.Attribute("AnmName");
                            perform.CtrlType = (e_Ctrl_Type)Convert.ToInt32(ele.Attribute("CtrlType1"));
                            perform.CtrlArg = (e_Ctrl_Arg)Convert.ToInt32(ele.Attribute("CtrlType2"));
                            perform.Grab = (Convert.ToInt32(ele.Attribute("IsGrab")) != 0);
                            perform.Weak = (Convert.ToInt32(ele.Attribute("IsWeak")) != 0);
                            perform.AttackType = (EXP_ATTACK_TYPE)Convert.ToInt32(ele.Attribute("AttackType"));
                            perform.Att = Convert.ToInt32(ele.Attribute("Att"));
                            perform.HitGfxID = Convert.ToInt32(ele.Attribute("HitGfx"));
                            perform.HitSfxID = Convert.ToInt32(ele.Attribute("HitSfx"));
                            perform.ShoutOdds = Convert.ToSingle(ele.Attribute("ShoutOdds"));

                            for (int i = 0; i < ECPerform.FxIDNum; ++i)
                            {
                                string strName = string.Format("SkillGfxID{0}", i + 1);
                                perform.SkillGfxIDs[i] = Convert.ToInt32(ele.Attribute(strName));
                            }

                            for (int i = 0; i < ECPerform.FxIDNum; ++i)
                            {
                                string strName = string.Format("SkillSfxID{0}", i + 1);
                                perform.SkillSfxIDs[i] = Convert.ToInt32(ele.Attribute(strName));
                            }

                            PerformMap[iPerformID] = perform;
                        }

                        skill.PerformList.Add(perform);
                        skill.PerformCount = skill.PerformList.Count;

                        string strForce = ele.Attribute("Force");
                        if (strForce.Length > 1)
                            skill.ForceParams.Add(strForce);

                        skill.TTL += perform.TTL;
                    }
                    else if (ele.Tag == "ChangeSelfPosInfo")
                    {
                        skill.ChangeSelfPos = true;
                        skill.ChangeSelfPosPerformIdx = Convert.ToInt32(ele.Attribute("PerformIdx"));
                        skill.ChangeSelfPosType = (e_ChangeSelfPos_Type)Convert.ToInt32(ele.Attribute("Type"));
                        skill.DistToDestRatio = Convert.ToSingle(ele.Attribute("DistToDestRatio"));
                        skill.MinDisplace = Convert.ToSingle(ele.Attribute("MinDisplace"));
                        skill.MaxDisplace = Convert.ToSingle(ele.Attribute("MaxDisplace"));
                        skill.Passable = (Convert.ToInt32(ele.Attribute("Pass")) == 1);
                        skill.ServerMove = (Convert.ToInt32(ele.Attribute("ServerMove")) == 1);
                        skill.MultiMove = (Convert.ToInt32(ele.Attribute("MultiMove")) == 1);
                    }
                    else if (ele.Tag == "MoveJumpInfo")
                    {
                        ECSkillMoveJumpInfo skillMoveJumpInfo = new ECSkillMoveJumpInfo();
                        skillMoveJumpInfo.Type = (e_SkillMoveJumpInfo_Type)Convert.ToInt32(ele.Attribute("Type"));
                        skillMoveJumpInfo.PerformIdx = Convert.ToInt32(ele.Attribute("PerformIdx"));
                        skillMoveJumpInfo.BeginTime = Convert.ToSingle(ele.Attribute("BeginTime"));
                        skillMoveJumpInfo.EndTime = Convert.ToSingle(ele.Attribute("EndTime"));
                        skillMoveJumpInfo.UpTimeRatio = Convert.ToSingle(ele.Attribute("UpTimeRatio"));
                        skillMoveJumpInfo.UpDisplace = Convert.ToSingle(ele.Attribute("UpAcceleration"));

                        skill.SkillMoveJumpInfoList.Add(skillMoveJumpInfo);
                    }
                }
            }
#endif
        }
        return true;
    }
Example #2
0
    private bool LoadSubObjectSkillData()
    {
        SubObjectSkillMap.Clear();
        SubObjectPerformMap.Clear();

        string strFilePath = "Configs/SubObjectSkillData_1.xml";
#if USING_SYSTEM_XML
        XmlDocument doc = new XmlDocument();
        doc.LoadXml(AFileWrapper.af_ReadAllText(strFilePath));

        XmlElement root = doc.DocumentElement;

        foreach (XmlNode skillNode in root.ChildNodes)
        {
            XmlElement skillEle = skillNode as XmlElement;
            if (skillEle == null)
                continue;

            int iSkillID = Convert.ToInt32(skillEle.GetAttribute("ID"));
            if (SubObjectSkillMap.ContainsKey(iSkillID))
            {
                Debug.LogWarning("Failed to add subobject skill, ID: " + iSkillID);
                return false;
            }

            ECSubObjSkill ss = new ECSubObjSkill();
            ss.ID = iSkillID;

            foreach (XmlNode node in skillEle.ChildNodes)
            {
                XmlElement ele = node as XmlElement;
                if (ele == null)
                    continue;

                if (ele.Name == "Perform")
                {
                    ECPerform perform = new ECPerform();
                    perform.Type = (e_Perform_Type)Convert.ToInt32(ele.GetAttribute("Type"));
                    perform.ID = Convert.ToInt32(ele.GetAttribute("ID"));
                    perform.SkillGfxIDs[0] = Convert.ToInt32(ele.GetAttribute("GfxID"));
                    perform.HitGfxID = Convert.ToInt32(ele.GetAttribute("HitGfx"));
                    perform.HitSfxID = Convert.ToInt32(ele.GetAttribute("HitSfx"));

                    ss.PerformList.Add(perform);

                    SubObjectPerformMap[perform.ID] = perform;
                }
            }

            SubObjectSkillMap[iSkillID] = ss;
        }
#else
        SecurityParser doc = new SecurityParser();
        doc.LoadXml(AFileWrapper.af_ReadAllText(strFilePath));

        SecurityElement root = doc.ToXml();
        foreach (SecurityElement skillEle in root.Children)
        {
            if (skillEle == null)
                continue;

            int iSkillID = Convert.ToInt32(skillEle.Attribute("ID"));
            if (SubObjectSkillMap.ContainsKey(iSkillID))
            {
                Debug.LogWarning("Failed to add subobject skill, ID: " + iSkillID);
                return false;
            }

            ECSubObjSkill ss = new ECSubObjSkill();
            ss.ID = iSkillID;

            foreach (SecurityElement ele in skillEle.Children)
            {
                if (ele == null)
                    continue;

                if (ele.Tag == "Perform")
                {
                    ECPerform perform = new ECPerform();
                    perform.Type = (e_Perform_Type)Convert.ToInt32(ele.Attribute("Type"));
                    perform.ID = Convert.ToInt32(ele.Attribute("ID"));
                    perform.SkillGfxIDs[0] = Convert.ToInt32(ele.Attribute("GfxID"));
                    perform.HitGfxID = Convert.ToInt32(ele.Attribute("HitGfx"));
                    perform.HitSfxID = Convert.ToInt32(ele.Attribute("HitSfx"));

                    ss.PerformList.Add(perform);

                    SubObjectPerformMap[perform.ID] = perform;
                }
            }

            SubObjectSkillMap[iSkillID] = ss;
        }
#endif
        return true;
    }