77 lines
2.4 KiB
C#
77 lines
2.4 KiB
C#
using System;
|
|
using Cysharp.Threading.Tasks;
|
|
using UnityEngine.UIElements;
|
|
|
|
namespace DanieleMarotta.RiversongCodeShowcase
|
|
{
|
|
[UIView("speed-controls-panel")]
|
|
public class SpeedControlsPanelUIView : UIView<SpeedControlsPanelModel>
|
|
{
|
|
private VisualElement _normalSpeedButton;
|
|
|
|
private VisualElement _fastSpeedButton;
|
|
|
|
private VisualElement _veryFastSpeedButton;
|
|
|
|
public event Action<int> SpeedChanged;
|
|
|
|
public override UniTask InitializeAsync(UIService uiService, VisualElement rootElement)
|
|
{
|
|
base.InitializeAsync(uiService, rootElement);
|
|
|
|
_normalSpeedButton = rootElement.Q(className: "speed-controls-panel__normal-speed");
|
|
_fastSpeedButton = rootElement.Q(className: "speed-controls-panel__fast-speed");
|
|
_veryFastSpeedButton = rootElement.Q(className: "speed-controls-panel__very-fast-speed");
|
|
|
|
_normalSpeedButton.RegisterCallback<ClickEvent>(OnNormalSpeedClick);
|
|
_fastSpeedButton.RegisterCallback<ClickEvent>(OnFastSpeedClick);
|
|
_veryFastSpeedButton.RegisterCallback<ClickEvent>(OnVeryFastSpeedClick);
|
|
|
|
return UniTask.CompletedTask;
|
|
}
|
|
|
|
protected override void OnNewModel(SpeedControlsPanelModel model)
|
|
{
|
|
base.OnNewModel(model);
|
|
|
|
UpdateSelected(model.SpeedLevel);
|
|
}
|
|
|
|
protected override void OnModelPropertyChanged(object sender, BindablePropertyChangedEventArgs e)
|
|
{
|
|
base.OnModelPropertyChanged(sender, e);
|
|
|
|
UpdateSelected(Model.SpeedLevel);
|
|
}
|
|
|
|
private void OnNormalSpeedClick(ClickEvent evt)
|
|
{
|
|
SpeedChanged?.Invoke(0);
|
|
}
|
|
|
|
private void OnFastSpeedClick(ClickEvent evt)
|
|
{
|
|
SpeedChanged?.Invoke(1);
|
|
}
|
|
|
|
private void OnVeryFastSpeedClick(ClickEvent evt)
|
|
{
|
|
SpeedChanged?.Invoke(2);
|
|
}
|
|
|
|
public void UpdateSelected(int speedLevel)
|
|
{
|
|
UpdateSelected(_normalSpeedButton, speedLevel == 0);
|
|
UpdateSelected(_fastSpeedButton, speedLevel == 1);
|
|
UpdateSelected(_veryFastSpeedButton, speedLevel == 2);
|
|
}
|
|
|
|
private static void UpdateSelected(VisualElement element, bool isSelected)
|
|
{
|
|
if (isSelected)
|
|
element.AddToClassList("selected");
|
|
else
|
|
element.RemoveFromClassList("selected");
|
|
}
|
|
}
|
|
} |