Enhance protocol and simulation features with activity tracking and behavior definitions
- Updated protocol documentation to include new `activity` and `activityLabel` fields in the person card response, reflecting real-time activity status. - Introduced `BehaviorDef` to define behavior rules, including need thresholds and lesson skill gains, enhancing AI decision-making. - Revised the `DefCatalog` to incorporate behavior definitions and updated validation logic to ensure proper behavior handling. - Enhanced the simulation to manage presence and activity states, allowing for more dynamic interactions within the school environment. - Updated tests to validate the new activity tracking and behavior functionalities, ensuring robust performance and reliability. - Improved localization strings to support new activity and behavior features, enhancing user experience.
This commit is contained in:
@@ -22,6 +22,17 @@ public readonly record struct PersonTraits(IReadOnlyList<string> Ids);
|
||||
/// <summary>Live need values. The dictionary is mutated in place as the clock advances.</summary>
|
||||
public readonly record struct PersonNeeds(Dictionary<string, float> Values);
|
||||
|
||||
/// <summary>
|
||||
/// The action this person is carrying out. Occupies <see cref="Thing"/> until it finishes.
|
||||
/// Idle when <see cref="ActionId"/> is null.
|
||||
/// </summary>
|
||||
public readonly record struct PersonActivity(string? ActionId, string? Thing, float RemainingMinutes)
|
||||
{
|
||||
public static PersonActivity Idle { get; } = new(null, null, 0f);
|
||||
|
||||
public bool IsActive => ActionId is not null;
|
||||
}
|
||||
|
||||
public readonly record struct PersonRoles(
|
||||
bool IsStudent,
|
||||
bool IsStaff,
|
||||
|
||||
Reference in New Issue
Block a user