private void AssignBasics(ForgeItem forgeItem, Item baseItem, SummarizedItem summarized) { forgeItem.itemName.text = baseItem.itemName; forgeItem.icon = baseItem.itemIcon; forgeItem.description = baseItem.description; forgeItem.summarizedItem = summarized; }
private void AssignCost(ForgeItem item, List <string> cost) { item.cost.Clear(); Dictionary <string, int> resources = new Dictionary <string, int>(); foreach (string line in cost) { string[] s = line.Split(separator); resources.Add(s[0], int.Parse(s[1])); } int index = 0; foreach (KeyValuePair <string, int> entry in resources) { if (ResourceDictionary.instance.resources.ContainsKey(entry.Key)) { ResourceData resource = ResourceDictionary.instance.resources[entry.Key]; item.resources[index].gameObject.SetActive(true); item.resources[index].sprite = resource.icon; item.resourceCounts[index].text = entry.Value.ToString(); item.cost.Add(ResourceDictionary.instance.resourceItems[resource.interactionType].Summarize(), entry.Value); index++; } else { Debug.LogWarning("No resource found for name " + entry.Key); } } for (; index < item.resources.Length; index++) { item.resources[index].gameObject.SetActive(false); } }
private void AssignStats(ForgeItem item, float load, bool hasDammage, float dammage, bool hasArmor, float armor) { item.dammage.gameObject.SetActive(hasDammage); item.armor.gameObject.SetActive(hasArmor); item.loadCount.text = load.ToString(); item.dammageCount.text = dammage.ToString(); item.armorCount.text = armor.ToString(); }
private ForgeItem GetItem() { ForgeItem item = itemPool.Dequeue(); item.gameObject.SetActive(true); item.transform.SetParent(itemListContainer); itemInUse.Enqueue(item); (item.transform as RectTransform).sizeDelta = new Vector2(itemListContainer.sizeDelta.x, 55); return(item); }
private void FreeForgeItems() { while (itemInUse.Count != 0) { ForgeItem item = itemInUse.Dequeue(); item.transform.SetParent(poolContainer); item.gameObject.SetActive(false); itemPool.Enqueue(item); } }
public void OnForgeItemPointerExit(ForgeItem forgeItem) { forgeItem.itemName.color = Color.white; if (hoveredForgeItem == forgeItem) { hoveredForgeItem = null; enoughResources = false; enoughResourceMessage.SetActive(false); } }
private bool HasEnoughResources(ForgeItem forgeItem) { foreach (KeyValuePair <SummarizedItem, int> si in forgeItem.cost) { if (PlayerController.MainInstance.inventory.inventory.ContainsKey(si.Key)) { if (PlayerController.MainInstance.inventory.inventory[si.Key] < si.Value) { return(false); } } else { return(false); } } return(true); }
private void Start() { itemPool = new Queue <ForgeItem>(); itemInUse = new Queue <ForgeItem>(); for (int i = 0; i < Arsenal.Instance.craftableItemCount; i++) { ForgeItem item = Instantiate <ForgeItem>(forgeItemPrefab); item.gameObject.name = "forgeItem"; item.transform.SetParent(poolContainer); item.transform.localScale = Vector3.one; item.transform.rotation = Quaternion.identity; item.gameObject.SetActive(false); itemPool.Enqueue(item); } OnForgeFilterPointerClick(filters[0], false); validationTime = 0f; enoughResources = false; enoughResourceMessage.SetActive(false); }
private void LoadFilter(ForgeFilter filter) { FreeForgeItems(); avatar.weapon.Equip(PlayerController.MainInstance.weapon.equipedItem.type); avatar.second.Equip(PlayerController.MainInstance.secondHand.equipedItem.type); avatar.head.Equip(PlayerController.MainInstance.head.equipedItem.type); avatar.body.Equip(PlayerController.MainInstance.body.equipedItem.type, false); avatar.shield.Equip(PlayerController.MainInstance.shield.equipedItem.type); avatar.backpack.Equip(PlayerController.MainInstance.backpack.equipedItem.type); avatar.AnimationParameterRefresh(); int itemCount = 0; Vector3 position = new Vector3(0, 0, 0); switch (filter.type) { case Item.ItemType.Weapon: foreach (KeyValuePair <WeaponItem.Type, WeaponItem> entry in Arsenal.Instance.weaponDictionary) { ForgeItem item = GetItem(); item.transform.localPosition = position; AssignBasics(item, entry.Value, entry.Value.Summarize()); AssignCost(item, entry.Value.crafting); AssignStats(item, entry.Value.load, true, entry.Value.dammage, false, 0); position -= spacing * Vector3.up; } itemCount = Arsenal.Instance.weaponDictionary.Count; break; case Item.ItemType.Head: foreach (KeyValuePair <HeadItem.Type, HeadItem> entry in Arsenal.Instance.headDictionary) { ForgeItem item = GetItem(); item.transform.localPosition = position; AssignBasics(item, entry.Value, entry.Value.Summarize()); AssignCost(item, entry.Value.crafting); AssignStats(item, entry.Value.load, false, 0, true, entry.Value.armor); position -= spacing * Vector3.up; } itemCount = Arsenal.Instance.headDictionary.Count; break; case Item.ItemType.Body: foreach (KeyValuePair <BodyItem.Type, BodyItem> entry in Arsenal.Instance.bodyDictionary) { ForgeItem item = GetItem(); item.transform.localPosition = position; AssignBasics(item, entry.Value, entry.Value.Summarize()); AssignCost(item, entry.Value.crafting); AssignStats(item, entry.Value.load, false, 0, true, entry.Value.armor); position -= spacing * Vector3.up; } itemCount = Arsenal.Instance.bodyDictionary.Count; break; case Item.ItemType.Second: foreach (KeyValuePair <SecondItem.Type, SecondItem> entry in Arsenal.Instance.secondDictionary) { ForgeItem item = GetItem(); item.transform.localPosition = position; AssignBasics(item, entry.Value, entry.Value.Summarize()); AssignCost(item, entry.Value.crafting); AssignStats(item, entry.Value.load, true, entry.Value.dammage, false, 0); position -= spacing * Vector3.up; } itemCount = Arsenal.Instance.secondDictionary.Count; break; case Item.ItemType.Shield: foreach (KeyValuePair <ShieldItem.Type, ShieldItem> entry in Arsenal.Instance.shieldDictionary) { ForgeItem item = GetItem(); item.transform.localPosition = position; AssignBasics(item, entry.Value, entry.Value.Summarize()); AssignCost(item, entry.Value.crafting); AssignStats(item, entry.Value.load, false, 0, true, entry.Value.armor); position -= spacing * Vector3.up; } itemCount = Arsenal.Instance.shieldDictionary.Count; break; case Item.ItemType.Backpack: foreach (KeyValuePair <BackpackItem.Type, BackpackItem> entry in Arsenal.Instance.backpackDictionary) { ForgeItem item = GetItem(); item.transform.localPosition = position; AssignBasics(item, entry.Value, entry.Value.Summarize()); AssignCost(item, entry.Value.crafting); AssignStats(item, entry.Value.load, false, 0, false, 0); position -= spacing * Vector3.up; } itemCount = Arsenal.Instance.backpackDictionary.Count; break; case Item.ItemType.None: foreach (KeyValuePair <WeaponItem.Type, WeaponItem> entry in Arsenal.Instance.weaponDictionary) { ForgeItem item = GetItem(); item.transform.localPosition = position; AssignBasics(item, entry.Value, entry.Value.Summarize()); AssignCost(item, entry.Value.crafting); AssignStats(item, entry.Value.load, true, entry.Value.dammage, false, 0); position -= spacing * Vector3.up; } foreach (KeyValuePair <HeadItem.Type, HeadItem> entry in Arsenal.Instance.headDictionary) { ForgeItem item = GetItem(); item.transform.localPosition = position; AssignBasics(item, entry.Value, entry.Value.Summarize()); AssignCost(item, entry.Value.crafting); AssignStats(item, entry.Value.load, false, 0, true, entry.Value.armor); position -= spacing * Vector3.up; } foreach (KeyValuePair <BodyItem.Type, BodyItem> entry in Arsenal.Instance.bodyDictionary) { ForgeItem item = GetItem(); item.transform.localPosition = position; AssignBasics(item, entry.Value, entry.Value.Summarize()); AssignCost(item, entry.Value.crafting); AssignStats(item, entry.Value.load, false, 0, true, entry.Value.armor); position -= spacing * Vector3.up; } foreach (KeyValuePair <SecondItem.Type, SecondItem> entry in Arsenal.Instance.secondDictionary) { ForgeItem item = GetItem(); item.transform.localPosition = position; AssignBasics(item, entry.Value, entry.Value.Summarize()); AssignCost(item, entry.Value.crafting); AssignStats(item, entry.Value.load, true, entry.Value.dammage, false, 0); position -= spacing * Vector3.up; } foreach (KeyValuePair <ShieldItem.Type, ShieldItem> entry in Arsenal.Instance.shieldDictionary) { ForgeItem item = GetItem(); item.transform.localPosition = position; AssignBasics(item, entry.Value, entry.Value.Summarize()); AssignCost(item, entry.Value.crafting); AssignStats(item, entry.Value.load, false, 0, true, entry.Value.armor); position -= spacing * Vector3.up; } foreach (KeyValuePair <BackpackItem.Type, BackpackItem> entry in Arsenal.Instance.backpackDictionary) { ForgeItem item = GetItem(); item.transform.localPosition = position; AssignBasics(item, entry.Value, entry.Value.Summarize()); AssignCost(item, entry.Value.crafting); AssignStats(item, entry.Value.load, false, 0, false, 0); position -= spacing * Vector3.up; } itemCount = Arsenal.Instance.craftableItemCount; break; default: break; } itemListContainer.sizeDelta = new Vector2(itemListContainer.sizeDelta.x, spacing * itemCount); }
public void OnForgeItemPointerClick(ForgeItem forgeItem) { }
public void OnForgeItemPointerEnter(ForgeItem forgeItem) { forgeItem.itemName.color = hoveredItemTextColor; hoveredForgeItem = forgeItem; enoughResources = HasEnoughResources(hoveredForgeItem); enoughResourceMessage.SetActive(!enoughResources); descriptionName.text = forgeItem.itemName.text; description.text = forgeItem.description; loadCount.text = forgeItem.loadCount.text; armorCount.text = forgeItem.armorCount.text; dammageCount.text = forgeItem.dammageCount.text; itemIcon.sprite = forgeItem.icon; switch (forgeItem.summarizedItem.itemType) { case Item.ItemType.Weapon: avatar.weapon.Equip((WeaponItem.Type)forgeItem.summarizedItem.derivatedType); WeaponItem weapon = Arsenal.Instance.Get((WeaponItem.Type)forgeItem.summarizedItem.derivatedType); if (weapon.forbidSecond) { avatar.second.Equip(SecondItem.Type.None); } else if (!PlayerController.MainInstance.secondHand.equipedItem.forbidWeapon) { avatar.second.Equip(PlayerController.MainInstance.secondHand.equipedItem.type); } if (weapon.forbidShield) { avatar.shield.Equip(ShieldItem.Type.None); } else { avatar.shield.Equip(PlayerController.MainInstance.shield.equipedItem.type); } break; case Item.ItemType.Head: avatar.head.Equip((HeadItem.Type)forgeItem.summarizedItem.derivatedType); break; case Item.ItemType.Body: avatar.body.Equip((BodyItem.Type)forgeItem.summarizedItem.derivatedType, false); break; case Item.ItemType.Second: avatar.second.Equip((SecondItem.Type)forgeItem.summarizedItem.derivatedType); SecondItem second = Arsenal.Instance.Get((SecondItem.Type)forgeItem.summarizedItem.derivatedType); if (second.forbidWeapon) { avatar.weapon.Equip(WeaponItem.Type.None); } else if (!PlayerController.MainInstance.weapon.equipedItem.forbidSecond) { avatar.weapon.Equip(PlayerController.MainInstance.weapon.equipedItem.type); } if (second.forbidShield) { avatar.shield.Equip(ShieldItem.Type.None); } else { avatar.shield.Equip(PlayerController.MainInstance.shield.equipedItem.type); } break; case Item.ItemType.Backpack: avatar.backpack.Equip((BackpackItem.Type)forgeItem.summarizedItem.derivatedType); break; case Item.ItemType.Shield: avatar.shield.Equip((ShieldItem.Type)forgeItem.summarizedItem.derivatedType); if (PlayerController.MainInstance.weapon.equipedItem.forbidShield) { avatar.weapon.Equip(WeaponItem.Type.None); } else { avatar.weapon.Equip(PlayerController.MainInstance.weapon.equipedItem.type); } if (PlayerController.MainInstance.secondHand.equipedItem.forbidShield) { avatar.second.Equip(SecondItem.Type.None); } else { avatar.second.Equip(PlayerController.MainInstance.secondHand.equipedItem.type); } break; default: break; } avatar.AnimationParameterRefresh(); }