/// <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;
        }
示例#2
0
        /// <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;
        }