aboutsummaryrefslogtreecommitdiff
path: root/engines/saga/saga.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/saga/saga.cpp')
-rw-r--r--engines/saga/saga.cpp65
1 files changed, 41 insertions, 24 deletions
diff --git a/engines/saga/saga.cpp b/engines/saga/saga.cpp
index 316f4b7cc5..c8604ce6c0 100644
--- a/engines/saga/saga.cpp
+++ b/engines/saga/saga.cpp
@@ -118,18 +118,26 @@ SagaEngine::~SagaEngine() {
}
}
- delete _puzzle;
- delete _sndRes;
- delete _events;
- delete _font;
- delete _sprite;
- delete _anim;
- delete _script;
- delete _interface;
- delete _actor;
- delete _palanim;
+ if (!isSaga2()) {
+ if (getGameId() == GID_ITE)
+ delete _puzzle;
+ delete _sndRes;
+ delete _events;
+ delete _font;
+ delete _sprite;
+ delete _anim;
+ delete _script;
+ delete _interface;
+ delete _actor;
+ delete _palanim;
+ }
+
delete _scene;
- delete _isoMap;
+
+ if (getGameId() == GID_ITE) {
+ delete _isoMap;
+ }
+
delete _render;
delete _music;
delete _sound;
@@ -165,25 +173,34 @@ Common::Error SagaEngine::init() {
}
// Initialize engine modules
- _sndRes = new SndRes(this);
- _events = new Events(this);
- _font = new Font(this);
- _sprite = new Sprite(this);
- _anim = new Anim(this);
- _script = new Script(this);
- _interface = new Interface(this); // requires script module
+ // TODO: implement differences for SAGA2
+ if (!isSaga2()) {
+ _sndRes = new SndRes(this);
+ _events = new Events(this);
+ _font = new Font(this);
+ _sprite = new Sprite(this);
+ _anim = new Anim(this);
+ _script = new Script(this);
+ _interface = new Interface(this); // requires script module
+ }
+
_scene = new Scene(this);
- _actor = new Actor(this);
- _palanim = new PalAnim(this);
- _isoMap = new IsoMap(this);
- _puzzle = new Puzzle(this);
+
+ if (!isSaga2()) {
+ _actor = new Actor(this);
+ _palanim = new PalAnim(this);
+ if (getGameId() == GID_ITE) {
+ _isoMap = new IsoMap(this);
+ _puzzle = new Puzzle(this);
+ }
+ }
// System initialization
_previousTicks = _system->getMillis();
// Initialize graphics
- _gfx = new Gfx(this, _system, getDisplayWidth(), getDisplayHeight());
+ _gfx = new Gfx(this, _system, getDisplayInfo().logicalWidth, getDisplayInfo().logicalHeight);
// Graphics driver should be initialized before console
_console = new Console(this);
@@ -296,7 +313,7 @@ Common::Error SagaEngine::go() {
}
// Since Puzzle and forced text are actorless, we do them here
- if (_puzzle->isActive() || _actor->isForcedTextShown()) {
+ if ((getGameId() == GID_ITE && _puzzle->isActive()) || _actor->isForcedTextShown()) {
_actor->handleSpeech(msec);
} else if (!_scene->isInIntro()) {
if (_interface->getMode() == kPanelMain ||