aboutsummaryrefslogtreecommitdiff
path: root/engines/cge2/snail.cpp
diff options
context:
space:
mode:
authoruruk2014-05-23 12:56:48 +0200
committeruruk2014-05-23 12:56:48 +0200
commit4dcfe4d7853cc59b0c93f43115dc13d17470386f (patch)
treef288433bee1c64d2917fe575fa4b6c3614707309 /engines/cge2/snail.cpp
parent02817a7bd5b5ade5afb51f2ea545238d284b2fd8 (diff)
downloadscummvm-rg350-4dcfe4d7853cc59b0c93f43115dc13d17470386f.tar.gz
scummvm-rg350-4dcfe4d7853cc59b0c93f43115dc13d17470386f.tar.bz2
scummvm-rg350-4dcfe4d7853cc59b0c93f43115dc13d17470386f.zip
CGE2: Start implementation of CommandHandler.
Implement constructor, destructor, addCommand() and add clear() ant _count.
Diffstat (limited to 'engines/cge2/snail.cpp')
-rw-r--r--engines/cge2/snail.cpp26
1 files changed, 22 insertions, 4 deletions
diff --git a/engines/cge2/snail.cpp b/engines/cge2/snail.cpp
index c883606422..5b61d1f7ef 100644
--- a/engines/cge2/snail.cpp
+++ b/engines/cge2/snail.cpp
@@ -53,12 +53,14 @@ const char *CommandHandler::_commandText[] = {
"WALKTO", "REACH", "COVER", "UNCOVER",
NULL };
-CommandHandler::CommandHandler(CGE2Engine *vm, bool turbo) : _vm(vm) {
- warning("STUB: CommandHandler::CommandHandler()");
+CommandHandler::CommandHandler(CGE2Engine *vm, bool turbo)
+ : _turbo(turbo), _textDelay(false), _timerExpiry(0), _talkEnable(true),
+ _head(0), _tail(0), _commandList((Command *)malloc(sizeof(Command)* 256)),
+ _count(1), _vm(vm) {
}
CommandHandler::~CommandHandler() {
- warning("STUB: CommandHandler::~CommandHandler()");
+ free(_commandList);
}
void CommandHandler::runCommand() {
@@ -66,7 +68,17 @@ void CommandHandler::runCommand() {
}
void CommandHandler::addCommand(CommandType com, int ref, int val, void *ptr) {
- warning("STUB: CommandHandler::addCommand()");
+ if (ref == 2)
+ ref = 142 - _vm->_sex;
+ Command *headCmd = &_commandList[_head++];
+ headCmd->_commandType = com;
+ headCmd->_ref = ref;
+ headCmd->_val = val;
+ headCmd->_spritePtr = ptr;
+ headCmd->_cbType = kNullCB;
+ if (headCmd->_commandType == kCmdClear) {
+ clear();
+ }
}
void CommandHandler::addCallback(CommandType com, int ref, int val, CallbackType cbType) {
@@ -86,6 +98,12 @@ void CommandHandler::reset() {
warning("STUB: CommandHandler::reset()");
}
+void CommandHandler::clear() {
+ _tail = _head;
+ _vm->killText();
+ _timerExpiry = 0;
+}
+
int CommandHandler::com(const char *com) {
int i = _vm->takeEnum(_commandText, com);
return (i < 0) ? i : i + kCmdCom0 + 1;