From e400695ae6fad722add9c8054913919f8734e2e1 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Wed, 6 Dec 2017 21:36:10 -0500 Subject: XEEN: Further fixes for map rendering --- engines/xeen/dialogs_map.cpp | 60 +++++++++++++++--------------- engines/xeen/interface_minimap.cpp | 76 +++++++++++++++++++------------------- 2 files changed, 67 insertions(+), 69 deletions(-) diff --git a/engines/xeen/dialogs_map.cpp b/engines/xeen/dialogs_map.cpp index 6f225d5b2c..276098e0fb 100644 --- a/engines/xeen/dialogs_map.cpp +++ b/engines/xeen/dialogs_map.cpp @@ -318,45 +318,45 @@ void MapDialog::drawIndoors() { v = map.mazeLookup(Common::Point(xDiff, yDiff), 12); switch (v) { - case SURFTYPE_DIRT: + case 1: frame = 18; break; - case SURFTYPE_GRASS: + case 2: frame = 34; break; - case SURFTYPE_SNOW: + case 3: frame = 22; break; - case SURFTYPE_SWAMP: - case SURFTYPE_CLOUD: + case 4: + case 13: frame = 16; break; - case SURFTYPE_LAVA: - case SURFTYPE_DWATER: + case 5: + case 8: frame = 2; break; - case SURFTYPE_DESERT: + case 6: frame = 30; break; - case SURFTYPE_ROAD: + case 7: frame = 32; break; - case SURFTYPE_TFLR: + case 9: frame = 20; break; - case SURFTYPE_SKY: + case 10: frame = 28; break; - case SURFTYPE_CROAD: + case 11: frame = 14; break; - case SURFTYPE_SEWER: + case 12: frame = frame2 + 4; break; - case SURFTYPE_SCORCH: + case 14: frame = 24; break; - case SURFTYPE_SPACE: + case 15: frame = 26; break; default: @@ -369,45 +369,45 @@ void MapDialog::drawIndoors() { v = map.mazeLookup(Common::Point(xDiff, yDiff), 0); switch (v) { - case SURFTYPE_DIRT: + case 1: frame = 19; break; - case SURFTYPE_GRASS: + case 2: frame = 35; break; - case SURFTYPE_SNOW: + case 3: frame = 23; break; - case SURFTYPE_SWAMP: - case SURFTYPE_CLOUD: + case 4: + case 13: frame = 17; break; - case SURFTYPE_LAVA: - case SURFTYPE_DWATER: + case 5: + case 8: frame = 3; break; - case SURFTYPE_DESERT: + case 6: frame = 31; break; - case SURFTYPE_ROAD: + case 7: frame = 33; break; - case SURFTYPE_TFLR: + case 9: frame = 21; break; - case SURFTYPE_SKY: + case 10: frame = 29; break; - case SURFTYPE_CROAD: + case 11: frame = 15; break; - case SURFTYPE_SEWER: + case 12: frame = frame2 + 5; break; - case SURFTYPE_SCORCH: + case 14: frame = 25; break; - case SURFTYPE_SPACE: + case 15: frame = 27; break; default: diff --git a/engines/xeen/interface_minimap.cpp b/engines/xeen/interface_minimap.cpp index c00e576e5b..ba15204cc5 100644 --- a/engines/xeen/interface_minimap.cpp +++ b/engines/xeen/interface_minimap.cpp @@ -174,11 +174,9 @@ void InterfaceMinimap::drawIndoorsMinimap() { } // Handle drawing surface sprites partially clipped at the top edge - for (int colNum = 0, xp = MINIMAP_YSTART + (TILE_HEIGHT / 2), xDiff = -3; - colNum < MINIMAP_SIZE; ++colNum, ++xDiff, xp += TILE_WIDTH) { - v = map.mazeLookup( - Common::Point(party._mazePosition.x + xDiff, party._mazePosition.y + 4), - 0, 0xffff); + for (int xp = MINIMAP_XSTART + (TILE_WIDTH / 2), mazeX = pt.x - MINIMAP_DIFF; + mazeX <= (pt.x + MINIMAP_DIFF); xp += TILE_WIDTH, ++mazeX) { + v = map.mazeLookup(Common::Point(mazeX, pt.y + MINIMAP_DIFF + 1), 0, 0xffff); if (v != INVALID_CELL && map._currentSurfaceId && (map._currentSteppedOn || party._wizardEyeActive)) { @@ -306,50 +304,51 @@ void InterfaceMinimap::drawIndoorsMinimap() { if (mazeX == pt.x && mazeY == pt.y) { // Center of the minimap. Draw the direction arrow res._globalSprites.draw(1, party._mazeDirection + 1, - Common::Point(272, 40)); + Common::Point(MINIMAP_XSTART + (TILE_WIDTH * 3) + (TILE_WIDTH / 2), + MINIMAP_YSTART + (TILE_HEIGHT * 3) + (TILE_HEIGHT / 2))); } v = map.mazeLookup(Common::Point(mazeX, mazeY), 12, 0xffff); switch (v) { - case SURFTYPE_DIRT: + case 1: frame = 18; break; - case SURFTYPE_GRASS: + case 2: frame = 34; break; - case SURFTYPE_SNOW: + case 3: frame = 22; break; - case SURFTYPE_SWAMP: - case SURFTYPE_CLOUD: + case 4: + case 13: frame = 16; break; - case SURFTYPE_LAVA: - case SURFTYPE_DWATER: + case 5: + case 8: frame = 2; break; - case SURFTYPE_DESERT: + case 6: frame = 30; break; - case SURFTYPE_ROAD: + case 7: frame = 32; break; - case SURFTYPE_TFLR: + case 9: frame = 20; break; - case SURFTYPE_SKY: + case 10: frame = 28; break; - case SURFTYPE_CROAD: + case 11: frame = 14; break; - case SURFTYPE_SEWER: + case 12: frame = frame2 + 4; break; - case SURFTYPE_SCORCH: + case 14: frame = 24; break; - case SURFTYPE_SPACE: + case 15: frame = 26; break; default: @@ -363,45 +362,45 @@ void InterfaceMinimap::drawIndoorsMinimap() { v = map.mazeLookup(Common::Point(mazeX, mazeY), 0); switch (v) { - case SURFTYPE_DIRT: + case 1: frame = 19; break; - case SURFTYPE_GRASS: + case 2: frame = 35; break; - case SURFTYPE_SNOW: + case 3: frame = 23; break; - case SURFTYPE_SWAMP: - case SURFTYPE_CLOUD: + case 4: + case 13: frame = 17; break; - case SURFTYPE_LAVA: - case SURFTYPE_DWATER: + case 5: + case 8: frame = 3; break; - case SURFTYPE_DESERT: + case 6: frame = 31; break; - case SURFTYPE_ROAD: + case 7: frame = 33; break; - case SURFTYPE_TFLR: + case 9: frame = 21; break; - case SURFTYPE_SKY: + case 10: frame = 29; break; - case SURFTYPE_CROAD: + case 11: frame = 15; break; - case SURFTYPE_SEWER: + case 12: frame = frame2 + 5; break; - case SURFTYPE_SCORCH: + case 14: frame = 25; break; - case SURFTYPE_SPACE: + case 15: frame = 27; break; default: @@ -409,9 +408,8 @@ void InterfaceMinimap::drawIndoorsMinimap() { break; } - if (v == -1 && (map._currentSteppedOn || party._wizardEyeActive)) { - map._tileSprites.draw(1, frame, Common::Point(xp, yp)); - } + if (frame != -1 && (map._currentSteppedOn || party._wizardEyeActive)) + map._tileSprites.draw(0, frame, Common::Point(xp, yp)); } } -- cgit v1.2.3