mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-05-08 03:28:15 +03:00
Moved quick save into statemanager class. Kept loader as is as it's rather specalized.
This commit is contained in:
parent
6a8bf71c4c
commit
05b21c92af
5 changed files with 29 additions and 34 deletions
|
@ -65,6 +65,10 @@ namespace MWBase
|
||||||
///
|
///
|
||||||
/// \note \a slot must belong to \a character.
|
/// \note \a slot must belong to \a character.
|
||||||
|
|
||||||
|
///Simple saver, writes over the file if already existing
|
||||||
|
/** Used for quick save and autosave **/
|
||||||
|
virtual void quickSave(std::string = "Quicksave")=0;
|
||||||
|
|
||||||
virtual MWState::Character *getCurrentCharacter (bool create = true) = 0;
|
virtual MWState::Character *getCurrentCharacter (bool create = true) = 0;
|
||||||
///< \param create Create a new character, if there is no current character.
|
///< \param create Create a new character, if there is no current character.
|
||||||
|
|
||||||
|
|
|
@ -122,7 +122,7 @@ namespace MWGui
|
||||||
world->getFader ()->fadeOut(0.2);
|
world->getFader ()->fadeOut(0.2);
|
||||||
setVisible(false);
|
setVisible(false);
|
||||||
if(Settings::Manager::getBool("autosave","Saves")) //autosaves
|
if(Settings::Manager::getBool("autosave","Saves")) //autosaves
|
||||||
autosave();
|
MWBase::Environment::get().getStateManager()->quickSave("Autosave");
|
||||||
mProgressBar.setVisible (true);
|
mProgressBar.setVisible (true);
|
||||||
|
|
||||||
mWaiting = true;
|
mWaiting = true;
|
||||||
|
@ -242,22 +242,6 @@ namespace MWGui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void WaitDialog::autosave() {
|
|
||||||
if(MWBase::Environment::get().getWorld()->getGlobalInt ("chargenstate")==-1) { //ensure you're not in character creation
|
|
||||||
const MWState::Slot* slot = NULL;
|
|
||||||
MWState::Character* mCurrentCharacter = MWBase::Environment::get().getStateManager()->getCurrentCharacter(true); //Get current character
|
|
||||||
if (mCurrentCharacter) //Ensure one exists
|
|
||||||
{
|
|
||||||
//Find quicksave slot
|
|
||||||
for (MWState::Character::SlotIterator it = mCurrentCharacter->begin(); it != mCurrentCharacter->end(); ++it)
|
|
||||||
{
|
|
||||||
if (it->mProfile.mDescription == "Autosave")
|
|
||||||
slot = &*it;
|
|
||||||
}
|
|
||||||
MWBase::Environment::get().getStateManager()->saveGame("Autosave", slot);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void WaitDialog::wakeUp ()
|
void WaitDialog::wakeUp ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -657,21 +657,7 @@ namespace MWInput
|
||||||
}
|
}
|
||||||
|
|
||||||
void InputManager::quickSave() {
|
void InputManager::quickSave() {
|
||||||
if(MWBase::Environment::get().getWorld()->getGlobalInt ("chargenstate")==-1) { //ensure you're not in character creation
|
MWBase::Environment::get().getStateManager()->quickSave();
|
||||||
const MWState::Slot* slot = NULL;
|
|
||||||
MWState::Character* mCurrentCharacter = MWBase::Environment::get().getStateManager()->getCurrentCharacter(true); //Get current character
|
|
||||||
if (mCurrentCharacter) //Ensure one exists
|
|
||||||
{
|
|
||||||
//Find quicksave slot
|
|
||||||
for (MWState::Character::SlotIterator it = mCurrentCharacter->begin(); it != mCurrentCharacter->end(); ++it)
|
|
||||||
{
|
|
||||||
if (it->mProfile.mDescription == "Quicksave")
|
|
||||||
slot = &*it;
|
|
||||||
}
|
|
||||||
//MWBase::Environment::get().getWindowManager()->messageBox("#{sQuick_save}"); //No message on quicksave?
|
|
||||||
MWBase::Environment::get().getStateManager()->saveGame("Quicksave", slot);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
void InputManager::toggleSpell()
|
void InputManager::toggleSpell()
|
||||||
{
|
{
|
||||||
|
|
|
@ -223,6 +223,23 @@ void MWState::StateManager::saveGame (const std::string& description, const Slot
|
||||||
slot->mPath.parent_path().filename().string());
|
slot->mPath.parent_path().filename().string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MWState::StateManager::quickSave(std::string name) {
|
||||||
|
if(MWBase::Environment::get().getWorld()->getGlobalInt ("chargenstate")==-1) { //ensure you're not in character creation
|
||||||
|
const MWState::Slot* slot = NULL;
|
||||||
|
MWState::Character* mCurrentCharacter = MWBase::Environment::get().getStateManager()->getCurrentCharacter(true); //Get current character
|
||||||
|
if (mCurrentCharacter) //Ensure one exists
|
||||||
|
{
|
||||||
|
//Find quicksave slot
|
||||||
|
for (MWState::Character::SlotIterator it = mCurrentCharacter->begin(); it != mCurrentCharacter->end(); ++it)
|
||||||
|
{
|
||||||
|
if (it->mProfile.mDescription == name)
|
||||||
|
slot = &*it;
|
||||||
|
}
|
||||||
|
MWBase::Environment::get().getStateManager()->saveGame(name, slot);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MWState::StateManager::loadGame (const Character *character, const Slot *slot)
|
void MWState::StateManager::loadGame (const Character *character, const Slot *slot)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -309,11 +326,11 @@ void MWState::StateManager::loadGame (const Character *character, const Slot *sl
|
||||||
MWBase::Environment::get().getMechanicsManager()->playerLoaded();
|
MWBase::Environment::get().getMechanicsManager()->playerLoaded();
|
||||||
|
|
||||||
MWWorld::Ptr ptr = MWBase::Environment::get().getWorld()->getPlayerPtr();
|
MWWorld::Ptr ptr = MWBase::Environment::get().getWorld()->getPlayerPtr();
|
||||||
|
|
||||||
//Update the weapon icon in the hud with whatever the player is currently holding.
|
//Update the weapon icon in the hud with whatever the player is currently holding.
|
||||||
MWWorld::InventoryStore& invStore = ptr.getClass().getInventoryStore(ptr);
|
MWWorld::InventoryStore& invStore = ptr.getClass().getInventoryStore(ptr);
|
||||||
MWWorld::ContainerStoreIterator item = invStore.getSlot(MWWorld::InventoryStore::Slot_CarriedRight);
|
MWWorld::ContainerStoreIterator item = invStore.getSlot(MWWorld::InventoryStore::Slot_CarriedRight);
|
||||||
|
|
||||||
if (item != invStore.end())
|
if (item != invStore.end())
|
||||||
MWBase::Environment::get().getWindowManager()->setSelectedWeapon(*item);
|
MWBase::Environment::get().getWindowManager()->setSelectedWeapon(*item);
|
||||||
|
|
||||||
|
|
|
@ -49,6 +49,10 @@ namespace MWState
|
||||||
///
|
///
|
||||||
/// \note Slot must belong to the current character.
|
/// \note Slot must belong to the current character.
|
||||||
|
|
||||||
|
///Saves a file, using supplied filename, overwritting if needed
|
||||||
|
/** This is mostly used for quicksaving and autosaving, for they use the same name over and over again **/
|
||||||
|
virtual void quickSave(std::string name = "Quicksave");
|
||||||
|
|
||||||
virtual void loadGame (const Character *character, const Slot *slot);
|
virtual void loadGame (const Character *character, const Slot *slot);
|
||||||
///< Load a saved game file from \a slot.
|
///< Load a saved game file from \a slot.
|
||||||
///
|
///
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue