1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-02-01 13:15:34 +00:00

changed character creation logic (create on save instead of on new game)

This commit is contained in:
Marc Zinnschlag 2013-11-21 10:20:50 +01:00
parent d6e2701dd6
commit e938c5a0ee
5 changed files with 10 additions and 6 deletions

View file

@ -54,7 +54,6 @@ namespace MWBase
/// \note Slot must belong to the current character. /// \note Slot must belong to the current character.
virtual MWState::Character *getCurrentCharacter() = 0; virtual MWState::Character *getCurrentCharacter() = 0;
///< Must not be called, if there is no current character.
}; };
} }

View file

@ -39,7 +39,7 @@ MWState::CharacterManager::CharacterManager (const boost::filesystem::path& save
MWState::Character *MWState::CharacterManager::getCurrentCharacter() MWState::Character *MWState::CharacterManager::getCurrentCharacter()
{ {
if (!mCurrent) if (!mCurrent)
throw std::logic_error ("no character selected"); createCharacter();
return mCurrent; return mCurrent;
} }
@ -54,4 +54,9 @@ void MWState::CharacterManager::createCharacter()
mCharacters.push_back (Character (path)); mCharacters.push_back (Character (path));
mCurrent = &mCharacters.back(); mCurrent = &mCharacters.back();
}
void MWState::CharacterManager::clearCurrentCharacter()
{
mCurrent = 0;
} }

View file

@ -27,10 +27,12 @@ namespace MWState
CharacterManager (const boost::filesystem::path& saves); CharacterManager (const boost::filesystem::path& saves);
Character *getCurrentCharacter(); Character *getCurrentCharacter();
///< Must not be called, if there is no current character. ///< A character is implicitly created, if there is none.
void createCharacter(); void createCharacter();
///< Create new character within saved game management ///< Create new character within saved game management
void clearCurrentCharacter();
}; };
} }

View file

@ -37,6 +37,7 @@ void MWState::StateManager::newGame (bool bypass)
MWBase::Environment::get().getDialogueManager()->clear(); MWBase::Environment::get().getDialogueManager()->clear();
MWBase::Environment::get().getJournal()->clear(); MWBase::Environment::get().getJournal()->clear();
mState = State_NoGame; mState = State_NoGame;
mCharacterManager.clearCurrentCharacter();
} }
if (!bypass) if (!bypass)
@ -46,8 +47,6 @@ void MWState::StateManager::newGame (bool bypass)
MWBase::Environment::get().getWindowManager()->setNewGame (true); MWBase::Environment::get().getWindowManager()->setNewGame (true);
} }
mCharacterManager.createCharacter();
mState = State_Running; mState = State_Running;
} }

View file

@ -38,7 +38,6 @@ namespace MWState
/// \note Slot must belong to the current character. /// \note Slot must belong to the current character.
virtual Character *getCurrentCharacter(); virtual Character *getCurrentCharacter();
///< Must not be called, if there is no current character.
}; };
} }