chunk 1: core gameplay scripts scenes runtime assets
This commit is contained in:
81
Assets/Scripts/Settings/DraggableUI.cs
Normal file
81
Assets/Scripts/Settings/DraggableUI.cs
Normal file
@@ -0,0 +1,81 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class DraggableUI : MonoBehaviour, IPointerDownHandler, IDragHandler, IPointerUpHandler
|
||||
{
|
||||
private RectTransform rectTransform;
|
||||
private Canvas canvas;
|
||||
private CanvasGroup canvasGroup;
|
||||
private Vector2 pointerStartLocalCursor; //The initial pointer position when the drag starts
|
||||
private bool isDragging = false; //Flag to check if a component is being dragged
|
||||
|
||||
private SettingsHandler settingsHandler; // Reference to SettingsHandler
|
||||
public GameSettings gameSettings; // Reference to GameSettings
|
||||
|
||||
void Start()
|
||||
{
|
||||
rectTransform = GetComponent<RectTransform>();
|
||||
canvas = GetComponentInParent<Canvas>();
|
||||
canvasGroup = GetComponent<CanvasGroup>();
|
||||
|
||||
// Find SettingsHandler in the scene or use another method to get reference
|
||||
settingsHandler = FindObjectOfType<SettingsHandler>();
|
||||
}
|
||||
|
||||
|
||||
// Function for initial when gameobject is pressed on
|
||||
public void OnPointerDown(PointerEventData eventData)
|
||||
{
|
||||
//converts the screen point where the pointer was pressed to a local point within the rectangle
|
||||
RectTransformUtility.ScreenPointToLocalPointInRectangle(rectTransform, eventData.position, eventData.pressEventCamera, out pointerStartLocalCursor);
|
||||
|
||||
canvasGroup.blocksRaycasts = false;
|
||||
isDragging = false;
|
||||
}
|
||||
|
||||
|
||||
// Function for when a gameobject is being dragged
|
||||
public void OnDrag(PointerEventData eventData)
|
||||
{
|
||||
isDragging = true;
|
||||
Vector2 localPointerPos;
|
||||
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform, eventData.position, eventData.pressEventCamera, out localPointerPos))
|
||||
{
|
||||
rectTransform.localPosition = localPointerPos - pointerStartLocalCursor;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Function for when a gameobject is released, after being dragged
|
||||
public void OnPointerUp(PointerEventData eventData)
|
||||
{
|
||||
canvasGroup.blocksRaycasts = true;
|
||||
|
||||
if (!isDragging)
|
||||
{
|
||||
// Simulate a button click
|
||||
Button button = GetComponent<Button>();
|
||||
if (button != null)
|
||||
{
|
||||
button.onClick.Invoke();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Function to Save Control Settings
|
||||
void SaveSettings()
|
||||
{
|
||||
if (settingsHandler != null)
|
||||
{
|
||||
settingsHandler.SaveSettings(); // Call SaveSettings from SettingsHandler
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError("SettingsHandler reference is null.");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user