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

118 lines
3.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System;
public class ShopPanelController : WarehousePanelController
{
protected override UIBaseManager<IndexValuePair<int, EquippableItem>> FetchUiManager()
{
return GameObject.FindObjectOfType<ShopContentUIManager>();
}
// 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;
Type = PanelTypeEnum.Shop;
}
// 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<ShopSlot>());
// 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<ShopSlot>().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(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<ShopItemCardKeeper>().ShowItemDetails(itemSlot);
}
}
//Chest content manager
// gest new elements list after open chest
// remove: -> remove from list, (binding) update list in chest