Files
HDRobotics/Assets/Scripts/View/EnvView.cs

135 lines
3.7 KiB
C#
Raw Normal View History

2025-11-14 13:50:31 +09:00
using System;
using TMPro;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.UI;
public class EnvView : MonoBehaviour
{
[SerializeField] private GameObject envPanel;
[SerializeField] private GameObject pauseMenuPanel;
[SerializeField] private Button envBackBtn;
[SerializeField] private Button[] toggleBtn;
[SerializeField] private Button loadProgramBtn;
[SerializeField] private Button newProgramBtn;
[SerializeField] private Button helpBtn;
[SerializeField] private Button exitBtn;
[SerializeField] private GameObject icon_show;
[SerializeField] private GameObject icon_hide;
[SerializeField] private TextMeshProUGUI tcpToggleTMP;
[SerializeField] private GameObject helpPanel;
[SerializeField] private Button helpBackBtn;
[SerializeField] private GameObject ProgramEnterPanel;
[SerializeField] private GameObject NewProgramPanel;
[SerializeField] private GameObject OriginalProgramPanel;
public InputActionReference showEnvPanel;
private bool isPressingMenu = false;
public event Action<bool> OnToggleClicked;
void Start()
{
envPanel.SetActive(false);
if (showEnvPanel != null)
{
showEnvPanel.action.Enable();
showEnvPanel.action.performed += ShowEnvPanel;
}
envBackBtn.onClick.AddListener(() => HideAllPanels());
toggleBtn[0].onClick.AddListener(() => ToggleTcp());
toggleBtn[1].onClick.AddListener(() => ToggleTcp());
loadProgramBtn.onClick.AddListener(() => LoadProgramList());
newProgramBtn.onClick.AddListener(() => OpenNewProgramPanel());
helpBtn.onClick.AddListener(() => OpenHelpPanel());
helpBackBtn.onClick.AddListener(() => CloseHelpPanel());
exitBtn.onClick.AddListener(() => QuitGame());
}
private void OnDestroy()
{
if (showEnvPanel != null)
{
showEnvPanel.action.performed -= ShowEnvPanel;
}
}
private void ShowEnvPanel(InputAction.CallbackContext obj)
{
if (!isPressingMenu)
{
envPanel.SetActive(true);
ProgramEnterPanel.SetActive(false);
}
else
{
envPanel.SetActive(false);
}
isPressingMenu = !isPressingMenu;
}
private void HideAllPanels()
{
envPanel.SetActive(false);
ProgramEnterPanel.SetActive(false);
}
private void OpenHelpPanel()
{
helpPanel.SetActive(true);
pauseMenuPanel.SetActive(false);
}
private void CloseHelpPanel()
{
helpPanel.SetActive(false);
pauseMenuPanel.SetActive(true);
}
private void ToggleTcp()
{
if(icon_show.activeSelf)
{
icon_show.SetActive(false);
icon_hide.SetActive(true);
tcpToggleTMP.text = "<22><><EFBFBD><EFBFBD> TCP<43><50> OFF";
OnToggleClicked?.Invoke(false);
}
else if (icon_hide.activeSelf)
{
icon_hide.SetActive(false);
icon_show.SetActive(true);
tcpToggleTMP.text = "<22><><EFBFBD><EFBFBD> TCP<43><50> ON";
OnToggleClicked?.Invoke(true);
}
}
private void LoadProgramList()
{
envPanel.SetActive(false);
ProgramEnterPanel.SetActive(true);
NewProgramPanel.SetActive(false);
OriginalProgramPanel.SetActive(true);
}
private void OpenNewProgramPanel()
{
envPanel.SetActive(false);
ProgramEnterPanel.SetActive(true);
NewProgramPanel.SetActive(true);
OriginalProgramPanel.SetActive(false);
}
private void QuitGame()
{
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
Application.Quit(); // <20><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD><EFBFBD>̼<EFBFBD> <20><><EFBFBD><EFBFBD>
#endif
}
}