Add health condition list, tick, and save for phase 77.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
using HSchool.People;
|
||||
|
||||
namespace HSchool.Simulation;
|
||||
|
||||
/// <summary>
|
||||
/// Ticks medical condition severity on the roster. Contagion and DiseaseDef outbreaks are later phases.
|
||||
/// </summary>
|
||||
internal static class HealthConditionSystem
|
||||
{
|
||||
public static bool Apply(School school, double gameMinutes)
|
||||
{
|
||||
if (gameMinutes <= 0 || school.Roster is null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var dayNumber = DateOnly.FromDateTime(school.Clock.Time).DayNumber;
|
||||
var changed = false;
|
||||
foreach (var person in school.Roster.People)
|
||||
{
|
||||
changed |= HealthConditions.Tick(person, school.PeopleSeed, dayNumber, gameMinutes);
|
||||
}
|
||||
|
||||
return changed;
|
||||
}
|
||||
}
|
||||
@@ -348,7 +348,7 @@ public sealed class School : IDisposable
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Runs one fixed step of the school: calendar, yearly intake, applicant refresh, presence, actions, need decay, then apparel wear.</summary>
|
||||
/// <summary>Runs one fixed step of the school: calendar, yearly intake, applicant refresh, presence, actions, need decay, apparel wear, then health conditions.</summary>
|
||||
/// <returns><see langword="true"/> when the roster, applicant pool or wardrobe changed this step.</returns>
|
||||
public bool Tick(double deltaTime, double gameMinutesPerRealSecond)
|
||||
{
|
||||
@@ -442,6 +442,7 @@ public sealed class School : IDisposable
|
||||
peopleChanged |= AffinitySystem.Apply(this, talked);
|
||||
}
|
||||
|
||||
peopleChanged |= HealthConditionSystem.Apply(this, gameMinutes);
|
||||
peopleChanged |= RosterTalkDirty;
|
||||
RosterTalkDirty = false;
|
||||
return peopleChanged;
|
||||
|
||||
Reference in New Issue
Block a user