Scriptum/Assets/Scripts/REFACTORING/Application/UI/Panel/ChestPanelController.cs

91 lines
2.7 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System;
public class ChestPanelController : WarehousePanelController
{
protected override UIBaseManager<KeyValuePair<int, Item>> FetchUiManager()
{
return GameObject.FindObjectOfType<ChestContentUIManager>();
}
// 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<ChestSlot>());
// 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<InventorySlot>();
_newItemSlot.transform.SetParent(_parent.transform);
_newItemSlot.transform.localScale = new Vector3(1.15f, 1.15f, 1.15f);
_newItemSlot.GetComponent<ChestSlot>().SetupSlot(key, null, this);
return _newItemSlot;
}
// 2. Set up panel additn items to it
public override void SetUp(List<KeyValuePair<int, Item>> elements)
{
// Build panel content template
BuildPanelSlots();
// Fill with items
BuildPanelContent(elements);
}
public override void BuildPanelContent(List<KeyValuePair<int, Item>> elements)
{
base.BuildPanelContent(elements);
Debug.Log("Build content");
foreach (KeyValuePair<int, Item> element in elements)
{
Debug.Log($"key: {element.Key} - value: {element.Value}");
ChildBoxList[element.Key].SetItem(new EquippableItem(element.Value));
}
}
}
//Chest content manager
// gest new elements list after open chest
// remove: -> remove from list, (binding) update list in chest