aboutsummaryrefslogtreecommitdiff
path: root/engines/agi/agi.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/agi/agi.cpp')
-rw-r--r--engines/agi/agi.cpp48
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;