92 lines
2.7 KiB
C#
92 lines
2.7 KiB
C#
|
using System.Collections;
|
|||
|
using System.Collections.Generic;
|
|||
|
using UnityEngine;
|
|||
|
using UnityEngine.UI;
|
|||
|
using UnityEngine.EventSystems;
|
|||
|
using System;
|
|||
|
|
|||
|
|
|||
|
public class InventoryPanelController : WarehousePanelController
|
|||
|
{
|
|||
|
protected override UIBaseManager<KeyValuePair<int, Item>> FetchUiManager()
|
|||
|
{
|
|||
|
var uiManager = GameObject.FindObjectOfType<InventoryUIManager>();
|
|||
|
|
|||
|
// 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<InventorySlot>());
|
|||
|
|
|||
|
// 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<InventorySlot>();
|
|||
|
|
|||
|
_newItemSlot.transform.SetParent(_parent.transform);
|
|||
|
_newItemSlot.transform.localScale = new Vector3(1.15f, 1.15f, 1.15f);
|
|||
|
|
|||
|
_newItemSlot.GetComponent<InventorySlot>().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(element.Value);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|