diff options
Diffstat (limited to 'engines/simon/items.cpp')
-rw-r--r-- | engines/simon/items.cpp | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/engines/simon/items.cpp b/engines/simon/items.cpp index bfa672c7a9..806f2ded2c 100644 --- a/engines/simon/items.cpp +++ b/engines/simon/items.cpp @@ -302,6 +302,7 @@ void SimonEngine::setupOpcodes() { break; case GType_FF: opcode_table[37] = &SimonEngine::o3_jumpOut; + opcode_table[65] = &SimonEngine::o3_addTextBox; opcode_table[70] = &SimonEngine::o3_printLongText; opcode_table[83] = &SimonEngine::o2_rescan; opcode_table[98] = &SimonEngine::o2_animate; @@ -661,7 +662,7 @@ void SimonEngine::o1_addTextBox() { int h = getVarOrWord(); int number = getVarOrByte(); if (number < 20) - addNewHitArea(id, x, y, w, h, (number << 8) + 129, 0xD0, _dummyItem2); + defineBox(id, x, y, w, h, (number << 8) + 129, 208, _dummyItem2); } void SimonEngine::o1_setShortText() { @@ -901,7 +902,7 @@ void SimonEngine::o1_addBox() { verb += 0x4000; x -= 1000; } - addNewHitArea(id, x, y, w, h, flags, verb, item); + defineBox(id, x, y, w, h, flags, verb, item); } void SimonEngine::o1_delBox() { @@ -1404,6 +1405,27 @@ void SimonEngine::o3_jumpOut() { setScriptReturn(1); } +void SimonEngine::o3_addTextBox() { + // 65: add hit area + uint flags = kBFTextBox | kBFBoxItem; + uint id = getVarOrWord(); + uint params = id / 1000; + uint x, y, w, h, num; + + id %= 1000; + + if (params & 1) + flags |= kBFInvertTouch; + + x = getVarOrWord(); + y = getVarOrWord(); + w = getVarOrWord(); + h = getVarOrWord(); + num = getVarOrByte(); + if (num < 20) + defineBox(id, x, y, w, h, flags + (num << 8), 208, _dummyItem1); +} + void SimonEngine::o3_printLongText() { // 70: show string from array int num = getVarOrByte(); |