Files
ChunilENG/Assets/Scripts/UI/Panel_FloorControl.cs

80 lines
2.2 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using WI;
using UnityEngine.UI;
using TMPro;
using System.Linq;
using System;
namespace CHN
{
public class Panel_FloorControl : PanelBase, IPopupPanel
{
public List<UI_FloorButton> floorButtons = new List<UI_FloorButton>();
public UI_FloorButton prefab_floorButton;
public Action<int> onValueChanged;
public UI_FloorButton currentFloorButton;
public override void AfterStart()
{
prefab_floorButton = Resources.Load<UI_FloorButton>("Prefabs/UI/PRF_UI_FloorButton");
SettingButtons(5);
SetActive(false);
}
public void SettingButtons(int floorCount)
{
for (int i = 0; i <= floorCount; i++)
{
var floorButton = Instantiate(prefab_floorButton, transform);
floorButton.SettingButton(i);
floorButton.onClickButton += OnClickButton;
floorButtons.Add(floorButton);
}
ChangeValueFromOutside(floorCount);
}
private void OnClickButton(UI_FloorButton currentButton)
{
SetCurrentFloorButton(currentButton);
OnValueChanged(currentFloorButton.value);
}
private void SetCurrentFloorButton(UI_FloorButton currentButton)
{
if (currentFloorButton != null)
{
currentFloorButton.Deselect();
}
currentFloorButton = currentButton;
currentFloorButton.Select();
}
private void OnValueChanged(int value)
{
onValueChanged?.Invoke(value);
}
public void ChangeValueFromOutside(int value)
{
SetCurrentFloorButton(floorButtons[value]);
onValueChanged?.Invoke(value);
}
public void SetActive()
{
var isActive = gameObject.activeSelf;
var active = isActive ? false : true;
gameObject.SetActive(active);
}
public void Open()
{
SetActive(true);
}
public void Close()
{
SetActive(false);
}
}
}