예제 #1
0
    public override void Load(XmlNode node)
    {
        base.Load(node);
        Type = (eQuestType)Enum.Parse(typeof(eQuestType), node.Attributes["type"].Value);
        eQuestCondition condition = (eQuestCondition)Enum.Parse(typeof(eQuestCondition), node.Attributes["condition"].Value);

        Condition = QuestConditionFactory.Instance.Create(condition);
        Condition.Load(node);
        Title        = node.Attributes["title"].Value;
        _Description = node.Attributes["description"].Value;
        IconID       = node.Attributes["icon_id"].Value;

        if (condition == eQuestCondition.progress)
        {
            XmlNode triggerNode = node.SelectSingleNode("Trigger");
            if (triggerNode != null)
            {
                eQuestTrigger trigger = (eQuestTrigger)Enum.Parse(typeof(eQuestTrigger), triggerNode.Attributes["type"].Value);
                Trigger = QuestTriggerFactory.Instance.Create(trigger);
                Trigger.Load(triggerNode);
            }
        }

        XmlAttribute reward_exp_attr = node.Attributes["reward_exp"];

        if (reward_exp_attr != null)
        {
            RewardExp = int.Parse(reward_exp_attr.Value);
        }
        foreach (XmlNode reward_node in node.SelectNodes("Reward"))
        {
            RewardBase quest_reward = new RewardBase(reward_node);
            Rewards.Add(quest_reward);
        }

        XmlNode available_condition_node = node.SelectSingleNode("Condition");

        if (available_condition_node != null)
        {
            AvailableCondition = new QuestAvailableCondition(available_condition_node);
        }

        XmlNode moveNode = node.SelectSingleNode("Move");

        if (moveNode != null)
        {
            try
            {
                eQuestMove move = (eQuestMove)Enum.Parse(typeof(eQuestMove), moveNode.Attributes["type"].Value);
                Move = QuestMoveFactory.Instance.Create(move);
                Move.Load(moveNode);
            }
            catch (ArgumentException)
            { }
        }

        XmlAttribute fire_type_attr = node.Attributes["fire_type"];

        if (fire_type_attr != null)
        {
            FireTriggerType = (eQuestTrigger)Enum.Parse(typeof(eQuestTrigger), fire_type_attr.Value);
        }

        XmlAttribute progress_show_attr = node.Attributes["progress_show"];

        if (progress_show_attr != null)
        {
            ProgressShow = bool.Parse(progress_show_attr.Value);
        }
        else
        {
            ProgressShow = false;
        }
    }
예제 #2
0
 virtual public void Load(XmlNode node)
 {
     MoveType = (eQuestMove)Enum.Parse(typeof(eQuestMove), node.Attributes["type"].Value);
 }