public void RemoveCollectionQuestEventHandler(ConstantDefine.CollectionType type, UnityAction handler) { if (m_collectionHandlers.ContainsKey(type)) { m_collectionHandlers[type].RemoveListener(handler); } }
/// <summary> /// 当某个物品被采集,此函数触发,并将事件转发给任务 /// 每出生一个可采集物品,就注册该函数 /// </summary> /// <param name="collectionType"></param> public void ItemCollectedEventHandler(ConstantDefine.CollectionType collectionType) { if (m_collectionHandlers.ContainsKey(collectionType)) { m_collectionHandlers[collectionType].Invoke(); } }
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; }
/// <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); }
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); }
public byte GetCount(ConstantDefine.CollectionType type) { if (m_bagItems.ContainsKey(type)) { return(m_bagItems[type].count); } else { return(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); } }
/// <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); }
/// <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); } } }
public Key(ConstantDefine.CollectionType type) : base(type) { bagType = ConstantDefine.BagItemType.Sundry; }
public BagItem(ConstantDefine.CollectionType type) { itemType = type; itemInfo = CommonUtility.GetCollectableItemInfoFromXmlByType(type); }
public MinorHealthPotion(ConstantDefine.CollectionType type) : base(type) { }
public Equipment(ConstantDefine.CollectionType type) : base(type) { bagType = ConstantDefine.BagItemType.Equipment; }
public Potion(ConstantDefine.CollectionType type) : base(type) { bagType = ConstantDefine.BagItemType.Potion; }