From 9bd47f505a55bd0a402a3498584f5ebec75c41e8 Mon Sep 17 00:00:00 2001 From: Kurt Date: Mon, 2 Feb 2026 02:52:56 -0600 Subject: [PATCH] Ensure fake coordinates are not negative modulo Closes #736 prob shouldn't have base acres instead of sea... --- NHSE.Sprites/Field/TerrainSprite.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/NHSE.Sprites/Field/TerrainSprite.cs b/NHSE.Sprites/Field/TerrainSprite.cs index e6fe70f..d4e3dd1 100644 --- a/NHSE.Sprites/Field/TerrainSprite.cs +++ b/NHSE.Sprites/Field/TerrainSprite.cs @@ -283,10 +283,16 @@ private static void GetViewTerrain1(LayerTerrain t, LayerPositionConfig cfg, int for (int tileX = 0; tileX < TilesPerViewport; tileX++) { var actX = relX + tileX; + var acreTemplate = t.GetAcreTemplate(actX, actY); if (!cfg.IsCoordinateValidRelative(actX, actY)) { // Fill tile's square with a solid color. - var acreTemplate = t.GetAcreTemplate(actX, actY); + // Ensure coordinates are positive (for modulo later). + if (actX < 0) + actX += TilesPerViewport; + if (actY < 0) + actY += TilesPerViewport; + for (int pixelY = 0; pixelY < TileScale; pixelY++) { var index = (tileY * TileScale + pixelY) * (TilesPerViewport * TileScale) + tileX * TileScale; @@ -303,7 +309,6 @@ private static void GetViewTerrain1(LayerTerrain t, LayerPositionConfig cfg, int else { // Fill tile's square from terrain data. - var acreTemplate = t.GetAcreTemplate(actX, actY); var tile = t.GetTile(actX, actY); for (int pixelY = 0; pixelY < TileScale; pixelY++) {