97 lines
2.3 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|