37 lines
1.6 KiB
C#
37 lines
1.6 KiB
C#
using System.Numerics;
|
|
|
|
namespace Nexus.Core;
|
|
|
|
public class GameState
|
|
{
|
|
public long TickNumber { get; set; }
|
|
public float DeltaTime { get; set; }
|
|
public long TimestampMs { get; set; }
|
|
|
|
public PlayerState Player { get; set; } = new();
|
|
public IReadOnlyList<EntitySnapshot> Entities { get; set; } = [];
|
|
public IReadOnlyList<EntitySnapshot> HostileMonsters { get; set; } = [];
|
|
public IReadOnlyList<EntitySnapshot> NearbyLoot { get; set; } = [];
|
|
public WalkabilitySnapshot? Terrain { get; set; }
|
|
|
|
public uint AreaHash { get; set; }
|
|
public int AreaLevel { get; set; }
|
|
public string? CurrentAreaName { get; set; }
|
|
public bool IsLoading { get; set; }
|
|
public bool IsEscapeOpen { get; set; }
|
|
public DangerLevel Danger { get; set; }
|
|
public Matrix4x4? CameraMatrix { get; set; }
|
|
public IReadOnlyList<QuestProgress> ActiveQuests { get; set; } = [];
|
|
/// <summary>Active quests as shown in the game UI (title + objectives).</summary>
|
|
public IReadOnlyList<UiQuestInfo> UiQuests { get; set; } = [];
|
|
/// <summary>In-progress quests from the quest linked list with target areas and paths.</summary>
|
|
public IReadOnlyList<QuestInfo> Quests { get; set; } = [];
|
|
|
|
public IReadOnlyList<ProjectileSnapshot> EnemyProjectiles { get; set; } = [];
|
|
|
|
// Derived (computed once per tick by GameStateEnricher / ThreatSystem)
|
|
public ThreatMap Threats { get; set; } = new();
|
|
public ThreatAssessment ThreatAssessment { get; set; } = new();
|
|
public IReadOnlyList<EntitySnapshot> NearestEnemies { get; set; } = [];
|
|
public IReadOnlyList<GroundEffect> GroundEffects { get; set; } = [];
|
|
}
|