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> FetchUiManager() { var uiManager = GameObject.FindObjectOfType(); // 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()); // 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(); _newItemSlot.transform.SetParent(_parent.transform); _newItemSlot.transform.localScale = new Vector3(1.15f, 1.15f, 1.15f); _newItemSlot.GetComponent().SetupSlot(key, null, this); return _newItemSlot; } // 2. Set up panel additn items to it public override void SetUp(List> elements) { // Build panel content template BuildPanelSlots(); // Fill with items BuildPanelContent(elements); } public override void BuildPanelContent(List> elements) { base.BuildPanelContent(elements); Debug.Log("Build content"); foreach (IndexValuePair 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().ShowItemDetails(itemSlot, ShopItemCardMode.Sell); } }