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(); }
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); }
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); }
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; }
/// <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); }