SHERLOCK: Use script opcode constants in journal loading

This commit is contained in:
Paul Gilbert 2015-04-30 21:07:33 -10:00
parent 821040deaa
commit 56f8d54e51
3 changed files with 58 additions and 60 deletions

View file

@ -346,48 +346,48 @@ int Journal::loadJournalFile(bool alreadyLoaded) {
} else { } else {
// Control code, so move past it and any parameters // Control code, so move past it and any parameters
switch (c) { switch (c) {
case 129: // Run canim case RUN_CANIMATION:
case 130: // Assign side case ASSIGN_PORTRAIT_LOCATION:
case 131: // Pause with control case PAUSE:
case 136: // Pause without control case PAUSE_WITHOUT_CONTROL:
case 157: // Walk to canimation case WALK_TO_CANIMATION:
// These commands have a single parameter // These commands have a single parameter
++replyP; ++replyP;
break; break;
case 134: // Change sequence case ADJUST_OBJ_SEQUENCE:
replyP += ((byte)replyP[0] & 127) + (byte)replyP[1] + 2; replyP += ((byte)replyP[0] & 127) + (byte)replyP[1] + 2;
break; break;
case 135: // Walk to co-ords case WALK_TO_COORDS:
case 154: // Move mouse case MOVE_MOUSE:
replyP += 4; replyP += 4;
break; break;
case 139: // Set flag case SET_FLAG:
case 143: // If statement case IF_STATEMENT:
replyP += 2; replyP += 2;
break; break;
case 140: // Play voice file case SFX_COMMAND:
case 150: // Play prologue case PLAY_PROLOGUE:
case 153: // Call talk file case CALL_TALK_FILE:
replyP += 8; replyP += 8;
break; break;
case 141: // Toggle object case TOGGLE_OBJECT:
case 151: // Put item in inventory case ADD_ITEM_TO_INVENTORY:
case 152: // Set object case SET_OBJECT:
case 155: // Info line case DISPLAY_INFO_LINE:
case 158: // Delete item from inventory case REMOVE_ITEM_FROM_INVENTORY:
replyP += ((byte)*replyP & 127) + 1; replyP += ((byte)*replyP & 127) + 1;
break; break;
case 149: // Goto scene case GOTO_SCENE:
replyP += 5; replyP += 5;
break; break;
case 161: // End of line case CARRIAGE_RETURN:
journalString += "\n"; journalString += "\n";
break; break;

View file

@ -26,45 +26,6 @@
namespace Sherlock { namespace Sherlock {
enum {
SWITCH_SPEAKER = 128,
RUN_CANIMATION = 129,
ASSIGN_PORTRAIT_LOCATION = 130,
PAUSE = 131,
REMOVE_PORTRAIT = 132,
CLEAR_WINDOW = 133,
ADJUST_OBJ_SEQUENCE = 134,
WALK_TO_COORDS = 135,
PAUSE_WITHOUT_CONTROL = 136,
BANISH_WINDOW = 137,
SUMMON_WINDOW = 138,
SET_FLAG = 139,
SFX_COMMAND = 140,
TOGGLE_OBJECT = 141,
STEALTH_MODE_ACTIVE = 142,
IF_STATEMENT = 143,
ELSE_STATEMENT = 144,
END_IF_STATEMENT = 145,
STEALTH_MODE_DEACTIVATE = 146,
TURN_HOLMES_OFF = 147,
TURN_HOLMES_ON = 148,
GOTO_SCENE = 149,
PLAY_PROLOGUE = 150,
ADD_ITEM_TO_INVENTORY = 151,
SET_OBJECT = 152,
CALL_TALK_FILE = 153,
MOVE_MOUSE = 154,
DISPLAY_INFO_LINE = 155,
CLEAR_INFO_LINE = 156,
WALK_TO_CANIMATION = 157,
REMOVE_ITEM_FROM_INVENTORY = 158,
ENABLE_END_KEY = 159,
DISABLE_END_KEY = 160,
COMMAND_161 = 161
};
/*----------------------------------------------------------------*/
/** /**
* Load the data for a single statement within a talk file * Load the data for a single statement within a talk file
*/ */
@ -1621,7 +1582,7 @@ void Talk::doScript(const Common::String &script) {
} }
// Open window if it wasn't already open, and text has already been printed // Open window if it wasn't already open, and text has already been printed
if ((openTalkWindow && wait) || (openTalkWindow && (byte)str[0] >= 128 && (byte)str[0] != COMMAND_161)) { if ((openTalkWindow && wait) || (openTalkWindow && (byte)str[0] >= 128 && (byte)str[0] != CARRIAGE_RETURN)) {
if (!ui._windowStyle) { if (!ui._windowStyle) {
screen.slamRect(Common::Rect(0, CONTROLS_Y, SHERLOCK_SCREEN_WIDTH, SHERLOCK_SCREEN_HEIGHT)); screen.slamRect(Common::Rect(0, CONTROLS_Y, SHERLOCK_SCREEN_WIDTH, SHERLOCK_SCREEN_HEIGHT));
} else { } else {

View file

@ -35,6 +35,43 @@ namespace Sherlock {
#define MAX_TALK_SEQUENCES 11 #define MAX_TALK_SEQUENCES 11
#define MAX_TALK_FILES 500 #define MAX_TALK_FILES 500
enum {
SWITCH_SPEAKER = 128,
RUN_CANIMATION = 129,
ASSIGN_PORTRAIT_LOCATION = 130,
PAUSE = 131,
REMOVE_PORTRAIT = 132,
CLEAR_WINDOW = 133,
ADJUST_OBJ_SEQUENCE = 134,
WALK_TO_COORDS = 135,
PAUSE_WITHOUT_CONTROL = 136,
BANISH_WINDOW = 137,
SUMMON_WINDOW = 138,
SET_FLAG = 139,
SFX_COMMAND = 140,
TOGGLE_OBJECT = 141,
STEALTH_MODE_ACTIVE = 142,
IF_STATEMENT = 143,
ELSE_STATEMENT = 144,
END_IF_STATEMENT = 145,
STEALTH_MODE_DEACTIVATE = 146,
TURN_HOLMES_OFF = 147,
TURN_HOLMES_ON = 148,
GOTO_SCENE = 149,
PLAY_PROLOGUE = 150,
ADD_ITEM_TO_INVENTORY = 151,
SET_OBJECT = 152,
CALL_TALK_FILE = 153,
MOVE_MOUSE = 154,
DISPLAY_INFO_LINE = 155,
CLEAR_INFO_LINE = 156,
WALK_TO_CANIMATION = 157,
REMOVE_ITEM_FROM_INVENTORY = 158,
ENABLE_END_KEY = 159,
DISABLE_END_KEY = 160,
CARRIAGE_RETURN = 161
};
struct SequenceEntry { struct SequenceEntry {
int _objNum; int _objNum;
Common::Array<byte> _sequences; Common::Array<byte> _sequences;