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(); } } }