CapersProject/Assets/02.Scripts/Ui/Title/TycoonTitle.cs

144 lines
4.4 KiB
C#
Raw Normal View History

2024-10-08 06:12:27 +00:00
using BlueWater.Audios;
using Sirenix.OdinInspector;
using TMPro;
using UnityEditor;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.InputSystem;
using UnityEngine.UI;
namespace BlueWater.Titles
{
public class TycoonTitle : MonoBehaviour
{
2024-11-11 12:23:27 +00:00
[SerializeField]
private GameObject _titleMenuUiPanel;
[SerializeField]
private TitleSetting _titleSetting;
2024-10-08 06:12:27 +00:00
[SerializeField]
private Button _startGameButton;
2024-11-11 12:23:27 +00:00
2024-10-31 12:17:10 +00:00
[SerializeField]
private Button _settingButton;
2024-11-11 12:23:27 +00:00
2024-10-31 12:17:10 +00:00
[SerializeField]
private Button _exitButton;
2024-11-11 12:23:27 +00:00
private bool _onButtonClicked;
2024-10-08 06:12:27 +00:00
[SerializeField]
private TMP_Text _versionText;
[SerializeField]
2024-10-31 12:17:10 +00:00
private string _dailyBgm = "DailyBgm1";
2024-10-08 06:12:27 +00:00
2024-11-17 04:29:57 +00:00
private InputAction _interactionEAction;
private InputAction _settingCancelAction;
private bool _isQuitting;
2024-10-31 12:17:10 +00:00
2024-10-08 06:12:27 +00:00
private void Awake()
{
InitializeComponents();
}
private void Start()
{
2024-11-17 04:29:57 +00:00
_interactionEAction = PlayerInputKeyManager.Instance.GetAction(InputActionMaps.TycoonUi, "InteractionE");
_settingCancelAction = PlayerInputKeyManager.Instance.GetAction(InputActionMaps.TycoonUi, "Cancel");
2024-10-31 12:17:10 +00:00
2024-10-08 06:12:27 +00:00
AudioManager.Instance.PlayBgm(_dailyBgm);
_startGameButton.onClick.AddListener(SceneController.Instance.FadeIn);
2024-10-31 12:17:10 +00:00
2024-11-11 12:23:27 +00:00
_startGameButton.onClick.AddListener(() => { _onButtonClicked = true; });
_settingButton.onClick.AddListener(() => { _onButtonClicked = true; });
_exitButton.onClick.AddListener(() => { _onButtonClicked = true; });
2024-10-31 12:17:10 +00:00
2024-11-17 04:29:57 +00:00
PlayerInputKeyManager.Instance.AddOnActionKeyboard(OnKeyboard);
PlayerInputKeyManager.Instance.AddOnActionMouse(OnMouse);
_interactionEAction.performed += OnInteractionE;
2024-10-31 12:17:10 +00:00
}
private void OnKeyboard()
2024-11-17 04:29:57 +00:00
{
2024-10-31 12:17:10 +00:00
EventSystem.current.SetSelectedGameObject(_startGameButton.gameObject);
}
private void OnMouse()
{
2024-11-11 12:23:27 +00:00
if (!_onButtonClicked)
2024-10-31 12:17:10 +00:00
{
EventSystem.current.SetSelectedGameObject(null);
}
2024-10-08 06:12:27 +00:00
}
private void OnDestroy()
{
_startGameButton.onClick.RemoveListener(SceneController.Instance.FadeIn);
2024-11-17 04:29:57 +00:00
PlayerInputKeyManager.Instance.RemoveOnActionKeyboard(OnKeyboard);
PlayerInputKeyManager.Instance.RemoveOnActionMouse(OnMouse);
_interactionEAction.performed -= OnInteractionE;
_settingCancelAction.performed -= OnSettingCancel;
2024-10-08 06:12:27 +00:00
}
[Button("컴포넌트 초기화")]
private void InitializeComponents()
{
2024-11-11 12:23:27 +00:00
_titleMenuUiPanel = transform.Find("TitleMenuUi/Panel").gameObject;
_startGameButton = transform.Find("TitleMenuUi/Panel/ButtonPanel/StartGameButton").GetComponent<Button>();
_titleSetting = transform.Find("TitleSetting").GetComponent<TitleSetting>();
2024-10-08 06:12:27 +00:00
_versionText = transform.Find("VersionText").GetComponent<TMP_Text>();
2024-11-11 12:23:27 +00:00
_versionText.text = GetVersion();
2024-10-08 06:12:27 +00:00
}
private string GetVersion()
{
#if UNITY_EDITOR
return PlayerSettings.bundleVersion;
#else
return Application.version;
#endif
}
2024-11-17 04:29:57 +00:00
public void OnInteractionE(InputAction.CallbackContext context)
2024-10-08 06:12:27 +00:00
{
2024-11-17 04:29:57 +00:00
var current = EventSystem.current.currentSelectedGameObject;
if (!current) return;
2024-10-08 06:12:27 +00:00
2024-11-17 04:29:57 +00:00
var currenButton = current.GetComponent<Button>();
currenButton.onClick.Invoke();
2024-10-08 06:12:27 +00:00
}
public void QuitGame()
{
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
}
2024-11-17 04:29:57 +00:00
public void OnSettingCancel(InputAction.CallbackContext context)
{
HideSettingUi();
}
public void ShowSettingUi()
{
_titleMenuUiPanel.SetActive(false);
_titleSetting.ShowUi();
_settingCancelAction.performed += OnSettingCancel;
}
public void HideSettingUi()
{
_settingCancelAction.performed -= OnSettingCancel;
_titleSetting.HideUi();
_titleMenuUiPanel.SetActive(true);
}
2024-10-08 06:12:27 +00:00
}
}