using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; using System; public class ShopPanelController : WarehousePanelController { protected override UIBaseManager> FetchUiManager() { return GameObject.FindObjectOfType(); } // 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 private void Start() { AllowToUseItemInPanel = false; } // 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("chestslotbox_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); foreach (IndexValuePair element in elements) { Debug.Log($"key: {element.Key} - value: {element.Value}"); ChildBoxList[element.Key].SetItem(new EquippableItem(element.Value)); } } //clear deffault efects public override void BeginDrag(ItemSlot itemSlot) { } public override void Drag(ItemSlot itemSlot) { } public override void EndDrag(ItemSlot itemSlot) { } public override void Drop(ItemSlot dropItemSlot) { } public override void SingleLeftMouseClick(ItemSlot itemSlot) { // set item as selected if (ShopContentUIManager.Instance.DynamicPanel) ShopContentUIManager.Instance.DynamicPanel.transform.Find("ItemDetails").GetComponent().ShowItemDetails(itemSlot); } } //Chest content manager // gest new elements list after open chest // remove: -> remove from list, (binding) update list in chest