diff options
Diffstat (limited to 'engines/agi/agi.cpp')
-rw-r--r-- | engines/agi/agi.cpp | 48 |
1 files changed, 20 insertions, 28 deletions
diff --git a/engines/agi/agi.cpp b/engines/agi/agi.cpp index d01b00aa9a..60c8d1f3ef 100644 --- a/engines/agi/agi.cpp +++ b/engines/agi/agi.cpp @@ -37,7 +37,6 @@ #include "graphics/cursorman.h" #include "audio/mididrv.h" -#include "audio/mixer.h" #include "agi/agi.h" #include "agi/font.h" @@ -283,18 +282,7 @@ void AgiBase::initRenderMode() { switch (platform) { case Common::kPlatformDOS: - switch (configRenderMode) { - case Common::kRenderCGA: - _renderMode = Common::kRenderCGA; - break; - // Hercules is not supported atm - //case Common::kRenderHercA: - //case Common::kRenderHercG: - // _renderMode = Common::kRenderHercG; - // break; - default: - break; - } + // Keep EGA break; case Common::kPlatformAmiga: _renderMode = Common::kRenderAmiga; @@ -323,6 +311,12 @@ void AgiBase::initRenderMode() { case Common::kRenderVGA: _renderMode = Common::kRenderVGA; break; + case Common::kRenderHercG: + _renderMode = Common::kRenderHercG; + break; + case Common::kRenderHercA: + _renderMode = Common::kRenderHercA; + break; case Common::kRenderAmiga: _renderMode = Common::kRenderAmiga; break; @@ -401,11 +395,19 @@ AgiEngine::AgiEngine(OSystem *syst, const AGIGameDescription *gameDesc) : AgiBas setupOpcodes(); _game._curLogic = NULL; + _veryFirstInitialCycle = true; _instructionCounter = 0; resetGetVarSecondsHeuristic(); + _setVolumeBrokenFangame = false; // for further study see AgiEngine::setVolumeViaScripts() + _lastSaveTime = 0; + _playTimeInSecondsAdjust = 0; + _lastUsedPlayTimeInCycles = 0; + _lastUsedPlayTimeInSeconds = 0; + _passedPlayTimeCycles = 0; + memset(_keyQueue, 0, sizeof(_keyQueue)); _console = nullptr; @@ -421,6 +423,9 @@ AgiEngine::AgiEngine(OSystem *syst, const AGIGameDescription *gameDesc) : AgiBas _inventory = nullptr; _keyHoldMode = false; + + _artificialDelayCurrentRoom = 0; + _artificialDelayCurrentPicture = 0; } void AgiEngine::initialize() { @@ -463,7 +468,7 @@ void AgiEngine::initialize() { _console = new Console(this); _words = new Words(this); _font = new GfxFont(this); - _gfx = new GfxMgr(this); + _gfx = new GfxMgr(this, _font); _sound = new SoundMgr(this, _mixer); _picture = new PictureMgr(this, _gfx); _sprites = new SpritesMgr(this, _gfx); @@ -471,9 +476,9 @@ void AgiEngine::initialize() { _systemUI = new SystemUI(this, _gfx, _text); _inventory = new InventoryMgr(this, _gfx, _text, _systemUI); + _font->init(); _gfx->initVideo(); - _font->init(); _text->init(_systemUI); _game.gameFlags = 0; @@ -509,19 +514,6 @@ void AgiEngine::redrawScreen() { _text->promptRedraw(); } -// Adjust a given coordinate to the local game screen -// Used on mouse cursor coordinates before passing them to scripts -void AgiEngine::adjustPosToGameScreen(int16 &x, int16 &y) { - x = x / 2; // 320 -> 160 - y = y - _gfx->getRenderStartOffsetY(); // remove status bar line - if (y < 0) { - y = 0; - } - if (y >= SCRIPT_HEIGHT) { - y = SCRIPT_HEIGHT + 1; // 1 beyond - } -} - AgiEngine::~AgiEngine() { agiDeinit(); delete _loader; |