Files

137 lines
3.9 KiB
C#
Raw Permalink Normal View History

2025-02-20 09:59:37 +09:00
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;
using TMPro;
2025-02-20 09:59:37 +09:00
namespace CHN
{
public class Panel_Menu : PanelBase, IPopupPanel
2025-02-20 09:59:37 +09:00
{
RectTransform TabButtonList;
2025-02-20 09:59:37 +09:00
Button Button_Control;
Button Button_Protocol;
Button Button_Reset;
Button Button_Accept;
Button Button_Close;
public List<SettingPanel> settingPanels = new List<SettingPanel>();
SettingPanel currentTab;
public List<Button> tabButtons = new List<Button>();
2025-02-20 09:59:37 +09:00
Button currentTabButton;
public List<Image> accpetButtonImages = new List<Image>();
public Image Image_Control;
public Image Image_Protocol;
2025-02-20 09:59:37 +09:00
public override void AfterStart()
{
settingPanels.AddRange(GetComponentsInChildren<SettingPanel>(true));
tabButtons.AddRange(TabButtonList.GetComponentsInChildren<Button>(true));
2025-02-20 09:59:37 +09:00
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(Close);
2025-02-20 09:59:37 +09:00
accpetButtonImages.Add(Image_Control);
accpetButtonImages.Add(Image_Protocol);
2025-02-20 09:59:37 +09:00
SetActive(false);
}
public void Open()
{
if (gameObject.activeSelf)
return;
ChangePanel<Panel_ControlSetting>();
ChangeButtonState(Button_Control);
SetActive(true);
transform.SetAsLastSibling();
2025-02-20 09:59:37 +09:00
}
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)
{
foreach (var tabButton in tabButtons)
2025-02-20 09:59:37 +09:00
{
SetTabButtonState(tabButton, false, new Color32(56, 56, 56, 255));
2025-02-20 09:59:37 +09:00
}
currentTabButton = button;
SetTabButtonState(currentTabButton, true, new Color32(255, 255, 255, 255));
ChangeAcceptButton(button);
}
void SetTabButtonState(Button button, bool active ,Color32 textColor)
{
var image = button.transform.GetChild(2).GetComponent<Image>();
image.gameObject.SetActive(active);
var text = button.transform.GetComponentInChildren<TextMeshProUGUI>(true);
text.color = textColor;
}
void ChangeAcceptButton(Button button)
{
var splitIndex = button.name.IndexOf("_");
var buttonName = button.name.Substring(splitIndex + 1);
foreach(var acceptImage in accpetButtonImages)
{
if (acceptImage.name.Contains(buttonName))
{
Button_Accept.image.sprite = acceptImage.sprite;
}
}
2025-02-20 09:59:37 +09:00
}
void OnClickButton_Control()
{
ChangeButtonState(Button_Control);
ChangePanel<Panel_ControlSetting>();
}
2025-03-17 13:43:40 +09:00
2025-02-20 09:59:37 +09:00
void OnClickButton_Protocol()
{
ChangeButtonState(Button_Protocol);
ChangePanel<Panel_ProtocolSetting>();
}
void OnClickButton_Reset()
{
currentTab.Reset();
}
void OnClickButton_Accept()
{
currentTab.Accept();
}
public void Close()
2025-02-20 09:59:37 +09:00
{
SetActive(false);
}
}
}