mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-20 07:53:51 +00:00
Clear global map overlay when starting/loading a game
This commit is contained in:
parent
03cf383be7
commit
f09328ca84
10 changed files with 49 additions and 22 deletions
|
@ -285,6 +285,9 @@ namespace MWBase
|
|||
|
||||
/// Should the cursor be visible?
|
||||
virtual bool getCursorVisible() = 0;
|
||||
|
||||
/// Clear all savegame-specific data
|
||||
virtual void clear() = 0;
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -434,7 +434,7 @@ namespace MWGui
|
|||
|
||||
|
||||
static int _counter=0;
|
||||
MyGUI::Button* markerWidget = mGlobalMapImage->createWidget<MyGUI::Button>("ButtonImage",
|
||||
MyGUI::Button* markerWidget = mGlobalMapOverlay->createWidget<MyGUI::Button>("ButtonImage",
|
||||
widgetCoord, MyGUI::Align::Default, "Door" + boost::lexical_cast<std::string>(_counter));
|
||||
markerWidget->setImageResource("DoorMarker");
|
||||
markerWidget->setUserString("ToolTipType", "Layout");
|
||||
|
@ -499,10 +499,11 @@ namespace MWGui
|
|||
mGlobalMap->setCanvasSize (mGlobalMapRender->getWidth(), mGlobalMapRender->getHeight());
|
||||
mGlobalMapImage->setSize(mGlobalMapRender->getWidth(), mGlobalMapRender->getHeight());
|
||||
|
||||
for (unsigned int i=0; i<mGlobalMapImage->getChildCount (); ++i)
|
||||
// force markers to foreground
|
||||
for (unsigned int i=0; i<mGlobalMapOverlay->getChildCount (); ++i)
|
||||
{
|
||||
if (mGlobalMapImage->getChildAt (i)->getName().substr(0,4) == "Door")
|
||||
mGlobalMapImage->getChildAt (i)->castType<MyGUI::Button>()->setImageResource("DoorMarker");
|
||||
if (mGlobalMapOverlay->getChildAt (i)->getName().substr(0,4) == "Door")
|
||||
mGlobalMapOverlay->getChildAt (i)->castType<MyGUI::Button>()->setImageResource("DoorMarker");
|
||||
}
|
||||
|
||||
globalMapUpdatePlayer();
|
||||
|
@ -573,4 +574,14 @@ namespace MWGui
|
|||
mGlobalMap->setViewOffset(viewoffs);
|
||||
}
|
||||
|
||||
void MapWindow::clear()
|
||||
{
|
||||
mGlobalMapRender->clear();
|
||||
|
||||
while (mEventBoxGlobal->getChildCount())
|
||||
MyGUI::Gui::getInstance().destroyWidget(mEventBoxGlobal->getChildAt(0));
|
||||
while (mGlobalMapOverlay->getChildCount())
|
||||
MyGUI::Gui::getInstance().destroyWidget(mGlobalMapOverlay->getChildAt(0));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -92,6 +92,9 @@ namespace MWGui
|
|||
|
||||
virtual void open();
|
||||
|
||||
/// Clear all savegame-specific data
|
||||
void clear();
|
||||
|
||||
private:
|
||||
void onDragStart(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id);
|
||||
void onMouseDrag(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id);
|
||||
|
|
|
@ -1381,4 +1381,9 @@ namespace MWGui
|
|||
Settings::Manager::setFloat(setting + " h", "Windows", h);
|
||||
}
|
||||
|
||||
void WindowManager::clear()
|
||||
{
|
||||
mMap->clear();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -280,6 +280,9 @@ namespace MWGui
|
|||
|
||||
virtual bool getCursorVisible();
|
||||
|
||||
/// Clear all savegame-specific data
|
||||
virtual void clear();
|
||||
|
||||
private:
|
||||
bool mConsoleOnlyScripts;
|
||||
|
||||
|
|
|
@ -170,21 +170,10 @@ namespace MWRender
|
|||
tex->load();
|
||||
|
||||
|
||||
|
||||
|
||||
mOverlayTexture = Ogre::TextureManager::getSingleton().createManual("GlobalMapOverlay", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,
|
||||
Ogre::TEX_TYPE_2D, mWidth, mHeight, 0, Ogre::PF_A8B8G8R8, Ogre::TU_DYNAMIC_WRITE_ONLY);
|
||||
|
||||
|
||||
std::vector<Ogre::uint32> buffer;
|
||||
buffer.resize(mWidth * mHeight);
|
||||
|
||||
// initialize to (0, 0, 0, 0)
|
||||
for (int p=0; p<mWidth * mHeight; ++p)
|
||||
buffer[p] = 0;
|
||||
|
||||
memcpy(mOverlayTexture->getBuffer()->lock(Ogre::HardwareBuffer::HBL_DISCARD), &buffer[0], mWidth*mHeight*4);
|
||||
mOverlayTexture->getBuffer()->unlock();
|
||||
clear();
|
||||
|
||||
loadingListener->loadingOff();
|
||||
}
|
||||
|
@ -227,9 +216,19 @@ namespace MWRender
|
|||
|
||||
if (!localMapTexture.isNull())
|
||||
{
|
||||
|
||||
mOverlayTexture->getBuffer()->blit(localMapTexture->getBuffer(), Ogre::Image::Box(0,0,512,512),
|
||||
Ogre::Image::Box(originX,originY,originX+24,originY+24));
|
||||
}
|
||||
}
|
||||
|
||||
void GlobalMap::clear()
|
||||
{
|
||||
std::vector<Ogre::uint32> buffer;
|
||||
// initialize to (0,0,0,0)
|
||||
buffer.resize(mWidth * mHeight, 0);
|
||||
|
||||
Ogre::PixelBox pb(mWidth, mHeight, 1, Ogre::PF_A8B8G8R8, &buffer[0]);
|
||||
|
||||
mOverlayTexture->getBuffer()->blitFromMemory(pb);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,6 +31,9 @@ namespace MWRender
|
|||
|
||||
void exploreCell (int cellX, int cellY);
|
||||
|
||||
/// Clears the overlay
|
||||
void clear();
|
||||
|
||||
private:
|
||||
std::string mCacheDir;
|
||||
|
||||
|
|
|
@ -290,9 +290,6 @@ void RenderingManager::rotateObject(const MWWorld::Ptr &ptr)
|
|||
void
|
||||
RenderingManager::updateObjectCell(const MWWorld::Ptr &old, const MWWorld::Ptr &cur)
|
||||
{
|
||||
Ogre::Image im;
|
||||
im.encode(".jpg");
|
||||
|
||||
Ogre::SceneNode *child =
|
||||
mRendering.getScene()->getSceneNode(old.getRefData().getHandle());
|
||||
|
||||
|
|
|
@ -35,6 +35,7 @@ void MWState::StateManager::cleanup (bool force)
|
|||
MWBase::Environment::get().getJournal()->clear();
|
||||
MWBase::Environment::get().getScriptManager()->getGlobalScripts().clear();
|
||||
MWBase::Environment::get().getWorld()->clear();
|
||||
MWBase::Environment::get().getWindowManager()->clear();
|
||||
|
||||
mState = State_NoGame;
|
||||
mCharacterManager.clearCurrentCharacter();
|
||||
|
@ -73,8 +74,8 @@ void MWState::StateManager::askLoadRecent()
|
|||
{
|
||||
MWState::Slot lastSave = *getCurrentCharacter()->begin();
|
||||
std::vector<std::string> buttons;
|
||||
buttons.push_back("Yes");
|
||||
buttons.push_back("No");
|
||||
buttons.push_back("#{sYes}");
|
||||
buttons.push_back("#{sNo}");
|
||||
std::string tag("%s");
|
||||
std::string message = MWBase::Environment::get().getWindowManager()->getGameSettingString("sLoadLastSaveMsg", tag);
|
||||
size_t pos = message.find(tag);
|
||||
|
@ -257,6 +258,7 @@ void MWState::StateManager::loadGame (const Character *character, const Slot *sl
|
|||
Settings::Manager::setString ("character", "Saves",
|
||||
slot->mPath.parent_path().filename().string());
|
||||
|
||||
MWBase::Environment::get().getWindowManager()->setNewGame(false);
|
||||
MWBase::Environment::get().getWorld()->setupPlayer();
|
||||
MWBase::Environment::get().getWorld()->renderPlayer();
|
||||
MWBase::Environment::get().getWindowManager()->updatePlayer();
|
||||
|
|
|
@ -248,6 +248,7 @@ namespace MWWorld
|
|||
|
||||
MWBase::Environment::get().getWindowManager()->updatePlayer();
|
||||
|
||||
// FIXME: this will add cell 0,0 as visible on the global map
|
||||
ESM::Position pos;
|
||||
const int cellSize = 8192;
|
||||
pos.pos[0] = cellSize/2;
|
||||
|
|
Loading…
Reference in a new issue