Files
riversong-code-showcase/Source/Riversong/Game/UI/Panels/TimePanel/TimePanelUIController.cs
2026-05-21 16:04:49 +02:00

49 lines
1.3 KiB
C#

using System;
using Cysharp.Threading.Tasks;
namespace DanieleMarotta.RiversongCodeShowcase
{
public class TimePanelUIController : UIControllerSystem<TimePanelUIView>, IDisposable
{
[InjectService]
private World _world;
[InjectService]
private ISignalBus _signalBus;
private TimePanelModel _model;
public TimePanelUIController(IServiceLocator serviceLocator) : base(serviceLocator)
{
}
protected override TimePanelUIView View => UIRoot.GetView<TimePanelUIView>();
public override async UniTask InitializeAsync()
{
await base.InitializeAsync();
_model = new TimePanelModel();
UpdateModel();
View.SetModel(_model);
_signalBus.Subscribe<EndOfWeekSignal>(OnEndOfWeekSignal);
}
public void Dispose()
{
_signalBus.Unsubscribe<EndOfWeekSignal>(OnEndOfWeekSignal);
}
private void OnEndOfWeekSignal(EndOfWeekSignal signal)
{
UpdateModel();
}
private void UpdateModel()
{
var timeState = _world.TimeState;
_model.Update(timeState.WeekNumber, timeState.MonthNumber, timeState.YearNumber);
}
}
}