101 lines
2.6 KiB
C#
101 lines
2.6 KiB
C#
using System;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class DraggedSlotController : MonoBehaviour
|
|
{
|
|
public static DraggedSlotController Instance { get; private set; }
|
|
|
|
[Header("Dragged Image")]
|
|
[SerializeField] protected Image DraggedSlotImageTemplate;
|
|
[SerializeField] protected Image DraggedSlotImage;
|
|
|
|
[Space]
|
|
[Header("Dragged Slot")]
|
|
[SerializeField] protected ItemSlot _draggedSlot;
|
|
public ItemSlot DraggedSlot // in Drag & Drop functionality for Warehouse set of panels I will temporary delegate dragged item to outside static object instance in order to remember it during dragging object from one slot to anothe one
|
|
{
|
|
get { return _draggedSlot; }
|
|
set
|
|
{
|
|
_draggedSlot = value;
|
|
}
|
|
}
|
|
|
|
public void Awake()
|
|
{
|
|
if (Instance == null)
|
|
{
|
|
Instance = this;
|
|
}
|
|
else
|
|
{
|
|
Destroy(gameObject);
|
|
}
|
|
}
|
|
|
|
public bool IsDragged()
|
|
{
|
|
return DraggedSlot != null;
|
|
}
|
|
|
|
public void CreateDraggedSlot(ItemSlot itemSlot, Vector3 beginingPosition)
|
|
{
|
|
DraggedSlot = itemSlot;
|
|
|
|
MakeDraggableItem(beginingPosition);
|
|
}
|
|
private void MakeDraggableItem(Vector3 beginingPosition)
|
|
{
|
|
if (DraggedSlotImage)
|
|
{
|
|
DraggedSlotImage.enabled = true;
|
|
|
|
return;
|
|
}
|
|
|
|
GameObject globalGUI = GameObject.FindGameObjectWithTag("GUI");
|
|
|
|
if (globalGUI)
|
|
{
|
|
DraggedSlotImage = MonoBehaviour.Instantiate(DraggedSlotImageTemplate, DraggedSlotImageTemplate.transform.position, Quaternion.identity, globalGUI.transform);
|
|
DraggedSlotImage.transform.localPosition = beginingPosition;
|
|
DraggedSlotImage.sprite = DraggedSlot.Item.Image;
|
|
DraggedSlotImage.transform.position = Input.mousePosition;
|
|
DraggedSlotImage.enabled = true;
|
|
}
|
|
else
|
|
{
|
|
Debug.Log("Can't find global GUI object!!!");
|
|
}
|
|
}
|
|
|
|
public void UpdatePosition(Vector3 newSlotPosition)
|
|
{
|
|
if(DraggedSlotImage != null)
|
|
DraggedSlotImage.transform.position = newSlotPosition;
|
|
}
|
|
|
|
public bool RemoveDraggedSlot()
|
|
{
|
|
try
|
|
{
|
|
DestroyImmediate(DraggedSlotImage.gameObject, true);
|
|
DraggedSlotImage = null;
|
|
|
|
DraggedSlot = null;
|
|
}catch(Exception e)
|
|
{
|
|
Debug.LogError(e.Message);
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public void UpdateItem(Item item)
|
|
{
|
|
DraggedSlot.Item = (EquippableItem)item;
|
|
}
|
|
} |