Files
ChunilENG/Assets/Scripts/UI/Panel_Menu.cs
2025-03-17 13:43:40 +09:00

101 lines
2.7 KiB
C#

using CHN;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using WI;
namespace CHN
{
public class Panel_Menu : PanelBase
{
Button Button_Control;
Button Button_Protocol;
Button Button_Reset;
Button Button_Accept;
Button Button_Close;
public List<SettingPanel> settingPanels = new List<SettingPanel>();
SettingPanel currentTab;
Button currentTabButton;
public override void AfterStart()
{
settingPanels.AddRange(GetComponentsInChildren<SettingPanel>());
Button_Control.onClick.AddListener(OnClickButton_Control);
Button_Protocol.onClick.AddListener(OnClickButton_Protocol);
Button_Reset.onClick.AddListener(OnClickButton_Reset);
Button_Accept.onClick.AddListener(OnClickButton_Accept);
Button_Close.onClick.AddListener(OnClickButton_Close);
SetActive(false);
}
public void Open()
{
if (gameObject.activeSelf)
return;
ChangePanel<Panel_ControlSetting>();
ChangeButtonState(Button_Control);
SetActive(true);
}
void ChangePanel<T>() where T : SettingPanel
{
foreach (SettingPanel panel in settingPanels)
{
panel.Close();
if (panel.GetType() == typeof(T))
{
panel.Open();
currentTab = panel;
}
}
}
void ChangeButtonState(Button button)
{
if (currentTabButton != null)
{
var selectedImage = currentTabButton.transform.GetComponentInChildren<RawImage>(true);
selectedImage.gameObject.SetActive(false);
}
currentTabButton = button;
var currentImage = currentTabButton.transform.GetComponentInChildren<RawImage>(true);
currentImage.gameObject.SetActive(true);
}
void OnClickButton_Control()
{
ChangeButtonState(Button_Control);
ChangePanel<Panel_ControlSetting>();
}
void OnClickButton_Protocol()
{
ChangeButtonState(Button_Protocol);
ChangePanel<Panel_ProtocolSetting>();
}
void OnClickButton_Reset()
{
currentTab.Reset();
}
void OnClickButton_Accept()
{
currentTab.Accept();
}
void OnClickButton_Close()
{
SetActive(false);
}
}
}