62 lines
1.7 KiB
C#
62 lines
1.7 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using System.Linq;
|
|
|
|
// T will be type panel: inventory, equipment, chest
|
|
abstract public class BaseWarehouseController : MonoBehaviour
|
|
{
|
|
[SerializeField] public GameObject _panel;
|
|
[SerializeField] public Dictionary<int, Item> _items = new Dictionary<int, Item>();
|
|
|
|
|
|
protected GameObject dynamicPanel;
|
|
|
|
public bool isOpen = false;
|
|
|
|
|
|
// Create panel instance on scene on special position and passed content (item list)
|
|
public void OpenPanel()
|
|
{
|
|
GameObject globalGUI = GameObject.FindGameObjectsWithTag("GUI")[0];
|
|
|
|
if(globalGUI)
|
|
{
|
|
this.dynamicPanel = Instantiate(_panel, _panel.transform.position, Quaternion.identity, globalGUI.transform); // 4'th arg allow set object as child
|
|
|
|
this.dynamicPanel.transform.localPosition = _panel.transform.position; // prevent overwritten position by... environment???
|
|
|
|
this.SetupPanel(); // bind pandel to current chest
|
|
|
|
isOpen = true;
|
|
} else {
|
|
Debug.Log("Can't find global GUI object!!!");
|
|
}
|
|
|
|
}
|
|
|
|
public virtual void ClosePanel()
|
|
{
|
|
Destroy(dynamicPanel);
|
|
isOpen = false;
|
|
}
|
|
|
|
public KeyValuePair<int, Item> FindItemInWarehouse(string itemName)
|
|
{
|
|
return this._items.Where(item => item.Value.name == itemName).FirstOrDefault();
|
|
}
|
|
|
|
protected abstract void SetupPanel();
|
|
|
|
public virtual void SetItemOnPosition(int _keyPosition, Item _item)
|
|
{
|
|
this._items[_keyPosition] = _item;
|
|
}
|
|
|
|
public virtual void RemoveItemFromPosition(int _keyPosition)
|
|
{
|
|
this._items.Remove(_keyPosition);
|
|
}
|
|
}
|
|
|