From 20d72bc20033c5acd3f80546261ab5e109c429ba Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 9 Oct 2018 19:14:52 -0700 Subject: [PATCH] ULTIMA1: Fix placement of created transports --- engines/ultima/ultima1/u1dialogs/transports.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/engines/ultima/ultima1/u1dialogs/transports.cpp b/engines/ultima/ultima1/u1dialogs/transports.cpp index 58e439bfbdb..c21e1375113 100644 --- a/engines/ultima/ultima1/u1dialogs/transports.cpp +++ b/engines/ultima/ultima1/u1dialogs/transports.cpp @@ -208,13 +208,16 @@ void Transports::addTransport(int transportIndex) { // Iterate through the tiles surrounding the city/castle for (delta.y = -1; delta.y <= 1; ++delta.y) { for (delta.x = -1; delta.x <= 1; ++delta.x) { - if (delta.x != 0 || delta.y != 0) { - map->getTileAt(map->getPosition() + delta, &mapTile); + map->getTileAt(map->getPosition() + delta, &mapTile); - if ((transportIndex < 2 && mapTile.isOriginalWoods()) - || (transportIndex >= 3 && transportIndex <= 4 && mapTile.isOriginalWater()) - || (transportIndex >= 5 && mapTile.isOriginalGrass())) { - map->createWidget(WIDGET_NAMES[transportIndex]); + if (!mapTile._widget && mapTile._locationNum == -1) { + if ((transportIndex <= 1 && (mapTile.isOriginalWoods() || (!_woods && mapTile.isOriginalGrass()))) + || (transportIndex >= 2 && transportIndex <= 3 && mapTile.isOriginalWater()) + || (transportIndex >= 4 && mapTile.isOriginalGrass())) { + // Add the transport onto the designated tile around the location + Shared::Maps::MapWidget *widget = map->createWidget(WIDGET_NAMES[transportIndex]); + assert(widget); + map->addWidget(widget); return; } }