98 lines
2.9 KiB
C#
98 lines
2.9 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<IndexValuePair<int, EquippableItem>> 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
|
|
|
|
private void Start()
|
|
{
|
|
AllowToUseItemInPanel = false;
|
|
|
|
Type = PanelTypeEnum.Chest;
|
|
}
|
|
|
|
// 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<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);
|
|
|
|
Debug.Log("Build content");
|
|
foreach (IndexValuePair<int, EquippableItem> element in elements)
|
|
{
|
|
Debug.Log($"key: {element.Key} - value: {element.Value} - type: {element.Value.EquipmentType}");
|
|
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 |