/// <summary> /// /// </summary> /// <param name="Reader"></param> protected Template ReadTemplate(XmlReader Reader) { Template template = new Template(); template.Name = Reader[XMLATTRIB_NAME]; string type; string name; string target; string text; string where; string onmax; uint duration; if (Reader.ReadToDescendant(XMLTAG_TASK)) { do { type = Reader[XMLATTRIB_TYPE].ToLower(); switch (type) { case XMLVALUE_CAST: name = Reader[XMLATTRIB_NAME]; target = Reader[XMLATTRIB_TARGET]; where = Reader[XMLATTRIB_IN]; onmax = Reader[XMLATTRIB_ONMAX]; template.Tasks.Add(new BotTaskCast(name, target, where, onmax)); break; case XMLVALUE_USE: name = Reader[XMLATTRIB_NAME]; template.Tasks.Add(new BotTaskUse(name)); break; case XMLVALUE_REST: template.Tasks.Add(new BotTaskRest()); break; case XMLVALUE_STAND: template.Tasks.Add(new BotTaskStand()); break; case XMLVALUE_SLEEP: duration = GameTick.MSINSECOND * Convert.ToUInt32(Reader[XMLATTRIB_DURATION]); template.Tasks.Add(new BotTaskSleep(duration)); break; case XMLVALUE_SAY: text = Reader[XMLATTRIB_TEXT]; template.Tasks.Add(new BotTaskSay(text)); break; } } while (Reader.ReadToNextSibling(XMLTAG_TASK)); } return template; }
/// <summary> /// /// </summary> /// <param name="Reader"></param> protected Template ReadTemplate(XmlNode Reader) { Template template = new Template(); template.Name = (Reader.Attributes[XMLATTRIB_NAME] != null) ? Reader.Attributes[XMLATTRIB_NAME].Value : DEFAULTVAL_SPELLBOT_TEMPLATENAME; string type; string name; string target; string text; string where; string onmax; uint cap; uint duration; foreach (XmlNode child in Reader.ChildNodes) { if (child.Name != XMLTAG_TASK) continue; type = (child.Attributes[XMLATTRIB_TYPE] != null) ? child.Attributes[XMLATTRIB_TYPE].Value : null; switch (type) { case XMLVALUE_CAST: name = (child.Attributes[XMLATTRIB_NAME] != null) ? child.Attributes[XMLATTRIB_NAME].Value : DEFAULTVAL_SPELLBOT_CAST_NAME; target = (child.Attributes[XMLATTRIB_TARGET] != null) ? child.Attributes[XMLATTRIB_TARGET].Value : DEFAULTVAL_SPELLBOT_CAST_TARGET; where = (child.Attributes[XMLATTRIB_IN] != null) ? child.Attributes[XMLATTRIB_IN].Value : DEFAULTVAL_SPELLBOT_CAST_WHERE; onmax = (child.Attributes[XMLATTRIB_ONMAX] != null) ? child.Attributes[XMLATTRIB_ONMAX].Value : DEFAULTVAL_SPELLBOT_CAST_ONMAX; cap = (child.Attributes[XMLATTRIB_CAP] != null && UInt32.TryParse(child.Attributes[XMLATTRIB_CAP].Value, out cap)) ? Math.Min(StatNumsValues.SKILLMAX, cap) : StatNumsValues.SKILLMAX; template.Tasks.Add(new BotTaskCast(name, target, where, onmax, cap)); break; case XMLVALUE_USE: name = (child.Attributes[XMLATTRIB_NAME] != null) ? child.Attributes[XMLATTRIB_NAME].Value : DEFAULTVAL_SPELLBOT_CAST_NAME; template.Tasks.Add(new BotTaskUse(name)); break; case XMLVALUE_REST: template.Tasks.Add(new BotTaskRest()); break; case XMLVALUE_STAND: template.Tasks.Add(new BotTaskStand()); break; case XMLVALUE_SLEEP: duration = (child.Attributes[XMLATTRIB_DURATION] != null && UInt32.TryParse(child.Attributes[XMLATTRIB_DURATION].Value, out duration)) ? duration * GameTick.MSINSECOND : DEFAULTVAL_SPELLBOT_SLEEP_DURATION * GameTick.MSINSECOND; template.Tasks.Add(new BotTaskSleep(duration)); break; case XMLVALUE_SAY: text = (child.Attributes[XMLATTRIB_TEXT] != null) ? child.Attributes[XMLATTRIB_TEXT].Value : null; if (text != null) template.Tasks.Add(new BotTaskSay(text)); break; } } return template; }