poe2-bot/src/Roboto.Core/GameState.cs
2026-03-06 00:38:30 -05:00

34 lines
1.5 KiB
C#

using System.Numerics;
namespace Roboto.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; } = [];
// Derived (computed once per tick by GameStateEnricher)
public ThreatMap Threats { get; set; } = new();
public IReadOnlyList<EntitySnapshot> NearestEnemies { get; set; } = [];
public IReadOnlyList<GroundEffect> GroundEffects { get; set; } = [];
}