aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/access/amazon/amazon_scripts.cpp57
-rw-r--r--engines/access/amazon/amazon_scripts.h9
-rw-r--r--engines/access/scripts.cpp41
-rw-r--r--engines/access/scripts.h15
4 files changed, 73 insertions, 49 deletions
diff --git a/engines/access/amazon/amazon_scripts.cpp b/engines/access/amazon/amazon_scripts.cpp
index 2fdbcc94a2..38cf9d6a84 100644
--- a/engines/access/amazon/amazon_scripts.cpp
+++ b/engines/access/amazon/amazon_scripts.cpp
@@ -71,6 +71,63 @@ void AmazonScripts::executeSpecial(int commandIndex, int param1, int param2) {
}
}
+typedef void(AmazonScripts::*AmazonScriptMethodPtr)();
+
+void AmazonScripts::executeCommand(int commandIndex) {
+ static const AmazonScriptMethodPtr COMMAND_LIST[] = {
+ &AmazonScripts::CMDHELP, &AmazonScripts::CMDCYCLEBACK,
+ &AmazonScripts::CMDCHAPTER, &AmazonScripts::cmdSetHelp,
+ &AmazonScripts::cmdCenterPanel, &AmazonScripts::cmdMainPanel,
+ &AmazonScripts::CMDRETFLASH
+ };
+
+ if (commandIndex >= 73)
+ (this->*COMMAND_LIST[commandIndex - 73])();
+ else
+ Scripts::executeCommand(commandIndex);
+}
+
+void AmazonScripts::CMDHELP() {
+ error("TODO CMDHELP");
+}
+
+void AmazonScripts::CMDCYCLEBACK() {
+ error("TODO CMDCYCLEBACK");
+}
+void AmazonScripts::CMDCHAPTER() {
+ error("TODO CMDCHAPTER");
+}
+
+void AmazonScripts::cmdSetHelp() {
+ int arrayId = (_data->readUint16LE() && 0xFF) - 1;
+ int helpId = _data->readUint16LE() && 0xFF;
+
+ byte *help = _vm->_helpTbl[arrayId];
+ help[helpId] = 1;
+
+ if (_vm->_useItem == 0) {
+ _sequence = 11000;
+ searchForSequence();
+ }
+}
+
+void AmazonScripts::cmdCenterPanel() {
+ if (_vm->_screen->_vesaMode) {
+ _vm->_screen->clearScreen();
+ _vm->_screen->setPanel(3);
+ }
+}
+
+void AmazonScripts::cmdMainPanel() {
+ if (_vm->_screen->_vesaMode) {
+ _vm->_room->init4Quads();
+ _vm->_screen->setPanel(0);
+ }
+}
+
+void AmazonScripts::CMDRETFLASH() {
+ error("TODO CMDRETFLASH");
+}
} // End of namespace Amazon
diff --git a/engines/access/amazon/amazon_scripts.h b/engines/access/amazon/amazon_scripts.h
index b8fdaaa7f3..c9a889e3ad 100644
--- a/engines/access/amazon/amazon_scripts.h
+++ b/engines/access/amazon/amazon_scripts.h
@@ -33,6 +33,15 @@ namespace Amazon {
class AmazonScripts: public Scripts {
protected:
virtual void executeSpecial(int commandIndex, int param1, int param2);
+ virtual void executeCommand(int commandIndex);
+
+ void CMDHELP();
+ void CMDCYCLEBACK();
+ void CMDCHAPTER();
+ void cmdSetHelp();
+ void cmdCenterPanel();
+ void cmdMainPanel();
+ void CMDRETFLASH();
public:
AmazonScripts(AccessEngine *vm);
};
diff --git a/engines/access/scripts.cpp b/engines/access/scripts.cpp
index fba947a174..3c60065bfe 100644
--- a/engines/access/scripts.cpp
+++ b/engines/access/scripts.cpp
@@ -29,7 +29,7 @@
namespace Access {
-Scripts::Scripts(AccessEngine *vm) : _vm(vm) {
+Scripts::Scripts(AccessEngine *vm) : Manager(vm) {
_rawData = nullptr;
_data = nullptr;
_sequence = 0;
@@ -89,6 +89,8 @@ int Scripts::executeScript() {
return _returnCode;
}
+typedef void(Scripts::*ScriptMethodPtr)();
+
void Scripts::executeCommand(int commandIndex) {
static const ScriptMethodPtr COMMAND_LIST[] = {
&Scripts::CMDOBJECT, &Scripts::cmdEndObject, &Scripts::cmdJumpLook,
@@ -115,9 +117,7 @@ void Scripts::executeCommand(int commandIndex) {
&Scripts::CMDPUSHLOCATION, &Scripts::CMDPUSHLOCATION, &Scripts::CMDPUSHLOCATION,
&Scripts::CMDPUSHLOCATION, &Scripts::CMDPUSHLOCATION, &Scripts::cmdPlayerOff,
&Scripts::cmdPlayerOn, &Scripts::CMDDEAD, &Scripts::cmdFadeOut,
- &Scripts::CMDENDVID, &Scripts::CMDHELP, &Scripts::CMDCYCLEBACK,
- &Scripts::CMDCHAPTER, &Scripts::cmdSetHelp, &Scripts::cmdCenterPanel,
- &Scripts::cmdMainPanel, &Scripts::CMDRETFLASH
+ &Scripts::CMDENDVID
};
(this->*COMMAND_LIST[commandIndex])();
@@ -503,38 +503,5 @@ void Scripts::cmdFadeOut() {
}
void Scripts::CMDENDVID() { error("TODO CMDENDVID"); }
-void Scripts::CMDHELP() { error("TODO CMDHELP"); }
-void Scripts::CMDCYCLEBACK() { error("TODO CMDCYCLEBACK"); }
-void Scripts::CMDCHAPTER() { error("TODO CMDCHAPTER"); }
-
-void Scripts::cmdSetHelp() {
- int arrayId = (_data->readUint16LE() && 0xFF) - 1;
- int helpId = _data->readUint16LE() && 0xFF;
-
- byte *help = _vm->_helpTbl[arrayId];
- help[helpId] = 1;
-
- if (_vm->_useItem == 0) {
- _sequence = 11000;
- searchForSequence();
- }
-}
-
-void Scripts::cmdCenterPanel() {
- if (_vm->_screen->_vesaMode) {
- _vm->_screen->clearScreen();
- _vm->_screen->setPanel(3);
- }
-}
-
-void Scripts::cmdMainPanel() {
- if (_vm->_screen->_vesaMode) {
- _vm->_room->init4Quads();
- _vm->_screen->setPanel(0);
- }
-}
-
-void Scripts::CMDRETFLASH() { error("TODO CMDRETFLASH"); }
-
} // End of namespace Access
diff --git a/engines/access/scripts.h b/engines/access/scripts.h
index ac2bae005c..1f0bf84443 100644
--- a/engines/access/scripts.h
+++ b/engines/access/scripts.h
@@ -25,23 +25,21 @@
#include "common/scummsys.h"
#include "common/memstream.h"
+#include "access/data.h"
namespace Access {
class AccessEngine;
class Scripts;
-typedef void(Scripts::*ScriptMethodPtr)();
-
-class Scripts {
+class Scripts: public Manager {
private:
const byte *_rawData;
- Common::MemoryReadStream *_data;
int _specialFunction;
void printString(const Common::String &msg);
protected:
- AccessEngine *_vm;
+ Common::MemoryReadStream *_data;
virtual void executeSpecial(int commandIndex, int param1, int param2) = 0;
virtual void executeCommand(int commandIndex);
@@ -112,13 +110,6 @@ protected:
void CMDDEAD();
void cmdFadeOut();
void CMDENDVID();
- void CMDHELP();
- void CMDCYCLEBACK();
- void CMDCHAPTER();
- void cmdSetHelp();
- void cmdCenterPanel();
- void cmdMainPanel();
- void CMDRETFLASH();
public:
int _sequence;
bool _endFlag;