using System; using Cysharp.Threading.Tasks; namespace DanieleMarotta.RiversongCodeShowcase { public class SpeedControlsPanelUIController : UIControllerSystem, IDisposable, IUpdatable { [InjectService] private IGameSpeed _gameSpeed; private SpeedControlsPanelModel _model; public SpeedControlsPanelUIController(IServiceLocator serviceLocator) : base(serviceLocator) { } protected override SpeedControlsPanelUIView View => UIRoot.GetView(); public override async UniTask InitializeAsync() { await base.InitializeAsync(); _model = new SpeedControlsPanelModel { SpeedLevel = _gameSpeed.SpeedLevel }; View.SetModel(_model); View.SpeedChanged += OnSpeedChanged; } public void Dispose() { View.SpeedChanged -= OnSpeedChanged; } private void OnSpeedChanged(int speedLevel) { _gameSpeed.SetSpeedLevel(speedLevel); } public void Update() { _model.SpeedLevel = _gameSpeed.SpeedLevel; } } }