This commit is contained in:
Boki 2026-03-04 16:49:30 -05:00
parent 0df70abad7
commit 0c14d78d8a
25 changed files with 1487 additions and 179 deletions

View file

@ -1,4 +1,6 @@
namespace Roboto.Memory.States;
using Roboto.Memory;
namespace Roboto.Memory.Objects;
/// <summary>
/// Root state orchestrator. Reads controller from GameStateBase, resolves state slot pointers,
@ -16,17 +18,17 @@ public sealed class GameStates
public int StatesCount { get; private set; }
public GameStateType CurrentState { get; private set; } = GameStateType.GameNotLoaded;
public IReadOnlyDictionary<nint, GameStateType> AllStates => _allStates;
public AreaLoadingState AreaLoading { get; }
public InGameStateReader InGame { get; }
public AreaLoading AreaLoading { get; }
public InGameState InGame { get; }
/// <summary>Raw qwords from controller 0x00-0x48 (before state slots), for UI diagnostics.</summary>
public (int Offset, nint Value, string? Match, bool Changed, string? DerefInfo)[] ControllerPreSlots { get; private set; } = [];
public GameStates(MemoryContext ctx)
public GameStates(MemoryContext ctx, ComponentReader components, MsvcStringReader strings, QuestNameLookup? questNames)
{
_ctx = ctx;
AreaLoading = new AreaLoadingState(ctx);
InGame = new InGameStateReader(ctx);
AreaLoading = new AreaLoading(ctx);
InGame = new InGameState(ctx, components, strings, questNames);
}
/// <summary>