riversong code showcase

This commit is contained in:
Daniele Marotta
2026-05-21 15:52:18 +02:00
commit 4c9eea1c02
462 changed files with 23406 additions and 0 deletions

View File

@@ -0,0 +1,77 @@
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");
}
}
}