138 lines
3.8 KiB
C#
138 lines
3.8 KiB
C#
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;
|
|
public event Action OnLoadProgramListRequested;
|
|
|
|
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 = "현재 TCP값 OFF";
|
|
OnToggleClicked?.Invoke(false);
|
|
}
|
|
else if (icon_hide.activeSelf)
|
|
{
|
|
icon_hide.SetActive(false);
|
|
icon_show.SetActive(true);
|
|
tcpToggleTMP.text = "현재 TCP값 ON";
|
|
OnToggleClicked?.Invoke(true);
|
|
}
|
|
}
|
|
|
|
private void LoadProgramList()
|
|
{
|
|
envPanel.SetActive(false);
|
|
ProgramEnterPanel.SetActive(true);
|
|
NewProgramPanel.SetActive(false);
|
|
OriginalProgramPanel.SetActive(true);
|
|
|
|
OnLoadProgramListRequested?.Invoke();
|
|
}
|
|
|
|
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(); // 어플리케이션 종료
|
|
#endif
|
|
}
|
|
}
|