private void SetupStatusManager() { _statusManager.Init(); _statusManager.OnGameTimeChange += (value, diff) => { var realPauseTime = diff.TotalHourInGame * Config.HoursInRealSecond; Invoke(nameof(ResetBusyStatus), realPauseTime); }; foreach (var trigger in DictIntStatusTriggerData.Values) { if (trigger.IsInnate) { switch (trigger.Field) { case StatusFields.Money: case StatusFields.Energy: case StatusFields.PersonalHappiness: case StatusFields.FamilyHappiness: case StatusFields.Career: case StatusFields.ProjectProgress: _statusManager.AddIntStatusTrigger(trigger); break; } } } foreach (var trigger in DictGameTimeStatusTriggerData.Values) { if (trigger.IsInnate && trigger.Field == StatusFields.GameTime) { _statusManager.AddGameTimeStatusTrigger(trigger); } } foreach (var trigger in DictLocationStatusTriggerData.Values) { if (trigger.IsInnate && trigger.Field == StatusFields.Location) { _statusManager.AddLocationStatusTrigger(trigger); } } _statusManager.Tick(); }