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; }
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; }