Scriptum/Assets/Scripts/REFACTORING/Application/UI/Panel/InventoryPanelController.cs
2023-01-02 00:22:39 +01:00

104 lines
3.1 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System;
public class InventoryPanelController : WarehousePanelController
{
public void Start()
{
AllowToUseItemInPanel = true;
Type = PanelTypeEnum.Inventory;
}
protected override UIBaseManager<IndexValuePair<int, EquippableItem>> FetchUiManager()
{
var uiManager = GameObject.FindObjectOfType<InventoryUIManager>();
// uiManager.SetPanelController(gameObject); - unnecessary
return uiManager;
}
// build panel sunction
// - setup - main function to build panel on screen
// - setPanelISlots - build slots on panel dependiong on declared amount
// - setPanelItems - invoking building items on slots
// api for drag and drop
// - set item on position
// - remove item from position
// - find item in warehouse
// 1. Prepare empty panel
public override void BuildPanelSlots()
{
if (_panelContent == null)
throw new Exception("Panel content is not attaches");
for (int _position = 0; _position < UiManager.SLOTS_NUMBER; _position++)
{
//ISlot newSlot = SetupSlot(_position, _panel);
GameObject newSlot = BuildSlot(_position, _panelContent);
// Set new Slot instance
ChildBoxList.Add(newSlot.GetComponent<InventorySlot>());
// Assign events
ChildBoxList[_position] = SetupDragAndDropToSlot(ChildBoxList[_position]);
}
}
public override GameObject BuildSlot(int key, GameObject _parent)
{
if (ChildBoxTemplate == null)
throw new Exception("itemslotbox_template is empty");
GameObject _newItemSlot = MonoBehaviour.Instantiate(ChildBoxTemplate, _parent.transform.position, Quaternion.identity); //.GetComponent<InventorySlot>();
_newItemSlot.transform.SetParent(_parent.transform);
_newItemSlot.transform.localScale = new Vector3(1.15f, 1.15f, 1.15f);
_newItemSlot.GetComponent<InventorySlot>().SetupSlot(key, null, this);
return _newItemSlot;
}
// 2. Set up panel additn items to it
public override void SetUp(List<IndexValuePair<int, EquippableItem>> elements)
{
// Build panel content template
BuildPanelSlots();
// Fill with items
BuildPanelContent(elements);
}
public override void BuildPanelContent(List<IndexValuePair<int, EquippableItem>> elements)
{
base.BuildPanelContent(elements);
foreach (IndexValuePair<int, EquippableItem> element in elements)
{
/* Debug.Log($"key: {element.Key} - value: {element.Value}"); */
ChildBoxList[element.Key].SetItem(element.Value);
}
}
public override void SingleLeftMouseClick(ItemSlot itemSlot)
{
// mark item as selected in shop panel
if (ShopContentUIManager.Instance.DynamicPanel)
ShopContentUIManager.Instance.DynamicPanel.transform.Find("ItemDetails").GetComponent<ShopItemCardKeeper>().ShowItemDetails(itemSlot, ShopItemCardMode.Sell);
}
}