public Equipment[] getEquipmentWithType(Equipment.Type type)
 {
     List<Equipment> eqWithTypeList = new List<Equipment>();
     for (int i = 0; i < equipment.Length; i++){
         if (equipment[i].getTypes().Contains(type)){
             eqWithTypeList.Add(equipment[i]);
         }
     }
     return eqWithTypeList.ToArray();
 }
Exemple #2
0
    private void SetupUpgrades()
    {
        title.text  = string.Format("Select One    ({0}/{1})", numUsed + 1, numUpgrades);
        _addNewCard = baseCards[UnityEngine.Random.Range(0, baseCards.Count)];
        PopulateCard(_addNewCard, addNewCard);
        _replaceOldCard = player.deck.deck[UnityEngine.Random.Range(0, player.deck.deck.Count)];
        PopulateCard(_replaceOldCard, replaceOldCard);
        if (_replaceOldCard.upgrades.Length == 0)
        {
            _replaceNewCard = baseCards[UnityEngine.Random.Range(0, baseCards.Count)];
        }
        else
        {
            _replaceNewCard = _replaceOldCard.upgrades[UnityEngine.Random.Range(0, _replaceOldCard.upgrades.Length)];
        }
        PopulateCard(_replaceNewCard, replaceNewCard);
        _equipmentOldCard = null;
        _equipmentNewCard = null;
        Array values = Enum.GetValues(typeof(Equipment.Type));
        var   rar    = 0;

        Equipment.Type type = (Equipment.Type)values.GetValue(UnityEngine.Random.Range(0, values.Length));
        do
        {
            type = (Equipment.Type)values.GetValue(UnityEngine.Random.Range(0, values.Length));
            switch (type)
            {
            case Equipment.Type.Chest:
                _equipmentOldCard = player.chestItem;
                break;

            case Equipment.Type.Hand:
                _equipmentOldCard = player.handItem;
                break;

            case Equipment.Type.Head:
                _equipmentOldCard = player.headItem;
                break;
            }
            rar = _equipmentOldCard != null ? rar = _equipmentOldCard.rarity : 0;
            _equipmentNewCard = equipment[UnityEngine.Random.Range(0, equipment.Count)];
        } while (!(_equipmentNewCard.rarity == rar || _equipmentNewCard.rarity == rar + 1) || _equipmentNewCard == _equipmentOldCard || _equipmentNewCard.type != type);
        PopulateEquipment(_equipmentNewCard, equipmentNewCard);
        PopulateEquipment(_equipmentOldCard, equipmentOldCard);
    }
Exemple #3
0
        public Item Create(string id)
        {
            TextAsset itemText = m_assetBundle.LoadAsset <TextAsset>(id);

            if (itemText == null)
            {
                Debug.LogError("无法找到id为" + id + "的Item的信息");
                return(null);
            }

            XmlDocument doc = new XmlDocument();

            try
            {
                doc.LoadXml(itemText.text);   //读取此XML字符串至doc
            }
            catch (XmlException e)
            {
                Debug.LogException(e);
                return(null);
            }
            XmlNode itemNode = doc.FirstChild;

            string name            = itemNode.Attributes["Name"].Value;
            string spriteId        = itemNode.Attributes["Sprite"].Value;
            string itemDescription = "";
            string useDescription  = "";
            int    buyPrice        = 0;
            int    salePrice       = 0;

            int hp              = 0;
            int physicalAttack  = 0;
            int physicalDefense = 0;
            int magicAttack     = 0;
            int magicDefense    = 0;

            Equipment.Type equipmentType = Equipment.Type.Weapon;

            foreach (XmlNode node in itemNode.ChildNodes)
            {
                switch (node.Name)
                {
                case "ItemDescription":
                    itemDescription = node.InnerText;
                    break;

                case "UseDescription":
                    useDescription = node.InnerText;
                    break;

                case "SalePrice":
                    salePrice = int.Parse(node.InnerText);
                    break;

                case "BuyPrice":
                    buyPrice = Int32.Parse(node.InnerText);
                    break;

                case "HP":
                    hp = Int32.Parse(node.InnerText);
                    break;

                case "PhysicalAttack":
                    physicalAttack = Int32.Parse(node.InnerText);
                    break;

                case "MagicAttack":
                    magicAttack = Int32.Parse(node.InnerText);
                    break;

                case "PhysicalDefense":
                    physicalDefense = Int32.Parse(node.InnerText);
                    break;

                case "MagicDefense":
                    magicDefense = Int32.Parse(node.InnerText);
                    break;

                case "Type":
                    equipmentType = (Equipment.Type)Enum.Parse(typeof(Equipment.Type), node.InnerText);
                    break;

                default:
                    break;
                }
            }

            string itemType = Setting.Config.Id2Type[id.Substring(0, 2)];

            switch (itemType)
            {
            case "Consumable":
                return(new Consumable(name, id, spriteId,
                                      itemDescription, useDescription, buyPrice,
                                      salePrice, hp));

            case "Equipment":
                return(new Equipment(name, id, spriteId,
                                     itemDescription, useDescription, buyPrice,
                                     salePrice, physicalAttack, magicAttack,
                                     physicalDefense, magicDefense, hp,
                                     equipmentType));

            case "TaskItem":
                return(new TaskItem(name, id, spriteId,
                                    itemDescription, useDescription));

            case "Material":
                return(new Material(name, id, spriteId,
                                    itemDescription, useDescription, buyPrice,
                                    salePrice));

            default:
                break;
            }

            return(null);
        }
Exemple #4
0
 public Equipment(string name, string id, string spriteID, string itemDescription, string useDescription, int buyPrice, int salePrice,
                  int physicalAttack, int magicAttack, int physicalDefense, int magicDefense, int hp, Equipment.Type type) : base(name, id, spriteID, itemDescription, useDescription, buyPrice, salePrice)
 {
     this.PhysicalAttack  = physicalAttack;
     this.MagicAttack     = magicAttack;
     this.PhysicalDefense = physicalDefense;
     this.MagicDefense    = magicDefense;
     this.HP            = hp;
     this.EquipmentType = type;
 }
Exemple #5
0
        /// <summary>
        /// 从xmlText读取Item信息
        /// </summary>
        /// <param name="item">读取得到的信息out写入item</param>
        /// <param name="xmlText">xml文档</param>
        /// <returns>是否读取成功</returns>
        public static bool ReadItemInfo(out Item item, string itemId)
        {
            item = null;

            AssetBundle itemInfoAB = MYXZAssetBundleManager.Instance.LoadOrGetAssetBundle(MYXZXmlReader.GetConfigAssetBundlePath("Item"));

            TextAsset itemText = itemInfoAB.LoadAsset <TextAsset>(itemId);

            if (itemText == null)
            {
                Debug.LogError("无法找到id为" + itemId + "的Item的信息");
                MYXZAssetBundleManager.Instance.Unload(itemInfoAB.name);
                return(false);
            }

            XmlDocument doc = new XmlDocument();

            try
            {
                doc.LoadXml(itemText.text);   //读取此XML字符串至doc
            }
            catch (XmlException e)
            {
                Debug.LogException(e);
                return(false);
            }
            XmlNode itemNode = doc.FirstChild;
            string  itemType = itemNode.Attributes["ID"].Value.Substring(0, 2); //获取Item的类型

            string name            = itemNode.Attributes["Name"].Value;
            string id              = itemNode.Attributes["ID"].Value;
            string spriteId        = itemNode.Attributes["Sprite"].Value;
            string itemDescription = "";
            string useDescription  = "";
            int    buyPrice        = 0;
            int    salePrice       = 0;

            int hp              = 0;
            int physicalAttack  = 0;
            int physicalDefense = 0;
            int magicAttack     = 0;
            int magicDefense    = 0;

            Equipment.Type equipmentType = Equipment.Type.Weapon;

            foreach (XmlNode node in itemNode.ChildNodes)
            {
                if (node.Name.Equals("ItemDescription"))
                {
                    itemDescription = node.InnerText;
                }
                else if (node.Name.Equals("UseDescription"))
                {
                    useDescription = node.InnerText;
                }
                else if (node.Name.Equals("SalePrice"))
                {
                    salePrice = Int32.Parse(node.InnerText);
                }
                else if (node.Name.Equals("BuyPrice"))
                {
                    buyPrice = Int32.Parse(node.InnerText);
                }
                else if (node.Name.Equals("HP"))
                {
                    hp = Int32.Parse(node.InnerText);
                }
                else if (node.Name.Equals("PhysicalAttack"))
                {
                    physicalAttack = Int32.Parse(node.InnerText);
                }
                else if (node.Name.Equals("MagicAttack"))
                {
                    magicAttack = Int32.Parse(node.InnerText);
                }
                else if (node.Name.Equals("PhysicalDefense"))
                {
                    physicalDefense = Int32.Parse(node.InnerText);
                }
                else if (node.Name.Equals("MagicDefense"))
                {
                    magicDefense = Int32.Parse(node.InnerText);
                }
                else if (node.Name.Equals("Type"))
                {
                    equipmentType = (Equipment.Type)Enum.Parse(typeof(Equipment.Type), node.InnerText);
                }
            }

            if (itemType.Equals("03"))
            {
                item = new Consumable(name, id, spriteId, itemDescription, useDescription, buyPrice, salePrice,
                                      hp);
            }
            else if (itemType.Equals("04"))
            {
                item = new Equipment(name, id, spriteId, itemDescription, useDescription, buyPrice, salePrice,
                                     physicalAttack, magicAttack, physicalDefense, magicDefense, hp, equipmentType);
            }
            else if (itemType.Equals("09"))
            {
                item = new TaskItem(name, id, spriteId, itemDescription, useDescription);
            }
            else if (itemType.Equals("10"))
            {
                item = new Material(name, id, spriteId, itemDescription, useDescription, buyPrice, salePrice);
            }
            MYXZAssetBundleManager.Instance.Unload(itemInfoAB.name);

            return(true);
        }