mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-13 23:43:34 +00:00
Merge pull request #775 from inguin/emi-pause
EMI: Improve pause handling
This commit is contained in:
commit
e843d7855b
@ -178,6 +178,11 @@ void EMIEngine::drawNormalMode() {
|
||||
|
||||
}
|
||||
|
||||
void EMIEngine::updateDrawMode() {
|
||||
// For EMI, draw mode is just like normal mode with frozen frame time.
|
||||
updateNormalMode();
|
||||
}
|
||||
|
||||
void EMIEngine::invalidateTextObjectsSortOrder() {
|
||||
_textObjectsSortOrderInvalidated = true;
|
||||
}
|
||||
|
@ -49,6 +49,7 @@ public:
|
||||
private:
|
||||
LuaBase *createLua() override;
|
||||
void drawNormalMode() override;
|
||||
void updateDrawMode() override;
|
||||
static bool compareTextLayer(const TextObject *x, const TextObject *y);
|
||||
void drawTextObjects() override;
|
||||
static bool compareActor(const Actor *x, const Actor *y);
|
||||
|
@ -291,11 +291,6 @@ void Lua_V2::Display() {
|
||||
// dummy
|
||||
}
|
||||
|
||||
void Lua_V2::RenderModeUser() {
|
||||
lua_Object param1 = lua_getparam(1);
|
||||
g_movie->pause(!lua_isnil(param1));
|
||||
}
|
||||
|
||||
void Lua_V2::GetCameraPosition() {
|
||||
Set::Setup *setup = g_grim->getCurrSet()->getCurrSetup();
|
||||
lua_pushnumber(setup->_pos.x());
|
||||
|
@ -159,7 +159,6 @@ protected:
|
||||
DECLARE_LUA_OPCODE(SectEditForgetIt);
|
||||
DECLARE_LUA_OPCODE(FRUTEY_Begin);
|
||||
DECLARE_LUA_OPCODE(FRUTEY_End);
|
||||
DECLARE_LUA_OPCODE(RenderModeUser);
|
||||
DECLARE_LUA_OPCODE(GetFontDimensions);
|
||||
DECLARE_LUA_OPCODE(GetTextObjectDimensions);
|
||||
DECLARE_LUA_OPCODE(GetTextCharPosition);
|
||||
|
@ -75,7 +75,7 @@ GfxBase *g_driver = NULL;
|
||||
int g_imuseState = -1;
|
||||
|
||||
GrimEngine::GrimEngine(OSystem *syst, uint32 gameFlags, GrimGameType gameType, Common::Platform platform, Common::Language language) :
|
||||
Engine(syst), _currSet(NULL), _selectedActor(NULL) {
|
||||
Engine(syst), _currSet(NULL), _selectedActor(NULL), _pauseStartTime(0) {
|
||||
g_grim = this;
|
||||
|
||||
_debugger = new Debugger();
|
||||
@ -518,22 +518,30 @@ void GrimEngine::updateDisplayScene() {
|
||||
}
|
||||
drawPrimitives();
|
||||
} else if (_mode == NormalMode || _mode == OverworldMode) {
|
||||
if (!_currSet)
|
||||
return;
|
||||
|
||||
g_driver->clearScreen();
|
||||
|
||||
drawNormalMode();
|
||||
|
||||
g_driver->drawBuffers();
|
||||
drawPrimitives();
|
||||
updateNormalMode();
|
||||
} else if (_mode == DrawMode) {
|
||||
_doFlip = false;
|
||||
_prevSmushFrame = 0;
|
||||
_movieTime = 0;
|
||||
updateDrawMode();
|
||||
}
|
||||
}
|
||||
|
||||
void GrimEngine::updateNormalMode() {
|
||||
if (!_currSet)
|
||||
return;
|
||||
|
||||
g_driver->clearScreen();
|
||||
|
||||
drawNormalMode();
|
||||
|
||||
g_driver->drawBuffers();
|
||||
drawPrimitives();
|
||||
}
|
||||
|
||||
void GrimEngine::updateDrawMode() {
|
||||
_doFlip = false;
|
||||
_prevSmushFrame = 0;
|
||||
_movieTime = 0;
|
||||
}
|
||||
|
||||
void GrimEngine::drawNormalMode() {
|
||||
_prevSmushFrame = 0;
|
||||
_movieTime = 0;
|
||||
@ -1188,7 +1196,8 @@ void GrimEngine::buildActiveActorsList() {
|
||||
|
||||
_activeActors.clear();
|
||||
foreach (Actor *a, Actor::getPool()) {
|
||||
if ((_mode == NormalMode && a->isInSet(_currSet->getName())) || a->isInOverworld()) {
|
||||
if (((_mode == NormalMode || _mode == DrawMode) && a->isInSet(_currSet->getName())) ||
|
||||
a->isInOverworld()) {
|
||||
_activeActors.push_back(a);
|
||||
}
|
||||
}
|
||||
@ -1252,6 +1261,12 @@ void GrimEngine::openMainMenuDialog() {
|
||||
void GrimEngine::pauseEngineIntern(bool pause) {
|
||||
g_imuse->pause(pause);
|
||||
g_movie->pause(pause);
|
||||
|
||||
if (pause) {
|
||||
_pauseStartTime = _system->getMillis();
|
||||
} else {
|
||||
_frameStart += _system->getMillis() - _pauseStartTime;
|
||||
}
|
||||
}
|
||||
|
||||
void GrimEngine::debugLua(const Common::String &str) {
|
||||
|
@ -202,6 +202,8 @@ protected:
|
||||
void savegameCallback();
|
||||
void createRenderer();
|
||||
virtual LuaBase *createLua();
|
||||
virtual void updateNormalMode();
|
||||
virtual void updateDrawMode();
|
||||
virtual void drawNormalMode();
|
||||
|
||||
void savegameSave();
|
||||
@ -257,6 +259,7 @@ protected:
|
||||
Common::Platform _gamePlatform;
|
||||
Common::Language _gameLanguage;
|
||||
Debugger *_debugger;
|
||||
uint32 _pauseStartTime;
|
||||
};
|
||||
|
||||
extern GrimEngine *g_grim;
|
||||
|
Loading…
x
Reference in New Issue
Block a user