using System.Collections; using System.Collections.Generic; using UnityEngine; // 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; } protected abstract void SetupPanel(); public virtual void SetItemOnPosition(int _keyPosition, Item _item) { // Drag setup first end second object on the same panel - should only one - this wwere dropped item // Becouse of this source slot from other panel is settuping in dropped panel too - list get empty item and it cause errors if(_item != null) this._items[_keyPosition] = _item; // if we assign null its removed later in EndDrag method } public virtual void RemoveItemFromPosition(int _keyPosition) { this._items.Remove(_keyPosition); } }