Files
test/Assets/PerfectWorld/Scripts/UI/Dialogs/Setting/SliderController.cs
T
2026-05-15 17:01:02 +07:00

97 lines
2.3 KiB
C#

using BrewMonster.Assets.PerfectWorld.Scripts.UI;
using BrewMonster.Common;
using BrewMonster.Managers;
using BrewMonster.Scripts;
using BrewMonster.Scripts.Managers;
using BrewMonster.UI;
using CSNetwork.GPDataType;
using Cysharp.Threading.Tasks.Triggers;
using PerfectWorld.Scripts.Managers;
using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace BrewMonster
{
public class SliderController : MonoBehaviour
{
[Header("Slider")]
public Slider slider;
public TextMeshProUGUI sliderValueText;
[Header("Action Event")]
private UnityEvent[] levelEvents = new UnityEvent[6];
private int currentLevel = -1;
private void OnEnable()
{
if(slider != null)
{
slider.onValueChanged.AddListener(OnSliderValueChange);
UpdateLevelFromSlider();
}
}
private void OnDisable()
{
if (slider != null)
{
slider.onValueChanged.RemoveListener(OnSliderValueChange);
}
}
private void OnSliderValueChange(float value)
{
UpdateLevelFromSlider();
}
private void UpdateLevelFromSlider()
{
if (slider == null)
return;
int level = GetLevelFromValue(slider.value);
if(level != currentLevel)
{
currentLevel = level;
Invoke(level);
}
UpdateSliderText(level);
}
private int GetLevelFromValue(float value)
{
int level = Mathf.RoundToInt(value);
return Mathf.Clamp(level, 1, 6);
}
private void UpdateSliderText(int level)
{
if (sliderValueText == null)
{
return;
}
sliderValueText.text = $"Mức {level}";
}
public void Invoke(int level)
{
int index = level - 1;
if(index < 0 || index >= levelEvents.Length)
{
return;
}
levelEvents[index]?.Invoke();
}
}
}