128 lines
3.5 KiB
C#
128 lines
3.5 KiB
C#
using System;
|
|
using UnityEngine;
|
|
|
|
namespace AibisDream.UI
|
|
{
|
|
public class TerminalStartPanel : MonoBehaviour
|
|
{
|
|
[SerializeField] private TerminalPanelAnimator panelAnimator;
|
|
[SerializeField] private TerminalMenuItemView newGameItem;
|
|
[SerializeField] private TerminalMenuItemView chapterItem;
|
|
[SerializeField] private TerminalMenuItemView settingItem;
|
|
[SerializeField] private TerminalMenuItemView quitItem;
|
|
|
|
private TerminalPanel _owner;
|
|
private TerminalMenuItemView _selectedItem;
|
|
|
|
public bool IsOpen => gameObject.activeSelf;
|
|
|
|
public void SetOwner(TerminalPanel owner)
|
|
{
|
|
_owner = owner;
|
|
}
|
|
|
|
private void Awake()
|
|
{
|
|
InitMenuItems();
|
|
RegisterItem(newGameItem, StartNewGame);
|
|
RegisterItem(chapterItem, OpenChapter);
|
|
RegisterItem(settingItem, OpenSetting);
|
|
RegisterItem(quitItem, QuitApp);
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
UnregisterItem(newGameItem);
|
|
UnregisterItem(chapterItem);
|
|
UnregisterItem(settingItem);
|
|
UnregisterItem(quitItem);
|
|
}
|
|
|
|
public void Show()
|
|
{
|
|
if (panelAnimator != null)
|
|
{
|
|
panelAnimator.Show(prepare: () => _owner?.SetHeader("termnial_header_start", "REPAIR_STATION_07 - AUTH_VERIFIED"));
|
|
}
|
|
else
|
|
{
|
|
_owner?.SetHeader("termnial_header_start", "REPAIR_STATION_07 - AUTH_VERIFIED");
|
|
gameObject.SetActive(true);
|
|
}
|
|
}
|
|
|
|
public void Hide(Action onComplete = null)
|
|
{
|
|
if (panelAnimator != null)
|
|
{
|
|
panelAnimator.Hide(onComplete);
|
|
}
|
|
else
|
|
{
|
|
gameObject.SetActive(false);
|
|
onComplete?.Invoke();
|
|
}
|
|
}
|
|
|
|
private void InitMenuItems()
|
|
{
|
|
newGameItem?.SetContent("start_newGame", "SESSION CREATE", "STATUS: ACTIVE");
|
|
chapterItem?.SetContent("start_selcetLevel", "HISTORY QUERY", "RANGE: 04/533");
|
|
settingItem?.SetContent("start_setting", "USER CONFIG", "AUTH: LOCAL");
|
|
quitItem?.SetContent("start_quit", "SESSION CLOSE", "LOG: SAVED");
|
|
}
|
|
|
|
private void RegisterItem(TerminalMenuItemView item, Action action)
|
|
{
|
|
if (item == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
item.Hovered += SelectItem;
|
|
item.Clicked += _ => action?.Invoke();
|
|
}
|
|
|
|
private void UnregisterItem(TerminalMenuItemView item)
|
|
{
|
|
if (item == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
item.Hovered -= SelectItem;
|
|
}
|
|
|
|
private void SelectItem(TerminalMenuItemView item)
|
|
{
|
|
if (_selectedItem != null)
|
|
{
|
|
_selectedItem.SetSelected(false);
|
|
}
|
|
|
|
_selectedItem = item;
|
|
_selectedItem?.SetSelected(true);
|
|
}
|
|
|
|
private static void StartNewGame()
|
|
{
|
|
UIManager.Instance.CloseTerminalThen(() => GameManager.Instance.StartNewGame());
|
|
}
|
|
|
|
private void OpenChapter()
|
|
{
|
|
_owner.SwitchTo(TerminalPage.Chapter);
|
|
}
|
|
|
|
private void OpenSetting()
|
|
{
|
|
_owner.SwitchTo(TerminalPage.Setting);
|
|
}
|
|
|
|
private static void QuitApp()
|
|
{
|
|
GameManager.Instance.QuitApp();
|
|
}
|
|
}
|
|
}
|