aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/mohawk/riven_scripts.cpp19
-rw-r--r--engines/mohawk/riven_scripts.h7
2 files changed, 12 insertions, 14 deletions
diff --git a/engines/mohawk/riven_scripts.cpp b/engines/mohawk/riven_scripts.cpp
index 1445731199..331f2261d5 100644
--- a/engines/mohawk/riven_scripts.cpp
+++ b/engines/mohawk/riven_scripts.cpp
@@ -56,23 +56,23 @@ RivenScriptPtr RivenScriptManager::readScript(Common::ReadStream *stream) {
uint16 commandCount = stream->readUint16BE();
for (uint16 i = 0; i < commandCount; i++) {
- RivenCommand *command = readCommand(stream);
+ RivenCommandPtr command = readCommand(stream);
script->addCommand(command);
}
return script;
}
-RivenCommand *RivenScriptManager::readCommand(Common::ReadStream *stream) {
+RivenCommandPtr RivenScriptManager::readCommand(Common::ReadStream *stream) {
uint16 type = stream->readUint16BE();
switch (type) {
case 8:
- return RivenSwitchCommand::createFromStream(_vm, type, stream);
+ return RivenCommandPtr(RivenSwitchCommand::createFromStream(_vm, type, stream));
case 27:
- return RivenStackChangeCommand::createFromStream(_vm, type, stream);
+ return RivenCommandPtr(RivenStackChangeCommand::createFromStream(_vm, type, stream));
default:
- return RivenSimpleCommand::createFromStream(_vm, type, stream);
+ return RivenCommandPtr(RivenSimpleCommand::createFromStream(_vm, type, stream));
}
}
@@ -160,7 +160,7 @@ RivenScriptPtr RivenScriptManager::createScriptWithCommand(RivenCommand *command
assert(command);
RivenScriptPtr script = RivenScriptPtr(new RivenScript());
- script->addCommand(command);
+ script->addCommand(RivenCommandPtr(command));
return script;
}
@@ -169,9 +169,6 @@ RivenScript::RivenScript() {
}
RivenScript::~RivenScript() {
- for (uint i = 0; i < _commands.size(); i ++) {
- delete _commands[i];
- }
}
void RivenScript::dumpScript(byte tabs) {
@@ -181,12 +178,12 @@ void RivenScript::dumpScript(byte tabs) {
}
void RivenScript::run() {
- for (uint16 i = 0; i < _commands.size() && _continueRunning; i++) {
+ for (uint i = 0; i < _commands.size() && _continueRunning; i++) {
_commands[i]->execute();
}
}
-void RivenScript::addCommand(RivenCommand *command) {
+void RivenScript::addCommand(RivenCommandPtr command) {
_commands.push_back(command);
}
diff --git a/engines/mohawk/riven_scripts.h b/engines/mohawk/riven_scripts.h
index 13c415b850..a5c1ccbdad 100644
--- a/engines/mohawk/riven_scripts.h
+++ b/engines/mohawk/riven_scripts.h
@@ -55,6 +55,7 @@ class RivenCommand;
class RivenScript;
typedef Common::SharedPtr<RivenScript> RivenScriptPtr;
+typedef Common::SharedPtr<RivenCommand> RivenCommandPtr;
/**
* Scripts in Riven are a list of Commands
@@ -68,7 +69,7 @@ public:
~RivenScript();
/** Append a command to the script */
- void addCommand(RivenCommand *command);
+ void addCommand(RivenCommandPtr command);
/** True if the script does not contain any command */
bool empty() const;
@@ -94,7 +95,7 @@ public:
static const char *getTypeName(uint16 type);
private:
- Common::Array<RivenCommand *> _commands;
+ Common::Array<RivenCommandPtr> _commands;
bool _continueRunning;
};
@@ -163,7 +164,7 @@ private:
Common::Array<RivenScriptPtr> _queue;
StoredMovieOpcode _storedMovieOpcode;
- RivenCommand *readCommand(Common::ReadStream *stream);
+ RivenCommandPtr readCommand(Common::ReadStream *stream);
};
/**