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 _items = new Dictionary(); 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 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); } }