mirror of
https://github.com/OpenMW/openmw.git
synced 2025-02-24 21:39:42 +00:00
some clean up for the cleanup code
This commit is contained in:
parent
35e8e23037
commit
5aea6ef80f
3 changed files with 23 additions and 17 deletions
|
@ -17,6 +17,18 @@
|
||||||
|
|
||||||
#include "../mwmechanics/npcstats.hpp"
|
#include "../mwmechanics/npcstats.hpp"
|
||||||
|
|
||||||
|
void MWState::StateManager::cleanup()
|
||||||
|
{
|
||||||
|
if (mState!=State_NoGame)
|
||||||
|
{
|
||||||
|
MWBase::Environment::get().getDialogueManager()->clear();
|
||||||
|
MWBase::Environment::get().getJournal()->clear();
|
||||||
|
mState = State_NoGame;
|
||||||
|
mCharacterManager.clearCurrentCharacter();
|
||||||
|
mTimePlayed = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MWState::StateManager::StateManager (const boost::filesystem::path& saves, const std::string& game)
|
MWState::StateManager::StateManager (const boost::filesystem::path& saves, const std::string& game)
|
||||||
: mQuitRequest (false), mState (State_NoGame), mCharacterManager (saves, game), mTimePlayed (0)
|
: mQuitRequest (false), mState (State_NoGame), mCharacterManager (saves, game), mTimePlayed (0)
|
||||||
{
|
{
|
||||||
|
@ -40,18 +52,10 @@ MWState::StateManager::State MWState::StateManager::getState() const
|
||||||
|
|
||||||
void MWState::StateManager::newGame (bool bypass)
|
void MWState::StateManager::newGame (bool bypass)
|
||||||
{
|
{
|
||||||
if (mState!=State_NoGame)
|
cleanup();
|
||||||
{
|
|
||||||
MWBase::Environment::get().getDialogueManager()->clear();
|
|
||||||
MWBase::Environment::get().getJournal()->clear();
|
|
||||||
mState = State_NoGame;
|
|
||||||
mCharacterManager.clearCurrentCharacter();
|
|
||||||
mTimePlayed = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!bypass)
|
if (!bypass)
|
||||||
{
|
{
|
||||||
/// \todo extract cleanup code
|
|
||||||
MWBase::Environment::get().getWorld()->startNewGame();
|
MWBase::Environment::get().getWorld()->startNewGame();
|
||||||
MWBase::Environment::get().getWindowManager()->setNewGame (true);
|
MWBase::Environment::get().getWindowManager()->setNewGame (true);
|
||||||
}
|
}
|
||||||
|
@ -99,6 +103,9 @@ void MWState::StateManager::saveGame (const std::string& description, const Slot
|
||||||
writer.startRecord ("SAVE");
|
writer.startRecord ("SAVE");
|
||||||
slot->mProfile.save (writer);
|
slot->mProfile.save (writer);
|
||||||
writer.endRecord ("SAVE");
|
writer.endRecord ("SAVE");
|
||||||
|
|
||||||
|
/// \todo write saved game data
|
||||||
|
|
||||||
writer.close();
|
writer.close();
|
||||||
|
|
||||||
Settings::Manager::setString ("character", "Saves",
|
Settings::Manager::setString ("character", "Saves",
|
||||||
|
@ -107,13 +114,7 @@ void MWState::StateManager::saveGame (const std::string& description, const Slot
|
||||||
|
|
||||||
void MWState::StateManager::loadGame (const Character *character, const Slot *slot)
|
void MWState::StateManager::loadGame (const Character *character, const Slot *slot)
|
||||||
{
|
{
|
||||||
if (mState!=State_NoGame)
|
cleanup();
|
||||||
{
|
|
||||||
MWBase::Environment::get().getDialogueManager()->clear();
|
|
||||||
MWBase::Environment::get().getJournal()->clear();
|
|
||||||
mState = State_NoGame;
|
|
||||||
mCharacterManager.clearCurrentCharacter();
|
|
||||||
}
|
|
||||||
|
|
||||||
mTimePlayed = slot->mProfile.mTimePlayed;
|
mTimePlayed = slot->mProfile.mTimePlayed;
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,10 @@ namespace MWState
|
||||||
CharacterManager mCharacterManager;
|
CharacterManager mCharacterManager;
|
||||||
double mTimePlayed;
|
double mTimePlayed;
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
void cleanup();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
StateManager (const boost::filesystem::path& saves, const std::string& game);
|
StateManager (const boost::filesystem::path& saves, const std::string& game);
|
||||||
|
|
|
@ -290,7 +290,6 @@ namespace MWWorld
|
||||||
pos.rot[2] = 0;
|
pos.rot[2] = 0;
|
||||||
mWorldScene->changeToExteriorCell(pos);
|
mWorldScene->changeToExteriorCell(pos);
|
||||||
|
|
||||||
|
|
||||||
// enable collision
|
// enable collision
|
||||||
if(!mPhysics->toggleCollisionMode())
|
if(!mPhysics->toggleCollisionMode())
|
||||||
mPhysics->toggleCollisionMode();
|
mPhysics->toggleCollisionMode();
|
||||||
|
@ -300,6 +299,7 @@ namespace MWWorld
|
||||||
|
|
||||||
// global variables
|
// global variables
|
||||||
delete mGlobalVariables;
|
delete mGlobalVariables;
|
||||||
|
mGlobalVariables = 0;
|
||||||
mGlobalVariables = new Globals (mStore);
|
mGlobalVariables = new Globals (mStore);
|
||||||
|
|
||||||
// set new game mark
|
// set new game mark
|
||||||
|
@ -308,6 +308,7 @@ namespace MWWorld
|
||||||
|
|
||||||
// we don't want old weather to persist on a new game
|
// we don't want old weather to persist on a new game
|
||||||
delete mWeatherManager;
|
delete mWeatherManager;
|
||||||
|
mWeatherManager = 0;
|
||||||
mWeatherManager = new MWWorld::WeatherManager(mRendering,&mFallback);
|
mWeatherManager = new MWWorld::WeatherManager(mRendering,&mFallback);
|
||||||
|
|
||||||
MWBase::Environment::get().getScriptManager()->resetGlobalScripts();
|
MWBase::Environment::get().getScriptManager()->resetGlobalScripts();
|
||||||
|
|
Loading…
Reference in a new issue