aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/scumm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/scumm/scumm.cpp')
-rw-r--r--engines/scumm/scumm.cpp25
1 files changed, 14 insertions, 11 deletions
diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index dd60877827..c71e78d509 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -512,6 +512,8 @@ ScummEngine::~ScummEngine() {
_mixer->stopAll();
+ for (int i = 0; i < _numActors; ++i)
+ delete _actors[i];
delete [] _actors;
delete [] _sortedActors;
@@ -1241,15 +1243,16 @@ void ScummEngine::resetScumm() {
// Allocate and Initialize actors
Actor::initActorClass(this);
- _actors = new Actor[_numActors];
+ _actors = new Actor * [_numActors];
_sortedActors = new Actor * [_numActors];
- for (i = 0; i < _numActors; i++) {
- _actors[i]._number = i;
- _actors[i].initActor(1);
+ for (i = 0; i < _numActors; ++i) {
+ _actors[i] = new Actor();
+ _actors[i]->_number = i;
+ _actors[i]->initActor(1);
// this is from IDB
if ((_game.version <= 1) || (_game.id == GID_MANIAC && (_game.features & GF_DEMO)))
- _actors[i].setActorCostume(i);
+ _actors[i]->setActorCostume(i);
}
if (_game.id == GID_MANIAC && _game.version <= 1) {
@@ -1257,12 +1260,12 @@ void ScummEngine::resetScumm() {
} else if (_game.id == GID_MANIAC && _game.version == 2 && (_game.features & GF_DEMO)) {
// HACK Some palette changes needed for demo script
// in Maniac Mansion (Enhanced)
- _actors[3].setPalette(3, 1);
- _actors[9]._talkColor = 15;
- _actors[10]._talkColor = 7;
- _actors[11]._talkColor = 2;
- _actors[13]._talkColor = 5;
- _actors[23]._talkColor = 14;
+ _actors[3]->setPalette(3, 1);
+ _actors[9]->_talkColor = 15;
+ _actors[10]->_talkColor = 7;
+ _actors[11]->_talkColor = 2;
+ _actors[13]->_talkColor = 5;
+ _actors[23]->_talkColor = 14;
}
vm.numNestedScripts = 0;