SHERLOCK: Use script opcode constants in journal loading
This commit is contained in:
parent
821040deaa
commit
56f8d54e51
3 changed files with 58 additions and 60 deletions
|
@ -346,48 +346,48 @@ int Journal::loadJournalFile(bool alreadyLoaded) {
|
|||
} else {
|
||||
// Control code, so move past it and any parameters
|
||||
switch (c) {
|
||||
case 129: // Run canim
|
||||
case 130: // Assign side
|
||||
case 131: // Pause with control
|
||||
case 136: // Pause without control
|
||||
case 157: // Walk to canimation
|
||||
case RUN_CANIMATION:
|
||||
case ASSIGN_PORTRAIT_LOCATION:
|
||||
case PAUSE:
|
||||
case PAUSE_WITHOUT_CONTROL:
|
||||
case WALK_TO_CANIMATION:
|
||||
// These commands have a single parameter
|
||||
++replyP;
|
||||
break;
|
||||
|
||||
case 134: // Change sequence
|
||||
case ADJUST_OBJ_SEQUENCE:
|
||||
replyP += ((byte)replyP[0] & 127) + (byte)replyP[1] + 2;
|
||||
break;
|
||||
|
||||
case 135: // Walk to co-ords
|
||||
case 154: // Move mouse
|
||||
case WALK_TO_COORDS:
|
||||
case MOVE_MOUSE:
|
||||
replyP += 4;
|
||||
break;
|
||||
|
||||
case 139: // Set flag
|
||||
case 143: // If statement
|
||||
case SET_FLAG:
|
||||
case IF_STATEMENT:
|
||||
replyP += 2;
|
||||
break;
|
||||
|
||||
case 140: // Play voice file
|
||||
case 150: // Play prologue
|
||||
case 153: // Call talk file
|
||||
case SFX_COMMAND:
|
||||
case PLAY_PROLOGUE:
|
||||
case CALL_TALK_FILE:
|
||||
replyP += 8;
|
||||
break;
|
||||
|
||||
case 141: // Toggle object
|
||||
case 151: // Put item in inventory
|
||||
case 152: // Set object
|
||||
case 155: // Info line
|
||||
case 158: // Delete item from inventory
|
||||
case TOGGLE_OBJECT:
|
||||
case ADD_ITEM_TO_INVENTORY:
|
||||
case SET_OBJECT:
|
||||
case DISPLAY_INFO_LINE:
|
||||
case REMOVE_ITEM_FROM_INVENTORY:
|
||||
replyP += ((byte)*replyP & 127) + 1;
|
||||
break;
|
||||
|
||||
case 149: // Goto scene
|
||||
case GOTO_SCENE:
|
||||
replyP += 5;
|
||||
break;
|
||||
|
||||
case 161: // End of line
|
||||
case CARRIAGE_RETURN:
|
||||
journalString += "\n";
|
||||
break;
|
||||
|
||||
|
|
|
@ -26,45 +26,6 @@
|
|||
|
||||
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
|
||||
*/
|
||||
|
@ -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
|
||||
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) {
|
||||
screen.slamRect(Common::Rect(0, CONTROLS_Y, SHERLOCK_SCREEN_WIDTH, SHERLOCK_SCREEN_HEIGHT));
|
||||
} else {
|
||||
|
|
|
@ -35,6 +35,43 @@ namespace Sherlock {
|
|||
#define MAX_TALK_SEQUENCES 11
|
||||
#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 {
|
||||
int _objNum;
|
||||
Common::Array<byte> _sequences;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue