Exemple #1
0
 public void RemoveCollectionQuestEventHandler(ConstantDefine.CollectionType type, UnityAction handler)
 {
     if (m_collectionHandlers.ContainsKey(type))
     {
         m_collectionHandlers[type].RemoveListener(handler);
     }
 }
Exemple #2
0
 /// <summary>
 /// 当某个物品被采集,此函数触发,并将事件转发给任务
 /// 每出生一个可采集物品,就注册该函数
 /// </summary>
 /// <param name="collectionType"></param>
 public void ItemCollectedEventHandler(ConstantDefine.CollectionType collectionType)
 {
     if (m_collectionHandlers.ContainsKey(collectionType))
     {
         m_collectionHandlers[collectionType].Invoke();
     }
 }
Exemple #3
0
 public CollectionQuest(string name, string scene, string desc, byte diff, ConstantDefine.CollectionType type, byte number)
     : base(name, scene, desc, diff)
 {
     m_type = ConstantDefine.QuestType.Collect;
     m_targetType = type;
     m_targetNumber = number;
     m_completedNumber = 0;
 }
Exemple #4
0
 public CollectionQuest(string name, string scene, string desc, byte diff, ConstantDefine.CollectionType type, byte number)
     : base(name, scene, desc, diff)
 {
     m_type            = ConstantDefine.QuestType.Collect;
     m_targetType      = type;
     m_targetNumber    = number;
     m_completedNumber = 0;
 }
Exemple #5
0
 /// <summary>
 /// 为采集任务进行事件添加处理程序
 /// </summary>
 /// <param name="type">需要采集的物品类型(这里采集任务只采一种)</param>
 /// <param name="handler"></param>
 public void RegisterCollectionQuestEventHandler(ConstantDefine.CollectionType type, UnityAction handler)
 {
     if (!m_collectionHandlers.ContainsKey(type))
     {
         var collectEvent = new UnityEvent();
         m_collectionHandlers.Add(type, collectEvent);
     }
     m_collectionHandlers[type].AddListener(handler);
 }
Exemple #6
0
    public static CollectableItemInfo GetCollectableItemInfoFromXmlByType(ConstantDefine.CollectionType type)
    {
        CollectableItemInfo info;
        string     path = "/items/item[" + ((byte)type).ToString() + "]/";
        XmlElement root = _GetXmlRootElement("item/collectable item");

        info.name = root.SelectSingleNode(path + "name").InnerText;
        info.info = root.SelectSingleNode(path + "info").InnerText;
        return(info);
    }
Exemple #7
0
 public byte GetCount(ConstantDefine.CollectionType type)
 {
     if (m_bagItems.ContainsKey(type))
     {
         return(m_bagItems[type].count);
     }
     else
     {
         return(0);
     }
 }
Exemple #8
0
 public void Abondon(ConstantDefine.CollectionType itemType, string function = "use")
 {
     if (m_bagItems.ContainsKey(itemType))
     {
         Text countText = m_bagGridTF.GetChild(m_bagItems[itemType].index).GetChild(2).GetComponent <Text>();
         countText.text = "";
         GameObject.Destroy(m_bagItems[itemType].itemUI);
         m_bagItems.Remove(itemType);
         CommonCanvasManager.GetInstance().Return(function);
     }
 }
Exemple #9
0
    /// <summary>
    /// 根据特定的XPath读取任务信息
    /// </summary>
    /// <param name="path">已包含特定信息,如任务名、序号等</param>
    /// <returns></returns>
    private static Quest _CreateQuestWithXPath(string path)
    {
        XmlElement root     = _GetXmlRootElement();
        XmlNode    nameNode = root.SelectSingleNode(path + "name");

        if (nameNode == null)
        {
            return(null);
        }

        string name        = nameNode.InnerText;
        string scene       = root.SelectSingleNode(path + "scene").InnerText;
        string description = root.SelectSingleNode(path + "description").InnerText;
        byte   star        = byte.Parse(root.SelectSingleNode(path + "stars").InnerText);

        ConstantDefine.QuestType type = (ConstantDefine.QuestType) byte.Parse(root.SelectSingleNode(path + "type").InnerText);
        Quest quest = null;

        switch (type)
        {
        case ConstantDefine.QuestType.Crusade:
            //任务目标
            List <QuestTarget <ConstantDefine.EnemyType> > targets = new List <QuestTarget <ConstantDefine.EnemyType> >();
            XmlNodeList idList     = root.SelectNodes(path + "target/id");
            XmlNodeList numberList = root.SelectNodes(path + "target/number");
            for (int i = 0; i < idList.Count; i++)
            {
                QuestTarget <ConstantDefine.EnemyType> questTarget = new QuestTarget <ConstantDefine.EnemyType>();
                questTarget.targetType      = (ConstantDefine.EnemyType) byte.Parse(idList[i].InnerText);
                questTarget.targetNumber    = byte.Parse(numberList[i].InnerText);
                questTarget.completedNumber = 0;
                targets.Add(questTarget);
            }
            //创建任务
            quest = new CrusadeQuest(name, scene, description, star, targets);
            break;

        case ConstantDefine.QuestType.Collect:
            //任务目标
            ConstantDefine.CollectionType collectionType = (ConstantDefine.CollectionType) byte.Parse(root.SelectSingleNode(path + "id").InnerText);
            byte number = byte.Parse(root.SelectSingleNode(path + "number").InnerText);
            //创建任务
            quest = new CollectionQuest(name, scene, description, star, collectionType, number);
            break;

        default:
            break;
        }
        quest.reward = GetRewardInfoFromXmlByAt(byte.Parse(root.SelectSingleNode(path + "reward").InnerText));
        return(quest);
    }
Exemple #10
0
 /// <summary>
 /// 移除
 /// </summary>
 public void Remove(ConstantDefine.CollectionType itemType, byte count = 1)
 {
     if (m_bagItems.ContainsKey(itemType))
     {
         byte currentCount = m_bagItems[itemType].count;
         if (currentCount > count)
         {
             m_bagItems[itemType].count -= count;
             AddCountForIndexUI(m_bagItems[itemType].index, count, false);
         }
         else
         {
             Abondon(itemType);
         }
     }
 }
Exemple #11
0
 public Key(ConstantDefine.CollectionType type)
     : base(type)
 {
     bagType = ConstantDefine.BagItemType.Sundry;
 }
Exemple #12
0
 public BagItem(ConstantDefine.CollectionType type)
 {
     itemType = type;
     itemInfo = CommonUtility.GetCollectableItemInfoFromXmlByType(type);
 }
Exemple #13
0
 public BagItem(ConstantDefine.CollectionType type)
 {
     itemType = type;
     itemInfo = CommonUtility.GetCollectableItemInfoFromXmlByType(type);
 }
Exemple #14
0
 public MinorHealthPotion(ConstantDefine.CollectionType type)
     : base(type)
 {
 }
Exemple #15
0
 public Equipment(ConstantDefine.CollectionType type)
     : base(type)
 {
     bagType = ConstantDefine.BagItemType.Equipment;
 }
Exemple #16
0
 public Potion(ConstantDefine.CollectionType type)
     : base(type)
 {
     bagType = ConstantDefine.BagItemType.Potion;
 }