RiftMayhem/Assets/Scripts/Input/PlayerInput.cs
2025-02-21 18:35:51 +00:00

95 lines
2.3 KiB
C#
Raw Blame History

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerInput : MonoBehaviour
{
[Header("UI References")]
[SerializeField] private GameObject characterPanel;
[SerializeField] private GameObject inventoryPanel;
[SerializeField] private GameObject radialMenu;
private bool isRadialMenuOpen;
private void Awake()
{
}
private void Update()
{
// D-Pad controls
if (Input.GetButtonDown("DPadUp"))
{
TogglePanel(characterPanel);
}
if (Input.GetButtonDown("DPadDown"))
{
TogglePanel(inventoryPanel);
}
// Radial Menu
float leftTrigger = Input.GetAxisRaw("LeftTrigger");
if (leftTrigger > 0.5f && !isRadialMenuOpen)
{
OpenRadialMenu();
}
else if (leftTrigger < 0.5f && isRadialMenuOpen)
{
CloseRadialMenu();
}
if (isRadialMenuOpen)
{
// Handle radial menu selection with right stick
Vector2 rightStick = new Vector2(
Input.GetAxisRaw("RightStickHorizontal"),
Input.GetAxisRaw("RightStickVertical")
);
if (rightStick.magnitude > 0.5f)
{
UpdateRadialMenuSelection(rightStick);
}
}
}
private void TogglePanel(GameObject panel)
{
if (panel.activeSelf)
{
panel.SetActive(false);
}
else
{
// Close other panels first
characterPanel.SetActive(false);
inventoryPanel.SetActive(false);
// Open requested panel
panel.SetActive(true);
}
}
private void OpenRadialMenu()
{
isRadialMenuOpen = true;
radialMenu.SetActive(true);
Time.timeScale = 0.2f; // Slow down time while menu is open
}
private void CloseRadialMenu()
{
isRadialMenuOpen = false;
radialMenu.SetActive(false);
Time.timeScale = 1f;
}
private void UpdateRadialMenuSelection(Vector2 direction)
{
float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
if (angle < 0) angle += 360f;
// Update radial menu UI based on angle
// Each menu item covers 360<36> / number_of_items degrees
}
}