ScummVM API documentation
Engine Class Referenceabstract
Inheritance diagram for Engine:
Access::AccessEngine Adl::AdlEngine Agi::AgiBase AGOS::AGOSEngine AGS::AGSEngine Asylum::AsylumEngine Avalanche::AvalancheEngine Bbvs::BbvsEngine BladeRunner::BladeRunnerEngine Buried::BuriedEngine CGE2::CGE2Engine CGE::CGEEngine Chamber::ChamberEngine Chewy::ChewyEngine Cine::CineEngine Composer::ComposerEngine Crab::CrabEngine Cruise::CruiseEngine Cryo::CryoEngine CryOmni3D::CryOmni3DEngine Director::DirectorEngine DM::DMEngine Draci::DraciEngine Dragons::DragonsEngine Drascula::DrasculaEngine DreamWeb::DreamWebEngine Efh::EfhEngine Freescape::FreescapeEngine Gnap::GnapEngine Gob::GobEngine Griffon::GriffonEngine Grim::GrimEngine Groovie::GroovieEngine Hadesch::HadeschEngine HDB::HDBGame Hopkins::HopkinsEngine Hpl1::Hpl1Engine Hugo::HugoEngine Hypno::HypnoEngine ICB::IcbEngine Illusions::IllusionsEngine Immortal::ImmortalEngine Kingdom::KingdomGame Kyra::KyraEngine_v1 Lab::LabEngine LastExpress::LastExpressEngine Lilliput::LilliputEngine Lure::LureEngine M4::M4Engine MacVenture::MacVentureEngine Made::MadeEngine MADS::MADSEngine MM::MMEngine Mohawk::MohawkEngine Mortevielle::MortevielleEngine MTropolis::MTropolisEngine MutationOfJB::MutationOfJBEngine Myst3::Myst3Engine Nancy::NancyEngine Neverhood::NeverhoodEngine NGI::NGIEngine Parallaction::Parallaction Pegasus::PegasusEngine Petka::PetkaEngine Pink::PinkEngine Playground3d::Playground3dEngine Plumbers::PlumbersGame Prince::PrinceEngine Private::PrivateEngine Queen::QueenEngine Saga2::Saga2Engine Saga::SagaEngine Sci::SciEngine Scumm::ScummEngine Sherlock::SherlockEngine Sky::SkyEngine Sludge::SludgeEngine Stark::StarkEngine StarTrek::StarTrekEngine Supernova::SupernovaEngine Sword1::SwordEngine Sword25::Sword25Engine Sword2::Sword2Engine TeenAgent::TeenAgentEngine Testbed::TestbedEngine Tetraedge::TetraedgeEngine Tinsel::TinselEngine Titanic::TitanicEngine Toltecs::ToltecsEngine Toon::ToonEngine Touche::ToucheEngine Trecision::TrecisionEngine TsAGE::TSageEngine Tucker::TuckerEngine TwinE::TwinEEngine Twp::TwpEngine Ultima::Shared::UltimaEngine Ultima::Ultima8::Ultima8Engine VCruise::VCruiseEngine Voyeur::VoyeurEngine Wage::WageEngine Watchmaker::WatchmakerGame Wintermute::WintermuteEngine ZVision::ZVision

Public Types

enum  EngineFeature {
  kSupportsSubtitleOptions, kSupportsReturnToLauncher, kSupportsLoadingDuringRuntime, kSupportsSavingDuringRuntime,
  kSupportsChangingOptionsDuringRuntime, kSupportsArbitraryResolutions, kSupportsHelp, kSupportsQuitDialogOverride
}
 

Public Member Functions

MetaEnginegetMetaEngine () const
 
void setMetaEngine (MetaEngine *metaEngine)
 
PauseToken pauseEngine ()
 
bool isPaused () const
 
void openMainMenuDialog ()
 
uint32 getTotalPlayTime () const
 
void setTotalPlayTime (uint32 time=0)
 
Common::TimerManagergetTimerManager ()
 
Common::EventManagergetEventManager ()
 
Common::SaveFileManagergetSaveFileManager ()
 
bool existExtractedCDAudioFiles (uint track=1)
 
bool isDataAndCDAudioReadFromSameCD ()
 
void warnMissingExtractedCDAudio ()
 
void handleAutoSave ()
 
void saveAutosaveIfEnabled ()
 
virtual bool canSaveAutosaveCurrently ()
 
virtual int getAutosaveSlot () const
 

Static Public Member Functions

static void quitGame ()
 
static bool shouldQuit ()
 
static MetaEngineDetectiongetMetaEngineDetection ()
 
static bool warnUserAboutUnsupportedGame (Common::String msg=Common::String())
 
static void errorUnsupportedGame (Common::String extraMsg)
 

Public Attributes

OSystem_system
 
Audio::Mixer_mixer
 

Protected Member Functions

virtual int runDialog (GUI::Dialog &dialog)
 
void defaultSyncSoundSettings ()
 

Protected Attributes

Common::TimerManager_timer
 
Common::EventManager_eventMan
 
Common::SaveFileManager_saveFileMan
 
GUI::Dialog_mainMenuDialog
 
const Common::String _targetName
 

Overloadable methods

All Engine subclasses should consider overloading some or all of the following methods.

virtual void pauseEngineIntern (bool pause)
 
 Engine (OSystem *syst)
 
virtual ~Engine ()
 
virtual void initializePath (const Common::FSNode &gamePath)
 
virtual Common::Error run ()=0
 
virtual void errorString (const char *buf_input, char *buf_output, int buf_output_size)
 
virtual GUI::DebuggergetDebugger () final
 
void setDebugger (GUI::Debugger *debugger)
 
GUI::DebuggergetOrCreateDebugger ()
 
virtual bool hasFeature (EngineFeature f) const
 
virtual void syncSoundSettings ()
 
virtual void applyGameSettings ()
 
virtual void flipMute ()
 
virtual Common::String getSaveStateName (int slot) const
 
virtual Common::Error loadGameState (int slot)
 
virtual Common::Error loadGameStream (Common::SeekableReadStream *stream)
 
void setGameToLoadSlot (int slot)
 
virtual bool canLoadGameStateCurrently (Common::U32String *msg=nullptr)
 
virtual Common::Error saveGameState (int slot, const Common::String &desc, bool isAutosave=false)
 
virtual Common::Error saveGameStream (Common::WriteStream *stream, bool isAutosave=false)
 
virtual bool canSaveGameStateCurrently (Common::U32String *msg=nullptr)
 
bool saveGameDialog ()
 
bool loadGameDialog ()
 

Member Enumeration Documentation

◆ EngineFeature

Engine features.

A feature in this context means an ability of the engine that can be either available or not.

See also
Engine::hasFeature()
Enumerator
kSupportsSubtitleOptions 

Enable the subtitle speed and toggle items in the Options section of the global main menu.

kSupportsReturnToLauncher 

The 'Return to launcher' feature is supported.

This means that EVENT_RETURN_TO_LAUNCHER is handled either directly, or indirectly (the engine calls and honors the result of the Engine::shouldQuit() method appropriately).

kSupportsLoadingDuringRuntime 

Loading save states during runtime is supported.

This means that the engine implements loadGameState() and canLoadGameStateCurrently(). If this feature is supported, then the corresponding MetaEngine must support the kSupportsListSaves feature.

kSupportsSavingDuringRuntime 

Loading save states during runtime is supported.

This means that the engine implements saveGameState() and canSaveGameStateCurrently(). If this feature is supported, then the corresponding MetaEngine must support the kSupportsListSaves feature.

kSupportsChangingOptionsDuringRuntime 

Changing the game settings during runtime is supported.

This enables showing the Engine Options tab in the config dialog accessed through the global main menu.

kSupportsArbitraryResolutions 

Arbitrary resolutions are supported.

This means that the engine allows the backend to override the resolution passed to OSystem::setupScreen. The engine will need to read the actual resolution used by the backend using OSystem::getWidth and OSystem::getHeight.

kSupportsHelp 

The game provides custom help.

This enables the help button in the main menu.

kSupportsQuitDialogOverride 

The engine provides overrides to the quit and exit to launcher dialogs.

Constructor & Destructor Documentation

◆ Engine()

Engine::Engine ( OSystem syst)

Create an instance of the engine.

◆ ~Engine()

virtual Engine::~Engine ( )
virtual

Destroy the engine instance.

Member Function Documentation

◆ runDialog()

virtual int Engine::runDialog ( GUI::Dialog dialog)
protectedvirtual

Run a GUI dialog.

Reimplemented in Twp::TwpEngine.

◆ initializePath()

virtual void Engine::initializePath ( const Common::FSNode gamePath)
virtual

Initialize SearchMan according to the game path.

By default, this adds the directory in non-flat mode with a depth of 4 as priority 0 to SearchMan.

Parameters
gamePathThe base directory of the game data.

Reimplemented in CryOmni3D::Versailles::CryOmni3DEngine_Versailles, Ultima::Ultima8::Ultima8Engine, Private::PrivateEngine, HDB::HDBGame, Tinsel::TinselEngine, Crab::CrabEngine, Hypno::HypnoEngine, Titanic::TitanicEngine, and VCruise::VCruiseEngine.

◆ run()

virtual Common::Error Engine::run ( )
pure virtual

Initialize the engine and start its main loop.

Returns
kNoError on success, otherwise an error code.

Implemented in Mohawk::MohawkEngine_LivingBooks, Agi::AgiBase, Scumm::ScummEngine, Touche::ToucheEngine, Saga::SagaEngine, Tucker::TuckerEngine, Mortevielle::MortevielleEngine, BladeRunner::BladeRunnerEngine, Lilliput::LilliputEngine, Griffon::GriffonEngine, Drascula::DrasculaEngine, Efh::EfhEngine, Hugo::HugoEngine, Director::DirectorEngine, Prince::PrinceEngine, CryOmni3D::Versailles::CryOmni3DEngine_Versailles, Dragons::DragonsEngine, Parallaction::Parallaction, StarTrek::StarTrekEngine, Bbvs::BbvsEngine, TwinE::TwinEEngine, Gnap::GnapEngine, AGOS::AGOSEngine, Pegasus::PegasusEngine, CGE::CGEEngine, Lab::LabEngine, Kyra::KyraEngine_v1, MacVenture::MacVentureEngine, DM::DMEngine, Immortal::ImmortalEngine, CryOmni3D::CryOmni3DEngine_HNMPlayer, Ultima::Ultima8::Ultima8Engine, ZVision::ZVision, Trecision::TrecisionEngine, CGE2::CGE2Engine, Voyeur::VoyeurEngine, HDB::HDBGame, Private::PrivateEngine, Composer::ComposerEngine, Sword2::Sword2Engine, Sci::SciEngine, Sherlock::SherlockEngine, Sword1::SwordEngine, Tinsel::TinselEngine, Wage::WageEngine, Freescape::FreescapeEngine, Mohawk::MohawkEngine_CSTime, Mohawk::MohawkEngine_Myst, Groovie::GroovieEngine, Hopkins::HopkinsEngine, Nancy::NancyEngine, Avalanche::AvalancheEngine, Queen::QueenEngine, Sky::SkyEngine, Toon::ToonEngine, NGI::NGIEngine, Access::AccessEngine, Hadesch::HadeschEngine, Saga2::Saga2Engine, DreamWeb::DreamWebEngine, Titanic::TitanicEngine, Hypno::HypnoEngine, Cine::CineEngine, Pink::PinkEngine, Petka::PetkaEngine, Crab::CrabEngine, Lure::LureEngine, Toltecs::ToltecsEngine, Ultima::Shared::UltimaEarlyEngine, Kingdom::KingdomGame, Mohawk::MohawkEngine_Riven, Myst3::Myst3Engine, Twp::TwpEngine, TeenAgent::TeenAgentEngine, MADS::MADSEngine, CryOmni3D::CryOmni3DEngine, Illusions::IllusionsEngine_Duckman, Plumbers::PlumbersGame, Stark::StarkEngine, Tetraedge::TetraedgeEngine, Ultima::Nuvie::NuvieEngine, AGS::AGSEngine, Sword25::Sword25Engine, Asylum::AsylumEngine, Cruise::CruiseEngine, LastExpress::LastExpressEngine, Sludge::SludgeEngine, Buried::BuriedEngine, Supernova::SupernovaEngine, M4::M4Engine, Illusions::IllusionsEngine_BBDOU, Neverhood::NeverhoodEngine, TsAGE::TSageEngine, Grim::GrimEngine, MutationOfJB::MutationOfJBEngine, Draci::DraciEngine, Ultima::Ultima4::Ultima4Engine, Made::MadeEngine, Wintermute::WintermuteEngine, Chewy::ChewyEngine, Cryo::CryoEngine, Mohawk::MohawkEngine, Hpl1::Hpl1Engine, MTropolis::MTropolisEngine, ICB::IcbEngine, Chamber::ChamberEngine, Watchmaker::WatchmakerGame, Testbed::TestbedEngine, VCruise::VCruiseEngine, and Playground3d::Playground3dEngine.

◆ errorString()

virtual void Engine::errorString ( const char *  buf_input,
char *  buf_output,
int  buf_output_size 
)
virtual

Prepare an error string that is printed by the error() function.

Reimplemented in Scumm::ScummEngine, Sci::SciEngine, and Nancy::NancyEngine.

◆ getDebugger()

virtual GUI::Debugger* Engine::getDebugger ( )
inlinefinalvirtual

Return the engine's debugger instance, if any.

◆ setDebugger()

void Engine::setDebugger ( GUI::Debugger debugger)
inline

Set the engine's debugger.

Once set, the Engine class is responsible for managing the debugger, and freeing it on exit.

◆ getOrCreateDebugger()

GUI::Debugger* Engine::getOrCreateDebugger ( )

Return the engine's debugger instance, or create one if none is present.

Used by error() to invoke the debugger when a severe error is reported.

◆ hasFeature()

virtual bool Engine::hasFeature ( EngineFeature  f) const
inlinevirtual

Determine whether the engine supports the specified feature.

Reimplemented in Immortal::ImmortalEngine, Agi::AgiBase, Scumm::ScummEngine, Hypno::SpiderEngine, Touche::ToucheEngine, Freescape::FreescapeEngine, Saga::SagaEngine, Tucker::TuckerEngine, Mortevielle::MortevielleEngine, Hypno::WetEngine, NGI::NGIEngine, BladeRunner::BladeRunnerEngine, Toon::ToonEngine, Drascula::DrasculaEngine, Lilliput::LilliputEngine, Prince::PrinceEngine, Efh::EfhEngine, Hugo::HugoEngine, CryOmni3D::Versailles::CryOmni3DEngine_Versailles, Parallaction::Parallaction, ZVision::ZVision, Dragons::DragonsEngine, Bbvs::BbvsEngine, TwinE::TwinEEngine, Gnap::GnapEngine, AGOS::AGOSEngine, Lab::LabEngine, Kyra::KyraEngine_v1, Mohawk::MohawkEngine_Myst, MacVenture::MacVentureEngine, Grim::GrimEngine, Ultima::Ultima8::Ultima8Engine, Director::DirectorEngine, Private::PrivateEngine, DM::DMEngine, Trecision::TrecisionEngine, Composer::ComposerEngine, Voyeur::VoyeurEngine, CGE2::CGE2Engine, HDB::HDBGame, Crab::CrabEngine, Sword1::SwordEngine, Sword2::Sword2Engine, Sci::SciEngine, CGE::CGEEngine, Tinsel::TinselEngine, Groovie::GroovieEngine, Wage::WageEngine, Hopkins::HopkinsEngine, Sky::SkyEngine, Queen::QueenEngine, AGS::AGSEngine, Mohawk::MohawkEngine_Riven, Access::AccessEngine, Hadesch::HadeschEngine, M4::M4Engine, Myst3::Myst3Engine, Saga2::Saga2Engine, Twp::TwpEngine, DreamWeb::DreamWebEngine, Titanic::TitanicEngine, Avalanche::AvalancheEngine, Lure::LureEngine, Toltecs::ToltecsEngine, Tetraedge::TetraedgeEngine, Cine::CineEngine, Pink::PinkEngine, Petka::PetkaEngine, Sherlock::SherlockEngine, CryOmni3D::CryOmni3DEngine, Kingdom::KingdomGame, TeenAgent::TeenAgentEngine, Buried::BuriedEngine, MADS::MADSEngine, Nancy::NancyEngine, Illusions::IllusionsEngine_Duckman, Cruise::CruiseEngine, Stark::StarkEngine, Hpl1::Hpl1Engine, Pegasus::PegasusEngine, Neverhood::NeverhoodEngine, Sword25::Sword25Engine, Asylum::AsylumEngine, LastExpress::LastExpressEngine, Mohawk::MohawkEngine, Supernova::SupernovaEngine, MutationOfJB::MutationOfJBEngine, Illusions::IllusionsEngine_BBDOU, Made::MadeEngine, Ultima::Shared::UltimaEngine, Chewy::ChewyEngine, Draci::DraciEngine, Wintermute::WintermuteEngine, Cryo::CryoEngine, MTropolis::MTropolisEngine, Testbed::TestbedEngine, Chamber::ChamberEngine, TsAGE::TSageEngine, VCruise::VCruiseEngine, MM::MMEngine, ICB::IcbEngine, and Playground3d::Playground3dEngine.

◆ syncSoundSettings()

virtual void Engine::syncSoundSettings ( )
virtual

Notify the engine that the sound settings in the config manager might have changed and that it should adjust any internal volume (and other) values accordingly.

The default implementation sets the volume levels of all mixer sound types according to the config entries of the active domain. When overwriting, call the default implementation first, then adjust the volumes further (if required).

Note
When setting volume levels, respect the "mute" config entry.
The volume for the plain sound type is reset to the maximum volume. If the engine can associate its own value for this type, it needs to overwrite this member and set it accordingly.

Reimplemented in Agi::AgiEngine, Scumm::ScummEngine, Touche::ToucheEngine, Saga::SagaEngine, BladeRunner::BladeRunnerEngine, Griffon::GriffonEngine, Drascula::DrasculaEngine, Lilliput::LilliputEngine, Ultima::Ultima8::Ultima8Engine, Dragons::DragonsEngine, Hugo::HugoEngine, ZVision::ZVision, MM::Xeen::XeenEngine, AGOS::AGOSEngine, Toon::ToonEngine, Hopkins::HopkinsEngine, Kyra::KyraEngine_v1, AGS::AGSEngine, Crab::CrabEngine, Sherlock::SherlockEngine, HDB::HDBGame, Titanic::TitanicEngine, Sci::SciEngine, Sword1::SwordEngine, Sword2::Sword2Engine, MADS::MADSEngine, Groovie::GroovieEngine, Queen::QueenEngine, M4::M4Engine, Saga2::Saga2Engine, Cine::CineEngine, Toltecs::ToltecsEngine, Lure::LureEngine, Cruise::CruiseEngine, Sky::SkyEngine, Chewy::ChewyEngine, Myst3::Myst3Engine, MM::MM1::MM1Engine, Ultima::Nuvie::NuvieEngine, TsAGE::TSageEngine, Made::MadeEngine, Draci::DraciEngine, and VCruise::VCruiseEngine.

◆ applyGameSettings()

virtual void Engine::applyGameSettings ( )
inlinevirtual

Notify the engine that the settings editable from the Game tab in the in-game options dialog might have changed and that they need to be applied if necessary.

Reimplemented in Ultima::Ultima8::Ultima8Engine, Mohawk::MohawkEngine_Myst, Mohawk::MohawkEngine_Riven, and Petka::PetkaEngine.

◆ flipMute()

virtual void Engine::flipMute ( )
virtual

Flip mute all sound options.

◆ getSaveStateName()

◆ loadGameState()

virtual Common::Error Engine::loadGameState ( int  slot)
virtual

Load a game state.

Parameters
slotThe slot from which a save state should be loaded.
Returns
kNoError on success, otherwise an error code.

Reimplemented in Agi::AgiEngine, Tucker::TuckerEngine, Kyra::KyraEngine_HoF, Saga::SagaEngine, Touche::ToucheEngine, Scumm::ScummEngine, Bbvs::BbvsEngine, Mortevielle::MortevielleEngine, Kyra::KyraEngine_v1, NGI::NGIEngine, BladeRunner::BladeRunnerEngine, Toon::ToonEngine, Ultima::Ultima8::Ultima8Engine, Drascula::DrasculaEngine, Gnap::GnapEngine, Prince::PrinceEngine, Efh::EfhEngine, Access::AccessEngine, Adl::AdlEngine, Hugo::HugoEngine, CryOmni3D::Versailles::CryOmni3DEngine_Versailles, ZVision::ZVision, Dragons::DragonsEngine, Wage::WageEngine, Kingdom::KingdomGame, MM::Xeen::XeenEngine, Illusions::IllusionsEngine, Lab::LabEngine, Toltecs::ToltecsEngine, Kyra::KyraEngine_LoK, HDB::HDBGame, Voyeur::VoyeurEngine, Asylum::AsylumEngine, MacVenture::MacVentureEngine, Mohawk::MohawkEngine_Myst, DM::DMEngine, Crab::CrabEngine, Sword2::Sword2Engine, Hopkins::HopkinsEngine, CGE2::CGE2Engine, AGS::AGSEngine, Composer::ComposerEngine, Sherlock::SherlockEngine, Sword1::SwordEngine, Sci::SciEngine, Titanic::TitanicEngine, CGE::CGEEngine, Tinsel::TinselEngine, Groovie::GroovieEngine, MADS::MADSEngine, Tetraedge::TetraedgeEngine, Twp::TwpEngine, Cine::CineEngine, Lure::LureEngine, M4::M4Engine, Petka::PetkaEngine, Myst3::Myst3Engine, Neverhood::NeverhoodEngine, Saga2::Saga2Engine, DreamWeb::DreamWebEngine, Avalanche::AvalancheEngine, Mohawk::MohawkEngine_Riven, Pink::PinkEngine, Sky::SkyEngine, Ultima::Nuvie::NuvieEngine, Queen::QueenEngine, Hpl1::Hpl1Engine, Cruise::CruiseEngine, TeenAgent::TeenAgentEngine, Grim::GrimEngine, Stark::StarkEngine, Pegasus::PegasusEngine, Draci::DraciEngine, MutationOfJB::MutationOfJBEngine, Supernova::SupernovaEngine, TsAGE::TSageEngine, and Wintermute::WintermuteEngine.

◆ loadGameStream()

◆ setGameToLoadSlot()

void Engine::setGameToLoadSlot ( int  slot)

Set the game slot for a savegame to be loaded after the global main menu execution.

This is to avoid loading a savegame from inside the menu loop which causes bugs like #4420.

Parameters
slotThe slot from which a save state should be loaded.

◆ canLoadGameStateCurrently()

virtual bool Engine::canLoadGameStateCurrently ( Common::U32String msg = nullptr)
virtual

Indicate whether a game state can be loaded.

Parameters
msgOptional pointer to message explaining why it is disabled

Reimplemented in Tucker::TuckerEngine, Immortal::ImmortalEngine, Agi::AgiBase, Saga::SagaEngine, Touche::ToucheEngine, Scumm::ScummEngine, Freescape::FreescapeEngine, Bbvs::BbvsEngine, Mortevielle::MortevielleEngine, NGI::NGIEngine, Kyra::KyraEngine_v1, BladeRunner::BladeRunnerEngine, Drascula::DrasculaEngine, Ultima::Ultima8::Ultima8Engine, Access::AccessEngine, Prince::PrinceEngine, Efh::EfhEngine, Dragons::DragonsEngine, ZVision::ZVision, MM::Xeen::XeenEngine, TwinE::TwinEEngine, Hugo::HugoEngine, Lab::LabEngine, Illusions::IllusionsEngine, Toon::ToonEngine, Toltecs::ToltecsEngine, HDB::HDBGame, Voyeur::VoyeurEngine, Asylum::AsylumEngine, MacVenture::MacVentureEngine, Mohawk::MohawkEngine_Myst, Private::PrivateEngine, DM::DMEngine, Trecision::TrecisionEngine, Sword2::Sword2Engine, Hopkins::HopkinsEngine, CGE2::CGE2Engine, Composer::ComposerEngine, Crab::CrabEngine, Sci::SciEngine, Sword1::SwordEngine, AGS::AGSEngine, Buried::BuriedEngine, Hypno::HypnoEngine, Sherlock::SherlockEngine, Tinsel::TinselEngine, CGE::CGEEngine, Titanic::TitanicEngine, Wage::WageEngine, Groovie::GroovieEngine, Lure::LureEngine, Cine::CineEngine, Petka::PetkaEngine, MADS::MADSEngine, Myst3::Myst3Engine, M4::M4Engine, Twp::TwpEngine, Neverhood::NeverhoodEngine, Ultima::Shared::UltimaEngine, Hadesch::HadeschEngine, Saga2::Saga2Engine, Tetraedge::TetraedgeEngine, Avalanche::AvalancheEngine, Mohawk::MohawkEngine_Riven, Sherlock::Tattoo::TattooEngine, Pink::PinkEngine, Sky::SkyEngine, CryOmni3D::CryOmni3DEngine, Queen::QueenEngine, Cruise::CruiseEngine, MM::MM1::MM1Engine, TeenAgent::TeenAgentEngine, Grim::GrimEngine, M4::Burger::BurgerEngine, Nancy::NancyEngine, Chewy::ChewyEngine, Hpl1::Hpl1Engine, Stark::StarkEngine, Pegasus::PegasusEngine, Draci::DraciEngine, MutationOfJB::MutationOfJBEngine, Supernova::SupernovaEngine, TsAGE::TSageEngine, Wintermute::WintermuteEngine, VCruise::VCruiseEngine, and Chamber::ChamberEngine.

◆ saveGameState()

virtual Common::Error Engine::saveGameState ( int  slot,
const Common::String desc,
bool  isAutosave = false 
)
virtual

Save a game state.

Parameters
slotThe slot into which the save state should be stored.
descDescription for the save state, entered by the user.
isAutosaveExpected to be true if an autosave is being created.
Returns
kNoError on success, otherwise an error code.

Reimplemented in Agi::AgiEngine, Tucker::TuckerEngine, Saga::SagaEngine, Touche::ToucheEngine, Scumm::ScummEngine, Bbvs::BbvsEngine, Mortevielle::MortevielleEngine, Kyra::KyraEngine_v1, NGI::NGIEngine, BladeRunner::BladeRunnerEngine, Toon::ToonEngine, Ultima::Ultima8::Ultima8Engine, Drascula::DrasculaEngine, Gnap::GnapEngine, Prince::PrinceEngine, Efh::EfhEngine, Access::AccessEngine, Adl::AdlEngine, CryOmni3D::Versailles::CryOmni3DEngine_Versailles, Hugo::HugoEngine, ZVision::ZVision, Dragons::DragonsEngine, MM::Xeen::XeenEngine, Wage::WageEngine, Kingdom::KingdomGame, Illusions::IllusionsEngine, Lab::LabEngine, Toltecs::ToltecsEngine, Voyeur::VoyeurEngine, HDB::HDBGame, Asylum::AsylumEngine, MacVenture::MacVentureEngine, Mohawk::MohawkEngine_Myst, Crab::CrabEngine, Hopkins::HopkinsEngine, Sword2::Sword2Engine, AGS::AGSEngine, CGE2::CGE2Engine, Sherlock::SherlockEngine, Composer::ComposerEngine, Titanic::TitanicEngine, Sword1::SwordEngine, Sci::SciEngine, CGE::CGEEngine, MADS::MADSEngine, Groovie::GroovieEngine, Twp::TwpEngine, Lure::LureEngine, Cine::CineEngine, Petka::PetkaEngine, Myst3::Myst3Engine, Neverhood::NeverhoodEngine, Tetraedge::TetraedgeEngine, DreamWeb::DreamWebEngine, Saga2::Saga2Engine, Mohawk::MohawkEngine_Riven, Ultima::Ultima4::Ultima4Engine, Avalanche::AvalancheEngine, Ultima::Nuvie::NuvieEngine, Pink::PinkEngine, Sky::SkyEngine, Queen::QueenEngine, Cruise::CruiseEngine, TeenAgent::TeenAgentEngine, Stark::StarkEngine, Pegasus::PegasusEngine, Draci::DraciEngine, MutationOfJB::MutationOfJBEngine, Supernova::SupernovaEngine, TsAGE::TSageEngine, and Wintermute::WintermuteEngine.

◆ saveGameStream()

virtual Common::Error Engine::saveGameStream ( Common::WriteStream stream,
bool  isAutosave = false 
)
virtual

◆ canSaveGameStateCurrently()

virtual bool Engine::canSaveGameStateCurrently ( Common::U32String msg = nullptr)
virtual

Indicate whether a game state can be saved.

Parameters
msgOptional pointer to message explaining why it is disabled

Reimplemented in Immortal::ImmortalEngine, Tucker::TuckerEngine, Agi::AgiBase, Saga::SagaEngine, Touche::ToucheEngine, Scumm::ScummEngine, Freescape::FreescapeEngine, Bbvs::BbvsEngine, Mortevielle::MortevielleEngine, NGI::NGIEngine, Kyra::KyraEngine_v1, BladeRunner::BladeRunnerEngine, Drascula::DrasculaEngine, Ultima::Ultima8::Ultima8Engine, Access::AccessEngine, Prince::PrinceEngine, Efh::EfhEngine, Adl::AdlEngine, Dragons::DragonsEngine, ZVision::ZVision, MM::Xeen::XeenEngine, TwinE::TwinEEngine, Hugo::HugoEngine, Lab::LabEngine, Illusions::IllusionsEngine, Toon::ToonEngine, Toltecs::ToltecsEngine, HDB::HDBGame, Voyeur::VoyeurEngine, Asylum::AsylumEngine, MacVenture::MacVentureEngine, Mohawk::MohawkEngine_Myst, Private::PrivateEngine, Trecision::TrecisionEngine, Sword2::Sword2Engine, Hopkins::HopkinsEngine, Crab::CrabEngine, Composer::ComposerEngine, CGE2::CGE2Engine, AGS::AGSEngine, Sword1::SwordEngine, Sci::SciEngine, Sherlock::SherlockEngine, Hypno::HypnoEngine, Buried::BuriedEngine, Titanic::TitanicEngine, CGE::CGEEngine, Wage::WageEngine, Groovie::GroovieEngine, Lure::LureEngine, Ultima::Shared::UltimaEngine, Cine::CineEngine, MADS::MADSEngine, Petka::PetkaEngine, Twp::TwpEngine, M4::M4Engine, Myst3::Myst3Engine, Neverhood::NeverhoodEngine, Hadesch::HadeschEngine, Saga2::Saga2Engine, Tetraedge::TetraedgeEngine, Sherlock::Tattoo::TattooEngine, Mohawk::MohawkEngine_Riven, Avalanche::AvalancheEngine, Pink::PinkEngine, Sky::SkyEngine, CryOmni3D::CryOmni3DEngine, Cruise::CruiseEngine, Queen::QueenEngine, TeenAgent::TeenAgentEngine, Nancy::NancyEngine, Chewy::ChewyEngine, MM::MM1::MM1Engine, Stark::StarkEngine, Pegasus::PegasusEngine, MTropolis::MTropolisEngine, Draci::DraciEngine, MutationOfJB::MutationOfJBEngine, Supernova::SupernovaEngine, TsAGE::TSageEngine, Wintermute::WintermuteEngine, VCruise::VCruiseEngine, Chamber::ChamberEngine, and Adl::AdlEngine_v2.

◆ saveGameDialog()

bool Engine::saveGameDialog ( )

Show the ScummVM save dialog, allowing users to save their game.

◆ loadGameDialog()

bool Engine::loadGameDialog ( )

Show the ScummVM Restore dialog, allowing users to load a game.

◆ pauseEngineIntern()

◆ quitGame()

static void Engine::quitGame ( )
static

Request the engine to quit.

Sends an EVENT_QUIT event to the Event Manager.

◆ shouldQuit()

static bool Engine::shouldQuit ( )
static

Return whether the engine should quit.

This can mean either quitting ScummVM altogether, or returning to the launcher.

◆ getMetaEngineDetection()

static MetaEngineDetection& Engine::getMetaEngineDetection ( )
static

Return the MetaEngineDetection instance used by this engine.

◆ getMetaEngine()

MetaEngine* Engine::getMetaEngine ( ) const
inline

Return the MetaEngine instance used by this engine.

◆ setMetaEngine()

void Engine::setMetaEngine ( MetaEngine metaEngine)
inline

Set the MetaEngine instance used by this engine.

◆ pauseEngine()

PauseToken Engine::pauseEngine ( )

Pause the engine.

This should stop any audio playback and other operations. Called right before the system runs a global dialog (like a global pause, main menu, options, or 'confirm exit' dialog).

Returns a PauseToken. Multiple pause tokens can exist. The engine will be resumed when all associated pause tokens reach the end of their lives.

◆ isPaused()

bool Engine::isPaused ( ) const
inline

Return whether the engine is currently paused or not.

◆ openMainMenuDialog()

void Engine::openMainMenuDialog ( )

Run the global main menu dialog.

◆ warnUserAboutUnsupportedGame()

static bool Engine::warnUserAboutUnsupportedGame ( Common::String  msg = Common::String())
static

Display a warning to the user that the game is not fully supported.

Parameters
msgA message that will be presented to user. If empty, then generic message regarding unsupported game is presented
Returns
True if the user chooses to start anyway, false otherwise.

◆ errorUnsupportedGame()

static void Engine::errorUnsupportedGame ( Common::String  extraMsg)
static

Display an error message to the user that the game is not supported.

Parameters
extraMsgAn extra message that will be appended to the default message.

◆ getTotalPlayTime()

uint32 Engine::getTotalPlayTime ( ) const

Get the total play time.

Returns
How long the player has been playing in ms.

◆ setTotalPlayTime()

void Engine::setTotalPlayTime ( uint32  time = 0)

Set the game time counter to the specified time.

This can be used to set the play time counter after loading a savegame, for example. Another use case is when the engine wants to exclude from the counter the time that the user spent in original engine dialogs.

Parameters
timePlay time to set up in ms.

◆ getTimerManager()

Common::TimerManager* Engine::getTimerManager ( )
inline

Return the TimerManager instance used by this engine.

◆ getEventManager()

Common::EventManager* Engine::getEventManager ( )
inline

Return the EventManager instance used by this engine.

◆ getSaveFileManager()

Common::SaveFileManager* Engine::getSaveFileManager ( )
inline

Return the SaveFileManager instance used by this engine.

◆ existExtractedCDAudioFiles()

bool Engine::existExtractedCDAudioFiles ( uint  track = 1)

Check if extracted CD Audio files are found.

◆ isDataAndCDAudioReadFromSameCD()

bool Engine::isDataAndCDAudioReadFromSameCD ( )

On some systems, check whether the game appears to be run from the same CD drive, which also should play CD audio.

◆ warnMissingExtractedCDAudio()

void Engine::warnMissingExtractedCDAudio ( )

Display a warning for no extracted CD Audio files found.

◆ handleAutoSave()

void Engine::handleAutoSave ( )

Check whether it is time to autosave, and if so, do it.

◆ saveAutosaveIfEnabled()

void Engine::saveAutosaveIfEnabled ( )

Autosave immediately if autosaves are enabled.

◆ canSaveAutosaveCurrently()

◆ getAutosaveSlot()

virtual int Engine::getAutosaveSlot ( ) const
inlinevirtual

Return the slot that should be used for autosaves, or -1 for engines that don't support autosave.

Note
This should match the meta engine getAutosaveSlot() method.

Reimplemented in Tucker::TuckerEngine, BladeRunner::BladeRunnerEngine, Kyra::KyraEngine_v1, Adl::AdlEngine, Bbvs::BbvsEngine, Asylum::AsylumEngine, Sci::SciEngine, AGS::AGSEngine, Petka::PetkaEngine, Groovie::GroovieEngine, and Queen::QueenEngine.

◆ defaultSyncSoundSettings()

void Engine::defaultSyncSoundSettings ( )
protected

Syncs the engine's mixer using the default volume syncing behavior.

Member Data Documentation

◆ _system

OSystem* Engine::_system

The OSystem instance used by the engine.

◆ _mixer

Audio::Mixer* Engine::_mixer

The Mixer instance used by the engine.

◆ _timer

Common::TimerManager* Engine::_timer
protected

The TimerManager instance used by the engine.

◆ _eventMan

Common::EventManager* Engine::_eventMan
protected

The EventManager instance used by the engine.

◆ _saveFileMan

Common::SaveFileManager* Engine::_saveFileMan
protected

The SaveFileManager used by the engine.

◆ _mainMenuDialog

GUI::Dialog* Engine::_mainMenuDialog
protected

The Dialog instance used by the engine.

◆ _targetName

const Common::String Engine::_targetName
protected

Target name for saves.


The documentation for this class was generated from the following file: