diff options
author | Paul Gilbert | 2015-06-05 23:05:22 -0400 |
---|---|---|
committer | Paul Gilbert | 2015-06-05 23:05:22 -0400 |
commit | 566d4805ef2e0324cc06c6cae48cde1908858b13 (patch) | |
tree | af656b343634800f5a16db1fa7966a57f4684610 /engines/sherlock/talk.cpp | |
parent | 389d453f0e805e7b6b7eef8632889837fd5e3445 (diff) | |
download | scummvm-rg350-566d4805ef2e0324cc06c6cae48cde1908858b13.tar.gz scummvm-rg350-566d4805ef2e0324cc06c6cae48cde1908858b13.tar.bz2 scummvm-rg350-566d4805ef2e0324cc06c6cae48cde1908858b13.zip |
SHERLOCK: Move the Talk descendant classes into their own files
Diffstat (limited to 'engines/sherlock/talk.cpp')
-rw-r--r-- | engines/sherlock/talk.cpp | 534 |
1 files changed, 4 insertions, 530 deletions
diff --git a/engines/sherlock/talk.cpp b/engines/sherlock/talk.cpp index 607417b55a..93285e217c 100644 --- a/engines/sherlock/talk.cpp +++ b/engines/sherlock/talk.cpp @@ -23,153 +23,12 @@ #include "sherlock/talk.h" #include "sherlock/sherlock.h" #include "sherlock/screen.h" +#include "sherlock/scalpel/scalpel_talk.h" #include "sherlock/scalpel/scalpel_user_interface.h" +#include "sherlock/tattoo/tattoo_talk.h" namespace Sherlock { -#define SPEAKER_REMOVE 0x80 - -const byte SCALPEL_OPCODES[] = { - 128, // OP_SWITCH_SPEAKER - 129, // OP_RUN_CANIMATION - 130, // OP_ASSIGN_PORTRAIT_LOCATION - 131, // OP_PAUSE - 132, // OP_REMOVE_PORTRAIT - 133, // OP_CLEAR_WINDOW - 134, // OP_ADJUST_OBJ_SEQUENCE - 135, // OP_WALK_TO_COORDS - 136, // OP_PAUSE_WITHOUT_CONTROL - 137, // OP_BANISH_WINDOW - 138, // OP_SUMMON_WINDOW - 139, // OP_SET_FLAG - 140, // OP_SFX_COMMAND - 141, // OP_TOGGLE_OBJECT - 142, // OP_STEALTH_MODE_ACTIVE - 143, // OP_IF_STATEMENT - 144, // OP_ELSE_STATEMENT - 145, // OP_END_IF_STATEMENT - 146, // OP_STEALTH_MODE_DEACTIVATE - 147, // OP_TURN_HOLMES_OFF - 148, // OP_TURN_HOLMES_ON - 149, // OP_GOTO_SCENE - 150, // OP_PLAY_PROLOGUE - 151, // OP_ADD_ITEM_TO_INVENTORY - 152, // OP_SET_OBJECT - 153, // OP_CALL_TALK_FILE - 143, // OP_MOVE_MOUSE - 155, // OP_DISPLAY_INFO_LINE - 156, // OP_CLEAR_INFO_LINE - 157, // OP_WALK_TO_CANIMATION - 158, // OP_REMOVE_ITEM_FROM_INVENTORY - 159, // OP_ENABLE_END_KEY - 160, // OP_DISABLE_END_KEY - 161, // OP_CARRIAGE_RETURN - 0, // OP_MOUSE_ON_OFF - 0, // OP_SET_WALK_CONTROL - 0, // OP_SET_TALK_SEQUENCE - 0, // OP_PLAY_SONG - 0, // OP_WALK_HOLMES_AND_NPC_TO_CANIM - 0, // OP_SET_NPC_PATH_DEST - 0, // OP_NEXT_SONG - 0, // OP_SET_NPC_PATH_PAUSE - 0, // OP_PASSWORD - 0, // OP_SET_SCENE_ENTRY_FLAG - 0, // OP_WALK_NPC_TO_CANIM - 0, // OP_WALK_HOLMES_AND_NPC_TO_COORDS - 0, // OP_WALK_HOLMES_AND_NPC_TO_COORDS - 0, // OP_SET_NPC_TALK_FILE - 0, // OP_TURN_NPC_OFF - 0, // OP_TURN_NPC_ON - 0, // OP_NPC_DESC_ON_OFF - 0, // OP_NPC_PATH_PAUSE_TAKING_NOTES - 0, // OP_NPC_PATH_PAUSE_LOOKING_HOLMES - 0, // OP_ENABLE_TALK_INTERRUPTS - 0, // OP_DISABLE_TALK_INTERRUPTS - 0, // OP_SET_NPC_INFO_LINE - 0, // OP_SET_NPC_POSITION - 0, // OP_NPC_PATH_LABEL - 0, // OP_PATH_GOTO_LABEL - 0, // OP_PATH_IF_FLAG_GOTO_LABEL - 0, // OP_NPC_WALK_GRAPHICS - 0, // OP_NPC_VERB - 0, // OP_NPC_VERB_CANIM - 0, // OP_NPC_VERB_SCRIPT - 0, // OP_RESTORE_PEOPLE_SEQUENCE - 0, // OP_NPC_VERB_TARGET - 0 // OP_TURN_SOUNDS_OFF -}; - -const byte TATTOO_OPCODES[] = { - 170, // OP_SWITCH_SPEAKER - 171, // OP_RUN_CANIMATION - 0, // OP_ASSIGN_PORTRAIT_LOCATION - 173, // OP_PAUSE - 0, // OP_REMOVE_PORTRAIT - 0, // OP_CLEAR_WINDOW - 176, // OP_ADJUST_OBJ_SEQUENCE - 177, // OP_WALK_TO_COORDS - 178, // OP_PAUSE_WITHOUT_CONTROL - 179, // OP_BANISH_WINDOW - 0, // OP_SUMMON_WINDOW - 181, // OP_SET_FLAG - 0, // OP_SFX_COMMAND - 183, // OP_TOGGLE_OBJECT - 184, // OP_STEALTH_MODE_ACTIVE - 0, // OP_IF_STATEMENT - 0, // OP_ELSE_STATEMENT - 0, // OP_END_IF_STATEMENT - 188, // OP_STEALTH_MODE_DEACTIVATE - 189, // OP_TURN_HOLMES_OFF - 190, // OP_TURN_HOLMES_ON - 191, // OP_GOTO_SCENE - 0, // OP_PLAY_PROLOGUE - 193, // OP_ADD_ITEM_TO_INVENTORY - 194, // OP_SET_OBJECT - 172, // OP_CALL_TALK_FILE - 0, // OP_MOVE_MOUSE - 0, // OP_DISPLAY_INFO_LINE - 0, // OP_CLEAR_INFO_LINE - 199, // OP_WALK_TO_CANIMATION - 200, // OP_REMOVE_ITEM_FROM_INVENTORY - 201, // OP_ENABLE_END_KEY - 202, // OP_DISABLE_END_KEY - 0, // OP_CARRIAGE_RETURN - 174, // OP_MOUSE_ON_OFF - 175, // OP_SET_WALK_CONTROL - 180, // OP_SET_TALK_SEQUENCE - 182, // OP_PLAY_SONG - 187, // OP_WALK_HOLMES_AND_NPC_TO_CANIM - 192, // OP_SET_NPC_PATH_DEST - 195, // OP_NEXT_SONG - 196, // OP_SET_NPC_PATH_PAUSE - 197, // OP_PASSWORD - 198, // OP_SET_SCENE_ENTRY_FLAG - 185, // OP_WALK_NPC_TO_CANIM - 204, // OP_WALK_HOLMES_AND_NPC_TO_COORDS - 205, // OP_SET_NPC_TALK_FILE - 206, // OP_TURN_NPC_OFF - 207, // OP_TURN_NPC_ON - 208, // OP_NPC_DESC_ON_OFF - 209, // OP_NPC_PATH_PAUSE_TAKING_NOTES - 210, // OP_NPC_PATH_PAUSE_LOOKING_HOLMES - 211, // OP_ENABLE_TALK_INTERRUPTS - 212, // OP_DISABLE_TALK_INTERRUPTS - 213, // OP_SET_NPC_INFO_LINE - 214, // OP_SET_NPC_POSITION - 215, // OP_NPC_PATH_LABEL - 216, // OP_PATH_GOTO_LABEL - 217, // OP_PATH_IF_FLAG_GOTO_LABEL - 218, // OP_NPC_WALK_GRAPHICS - 220, // OP_NPC_VERB - 221, // OP_NPC_VERB_CANIM - 222, // OP_NPC_VERB_SCRIPT - 224, // OP_RESTORE_PEOPLE_SEQUENCE - 226, // OP_NPC_VERB_TARGET - 227 // OP_TURN_SOUNDS_OFF -}; - -/*----------------------------------------------------------------*/ - SequenceEntry::SequenceEntry() { _objNum = 0; _frameNumber = 0; @@ -235,9 +94,9 @@ TalkSequence::TalkSequence() { Talk *Talk::init(SherlockEngine *vm) { if (vm->getGameID() == GType_SerratedScalpel) - return new ScalpelTalk(vm); + return new Scalpel::ScalpelTalk(vm); else - return new TattooTalk(vm); + return new Tattoo::TattooTalk(vm); } Talk::Talk(SherlockEngine *vm) : _vm(vm) { @@ -1783,389 +1642,4 @@ OpcodeReturn Talk::cmdWalkToCoords(const byte *&str) { return RET_SUCCESS; } -/*----------------------------------------------------------------*/ - -ScalpelTalk::ScalpelTalk(SherlockEngine *vm) : Talk(vm) { - static OpcodeMethod OPCODE_METHODS[] = { - (OpcodeMethod)&ScalpelTalk::cmdSwitchSpeaker, - (OpcodeMethod)&ScalpelTalk::cmdRunCAnimation, - (OpcodeMethod)&ScalpelTalk::cmdAssignPortraitLocation, - - (OpcodeMethod)&ScalpelTalk::cmdPause, - (OpcodeMethod)&ScalpelTalk::cmdRemovePortrait, - (OpcodeMethod)&ScalpelTalk::cmdClearWindow, - (OpcodeMethod)&ScalpelTalk::cmdAdjustObjectSequence, - (OpcodeMethod)&ScalpelTalk::cmdWalkToCoords, - (OpcodeMethod)&ScalpelTalk::cmdPauseWithoutControl, - (OpcodeMethod)&ScalpelTalk::cmdBanishWindow, - (OpcodeMethod)&ScalpelTalk::cmdSummonWindow, - (OpcodeMethod)&ScalpelTalk::cmdSetFlag, - (OpcodeMethod)&ScalpelTalk::cmdSfxCommand, - - (OpcodeMethod)&ScalpelTalk::cmdToggleObject, - (OpcodeMethod)&ScalpelTalk::cmdStealthModeActivate, - (OpcodeMethod)&ScalpelTalk::cmdIf, - (OpcodeMethod)&ScalpelTalk::cmdElse, - nullptr, - (OpcodeMethod)&ScalpelTalk::cmdStealthModeDeactivate, - (OpcodeMethod)&ScalpelTalk::cmdHolmesOff, - (OpcodeMethod)&ScalpelTalk::cmdHolmesOn, - (OpcodeMethod)&ScalpelTalk::cmdGotoScene, - (OpcodeMethod)&ScalpelTalk::cmdPlayPrologue, - - (OpcodeMethod)&ScalpelTalk::cmdAddItemToInventory, - (OpcodeMethod)&ScalpelTalk::cmdSetObject, - (OpcodeMethod)&ScalpelTalk::cmdCallTalkFile, - (OpcodeMethod)&ScalpelTalk::cmdMoveMouse, - (OpcodeMethod)&ScalpelTalk::cmdDisplayInfoLine, - (OpcodeMethod)&ScalpelTalk::cmdClearInfoLine, - (OpcodeMethod)&ScalpelTalk::cmdWalkToCAnimation, - (OpcodeMethod)&ScalpelTalk::cmdRemoveItemFromInventory, - (OpcodeMethod)&ScalpelTalk::cmdEnableEndKey, - (OpcodeMethod)&ScalpelTalk::cmdDisableEndKey, - - (OpcodeMethod)&ScalpelTalk::cmdCarriageReturn, - nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, - nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, - nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, - nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, - nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, - nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, - nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr - }; - - _opcodes = SCALPEL_OPCODES; - _opcodeTable = OPCODE_METHODS; -} - -OpcodeReturn ScalpelTalk::cmdAssignPortraitLocation(const byte *&str) { - People &people = *_vm->_people; - - ++str; - switch (str[0] & 15) { - case 1: - people._portraitSide = 20; - break; - case 2: - people._portraitSide = 220; - break; - case 3: - people._portraitSide = 120; - break; - default: - break; - } - - if (str[0] > 15) - people._speakerFlip = true; - - return RET_SUCCESS; -} - -OpcodeReturn ScalpelTalk::cmdClearInfoLine(const byte *&str) { - UserInterface &ui = *_vm->_ui; - - ui._infoFlag = true; - ui.clearInfo(); - - return RET_SUCCESS; -} - -OpcodeReturn ScalpelTalk::cmdClearWindow(const byte *&str) { - UserInterface &ui = *_vm->_ui; - - ui.clearWindow(); - _yp = CONTROLS_Y + 12; - _charCount = _line = 0; - - return RET_SUCCESS; -} - -OpcodeReturn ScalpelTalk::cmdDisplayInfoLine(const byte *&str) { - Screen &screen = *_vm->_screen; - UserInterface &ui = *_vm->_ui; - Common::String tempString; - - ++str; - for (int idx = 0; idx < str[0]; ++idx) - tempString += str[idx + 1]; - str += str[0]; - - screen.print(Common::Point(0, INFO_LINE + 1), INFO_FOREGROUND, "%s", tempString.c_str()); - ui._menuCounter = 30; - - return RET_SUCCESS; -} - -OpcodeReturn ScalpelTalk::cmdElse(const byte *&str) { - // If this is encountered here, it means that a preceeding IF statement was found, - // and evaluated to true. Now all the statements for the true block are finished, - // so skip over the block of code that would have executed if the result was false - _wait = 0; - do { - ++str; - } while (str[0] && str[0] != _opcodes[OP_END_IF_STATEMENT]); - - return RET_SUCCESS; -} - -OpcodeReturn ScalpelTalk::cmdIf(const byte *&str) { - ++str; - int flag = (str[0] - 1) * 256 + str[1] - 1 - (str[1] == 1 ? 1 : 0); - ++str; - _wait = 0; - - bool result = flag < 0x8000; - if (_vm->readFlags(flag & 0x7fff) != result) { - do { - ++str; - } while (str[0] && str[0] != _opcodes[OP_ELSE_STATEMENT] && str[0] != _opcodes[OP_END_IF_STATEMENT]); - - if (!str[0]) - _endStr = true; - } - - return RET_SUCCESS; -} - -OpcodeReturn ScalpelTalk::cmdMoveMouse(const byte *&str) { - Events &events = *_vm->_events; - - ++str; - events.moveMouse(Common::Point((str[0] - 1) * 256 + str[1] - 1, str[2])); - if (_talkToAbort) - return RET_EXIT; - str += 3; - - return RET_SUCCESS; -} - -OpcodeReturn ScalpelTalk::cmdPlayPrologue(const byte *&str) { - Animation &anim = *_vm->_animation; - Common::String tempString; - - ++str; - for (int idx = 0; idx < 8 && str[idx] != '~'; ++idx) - tempString += str[idx]; - - anim.play(tempString, 1, 3, true, 4); - - return RET_SUCCESS; -} - -OpcodeReturn ScalpelTalk::cmdRemovePortrait(const byte *&str) { - People &people = *_vm->_people; - - if (_speaker >= 0 && _speaker < SPEAKER_REMOVE) - people.clearTalking(); - pullSequence(); - if (_talkToAbort) - return RET_EXIT; - - _speaker |= SPEAKER_REMOVE; - return RET_SUCCESS; -} - -OpcodeReturn ScalpelTalk::cmdSfxCommand(const byte *&str) { - Sound &sound = *_vm->_sound; - Common::String tempString; - - ++str; - if (sound._voices) { - for (int idx = 0; idx < 8 && str[idx] != '~'; ++idx) - tempString += str[idx]; - sound.playSound(tempString, WAIT_RETURN_IMMEDIATELY); - - // Set voices to wait for more - sound._voices = 2; - sound._speechOn = (*sound._soundIsOn); - } - - _wait = 1; - str += 7; - - return RET_SUCCESS; -} - -OpcodeReturn ScalpelTalk::cmdSummonWindow(const byte *&str) { - Events &events = *_vm->_events; - Screen &screen = *_vm->_screen; - - drawInterface(); - events._pressed = events._released = false; - events.clearKeyboard(); - _noTextYet = false; - - if (_speaker != -1) { - screen.buttonPrint(Common::Point(119, CONTROLS_Y), COMMAND_NULL, false, "Exit"); - screen.buttonPrint(Common::Point(159, CONTROLS_Y), COMMAND_NULL, false, "Up"); - screen.buttonPrint(Common::Point(200, CONTROLS_Y), COMMAND_NULL, false, "Down"); - } - - return RET_SUCCESS; -} - -OpcodeReturn ScalpelTalk::cmdCarriageReturn(const byte *&str) { - return RET_SUCCESS; -} - -/*----------------------------------------------------------------*/ - -TattooTalk::TattooTalk(SherlockEngine *vm) : Talk(vm) { - static OpcodeMethod OPCODE_METHODS[] = { - nullptr, nullptr, - nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, - nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, - nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, - nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, - (OpcodeMethod)&TattooTalk::cmdSwitchSpeaker, - - (OpcodeMethod)&TattooTalk::cmdRunCAnimation, - (OpcodeMethod)&TattooTalk::cmdCallTalkFile, - (OpcodeMethod)&TattooTalk::cmdPause, - (OpcodeMethod)&TattooTalk::cmdMouseOnOff, - (OpcodeMethod)&TattooTalk::cmdSetWalkControl, - (OpcodeMethod)&TattooTalk::cmdAdjustObjectSequence, - (OpcodeMethod)&TattooTalk::cmdWalkToCoords, - (OpcodeMethod)&TattooTalk::cmdPauseWithoutControl, - (OpcodeMethod)&TattooTalk::cmdBanishWindow, - (OpcodeMethod)&TattooTalk::cmdSetTalkSequence, - - (OpcodeMethod)&TattooTalk::cmdSetFlag, - (OpcodeMethod)&TattooTalk::cmdPlaySong, - (OpcodeMethod)&TattooTalk::cmdToggleObject, - (OpcodeMethod)&TattooTalk::cmdStealthModeActivate, - (OpcodeMethod)&TattooTalk::cmdWalkNPCToCAnimation, - (OpcodeMethod)&TattooTalk::cmdWalkNPCToCoords, - (OpcodeMethod)&TattooTalk::cmdWalkHomesAndNPCToCoords, - (OpcodeMethod)&TattooTalk::cmdStealthModeDeactivate, - (OpcodeMethod)&TattooTalk::cmdHolmesOff, - (OpcodeMethod)&TattooTalk::cmdHolmesOn, - - (OpcodeMethod)&TattooTalk::cmdGotoScene, - (OpcodeMethod)&TattooTalk::cmdSetNPCPathDest, - (OpcodeMethod)&TattooTalk::cmdAddItemToInventory, - (OpcodeMethod)&TattooTalk::cmdSetObject, - (OpcodeMethod)&TattooTalk::cmdNextSong, - (OpcodeMethod)&TattooTalk::cmdSetNPCPathPause, - (OpcodeMethod)&TattooTalk::cmdPassword, - (OpcodeMethod)&TattooTalk::cmdSetSceneEntryFlag, - (OpcodeMethod)&TattooTalk::cmdWalkToCAnimation, - (OpcodeMethod)&TattooTalk::cmdRemoveItemFromInventory, - - (OpcodeMethod)&TattooTalk::cmdEnableEndKey, - (OpcodeMethod)&TattooTalk::cmdDisableEndKey, - nullptr, - (OpcodeMethod)&TattooTalk::cmdWalkHomesAndNPCToCoords, - (OpcodeMethod)&TattooTalk::cmdSetNPCTalkFile, - (OpcodeMethod)&TattooTalk::cmdSetNPCOff, - (OpcodeMethod)&TattooTalk::cmdSetNPCOn, - (OpcodeMethod)&TattooTalk::cmdSetNPCDescOnOff, - (OpcodeMethod)&TattooTalk::cmdSetNPCPathPauseTakingNotes, - (OpcodeMethod)&TattooTalk::cmdSetNPCPathPauseLookingHolmes, - - (OpcodeMethod)&TattooTalk::cmdTalkInterruptsEnable, - (OpcodeMethod)&TattooTalk::cmdTalkInterruptsDisable, - (OpcodeMethod)&TattooTalk::cmdSetNPCInfoLine, - (OpcodeMethod)&TattooTalk::cmdSetNPCPosition, - (OpcodeMethod)&TattooTalk::cmdNPCLabelSet, - (OpcodeMethod)&TattooTalk::cmdNPCLabelGoto, - (OpcodeMethod)&TattooTalk::cmdNPCLabelIfFlagGoto, - (OpcodeMethod)&TattooTalk::cmdSetNPCWalkGraphics, - nullptr, - (OpcodeMethod)&TattooTalk::cmdSetNPCVerb, - - (OpcodeMethod)&TattooTalk::cmdSetNPCVerbCAnimation, - (OpcodeMethod)&TattooTalk::cmdSetNPCVerbScript, - nullptr, - (OpcodeMethod)&TattooTalk::cmdRestorePeopleSequence, - (OpcodeMethod)&TattooTalk::cmdSetNPCVerbTarget, - (OpcodeMethod)&TattooTalk::cmdTurnSoundsOff - }; - - _opcodes = TATTOO_OPCODES; - _opcodeTable = OPCODE_METHODS; -} - -OpcodeReturn TattooTalk::cmdMouseOnOff(const byte *&str) { - Events &events = *_vm->_events; - bool mouseOn = *++str == 2; - if (mouseOn) - events.showCursor(); - else - events.hideCursor(); - return RET_SUCCESS; -} - -OpcodeReturn TattooTalk::cmdNextSong(const byte *&str) { - Sound &sound = *_vm->_sound; - - // Get the name of the next song to play - ++str; - sound._nextSongName = ""; - for (int idx = 0; idx < 8; ++idx) { - if (str[idx] != '~') - sound._nextSongName += str[idx]; - else - break; - } - str += 7; - - return RET_SUCCESS; -} - -OpcodeReturn TattooTalk::cmdNPCLabelGoto(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdNPCLabelIfFlagGoto(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdNPCLabelSet(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdPassword(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdPlaySong(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdRestorePeopleSequence(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdSetNPCDescOnOff(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdSetNPCInfoLine(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdSetNPCOff(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdSetNPCOn(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdSetNPCPathDest(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdSetNPCPathPause(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdSetNPCPathPauseTakingNotes(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdSetNPCPathPauseLookingHolmes(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdSetNPCPosition(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdSetNPCTalkFile(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdSetNPCVerb(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdSetNPCVerbCAnimation(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdSetNPCVerbScript(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdSetNPCVerbTarget(const byte *&str) { error("TODO: script opcode"); } - -OpcodeReturn TattooTalk::cmdSetNPCWalkGraphics(const byte *&str) { - ++str; - int npc = *str - 1; - People &people = *_vm->_people; - Person &person = people[npc]; - - // Build up walk library name for the given NPC - person._walkVGSName = ""; - for (int idx = 0; idx < 8; ++idx) { - if (str[idx + 1] != '~') - person._walkVGSName += str[idx + 1]; - else - break; - } - person._walkVGSName += ".VGS"; - - people._forceWalkReload = true; - str += 8; - - return RET_SUCCESS; -} - -OpcodeReturn TattooTalk::cmdSetSceneEntryFlag(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdSetTalkSequence(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdSetWalkControl(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdTalkInterruptsDisable(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdTalkInterruptsEnable(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdTurnSoundsOff(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdWalkHolmesAndNPCToCAnimation(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdWalkNPCToCAnimation(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdWalkNPCToCoords(const byte *&str) { error("TODO: script opcode"); } -OpcodeReturn TattooTalk::cmdWalkHomesAndNPCToCoords(const byte *&str) { error("TODO: script opcode"); } - } // End of namespace Sherlock |