poe2-bot/src/Nexus.Core/GameState.cs
2026-04-04 16:44:32 -04:00

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; } = [];
}