137 lines
3.9 KiB
C#
137 lines
3.9 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;
|
|
using TMPro;
|
|
|
|
namespace CHN
|
|
{
|
|
public class Panel_Menu : PanelBase, IPopupPanel
|
|
{
|
|
RectTransform TabButtonList;
|
|
|
|
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>();
|
|
Button currentTabButton;
|
|
|
|
public List<Image> accpetButtonImages = new List<Image>();
|
|
public Image Image_Control;
|
|
public Image Image_Protocol;
|
|
|
|
public override void AfterStart()
|
|
{
|
|
settingPanels.AddRange(GetComponentsInChildren<SettingPanel>(true));
|
|
tabButtons.AddRange(TabButtonList.GetComponentsInChildren<Button>(true));
|
|
|
|
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);
|
|
|
|
accpetButtonImages.Add(Image_Control);
|
|
accpetButtonImages.Add(Image_Protocol);
|
|
|
|
SetActive(false);
|
|
}
|
|
public void Open()
|
|
{
|
|
if (gameObject.activeSelf)
|
|
return;
|
|
|
|
ChangePanel<Panel_ControlSetting>();
|
|
ChangeButtonState(Button_Control);
|
|
SetActive(true);
|
|
|
|
transform.SetAsLastSibling();
|
|
}
|
|
|
|
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)
|
|
{
|
|
SetTabButtonState(tabButton, false, new Color32(56, 56, 56, 255));
|
|
}
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
|
|
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();
|
|
}
|
|
|
|
public void Close()
|
|
{
|
|
SetActive(false);
|
|
}
|
|
}
|
|
}
|