mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-03-22 16:20:58 +00:00
Fallback to default cell name for door destination
This commit is contained in:
parent
c33b2e0100
commit
2e73d2c145
@ -100,6 +100,7 @@
|
|||||||
Bug #5821: NPCs from mods getting removed if mod order was changed
|
Bug #5821: NPCs from mods getting removed if mod order was changed
|
||||||
Bug #5835: OpenMW doesn't accept negative values for NPC's hello, alarm, fight, and flee
|
Bug #5835: OpenMW doesn't accept negative values for NPC's hello, alarm, fight, and flee
|
||||||
Bug #5836: OpenMW dialogue/greeting/voice filter doesn't accept negative Ai values for NPC's hello, alarm, fight, and flee
|
Bug #5836: OpenMW dialogue/greeting/voice filter doesn't accept negative Ai values for NPC's hello, alarm, fight, and flee
|
||||||
|
Bug #5838: Local map and other menus become blank in some locations while playing Wizards' Islands mod.
|
||||||
Bug #5840: GetSoundPlaying "Health Damage" doesn't play when NPC hits target with shield effect ( vanilla engine behavior )
|
Bug #5840: GetSoundPlaying "Health Damage" doesn't play when NPC hits target with shield effect ( vanilla engine behavior )
|
||||||
Bug #5841: Can't Cast Zero Cost Spells When Magicka is < 0
|
Bug #5841: Can't Cast Zero Cost Spells When Magicka is < 0
|
||||||
Feature #390: 3rd person look "over the shoulder"
|
Feature #390: 3rd person look "over the shoulder"
|
||||||
|
@ -185,6 +185,7 @@ namespace MWBase
|
|||||||
///
|
///
|
||||||
/// \note If cell==0, the cell the player is currently in will be used instead to
|
/// \note If cell==0, the cell the player is currently in will be used instead to
|
||||||
/// generate a name.
|
/// generate a name.
|
||||||
|
virtual std::string getCellName(const ESM::Cell* cell) const = 0;
|
||||||
|
|
||||||
virtual void removeRefScript (MWWorld::RefData *ref) = 0;
|
virtual void removeRefScript (MWWorld::RefData *ref) = 0;
|
||||||
//< Remove the script attached to ref from mLocalScripts
|
//< Remove the script attached to ref from mLocalScripts
|
||||||
|
@ -302,30 +302,15 @@ namespace MWClass
|
|||||||
|
|
||||||
std::string Door::getDestination (const MWWorld::LiveCellRef<ESM::Door>& door)
|
std::string Door::getDestination (const MWWorld::LiveCellRef<ESM::Door>& door)
|
||||||
{
|
{
|
||||||
const MWWorld::ESMStore& store = MWBase::Environment::get().getWorld()->getStore();
|
std::string dest = door.mRef.getDestCell();
|
||||||
|
if (dest.empty())
|
||||||
std::string dest;
|
|
||||||
if (door.mRef.getDestCell() != "")
|
|
||||||
{
|
|
||||||
// door leads to an interior, use interior name as tooltip
|
|
||||||
dest = door.mRef.getDestCell();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
// door leads to exterior, use cell name (if any), otherwise translated region name
|
// door leads to exterior, use cell name (if any), otherwise translated region name
|
||||||
int x,y;
|
int x,y;
|
||||||
MWBase::Environment::get().getWorld()->positionToIndex (door.mRef.getDoorDest().pos[0], door.mRef.getDoorDest().pos[1], x, y);
|
auto world = MWBase::Environment::get().getWorld();
|
||||||
const ESM::Cell* cell = store.get<ESM::Cell>().find(x,y);
|
world->positionToIndex (door.mRef.getDoorDest().pos[0], door.mRef.getDoorDest().pos[1], x, y);
|
||||||
if (cell->mName != "")
|
const ESM::Cell* cell = world->getStore().get<ESM::Cell>().search(x,y);
|
||||||
dest = cell->mName;
|
dest = world->getCellName(cell);
|
||||||
else
|
|
||||||
{
|
|
||||||
const ESM::Region* region =
|
|
||||||
store.get<ESM::Region>().find(cell->mRegion);
|
|
||||||
|
|
||||||
//name as is, not a token
|
|
||||||
return MyGUI::TextIterator::toTagsString(region->mName);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return "#{sCell=" + dest + "}";
|
return "#{sCell=" + dest + "}";
|
||||||
|
@ -656,13 +656,19 @@ namespace MWWorld
|
|||||||
{
|
{
|
||||||
if (!cell)
|
if (!cell)
|
||||||
cell = mWorldScene->getCurrentCell();
|
cell = mWorldScene->getCurrentCell();
|
||||||
|
return getCellName(cell->getCell());
|
||||||
|
}
|
||||||
|
|
||||||
if (!cell->getCell()->isExterior() || !cell->getCell()->mName.empty())
|
std::string World::getCellName(const ESM::Cell* cell) const
|
||||||
return cell->getCell()->mName;
|
{
|
||||||
|
if (cell)
|
||||||
if (const ESM::Region* region = mStore.get<ESM::Region>().search (cell->getCell()->mRegion))
|
{
|
||||||
return region->mName;
|
if (!cell->isExterior() || !cell->mName.empty())
|
||||||
|
return cell->mName;
|
||||||
|
|
||||||
|
if (const ESM::Region* region = mStore.get<ESM::Region>().search (cell->mRegion))
|
||||||
|
return region->mName;
|
||||||
|
}
|
||||||
return mStore.get<ESM::GameSetting>().find ("sDefaultCellname")->mValue.getString();
|
return mStore.get<ESM::GameSetting>().find ("sDefaultCellname")->mValue.getString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -281,6 +281,7 @@ namespace MWWorld
|
|||||||
///
|
///
|
||||||
/// \note If cell==0, the cell the player is currently in will be used instead to
|
/// \note If cell==0, the cell the player is currently in will be used instead to
|
||||||
/// generate a name.
|
/// generate a name.
|
||||||
|
std::string getCellName(const ESM::Cell* cell) const override;
|
||||||
|
|
||||||
void removeRefScript (MWWorld::RefData *ref) override;
|
void removeRefScript (MWWorld::RefData *ref) override;
|
||||||
//< Remove the script attached to ref from mLocalScripts
|
//< Remove the script attached to ref from mLocalScripts
|
||||||
|
Loading…
x
Reference in New Issue
Block a user