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