public async Task UpdateFateLogic(HeistHub hub) { this.PreviousStatus = this.CurrentStatus; switch (this.CurrentStatus) { case HeistPlayer.Status.InJail: this.YearsLeftInJail--; this.TimeSpentInJail++; if (this.YearsLeftInJail <= 0) { this.CurrentStatus = HeistPlayer.Status.FindingHeist; } break; case HeistPlayer.Status.FindingHeist: break; case HeistPlayer.Status.HeistDecisionMade: this.CurrentStatus = this.Decision.NextStatus; break; } if (!this.IsBot) { await this.UpdateFateView(hub); } }
internal async Task UpdateFateView(HeistHub hub, bool setOkayButton = true) { // Update idle people with some more information switch (this.PreviousStatus) { case HeistPlayer.Status.InJail: if (this.YearsLeftInJail <= 0) { var message = TextGenerator.FreeFromJail; await hub.UpdateHeistStatus(this, message.Item1, message.Item2, setOkayButton); } else { var message = TextGenerator.StillInJail; await hub.UpdateHeistStatus(this, message.Item1, string.Format(message.Item2, this.YearsLeftInJail), setOkayButton); } await hub.UpdateGlobalNews(this, this.Room.Players.Values, true /*NewToJail*/, false /*HeistUpdates*/); break; case HeistPlayer.Status.FindingHeist: var vacationMessage = TextGenerator.VacationEnded; await hub.UpdateHeistStatus(this, vacationMessage.Item1, vacationMessage.Item2, setOkayButton); await hub.UpdateGlobalNews(this, this.Room.Players.Values, true /*NewToJail*/, true /*HeistUpdates*/); break; case HeistPlayer.Status.HeistDecisionMade: await hub.UpdateHeistStatus(this, this.Decision.FateTitle, this.Decision.FateDescription, setOkayButton); if (this.Decision.GoOnHeist && this.Decision.FellowHeisters != null && this.Decision.FellowHeisters.Count > 0) { await hub.UpdateHeistMeetup(this, this.Decision.FellowHeisters); } else if (!this.Decision.GoOnHeist && !this.Decision.ReportPolice) { await hub.UpdateGlobalNews(this, this.Room.Players.Values, true /*NewToJail*/, true /*HeistUpdates*/); } if (!string.IsNullOrEmpty(this.Decision.FateSummary)) { await hub.UpdateHeistSummary(this, this.Decision.FateSummary); } break; } }