From 2e57cf5730ed326d45f1c828d158bb6bb408d1c7 Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 17 Apr 2012 18:47:51 +0200 Subject: [PATCH] fixed the tooltip for doors leading to exteriors, fixed map window cell name --- apps/openmw/mwclass/door.cpp | 26 ++++++++++++++++++++++---- apps/openmw/mwgui/window_manager.cpp | 5 ++++- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/apps/openmw/mwclass/door.cpp b/apps/openmw/mwclass/door.cpp index e06fdecda8..794d57d1c2 100644 --- a/apps/openmw/mwclass/door.cpp +++ b/apps/openmw/mwclass/door.cpp @@ -164,12 +164,30 @@ namespace MWClass std::string text; - /// \todo If destCell is empty, the teleport target is an exterior cell. In that case we - /// need to fetch that cell (via target position) and retrieve the region name. - if (ref->ref.teleport && (ref->ref.destCell != "")) + if (ref->ref.teleport) { + std::string dest; + if (ref->ref.destCell != "") + { + // door leads to an interior, use interior name as tooltip + dest = ref->ref.destCell; + } + else + { + // door leads to exterior, use cell name (if any), otherwise translated region name + int x,y; + environment.mWorld->positionToIndex (ref->ref.doorDest.pos[0], ref->ref.doorDest.pos[1], x, y); + const ESM::Cell* cell = environment.mWorld->getStore().cells.findExt(x,y); + if (cell->name != "") + dest = cell->name; + else + { + const ESM::Region* region = environment.mWorld->getStore().regions.search(cell->region); + dest = region->name; + } + } text += "\n" + environment.mWorld->getStore().gameSettings.search("sTo")->str; - text += "\n"+ref->ref.destCell; + text += "\n"+dest; } if (ref->ref.lockLevel > 0) diff --git a/apps/openmw/mwgui/window_manager.cpp b/apps/openmw/mwgui/window_manager.cpp index f49bcfaf84..0188a15b31 100644 --- a/apps/openmw/mwgui/window_manager.cpp +++ b/apps/openmw/mwgui/window_manager.cpp @@ -433,7 +433,10 @@ void WindowManager::changeCell(MWWorld::Ptr::CellStore* cell) if (cell->cell->name != "") name = cell->cell->name; else - name = cell->cell->region; + { + const ESM::Region* region = environment.mWorld->getStore().regions.search(cell->cell->region); + name = region->name; + } map->setCellName( name );