diff --git a/rabi_splitter_WPF/MemorySnapshot.cs b/rabi_splitter_WPF/MemorySnapshot.cs index e515dec..fba2fb5 100644 --- a/rabi_splitter_WPF/MemorySnapshot.cs +++ b/rabi_splitter_WPF/MemorySnapshot.cs @@ -6,6 +6,28 @@ using System.Text; namespace rabi_splitter_WPF { + public struct MapTileCoordinate + { + public readonly int x; + public readonly int y; + + public MapTileCoordinate(int x, int y) + { + this.x = x; + this.y = y; + } + + public static MapTileCoordinate FromWorldPosition(int mapid, float px, float py) + { + // Note: a game-tile is 64x64 + // A map-tile is 1280x720. (20 x 11.25 game tiles) + int x = (int)(px / 1280) + mapid * 25; + int y = (int)(py / 720); + + return new MapTileCoordinate(x, y); + } + } + public struct BossStats { public int entityArrayIndex; @@ -36,6 +58,7 @@ namespace rabi_splitter_WPF public readonly float px; public readonly float py; + public readonly MapTileCoordinate mapTile; public readonly int entityArrayPtr; public readonly int entityArraySize; @@ -93,8 +116,8 @@ namespace rabi_splitter_WPF px = memoryHelper.GetMemoryValue(entityArrayPtr + 0xC, false); py = memoryHelper.GetMemoryValue(entityArrayPtr + 0x10, false); + mapTile = MapTileCoordinate.FromWorldPosition(mapid, px, py); - // Read Entity Array and Search for boss data bossList = new List(); nActiveEntities = 0; diff --git a/rabi_splitter_WPF/RabiRibiDisplay.cs b/rabi_splitter_WPF/RabiRibiDisplay.cs index f7d3142..416344c 100644 --- a/rabi_splitter_WPF/RabiRibiDisplay.cs +++ b/rabi_splitter_WPF/RabiRibiDisplay.cs @@ -235,6 +235,8 @@ namespace rabi_splitter_WPF mainContext.Text14 = $"PLAYTIME: {snapshot.playtime}"; + mainContext.Text15 = $"Map Tile: ({snapshot.mapTile.x}, {snapshot.mapTile.y})"; + { string bosstext = "Boss Fight: " + (inGameState.currentActivity == InGameActivity.BOSS_BATTLE) + "\n"; bosstext += "Bosses: " + snapshot.bossList.Count + "\n";