private void InitEquiped(InventoryIcon icon) { Item item = GetItem(icon.item); if (item) { icon.icon.enabled = true; icon.icon.sprite = (item.itemIcon == null ? errorIcon : item.itemIcon); icon.icon.color = Color.white; if (icon.text) { icon.text.text = ""; } if (icon.item.itemType == Item.ItemType.Backpack && ((BackpackItem.Type)icon.item.derivatedType == BackpackItem.Type.QuiverA || (BackpackItem.Type)icon.item.derivatedType == BackpackItem.Type.QuiverB)) { icon.text.text = "0"; } } else { icon.icon.enabled = false; icon.icon.color = Color.white; if (icon.text) { icon.text.text = ""; } } }
private InventoryIcon CreateIcon() { GameObject i = Instantiate(m_iconTemplate, m_iconLocation); InventoryIcon icon = i.GetComponent <InventoryIcon>(); return(icon); }
// Inicia el arrastre de un icono, llamado al empezar a arrastrar un icono del inventario. public void StartDragging(InventoryIcon upg_ico) { draggedIconReference = upg_ico; draggedIconCG.alpha = 1; draggedIconImage.sprite = PrefabManager.currentInstance.GetSpriteIconForUpgrade(upg_ico.GetUpgradeReferenced()); draggingItem = true; }
public override void cellsExchange(InventoryIcon cell1, InventoryIcon cell2) { base.cellsExchange(cell1, cell2); if (cell1 == weaponSlot || cell2 == weaponSlot) CharacterBase.instance.controlAtk.TakeGun((GunData)weaponSlot.item); }
InventoryIcon SetIcon(InventoryEnum size, string item, RectTransform targetRect) // создание и настройка новой иконки { InventoryIcon target = null; foreach (InventoryIcon i in icons) { if (i.size == size) { target = i; } } if (target) { InventoryIcon clone = Instantiate(target) as InventoryIcon; clone.iconImage.sprite = Resources.Load <Sprite>(iconPath + "/" + item); clone.iconCountObject.SetActive(false); clone.gameObject.name = item; clone.item = item; clone.counter = 1; clone.iconCountText.text = "1"; clone.rectTransform.SetParent(targetRect); clone.rectTransform.localScale = Vector3.one; clone.rectTransform.position = Input.mousePosition; clone.gameObject.SetActive(true); return(clone); } return(null); }
void AddCurrentIcon() // добавление иконки { Vector3 p1 = targetCell[0].rectTransform.position; Vector3 p2 = targetCell[targetCell.Count - 1].rectTransform.position; Vector3 offset = (p1 - p2) / 2; icon.transform.position = p2 + offset; foreach (InventoryCells cell in targetCell) { cell.item = icon.item; cell.isLocked = true; } if (!icon.isInside) { pIcon.Add(icon); items_list.Add(current.gameObject); } icon.rectTransform.SetParent(content); icon.isInside = true; icon.iconCountObject.SetActive(true); icon = null; if (current) { current.transform.SetParent(objects); current.gameObject.SetActive(false); } }
void AddQuickly() // быстрое добавление { if (IsSimilar(current.item)) { Destroy(current.gameObject); return; } icon = SetIcon(current.size, current.item, content); if (!icon) { return; } int xx = 0, yy = 0; // Размер иконки 1х1 targetCell = new List <InventoryCells>(); for (int y = 0; y < height - yy; y++) { for (int x = 0; x < width - xx; x++) { switch (icon.size) // ищем место для новой иконки { case InventoryEnum.size1x1: if (!field[x, y].isLocked) { targetCell.Add(field[x, y]); AddCurrentIcon(); return; } break; } } } }
public void BeginDrag(InventoryIcon curIcon) { lastPosition = curIcon.rectTransform.position; icon = curIcon; SetUnlock(curIcon.item); icon.rectTransform.SetParent(overlap); }
// Termina el arrastre de un icono, llamado al dejar de arrastrar un icono y al cerrar el menu public void StopDragging() { draggedIconCG.alpha = 0; draggingItem = false; draggedIconReference = null; RemoveTooltip(); }
public override void _Ready() { Alpha = GD.Load("res://UI/Textures/Alpha.png") as Texture; InventoryIconScene = GD.Load <PackedScene>("res://UI/InventoryIcon.tscn"); PlayerVBox = GetNode <VBoxContainer>("HBoxContainer/PlayerCenter/PlayerVBox"); OtherGrid = GetNode <GridContainer>("HBoxContainer/OtherVBox/OtherCenter/OtherGrid"); Game.PossessedPlayer.MatchSome( (Plr) => { PlayerIcons = new InventoryIcon[Plr.Inventory.Contents.Length]; for (int Index = 0; Index < Plr.Inventory.Contents.Length; Index++) { InventoryIcon Icon = InstantiateIcon(Index, Plr); PlayerVBox.AddChild(Icon); PlayerIcons[Index] = Icon; } } ); if (Other != null) { OtherIcons = new InventoryIcon[Other.Inventory.Contents.Length]; for (int Index = 0; Index < Other.Inventory.Contents.Length; Index++) { InventoryIcon Icon = InstantiateIcon(Index, Other); OtherGrid.AddChild(Icon); OtherIcons[Index] = Icon; } } }
private void FreeIcon(InventoryIcon icon) { showedIcons.Remove(icon); instantiatedIcons.Enqueue(icon); icon.transform.SetParent(unusedContainer); icon.gameObject.SetActive(false); icon.border.color = defaultBorderColor; }
public void ReplaceInventoryIcon(InventoryIcon newValue) { var index = GameComponentsLookup.InventoryIcon; var component = CreateComponent <InventoryIconComponent>(index); component.value = newValue; ReplaceComponent(index, component); }
protected InventoryIcon[] spawnInventory(Rect displayZone, ItemData[] items, string titleText = "Inventory") { GameObject iconPrefab=(GameObject)Resources.Load("IconPrefab"); GameObject bgPrefab = (GameObject)Resources.Load("InventoryBgPrefab"); int borderWidth = 11; int titleHeight = 100; int cols; int rows; int cellSize = iconPrefab.transform.Find("Background").gameObject.GetComponent<UISprite>().width; UISprite bg = NGUITools.AddChild(container.gameObject, bgPrefab ).GetComponent<UISprite>(); bg.transform.localPosition = new Vector3(displayZone.x,displayZone.y,0); bg.width =(int) displayZone.width; bg.height = (int)displayZone.height; bg.depth -= 10; UILabel title; title = bg.transform.FindChild("Label").gameObject.GetComponent<UILabel>(); title.text = titleText; title.transform.localPosition = new Vector3(bg.width / 2,-(titleHeight-title.height)/2+title.height/2,0); Rect cellsZone = displayZone; cellsZone.x = borderWidth; cellsZone.width -= borderWidth*2; cellsZone.y = -titleHeight; cellsZone.height -= titleHeight+borderWidth; cols =(int) cellsZone.width / 70; rows =(int) cellsZone.height / 70; InventoryIcon[] ret = new InventoryIcon[cols * rows]; cellsZone.x += (cellsZone.width - cols * 70) / 2; cellsZone.y += (cellsZone.height - rows * 70) / 2; for (int i =0;i< cols;i++) for (int j = 0; j < rows; j++) { InventoryIcon nic = NGUITools.AddChild(bg.gameObject, iconPrefab).GetComponent<InventoryIcon>(); nic.init(null, this, i * rows + j); nic.gameObject.transform.localPosition = new Vector3(cellsZone.x+ i * 70+cellSize/2,cellsZone.y+ -j * 70-cellSize/2, 0); ret[i *rows+j] = nic; } return ret; }
/// <summary> /// Initialize /// Inventory is first retrieved from GameManager /// and initialize when it is empty private void Start() { // Clone it less we duplicate values m_inventory = new Dictionary <TileType, int>(GameManager.Instance.Inventory); m_prefabMapping = new Dictionary <TileType, Tile>(); // Nothing has been collected yet so we need to initialize as zero var initInventory = m_inventory.Count == 0; foreach (var prefab in UniquePrefabs) { if (prefab == null) { continue; } AddToTileMapping(prefab); if (initInventory && !m_inventory.ContainsKey(prefab.Type)) { m_inventory.Add(prefab.Type, 0); } } if (initInventory) { GameManager.Instance.Inventory = new Dictionary <TileType, int>(m_inventory); } // A hack to prevent softlocking due to being able to miss a tile if (GameManager.Instance.CurrentLevel == 4 && m_inventory[TileType.Ground] < 6) { while (m_inventory[TileType.Ground] < 6) { AddToInventory(TileType.Ground, false); GameManager.Instance.AddToInventory(TileType.Ground); } } // Map icons m_iconMapping = new Dictionary <TileType, InventoryIcon>(); foreach (var icon in FindObjectsOfType <InventoryIcon>()) { if (!m_iconMapping.ContainsKey(icon.type)) { m_iconMapping.Add(icon.type, icon); } } // Player had selected one on the previous level so lets keep that one if (GameManager.Instance.LastIconSelected != TileType.Normal) { m_icon = m_iconMapping[GameManager.Instance.LastIconSelected]; m_icon.IsSelected = true; } }
public void OnIconPointerExit(InventoryIcon icon) { icon.border.color = icon == trash ? trashDefaultColor : defaultBorderColor; helpPanel.SetActive(false); PlayerController player = PlayerController.MainInstance; armorCount.text = player.GetArmor().ToString(); loadCount.text = player.GetLoad().ToString(); dammageCount.text = player.GetDammage().ToString(); }
void ResetDrag() { foreach (InventoryCells cell in lastCell) { cell.item = icon.item; cell.isLocked = true; } icon.rectTransform.SetParent(content); icon.rectTransform.position = lastPosition; icon = null; }
/// <summary> /// When the player runs out of the currently selected tiles /// We will auto switch to the next available set /// </summary> private void SwitchToNextAvailablePrefab() { foreach (var inventory in m_inventory) { if (inventory.Value > 0) { m_icon = m_iconMapping[inventory.Key]; m_icon.IsSelected = true; break; } } }
public void InitFlame() { flame = (GameObject)Instantiate(EffectsManager.inst.flame, transform.position, Quaternion.identity); InventoryIcon i = gameObject.AddComponent <InventoryIcon>(); // i.icon = FindObjectOfType<PlayerInventory>().fireIcon; flame.transform.parent = transform; flame.GetComponent <ParticleEmitter>().emit = true; flame.GetComponent <ParticleEmitter>().minSize = 10; flame.GetComponent <ParticleEmitter>().maxSize = 11; flamed = true; }
/// <summary> /// 在物品栏添加物品并显示数量 /// </summary> /// <param name="id">物品ID</param> /// <param name="num"></param> public void SetId(int id, int num = 1) { //image info = ObjectsInfo.instance.GetObjectInfoById(id); InventoryIcon icon = GetComponentInChildren <InventoryIcon>(); icon.SetIocnName(info.IconName, info.Id); //text this.num = num; this.id = id; iconNumberText.gameObject.SetActive(true); NumberUpdate(); }
void OnDragEnd() { if (targetIconToDrop != null) controller.cellsExchange(this, targetIconToDrop); targetIconToDrop = null; isDragging = false; icon.transform.localPosition = new Vector3(); Cursor.visible = true; }
/// <summary> /// Changes the current prefab to the given type /// </summary> /// <param name="icon"></param> public void SetCurrentPrefab(InventoryIcon icon) { if (m_icon == icon) { return; } if (m_icon != null) { m_icon.IsSelected = false; } m_icon = icon; GameManager.Instance.LastIconSelected = icon.type; }
public void OnIconEndDrag(InventoryIcon icon) { if (icon != trash && !IsEquipementIcon(icon)) { icon.border.enabled = true; icon.text.enabled = true; icon.icon.transform.SetParent(icon.text.transform.parent); icon.text.transform.SetParent(icon.icon.transform); icon.icon.transform.localPosition = Vector3.zero; icon.text.transform.localPosition = Vector3.zero; dragging = false; RectTransform trashRect = trash.transform as RectTransform; if (RectTransformUtility.RectangleContainsScreenPoint(trashRect, Input.mousePosition)) // destroy item { inventory.RemoveItem(icon.item, inventory.inventory[icon.item], true); PlayerController.MainInstance.RecomputeLoadFactor(); } else if (!RectTransformUtility.RectangleContainsScreenPoint(inventoryRect, Input.mousePosition)) // drop item { Vector3 position = PlayerController.MainInstance.transform.position; int count = inventory.inventory[icon.item]; if (icon.item.itemType != Item.ItemType.Resource) { for (int i = 0; i < count; i++) { GameObject dropped = InstanciatePickable(icon.item); Vector3 dispersion = i == 0 ? Vector3.zero : new Vector3(UnityEngine.Random.Range(-1f, 1f), 0f, UnityEngine.Random.Range(-1f, 1f)); dropped.transform.position = position + 0.01f * dispersion; MapModifier.instance.grid.AddGameObject(dropped, ConstructionLayer.LayerType.Decoration, false, false); } } else { ResourceData data = ResourceDictionary.instance.GetResourceItem((InteractionType.Type)icon.item.derivatedType).resource; Dictionary <string, int> resList = new Dictionary <string, int>(); resList.Add(data.name, count); GameObject dropped = ConstructionSystem.instance.GetResourcePile(resList); dropped.transform.position = position; MapModifier.instance.grid.AddGameObject(dropped, ConstructionLayer.LayerType.Decoration, false, false); } inventory.RemoveItem(icon.item, count, true); PlayerController.MainInstance.RecomputeLoadFactor(); } } }
public void OnIconDrag(InventoryIcon icon) { if (icon != trash && !IsEquipementIcon(icon)) { icon.border.enabled = false; if (icon.text.enabled) { icon.text.transform.SetParent(icon.icon.transform.parent); } icon.text.enabled = false; icon.icon.transform.SetParent(transform); icon.icon.transform.position = Input.mousePosition; dragging = true; } }
public void added() { items = CharacterBase.instance.items; container = NGUITools.AddChild(AllGUIContainer.instance.gameObject, (GameObject)Resources.Load("MenuContainerPrefab")).GetComponent<UIWidget>(); inventoryIcons = spawnInventory(RIGHT_SIDE, items); setItemsToIcons(inventoryIcons, items); UISprite equipPanel = NGUITools.AddChild(container.gameObject, (GameObject) Resources.Load("EquipPanelPrefab")).GetComponent<UISprite>(); weaponSlot = equipPanel.gameObject.transform.Find("weaponIcon").gameObject.GetComponent<InventoryIcon>(); weaponSlot.init(CharacterBase.instance.weaponSlot, this); }
/// <summary> /// Uses tile type to set the currently selected prefab /// </summary> /// <param name="type"></param> public void SetCurrentPrefab(TileType type) { if (m_icon != null && m_icon.type == type) { return; } if (m_icon != null) { m_icon.IsSelected = false; } m_icon = m_iconMapping[type]; m_icon.IsSelected = true; GameManager.Instance.LastIconSelected = type; }
protected void setItemsToIcons(InventoryIcon[] icons, ItemData[] items, int startIndex=0) { Debug.Log(icons.Length); Debug.Log(items.Length); for(int i = 0; i < icons.Length; i++) { if (i + startIndex < items.Length) { icons[i].setItem(items[i + startIndex]); } else icons[i].setItem(null); } }
private void UpdateInventory() { Vector2 pos = Vector2.zero; int xCount = 0; foreach (ItemEntity item in m_inventory.Items) { InventoryIcon icon = CreateIcon(); Color c = GetColorFromRarity(item.Rareness); icon.Initialize(item, c); icon.transform.localPosition = pos - m_origin; pos.x += m_iconDim; xCount++; if (xCount >= (int)m_dimensions.x) { xCount = 0; pos.y -= m_iconDim; pos.x = 0.0f; } } }
public virtual void SendToInventory(Inventory inv) { int slot = inv.FirstEmptySlot(); // inventory full if (slot == -1) { return; } foreach (MeshRenderer renderer in MeshRenderers) { renderer.enabled = false; } this.GetComponent <Collider>().enabled = false; inv.ItemToSlot(this, slot); SetParentSlot(inv.Slots[slot]); InventoryIcon.GetComponent <Image>().enabled = true; }
public void Start() { pause = FindObjectOfType <PauseMenu> (); buttons = GetComponentsInChildren <Button> (); //player = FindObjectOfType<PlayerController> (); icon = FindObjectOfType <InventoryIcon> (); audios = GetComponents <AudioSource> (); activeButton = 0; activeItem = PlayerPrefs.GetInt("CurrentItem"); itemsCount = PlayerPrefs.GetInt("ItemsCount"); //itemsCount = 9; for (int i = 8; i >= itemsCount; i--) { buttons [i].interactable = false; } sprite = Resources.LoadAll <Sprite> ("Arts/items"); icon.ChangeIcon(sprite [activeItem]); }
private InventoryIcon GetIcon() { InventoryIcon icon = null; if (instantiatedIcons.Count != 0) { icon = instantiatedIcons.Dequeue(); } else { icon = Instantiate <InventoryIcon>(iconPrefab); icon.transform.rotation = Quaternion.identity; icon.transform.localScale = Vector3.one; icon.border.color = defaultBorderColor; } showedIcons.Add(icon); icon.transform.SetParent(container); icon.transform.localScale = new Vector3(0.8f, 0.8f, 1); icon.gameObject.SetActive(true); return(icon); }
public virtual void cellsExchange(InventoryIcon cell1, InventoryIcon cell2) { ItemData cacheItem = cell1.item; cell1.setItem(cell2.item); cell2.setItem(cacheItem); }
void UpdateContent() { // inventory ClearIcons(); Vector2Int indexes = Vector2Int.zero; Item item = null; foreach (KeyValuePair <SummarizedItem, int> entry in inventory.inventory) { // assign data item = GetItem(entry.Key); InventoryIcon icon = GetIcon(); icon.transform.localPosition = startPosition + new Vector3(indexes.x * spacing.x, indexes.y * spacing.y, 0); icon.icon.sprite = (item.itemIcon == null ? errorIcon : item.itemIcon); icon.icon.color = (item.itemIcon == null ? Color.red : Color.white); icon.text.text = entry.Value.ToString(); icon.name = item.itemName; icon.item = entry.Key; // increment indexes indexes.x++; if (indexes.x > columnCount - 1) { indexes.x = 0; indexes.y++; } } if (indexes.x == 0) { indexes.y--; } container.sizeDelta = new Vector2(container.sizeDelta.x, Mathf.Max((indexes.y + 1) * Mathf.Abs(spacing.y) + 16, 424)); loadCapacity.text = inventory.load.ToString("##.#") + "/" + inventory.capacity.ToString(); // equipement PlayerController player = PlayerController.MainInstance; armorCount.text = player.GetArmor().ToString(); loadCount.text = player.GetLoad().ToString(); dammageCount.text = player.GetDammage().ToString(); equipedBackpack.item = player.backpack.equipedItem.Summarize(); equipedBody.item = player.body.equipedItem.Summarize(); equipedHead.item = player.head.equipedItem.Summarize(); if (player.horse != null) { equipedHorse.item = player.horse.equipedItem.Summarize(); } else { equipedHorse.item.itemType = Item.ItemType.Horse; equipedHorse.item.derivatedType = 0; equipedHorse.item.load = 0f; } equipedSecond.item = player.secondHand.equipedItem.Summarize(); equipedWeapon.item = player.weapon.equipedItem.Summarize(); equipedShield.item = player.shield.equipedItem.Summarize(); InitEquiped(equipedBackpack); InitEquiped(equipedBody); InitEquiped(equipedHead); InitEquiped(equipedHorse); InitEquiped(equipedSecond); InitEquiped(equipedWeapon); InitEquiped(equipedShield); if (player.weapon.equipedItem.forbidSecond) { backgroundSecond.color = forbidenEquipementSlot; } else { backgroundSecond.color = backgroundEquiped; } if (player.secondHand.equipedItem.forbidShield || player.weapon.equipedItem.forbidShield) { backgroundShield.color = forbidenEquipementSlot; } else { backgroundShield.color = backgroundEquiped; } if (player.secondHand.equipedItem.forbidWeapon) { backgroundWeapon.color = forbidenEquipementSlot; } else { backgroundWeapon.color = backgroundEquiped; } }
void LoadSettings() { if (!File.Exists(Path())) { return; } InventoryIcon tmp = null; string item = string.Empty; int counter = 0; InventoryEnum size = InventoryEnum.size1x1; Vector2 pos = Vector2.zero; string[] f_isLocked = new string[] {}; string[] f_item = new string[] {}; StreamReader reader = new StreamReader(Path()); while (!reader.EndOfStream) { string value = Crypt(reader.ReadLine()); string[] result = value.Split(new char[] { '=' }); if (result.Length == 1 && item == string.Empty) { item = value.Trim(new char[] { '[', ']' }); } switch (result[0]) // фильтруем ключи { case "IconSize": size = (InventoryEnum)System.Enum.Parse(typeof(InventoryEnum), result[1]); // string переводим в enum break; case "IconCounter": counter = int.Parse(result[1]); break; case "IconPositionX": pos.x = float.Parse(result[1]); break; case "IconPositionY": pos.y = float.Parse(result[1]); break; case "Field_isLocked": f_isLocked = result[1].Split(new char[] { ',' }); break; case "Field_item": f_item = result[1].Split(new char[] { ',' }); break; } if (value == string.Empty) { tmp = SetIcon(size, item, content); tmp.counter = counter; tmp.iconCountText.text = counter.ToString(); tmp.isInside = true; tmp.iconCountObject.SetActive(true); tmp.rectTransform.localPosition = pos; pIcon.Add(tmp); item = string.Empty; } } for (int i = 0; i < cells.Length; i++) { if (f_item[i] == "null") { cells[i].item = string.Empty; } else { cells[i].item = f_item[i]; } if (f_isLocked[i] == "0") { cells[i].isLocked = false; } else { cells[i].isLocked = true; } } reader.Close(); }
void OnDragOver() { targetIconToDrop = this; }
public void OnIconClick(InventoryIcon icon) { Item item = GetItem(icon.item); if (!item) { return; } if (icon.item.itemType == Item.ItemType.Resource && interactionUI.resourceContainer != null) { ResourceItem resource = (ResourceItem)item; if (Input.GetMouseButtonUp(0) || Input.GetMouseButtonUp(1)) { string resourceName = resource.resource.name; int transfertCount = Input.GetMouseButtonUp(0) ? 1 : 10; transfertCount = Mathf.Min(transfertCount, inventory.inventory[icon.item]); transfertCount = interactionUI.resourceContainer.TryAddItem(resourceName, transfertCount); if (transfertCount > 0) { inventory.RemoveItem(icon.item, transfertCount, true); } else if (interactionUI.resourceContainer.Accept(resourceName)) { PlayerController.MainInstance.interactionController.ThrowHelp("Container", "full"); // no icon for storage } else { PlayerController.MainInstance.interactionController.ThrowHelp(resourceName, "nok"); } } } else { if (item.usable && Input.GetMouseButtonUp(0)) { Debug.Log("Use item " + icon.name); inventory.RemoveItem(icon.item, 1, true); PlayerController.MainInstance.RecomputeLoadFactor(); } else if (item.equipable && Input.GetMouseButtonUp(1)) { PlayerController player = PlayerController.MainInstance; if (IsEquipementIcon(icon)) // unequip { if (icon.item.itemType == Item.ItemType.Weapon) { if (player.weapon.equipedItem.type != WeaponItem.Type.None) { Item old = Arsenal.Instance.Get(player.weapon.equipedItem.type, false); if (old) { inventory.AddItem(old.Summarize(), 1); } if (ToolDictionary.instance.tools.ContainsKey(player.weapon.equipedItem.toolFamily)) { FinishedUnequip(player, GetRandom(ToolDictionary.instance.tools[player.weapon.equipedItem.toolFamily].collectionSound)); } player.weapon.Equip(WeaponItem.Type.None); } } else if (icon.item.itemType == Item.ItemType.Backpack) { if (player.backpack.equipedItem.type != BackpackItem.Type.None) { Item old = Arsenal.Instance.Get(player.backpack.equipedItem.type, false); if (old) { inventory.AddItem(old.Summarize(), 1); } if (ToolDictionary.instance.tools.ContainsKey(player.backpack.equipedItem.toolFamily)) { FinishedUnequip(player, GetRandom(ToolDictionary.instance.tools[player.backpack.equipedItem.toolFamily].collectionSound)); } player.backpack.Equip(BackpackItem.Type.None); player.inventory.capacity = player.backpack.equipedItem.capacity; } } else if (icon.item.itemType == Item.ItemType.Body) { if (!player.body.equipedItem.IsDefault()) { Item old = Arsenal.Instance.Get(player.body.equipedItem.type, false, false); if (old) { inventory.AddItem(old.Summarize(), 1); } FinishedUnequip(player, player.interactionController.wearBody[Mathf.Clamp((int)BodyItem.getCategory(player.body.equipedItem.type), 0, player.interactionController.wearBody.Count - 1)]); player.body.Equip(BodyItem.defaultType, player.horse ? player.horse.equipedItem.type != HorseItem.Type.None : false); } } else if (icon.item.itemType == Item.ItemType.Head) { if (!player.head.equipedItem.IsDefault()) { Item old = Arsenal.Instance.Get(player.head.equipedItem.type, false); if (old) { inventory.AddItem(old.Summarize(), 1); } FinishedUnequip(player, player.interactionController.wearHead[Mathf.Clamp((int)HeadItem.getCategory(player.head.equipedItem.type), 0, player.interactionController.wearHead.Count - 1)]); player.head.Equip(HeadItem.defaultType); } } else if (icon.item.itemType == Item.ItemType.Horse) { if (player.horse && player.horse.equipedItem.type != HorseItem.Type.None) { Item old = Arsenal.Instance.Get(player.horse.equipedItem.type, false); if (old) { GameObject dropped = InstanciatePickable(icon.item); dropped.transform.position = player.transform.position + Vector3.right; MapModifier.instance.grid.AddGameObject(dropped, ConstructionLayer.LayerType.Decoration, false, false); } player.interactionController.Unmount(); } } else if (icon.item.itemType == Item.ItemType.Second) { if (player.secondHand.equipedItem.type != SecondItem.Type.None) { Item old = Arsenal.Instance.Get(player.secondHand.equipedItem.type, false); if (old) { inventory.AddItem(old.Summarize(), 1); } FinishedUnequip(player, GetRandom(ToolDictionary.instance.tools["Hammer"].collectionSound)); player.secondHand.Equip(SecondItem.Type.None); } } else if (icon.item.itemType == Item.ItemType.Shield) { if (player.shield.equipedItem.type != ShieldItem.Type.None) { Item old = Arsenal.Instance.Get(player.shield.equipedItem.type, false); if (old) { inventory.AddItem(old.Summarize(), 1); } FinishedUnequip(player, player.interactionController.wearHead[Mathf.Clamp((int)HeadItem.Category.Medium, 0, player.interactionController.wearHead.Count - 1)]); player.shield.Equip(ShieldItem.Type.None); } } else { Debug.LogWarning("No equip methode for this type of object " + icon.item.itemType.ToString()); } } else // equip { if (icon.item.itemType == Item.ItemType.Weapon) { Item old = Arsenal.Instance.Get(player.weapon.equipedItem.type, false); if (old) { inventory.AddItem(old.Summarize(), 1); } player.interactionController.EquipInteraction(InteractionType.Type.pickableWeapon, item.gameObject); } else if (icon.item.itemType == Item.ItemType.Backpack) { Item old = Arsenal.Instance.Get(player.backpack.equipedItem.type, false); if (old) { inventory.AddItem(old.Summarize(), 1); } player.interactionController.EquipInteraction(InteractionType.Type.pickableBackpack, item.gameObject); } else if (icon.item.itemType == Item.ItemType.Body) { Item old = Arsenal.Instance.Get(player.body.equipedItem.type, false, false); if (old && !player.body.equipedItem.IsDefault()) { inventory.AddItem(old.Summarize(), 1); } player.interactionController.EquipInteraction(InteractionType.Type.pickableBody, item.gameObject); } else if (icon.item.itemType == Item.ItemType.Head) { Item old = Arsenal.Instance.Get(player.head.equipedItem.type, false); if (old && !player.head.equipedItem.IsDefault()) { inventory.AddItem(old.Summarize(), 1); } player.interactionController.EquipInteraction(InteractionType.Type.pickableHead, item.gameObject); } else if (icon.item.itemType == Item.ItemType.Horse) { Item old = Arsenal.Instance.Get(player.horse.equipedItem.type, false); if (old) { inventory.AddItem(old.Summarize(), 1); } player.interactionController.EquipInteraction(InteractionType.Type.pickableHorse, item.gameObject); } else if (icon.item.itemType == Item.ItemType.Second) { Item old = Arsenal.Instance.Get(player.secondHand.equipedItem.type, false); if (old) { inventory.AddItem(old.Summarize(), 1); } player.interactionController.EquipInteraction(InteractionType.Type.pickableSecond, item.gameObject); } else if (icon.item.itemType == Item.ItemType.Shield) { Item old = Arsenal.Instance.Get(player.shield.equipedItem.type, false); if (old) { inventory.AddItem(old.Summarize(), 1); } player.interactionController.EquipInteraction(InteractionType.Type.pickableShield, item.gameObject); } else { Debug.LogWarning("No equip methode for this type of object " + icon.item.itemType.ToString()); } inventory.RemoveItem(icon.item, 1, true); } player.RecomputeLoadFactor(); } } }
private bool IsEquipementIcon(InventoryIcon icon) { return((icon == equipedBody) || (icon == equipedHead) || (icon == equipedHorse) || (icon == equipedSecond) || (icon == equipedShield) || (icon == equipedWeapon) || (icon == equipedBackpack)); }
void OnDragOut() { targetIconToDrop = null; }
public void OnIconPointerEnter(InventoryIcon icon) { getOne.SetActive(false); getTen.SetActive(false); giveOne.SetActive(false); giveTen.SetActive(false); if (icon != trash) { icon.border.color = hoveredBorderColor; helpPanel.SetActive(true); bool resourceDropMode = (icon.item.itemType == Item.ItemType.Resource) && (interactionUI.resourceContainer != null); Item item = GetItem(icon.item); if (item) { // description panel helpDescription.text = item.description; useHelp.SetActive(item.usable && !resourceDropMode); equipHelp.SetActive(item.equipable && !IsEquipementIcon(icon)); unequipHelp.SetActive(IsEquipementIcon(icon) && !IsDefault(icon.item)); hoveredLoad.transform.parent.gameObject.SetActive(true); hoveredLoad.text = item.load.ToString(); if (icon.item.itemType == Item.ItemType.Body || icon.item.itemType == Item.ItemType.Head || icon.item.itemType == Item.ItemType.Horse || icon.item.itemType == Item.ItemType.Shield) { hoveredArmor.transform.parent.gameObject.SetActive(true); if (icon.item.itemType == Item.ItemType.Body) { hoveredArmor.text = (item as BodyItem).armor.ToString(); } else if (icon.item.itemType == Item.ItemType.Head) { hoveredArmor.text = (item as HeadItem).armor.ToString(); } else if (icon.item.itemType == Item.ItemType.Horse) { hoveredArmor.text = (item as HorseItem).armor.ToString(); } else if (icon.item.itemType == Item.ItemType.Shield) { hoveredArmor.text = (item as ShieldItem).armor.ToString(); } else { hoveredArmor.text = "error"; } } else { hoveredArmor.transform.parent.gameObject.SetActive(false); } if (icon.item.itemType == Item.ItemType.Weapon || icon.item.itemType == Item.ItemType.Second) { hoveredDammage.transform.parent.gameObject.SetActive(true); if (icon.item.itemType == Item.ItemType.Weapon) { hoveredDammage.text = (item as WeaponItem).dammage.ToString(); } else if (icon.item.itemType == Item.ItemType.Second) { hoveredDammage.text = (item as SecondItem).dammage.ToString(); } else { hoveredDammage.text = "error"; } } else { hoveredDammage.transform.parent.gameObject.SetActive(false); } // equipement modification overview if (!IsEquipementIcon(icon)) { if (icon.item.itemType != Item.ItemType.Resource) { Dictionary <string, float> delta = GetDelta(item); PlayerController player = PlayerController.MainInstance; armorCount.text = player.GetArmor().ToString(); if (delta["armor"] != 0f) { armorCount.text += "<color=" + (delta["armor"] > 0 ? "green>+" : "red>") + delta["armor"].ToString() + "</color>"; } loadCount.text = player.GetLoad().ToString(); if (delta["load"] != 0f && item.itemType != Item.ItemType.Backpack) { loadCount.text += "<color=" + (delta["load"] < 0 ? "green>" : "red>+") + delta["load"].ToString() + "</color>"; } if (delta["loadModifier"] != 1f) { loadCount.text += "(<color=" + (delta["loadModifier"] < 1f ? "green>x" : "red>x") + delta["loadModifier"].ToString() + "</color>)"; } dammageCount.text = player.GetDammage().ToString(); if (delta["dammage"] != 0f) { dammageCount.text += "<color=" + (delta["dammage"] > 0 ? "green>+" : "red>") + delta["dammage"].ToString() + "</color>"; } } } } else { helpDescription.text = "empty slot"; useHelp.SetActive(false); equipHelp.SetActive(false); unequipHelp.SetActive(false); hoveredLoad.transform.parent.gameObject.SetActive(false); hoveredArmor.transform.parent.gameObject.SetActive(false); hoveredDammage.transform.parent.gameObject.SetActive(false); } if (resourceDropMode) { giveOne.SetActive(true); giveTen.SetActive(true); } } }