diff options
Diffstat (limited to 'engines/kyra')
-rw-r--r-- | engines/kyra/gui_lol.cpp | 186 | ||||
-rw-r--r-- | engines/kyra/kyra_v1.cpp | 108 | ||||
-rw-r--r-- | engines/kyra/lol.cpp | 293 | ||||
-rw-r--r-- | engines/kyra/scene_lol.cpp | 28 | ||||
-rw-r--r-- | engines/kyra/script_lol.cpp | 252 | ||||
-rw-r--r-- | engines/kyra/sprites_lol.cpp | 303 | ||||
-rw-r--r-- | engines/kyra/text_lol.cpp | 276 |
7 files changed, 721 insertions, 725 deletions
diff --git a/engines/kyra/gui_lol.cpp b/engines/kyra/gui_lol.cpp index 4880e9f914..efd5a83e10 100644 --- a/engines/kyra/gui_lol.cpp +++ b/engines/kyra/gui_lol.cpp @@ -624,37 +624,37 @@ void LoLEngine::gui_toggleButtonDisplayMode(int shapeIndex, int mode) { uint32 t = 0; switch (mode) { - case 1: - mode = 0x100; - _lastButtonShape = shapeIndex; - break; - - case 0: - if (!_lastButtonShape) - return; + case 1: + mode = 0x100; + _lastButtonShape = shapeIndex; + break; - t = _system->getMillis(); - if (_buttonPressTimer > t) - delay(_buttonPressTimer - t); + case 0: + if (!_lastButtonShape) + return; - case 2: - mode = 0; - _lastButtonShape = 0; - break; + t = _system->getMillis(); + if (_buttonPressTimer > t) + delay(_buttonPressTimer - t); - case 3: - mode = 0; - _lastButtonShape = 0; - pageNum = 6; + case 2: + mode = 0; + _lastButtonShape = 0; + break; - x2 = x1; - y2 = y1; - x1 = 0; - y1 = 0; - break; + case 3: + mode = 0; + _lastButtonShape = 0; + pageNum = 6; + + x2 = x1; + y2 = y1; + x1 = 0; + y1 = 0; + break; - default: - break; + default: + break; } _screen->drawShape(pageNum, _gameShapes[shapeIndex], x1, y1, 0, mode, _screen->_paletteOverlay1, 1); @@ -755,53 +755,53 @@ void LoLEngine::gui_triggerEvent(int eventType) { evt.type = Common::EVENT_KEYDOWN; switch (eventType) { - case 96: - evt.kbd.keycode = Common::KEYCODE_UP; - break; - case 102: - evt.kbd.keycode = Common::KEYCODE_RIGHT; - break; - case 97: - evt.kbd.keycode = Common::KEYCODE_DOWN; - break; - case 92: - evt.kbd.keycode = Common::KEYCODE_LEFT; - break; - case 91: - evt.kbd.keycode = Common::KEYCODE_HOME; - break; - case 101: - evt.kbd.keycode = Common::KEYCODE_PAGEUP; - break; - case 112: - evt.kbd.keycode = Common::KEYCODE_F1; - break; - case 113: - evt.kbd.keycode = Common::KEYCODE_F2; - break; - case 114: - evt.kbd.keycode = Common::KEYCODE_F3; - break; - case 25: - evt.kbd.keycode = Common::KEYCODE_o; - break; - case 20: - evt.kbd.keycode = Common::KEYCODE_r; - break; - case 110: - evt.kbd.keycode = Common::KEYCODE_ESCAPE; - break; - case 43: - evt.kbd.keycode = Common::KEYCODE_SPACE; - break; - case 61: - evt.kbd.keycode = Common::KEYCODE_RETURN; - break; - case 55: - evt.kbd.keycode = Common::KEYCODE_SLASH; - break; - default: - break; + case 96: + evt.kbd.keycode = Common::KEYCODE_UP; + break; + case 102: + evt.kbd.keycode = Common::KEYCODE_RIGHT; + break; + case 97: + evt.kbd.keycode = Common::KEYCODE_DOWN; + break; + case 92: + evt.kbd.keycode = Common::KEYCODE_LEFT; + break; + case 91: + evt.kbd.keycode = Common::KEYCODE_HOME; + break; + case 101: + evt.kbd.keycode = Common::KEYCODE_PAGEUP; + break; + case 112: + evt.kbd.keycode = Common::KEYCODE_F1; + break; + case 113: + evt.kbd.keycode = Common::KEYCODE_F2; + break; + case 114: + evt.kbd.keycode = Common::KEYCODE_F3; + break; + case 25: + evt.kbd.keycode = Common::KEYCODE_o; + break; + case 20: + evt.kbd.keycode = Common::KEYCODE_r; + break; + case 110: + evt.kbd.keycode = Common::KEYCODE_ESCAPE; + break; + case 43: + evt.kbd.keycode = Common::KEYCODE_SPACE; + break; + case 61: + evt.kbd.keycode = Common::KEYCODE_RETURN; + break; + case 55: + evt.kbd.keycode = Common::KEYCODE_SLASH; + break; + default: + break; } } @@ -1409,32 +1409,32 @@ int LoLEngine::clickedWall(Button *button) { int res = 0; switch (type) { - case 1: - res = clickedWallShape(block, dir); - break; + case 1: + res = clickedWallShape(block, dir); + break; - case 2: - res = clickedLeverOn(block, dir); - break; + case 2: + res = clickedLeverOn(block, dir); + break; - case 3: - res = clickedLeverOff(block, dir); - break; + case 3: + res = clickedLeverOff(block, dir); + break; - case 4: - res = clickedWallOnlyScript(block); - break; + case 4: + res = clickedWallOnlyScript(block); + break; - case 5: - res = clickedDoorSwitch(block, dir); - break; + case 5: + res = clickedDoorSwitch(block, dir); + break; - case 6: - res = clickedNiche(block, dir); - break; + case 6: + res = clickedNiche(block, dir); + break; - default: - break; + default: + break; } return res; diff --git a/engines/kyra/kyra_v1.cpp b/engines/kyra/kyra_v1.cpp index 9f3056e422..2ad6d54bc1 100644 --- a/engines/kyra/kyra_v1.cpp +++ b/engines/kyra/kyra_v1.cpp @@ -260,60 +260,60 @@ int KyraEngine_v1::checkInput(Button *buttonList, bool mainLoop) { quitGame(); } else { switch(event.kbd.keycode) { - case Common::KEYCODE_SPACE: - keys = 43; - break; - case Common::KEYCODE_RETURN: - keys = 61; - break; - case Common::KEYCODE_UP: - case Common::KEYCODE_KP8: - keys = 96; - break; - case Common::KEYCODE_RIGHT: - case Common::KEYCODE_KP6: - keys = 102; - break; - case Common::KEYCODE_DOWN: - case Common::KEYCODE_KP2: - keys = 97; - break; - case Common::KEYCODE_LEFT: - case Common::KEYCODE_KP4: - keys = 92; - break; - case Common::KEYCODE_HOME: - case Common::KEYCODE_KP7: - keys = 91; - break; - case Common::KEYCODE_PAGEUP: - case Common::KEYCODE_KP9: - keys = 101; - break; - case Common::KEYCODE_F1: - keys = 112; - break; - case Common::KEYCODE_F2: - keys = 113; - break; - case Common::KEYCODE_F3: - keys = 114; - break; - case Common::KEYCODE_o: - keys = 25; - break; - case Common::KEYCODE_r: - keys = 20; - break; - case Common::KEYCODE_SLASH: - keys = 55; - break; - case Common::KEYCODE_ESCAPE: - keys = 110; - break; - default: - keys = 0; - break; + case Common::KEYCODE_SPACE: + keys = 43; + break; + case Common::KEYCODE_RETURN: + keys = 61; + break; + case Common::KEYCODE_UP: + case Common::KEYCODE_KP8: + keys = 96; + break; + case Common::KEYCODE_RIGHT: + case Common::KEYCODE_KP6: + keys = 102; + break; + case Common::KEYCODE_DOWN: + case Common::KEYCODE_KP2: + keys = 97; + break; + case Common::KEYCODE_LEFT: + case Common::KEYCODE_KP4: + keys = 92; + break; + case Common::KEYCODE_HOME: + case Common::KEYCODE_KP7: + keys = 91; + break; + case Common::KEYCODE_PAGEUP: + case Common::KEYCODE_KP9: + keys = 101; + break; + case Common::KEYCODE_F1: + keys = 112; + break; + case Common::KEYCODE_F2: + keys = 113; + break; + case Common::KEYCODE_F3: + keys = 114; + break; + case Common::KEYCODE_o: + keys = 25; + break; + case Common::KEYCODE_r: + keys = 20; + break; + case Common::KEYCODE_SLASH: + keys = 55; + break; + case Common::KEYCODE_ESCAPE: + keys = 110; + break; + default: + keys = 0; + break; } // When we got an keypress, which we might need to handle, diff --git a/engines/kyra/lol.cpp b/engines/kyra/lol.cpp index d185651ca1..2d9bb388dd 100644 --- a/engines/kyra/lol.cpp +++ b/engines/kyra/lol.cpp @@ -1333,32 +1333,32 @@ void LoLEngine::increaseExperience(int charNum, int skill, uint32 points) { int inc = 0; switch (skill) { - case 0: - _txt->printMessage(0x8003, getLangString(0x4023), _characters[charNum].name); - inc = _rnd.getRandomNumberRng(4, 6); - _characters[charNum].hitPointsCur += inc; - _characters[charNum].hitPointsMax += inc; - break; + case 0: + _txt->printMessage(0x8003, getLangString(0x4023), _characters[charNum].name); + inc = _rnd.getRandomNumberRng(4, 6); + _characters[charNum].hitPointsCur += inc; + _characters[charNum].hitPointsMax += inc; + break; - case 1: - _txt->printMessage(0x8003, getLangString(0x4025), _characters[charNum].name); - inc = _rnd.getRandomNumberRng(2, 6); - _characters[charNum].hitPointsCur += inc; - _characters[charNum].hitPointsMax += inc; - break; + case 1: + _txt->printMessage(0x8003, getLangString(0x4025), _characters[charNum].name); + inc = _rnd.getRandomNumberRng(2, 6); + _characters[charNum].hitPointsCur += inc; + _characters[charNum].hitPointsMax += inc; + break; - case 2: - _txt->printMessage(0x8003, getLangString(0x4024), _characters[charNum].name); - inc = (_characters[charNum].defaultModifiers[6] * (_rnd.getRandomNumberRng(1, 8) + 17)) >> 8; - _characters[charNum].magicPointsCur += inc; - _characters[charNum].magicPointsMax += inc; - inc = _rnd.getRandomNumberRng(1, 6); - _characters[charNum].hitPointsCur += inc; - _characters[charNum].hitPointsMax += inc; - break; + case 2: + _txt->printMessage(0x8003, getLangString(0x4024), _characters[charNum].name); + inc = (_characters[charNum].defaultModifiers[6] * (_rnd.getRandomNumberRng(1, 8) + 17)) >> 8; + _characters[charNum].magicPointsCur += inc; + _characters[charNum].magicPointsMax += inc; + inc = _rnd.getRandomNumberRng(1, 6); + _characters[charNum].hitPointsCur += inc; + _characters[charNum].hitPointsMax += inc; + break; - default: - break; + default: + break; } snd_playSoundEffect(118, -1); @@ -2899,33 +2899,33 @@ void LoLEngine::characterHitpointsZero(int16 charNum, int deathFlag) { void LoLEngine::removeCharacterEffects(LoLCharacter *c, int first, int last) { for (int i = first; i <= last; i++) { switch (i - 1) { - case 0: - c->flags &= 0xfffb; - c->weaponHit = 0; - break; + case 0: + c->flags &= 0xfffb; + c->weaponHit = 0; + break; - case 1: - c->damageSuffered = 0; - break; + case 1: + c->damageSuffered = 0; + break; - case 2: - c->flags &= 0xffbf; - break; + case 2: + c->flags &= 0xffbf; + break; - case 3: - c->flags &= 0xff7f; - break; + case 3: + c->flags &= 0xff7f; + break; - case 4: - c->flags &= 0xfeff; - break; + case 4: + c->flags &= 0xfeff; + break; - case 6: - c->flags &= 0xefff; - break; + case 6: + c->flags &= 0xefff; + break; - default: - break; + default: + break; } for (int ii = 0; ii < 5; ii++) { @@ -2985,67 +2985,66 @@ void LoLEngine::applyMonsterAttackSkill(MonsterInPlay *monster, int16 target, in int t = 0; switch (monster->properties->attackSkillType - 1) { - case 0: - t = removeCharacterItem(target, 0x7ff); - if (t) { - giveItemToMonster(monster, t); - if (characterSays(0x4019, _characters[target].id, true)) - _txt->printMessage(6, getLangString(0x4019)); - } - break; - - case 1: - // poison character - paralyzePoisonCharacter(target, 0x80, 0x88, 100, 1); - break; + case 0: + t = removeCharacterItem(target, 0x7ff); + if (t) { + giveItemToMonster(monster, t); + if (characterSays(0x4019, _characters[target].id, true)) + _txt->printMessage(6, getLangString(0x4019)); + } + break; - case 2: - t = removeCharacterItem(target, 0x20); - if (t) { - deleteItem(t); - if (characterSays(0x401b, _characters[target].id, true)) - _txt->printMessage(6, getLangString(0x401b)); - } - break; + case 1: + // poison character + paralyzePoisonCharacter(target, 0x80, 0x88, 100, 1); + break; - case 3: - t = removeCharacterItem(target, 0x0f); - if (t) { - if (characterSays(0x401e, _characters[target].id, true)) - _txt->printMessage(6, getLangString(0x401e), _characters[target].name); - setItemPosition(t, monster->x, monster->y, 0, 1); - } - break; + case 2: + t = removeCharacterItem(target, 0x20); + if (t) { + deleteItem(t); + if (characterSays(0x401b, _characters[target].id, true)) + _txt->printMessage(6, getLangString(0x401b)); + } + break; - case 5: - if (_characters[target].magicPointsCur <= 0) - return; + case 3: + t = removeCharacterItem(target, 0x0f); + if (t) { + if (characterSays(0x401e, _characters[target].id, true)) + _txt->printMessage(6, getLangString(0x401e), _characters[target].name); + setItemPosition(t, monster->x, monster->y, 0, 1); + } + break; - monster->hitPoints += _characters[target].magicPointsCur; - _characters[target].magicPointsCur = 0; - gui_drawCharPortraitWithStats(target); - if (characterSays(0x4020, _characters[target].id, true)) - _txt->printMessage(6, getLangString(0x4020), _characters[target].name); - break; + case 5: + if (_characters[target].magicPointsCur <= 0) + return; - case 7: - stunCharacter(target); - break; + monster->hitPoints += _characters[target].magicPointsCur; + _characters[target].magicPointsCur = 0; + gui_drawCharPortraitWithStats(target); + if (characterSays(0x4020, _characters[target].id, true)) + _txt->printMessage(6, getLangString(0x4020), _characters[target].name); + break; - case 8: - monster->hitPoints += damage; - if (monster->hitPoints > monster->properties->hitPoints) - monster->hitPoints = monster->properties->hitPoints; + case 7: + stunCharacter(target); + break; - break; + case 8: + monster->hitPoints += damage; + if (monster->hitPoints > monster->properties->hitPoints) + monster->hitPoints = monster->properties->hitPoints; + break; - case 9: - // paralyze party (spider web) - paralyzePoisonAllCharacters(0x40, 0x48, 100); - break; + case 9: + // paralyze party (spider web) + paralyzePoisonAllCharacters(0x40, 0x48, 100); + break; - default: - break; + default: + break; } } @@ -3056,66 +3055,64 @@ void LoLEngine::applyMonsterDefenseSkill(MonsterInPlay *monster, int16 attacker, int itm = 0; switch (monster->properties->defenseSkillType - 1) { - case 0: - case 1: - if ((deathFlag & 0x3f) == 2 || skill) - return; - - for (int i = 0; i < 3 ; i++) { - itm = _characters[attacker].items[i]; - if (!itm) - continue; - if ((_itemProperties[_itemsInPlay[itm].itemPropertyIndex].protection & 0x3f) != deathFlag) - continue; + case 0: + case 1: + if ((deathFlag & 0x3f) == 2 || skill) + return; - removeCharacterItem(attacker, 0x7fff); - - if (monster->properties->defenseSkillType == 1) { - deleteItem(itm); - if (characterSays(0x401d, _characters[attacker].id, true)) - _txt->printMessage(6, getLangString(0x401d)); - } else { - giveItemToMonster(monster, itm); - if (characterSays(0x401c, _characters[attacker].id, true)) - _txt->printMessage(6, getLangString(0x401c)); - } - } - break; + for (int i = 0; i < 3 ; i++) { + itm = _characters[attacker].items[i]; + if (!itm) + continue; + if ((_itemProperties[_itemsInPlay[itm].itemPropertyIndex].protection & 0x3f) != deathFlag) + continue; - case 2: - if (!(deathFlag & 0x80)) - return; - monster->flags |= 8; - monster->direction = calcMonsterDirection(monster->x, monster->y, _partyPosX, _partyPosY) ^ 4; - setMonsterMode(monster, 9); - monster->fightCurTick = 30; - break; + removeCharacterItem(attacker, 0x7fff); - case 3: - if (deathFlag != 3) - return; - monster->hitPoints += damage; - if (monster->hitPoints > monster->properties->hitPoints) - monster->hitPoints = monster->properties->hitPoints; + if (monster->properties->defenseSkillType == 1) { + deleteItem(itm); + if (characterSays(0x401d, _characters[attacker].id, true)) + _txt->printMessage(6, getLangString(0x401d)); + } else { + giveItemToMonster(monster, itm); + if (characterSays(0x401c, _characters[attacker].id, true)) + _txt->printMessage(6, getLangString(0x401c)); + } + } + break; + case 2: + if (!(deathFlag & 0x80)) + return; + monster->flags |= 8; + monster->direction = calcMonsterDirection(monster->x, monster->y, _partyPosX, _partyPosY) ^ 4; + setMonsterMode(monster, 9); + monster->fightCurTick = 30; + break; - break; + case 3: + if (deathFlag != 3) + return; + monster->hitPoints += damage; + if (monster->hitPoints > monster->properties->hitPoints) + monster->hitPoints = monster->properties->hitPoints; + break; - case 4: - if (!(deathFlag & 0x80)) - return; - monster->hitPoints += damage; - if (monster->hitPoints > monster->properties->hitPoints) - monster->hitPoints = monster->properties->hitPoints; - break; + case 4: + if (!(deathFlag & 0x80)) + return; + monster->hitPoints += damage; + if (monster->hitPoints > monster->properties->hitPoints) + monster->hitPoints = monster->properties->hitPoints; + break; - case 5: - if ((deathFlag & 0x84) == 0x84) - monster->numDistAttacks++; - break; + case 5: + if ((deathFlag & 0x84) == 0x84) + monster->numDistAttacks++; + break; - default: - break; + default: + break; } } diff --git a/engines/kyra/scene_lol.cpp b/engines/kyra/scene_lol.cpp index a92f3f8240..79da4a994d 100644 --- a/engines/kyra/scene_lol.cpp +++ b/engines/kyra/scene_lol.cpp @@ -661,20 +661,20 @@ void LoLEngine::moveParty(uint16 direction, int unk1, int unk2, int buttonShape) if (_sceneDefaultUpdate) { switch (unk2) { - case 0: - movePartySmoothScrollUp(2); - break; - case 1: - movePartySmoothScrollDown(2); - break; - case 2: - movePartySmoothScrollLeft(1); - break; - case 3: - movePartySmoothScrollRight(1); - break; - default: - break; + case 0: + movePartySmoothScrollUp(2); + break; + case 1: + movePartySmoothScrollDown(2); + break; + case 2: + movePartySmoothScrollLeft(1); + break; + case 3: + movePartySmoothScrollRight(1); + break; + default: + break; } } else { gui_drawScene(0); diff --git a/engines/kyra/script_lol.cpp b/engines/kyra/script_lol.cpp index 4dca1e9bf0..ce752e6254 100644 --- a/engines/kyra/script_lol.cpp +++ b/engines/kyra/script_lol.cpp @@ -143,51 +143,51 @@ int LoLEngine::olol_moveParty(EMCState *script) { b.data0Val3 = b.data1Val3 = b.data2Val3 = 0x01; switch (mode) { - case 0: - clickedUpArrow(&b); - break; - - case 1: - clickedRightArrow(&b); - break; - - case 2: - clickedDownArrow(&b); - break; - - case 3: - clickedLeftArrow(&b); - break; - - case 4: - clickedTurnLeftArrow(&b); - break; - - case 5: - clickedTurnRightArrow(&b); - break; - - case 10: - case 11: - case 12: - case 13: - mode = ABS(mode - 10 - _currentDirection); - if (mode > 2) - mode = (mode ^ 2) * -1; - - while (mode) { - if (mode > 0) { - clickedTurnRightArrow(&b); - mode--; - } else { - clickedTurnLeftArrow(&b); - mode++; - } + case 0: + clickedUpArrow(&b); + break; + + case 1: + clickedRightArrow(&b); + break; + + case 2: + clickedDownArrow(&b); + break; + + case 3: + clickedLeftArrow(&b); + break; + + case 4: + clickedTurnLeftArrow(&b); + break; + + case 5: + clickedTurnRightArrow(&b); + break; + + case 10: + case 11: + case 12: + case 13: + mode = ABS(mode - 10 - _currentDirection); + if (mode > 2) + mode = (mode ^ 2) * -1; + + while (mode) { + if (mode > 0) { + clickedTurnRightArrow(&b); + mode--; + } else { + clickedTurnLeftArrow(&b); + mode++; } - break; + } + break; - default: - break; + default: + break; } return 1; @@ -1200,30 +1200,30 @@ int LoLEngine::olol_changeMonsterStat(EMCState *script) { uint16 y = 0; switch (stackPos(1)) { - case 0: - setMonsterMode(m, d); - break; - - case 1: - m->hitPoints = d; - break; - - case 2: - calcCoordinates(x, y, d, m->x & 0xff, m->y & 0xff); - if (!walkMonsterCheckDest(x, y, m, 7)) - placeMonster(m, x, y); - break; - - case 3: - setMonsterDirection(m, d << 1); - break; - - case 6: - m->flags |= d; - break; - - default: - break; + case 0: + setMonsterMode(m, d); + break; + + case 1: + m->hitPoints = d; + break; + + case 2: + calcCoordinates(x, y, d, m->x & 0xff, m->y & 0xff); + if (!walkMonsterCheckDest(x, y, m, 7)) + placeMonster(m, x, y); + break; + + case 3: + setMonsterDirection(m, d << 1); + break; + + case 6: + m->flags |= d; + break; + + default: + break; } return 1; @@ -1238,26 +1238,26 @@ int LoLEngine::olol_getMonsterStat(EMCState *script) { int d = stackPos(1); switch (d) { - case 0: - return m->mode; - case 1: - return m->hitPoints; - case 2: - return m->block; - case 3: - return m->facing; - case 4: - return m->type; - case 5: - return m->properties->hitPoints; - case 6: - return m->flags; - case 7: - return m->properties->flags; - case 8: - return _monsterAnimType[m->properties->shapeIndex]; - default: - break; + case 0: + return m->mode; + case 1: + return m->hitPoints; + case 2: + return m->block; + case 3: + return m->facing; + case 4: + return m->type; + case 5: + return m->properties->hitPoints; + case 6: + return m->flags; + case 7: + return m->properties->flags; + case 8: + return _monsterAnimType[m->properties->shapeIndex]; + default: + break; } return 0; @@ -2074,46 +2074,46 @@ int LoLEngine::tlol_fadeClearWindow(const TIM *tim, const uint16 *param) { uint8 *tmp = 0; switch (param[0]) { - case 0: + case 0: + _screen->fadeClearSceneWindow(10); + break; + + case 1: + tmp = _screen->getPalette(3); + memcpy(tmp + 0x180, _screen->_currentPalette + 0x180, 0x180); + _screen->loadSpecialColors(tmp); + _screen->fadePalette(tmp, 10); + _screen->_fadeFlag = 0; + break; + + case 2: + _screen->fadeToBlack(10); + break; + + case 3: + tmp = _screen->getPalette(3); + _screen->loadSpecialColors(tmp); + _screen->fadePalette(tmp, 10); + _screen->_fadeFlag = 0; + break; + + case 4: + if (_screen->_fadeFlag != 2) _screen->fadeClearSceneWindow(10); - break; - - case 1: - tmp = _screen->getPalette(3); - memcpy(tmp + 0x180, _screen->_currentPalette + 0x180, 0x180); - _screen->loadSpecialColors(tmp); - _screen->fadePalette(tmp, 10); - _screen->_fadeFlag = 0; - break; - - case 2: - _screen->fadeToBlack(10); - break; - - case 3: - tmp = _screen->getPalette(3); - _screen->loadSpecialColors(tmp); - _screen->fadePalette(tmp, 10); - _screen->_fadeFlag = 0; - break; - - case 4: - if (_screen->_fadeFlag != 2) - _screen->fadeClearSceneWindow(10); - gui_drawPlayField(); - setPaletteBrightness(_screen->_currentPalette, _brightness, _lampEffect); - _screen->_fadeFlag = 0; - break; - - case 5: - tmp = _screen->getPalette(3); - _screen->loadSpecialColors(tmp); - _screen->fadePalette(_screen->getPalette(1), 10); - _screen->_fadeFlag = 0; - break; - - default: - break; + gui_drawPlayField(); + setPaletteBrightness(_screen->_currentPalette, _brightness, _lampEffect); + _screen->_fadeFlag = 0; + break; + + case 5: + tmp = _screen->getPalette(3); + _screen->loadSpecialColors(tmp); + _screen->fadePalette(_screen->getPalette(1), 10); + _screen->_fadeFlag = 0; + break; + + default: + break; } return 1; diff --git a/engines/kyra/sprites_lol.cpp b/engines/kyra/sprites_lol.cpp index 06e974963a..dfe2323e32 100644 --- a/engines/kyra/sprites_lol.cpp +++ b/engines/kyra/sprites_lol.cpp @@ -583,22 +583,22 @@ void LoLEngine::drawBlockObjects(int blockArrayIndex) { if (ii != 8) { switch (_currentDirection - (_flyingObjects[ii].direction >> 1) + 3) { - case 1: - case 5: - shpIndex = _flyingItemShapes[shpIndex].shapeFront; - break; - case 3: - shpIndex = _flyingItemShapes[shpIndex].shapeBack; - break; - case 2: - case 6: - flg |= 0x10; - case 0: - case 4: - shpIndex = _flyingItemShapes[shpIndex].shapeLeft; - break; - default: - break; + case 1: + case 5: + shpIndex = _flyingItemShapes[shpIndex].shapeFront; + break; + case 3: + shpIndex = _flyingItemShapes[shpIndex].shapeBack; + break; + case 2: + case 6: + flg |= 0x10; + case 0: + case 4: + shpIndex = _flyingItemShapes[shpIndex].shapeLeft; + break; + default: + break; } shp = _thrownShapes[shpIndex]; @@ -699,60 +699,60 @@ void LoLEngine::drawMonster(uint16 id) { int LoLEngine::getMonsterCurFrame(MonsterInPlay *m, uint16 dirFlags) { int tmp = 0; switch (_monsterAnimType[m->properties->shapeIndex]) { - case 0: - // default - if (dirFlags) { - return (m->mode == 13) ? -1 : (dirFlags + m->currentSubFrame); - } else { - if (m->damageReceived) - return 12; - - switch (m->mode - 5) { - case 0: - return (m->properties->flags & 4) ? 13 : 0; - case 3: - return (m->fightCurTick + 13); - case 6: - return 14; - case 8: - return -1; - default: - return m->currentSubFrame; - } - } - break; - case 1: - // monsters whose outward appearance reflects the damage they have taken - tmp = (m->properties->hitPoints * _monsterModifiers[_monsterDifficulty]) >> 8; - if (m->hitPoints > (tmp >> 1)) - tmp = 0; - else if (m->hitPoints > (tmp >> 2)) - tmp = 4; - else - tmp = 8; - - switch (m->mode) { - case 8: - return (m->fightCurTick + tmp); - case 11: - return 12; - case 13: - return (m->fightCurTick + 12); - default: - return tmp; + case 0: + // default + if (dirFlags) { + return (m->mode == 13) ? -1 : (dirFlags + m->currentSubFrame); + } else { + if (m->damageReceived) + return 12; + + switch (m->mode - 5) { + case 0: + return (m->properties->flags & 4) ? 13 : 0; + case 3: + return (m->fightCurTick + 13); + case 6: + return 14; + case 8: + return -1; + default: + return m->currentSubFrame; } - - break; - case 2: - /////// - // TODO - break; - case 3: - /////// - // TODO - break; + } + break; + case 1: + // monsters whose outward appearance reflects the damage they have taken + tmp = (m->properties->hitPoints * _monsterModifiers[_monsterDifficulty]) >> 8; + if (m->hitPoints > (tmp >> 1)) + tmp = 0; + else if (m->hitPoints > (tmp >> 2)) + tmp = 4; + else + tmp = 8; + + switch (m->mode) { + case 8: + return (m->fightCurTick + tmp); + case 11: + return 12; + case 13: + return (m->fightCurTick + 12); default: - break; + return tmp; + } + + break; + case 2: + /////// + // TODO + break; + case 3: + /////// + // TODO + break; + default: + break; } return 0; @@ -1064,102 +1064,101 @@ void LoLEngine::updateMonster(MonsterInPlay *monster) { } switch (monster->mode) { - case 0: - case 1: - // friendly mode - if (monster->flags & 0x10) { - for (int i = 0; i < 30; i++) { - if (_monsters[i].mode == 1) - setMonsterMode(&_monsters[i], 7); - } - } else if (monster->mode == 1) { - moveMonster(monster); + case 0: + case 1: + // friendly mode + if (monster->flags & 0x10) { + for (int i = 0; i < 30; i++) { + if (_monsters[i].mode == 1) + setMonsterMode(&_monsters[i], 7); } - break; - - case 2: + } else if (monster->mode == 1) { moveMonster(monster); - break; - - case 3: - if (updateMonsterAdjustBlocks(monster)) - setMonsterMode(monster, 7); - for (int i = 0; i < 4; i++) { - if (calcNewBlockPosition(monster->block, i) == _currentBlock) - setMonsterMode(monster, 7); - } - break; - - case 4: - // straying around not tracing the party - moveStrayingMonster(monster); - break; + } + break; - case 5: - // second recovery phase after delivering an attack - // monsters will rearrange positions in this phase so as to allow a maximum - // number of monsters possible attacking at the same time - _partyAwake = true; - monster->fightCurTick--; - if ((monster->fightCurTick <= 0) || (checkDrawObjectSpace(_partyPosX, _partyPosY, monster->x, monster->y) > 256) || (monster->flags & 8)) - setMonsterMode(monster, 7); - else - rearrangeAttackingMonster(monster); - break; + case 2: + moveMonster(monster); + break; - case 6: - // same as mode 5, but without rearranging - if (--monster->fightCurTick <= 0) + case 3: + if (updateMonsterAdjustBlocks(monster)) + setMonsterMode(monster, 7); + for (int i = 0; i < 4; i++) { + if (calcNewBlockPosition(monster->block, i) == _currentBlock) setMonsterMode(monster, 7); - break; - - case 7: - // monster destination is set to current party position - // depending on the flag setting this gets updated each round - // monster can't change mode before arriving at destination and/or attacking the party - if (!chasePartyWithDistanceAttacks(monster)) - chasePartyWithCloseAttacks(monster); - checkSceneUpdateNeed(monster->block); - break; + } + break; + + case 4: + // straying around not tracing the party + moveStrayingMonster(monster); + break; + + case 5: + // second recovery phase after delivering an attack + // monsters will rearrange positions in this phase so as to allow a maximum + // number of monsters possible attacking at the same time + _partyAwake = true; + monster->fightCurTick--; + if ((monster->fightCurTick <= 0) || (checkDrawObjectSpace(_partyPosX, _partyPosY, monster->x, monster->y) > 256) || (monster->flags & 8)) + setMonsterMode(monster, 7); + else + rearrangeAttackingMonster(monster); + break; - case 8: - // first recovery phase after delivering an attack - if (++monster->fightCurTick > 2) { - setMonsterMode(monster, 5); - monster->fightCurTick = (int8) ((((8 << 8) / monster->properties->fightingStats[4]) * _monsterModifiers[6 + _monsterDifficulty]) >> 8); - } - checkSceneUpdateNeed(monster->block); - break; + case 6: + // same as mode 5, but without rearranging + if (--monster->fightCurTick <= 0) + setMonsterMode(monster, 7); + break; + + case 7: + // monster destination is set to current party position + // depending on the flag setting this gets updated each round + // monster can't change mode before arriving at destination and/or attacking the party + if (!chasePartyWithDistanceAttacks(monster)) + chasePartyWithCloseAttacks(monster); + checkSceneUpdateNeed(monster->block); + break; - case 9: - if (--monster->fightCurTick) { - chasePartyWithCloseAttacks(monster); - } else { - setMonsterMode(monster, 7); - monster->flags &= 0xfff7; - } + case 8: + // first recovery phase after delivering an attack + if (++monster->fightCurTick > 2) { + setMonsterMode(monster, 5); + monster->fightCurTick = (int8) ((((8 << 8) / monster->properties->fightingStats[4]) * _monsterModifiers[6 + _monsterDifficulty]) >> 8); + } + checkSceneUpdateNeed(monster->block); + break; - break; + case 9: + if (--monster->fightCurTick) { + chasePartyWithCloseAttacks(monster); + } else { + setMonsterMode(monster, 7); + monster->flags &= 0xfff7; + } + break; - case 12: - checkSceneUpdateNeed(monster->block); - if (++monster->fightCurTick > 13) - runLevelScriptCustom(0x404, -1, monster->id, monster->id, 0, 0); - break; + case 12: + checkSceneUpdateNeed(monster->block); + if (++monster->fightCurTick > 13) + runLevelScriptCustom(0x404, -1, monster->id, monster->id, 0, 0); + break; - case 13: - // monster death - if (++monster->fightCurTick > 2) - killMonster(monster); - checkSceneUpdateNeed(monster->block); - break; + case 13: + // monster death + if (++monster->fightCurTick > 2) + killMonster(monster); + checkSceneUpdateNeed(monster->block); + break; - case 14: - monster->damageReceived = 0; - break; + case 14: + monster->damageReceived = 0; + break; - default: - break; + default: + break; } if (monster->damageReceived) { diff --git a/engines/kyra/text_lol.cpp b/engines/kyra/text_lol.cpp index 1091fd3a4c..1afe84961a 100644 --- a/engines/kyra/text_lol.cpp +++ b/engines/kyra/text_lol.cpp @@ -249,35 +249,35 @@ void TextDisplayer_LoL::preprocessString(char *str, EMCState *script, const uint bool eos = false; switch (para) { - case '\0': - eos = true; - break; - case '#': - para = *++s; - switch (para) { - case 'E': - case 'G': - case 'X': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 's': - case 'u': - case 'x': - break; - default: - eos = true; - break; - } + case '\0': + eos = true; + break; + case '#': + para = *++s; + switch (para) { + case 'E': + case 'G': + case 'X': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 's': + case 'u': + case 'x': break; - case ' ': - case '+': - case '-': - ++s; default: + eos = true; break; + } + break; + case ' ': + case '+': + case '-': + ++s; + default: + break; } if (eos) @@ -286,16 +286,16 @@ void TextDisplayer_LoL::preprocessString(char *str, EMCState *script, const uint para = *s; switch (para) { - case '\0': - eos = true; - break; - case '0': - ++s; - break; - default: - while(para && para > 47 && para < 58) - para = *++s; - break; + case '\0': + eos = true; + break; + case '0': + ++s; + break; + default: + while(para && para > 47 && para < 58) + para = *++s; + break; } if (eos) @@ -304,32 +304,32 @@ void TextDisplayer_LoL::preprocessString(char *str, EMCState *script, const uint para = *s++; switch (para) { - case 'a': - snprintf(dst, 7, "%d", _scriptParameter); - dst += strlen(dst); - break; - - case 'n': - strcpy(dst, _vm->_characters[script ? script->stack[script->sp + paramIndex] : paramList[paramIndex]].name); - dst += strlen(dst); - break; - - case 's': - strcpy(dst, _vm->getLangString(script ? script->stack[script->sp + paramIndex] : paramList[paramIndex])); - dst += strlen(dst); - break; - - case 'X': - case 'd': - case 'u': - case 'x': - snprintf(dst, 7, "%d", script ? script->stack[script->sp + paramIndex] : paramList[paramIndex]); - dst += strlen(dst); - break; - - case '\0': - default: - continue; + case 'a': + snprintf(dst, 7, "%d", _scriptParameter); + dst += strlen(dst); + break; + + case 'n': + strcpy(dst, _vm->_characters[script ? script->stack[script->sp + paramIndex] : paramList[paramIndex]].name); + dst += strlen(dst); + break; + + case 's': + strcpy(dst, _vm->getLangString(script ? script->stack[script->sp + paramIndex] : paramList[paramIndex])); + dst += strlen(dst); + break; + + case 'X': + case 'd': + case 'u': + case 'x': + snprintf(dst, 7, "%d", script ? script->stack[script->sp + paramIndex] : paramList[paramIndex]); + dst += strlen(dst); + break; + + case '\0': + default: + continue; } } *dst = 0; @@ -376,66 +376,66 @@ void TextDisplayer_LoL::displayText(char *str, ...) { } switch (c - 1) { - case 0: - printLine(_currentLine); - textPageBreak(); - _numCharsPrinted = 0; - break; - - case 1: - printLine(_currentLine); - _textDimData[sdx].color2 = parseCommand(); - break; - - case 5: - printLine(_currentLine); - _textDimData[sdx].color1 = parseCommand(); - break; - - case 8: - //TODO - break; - - case 11: - //TODO - break; - - case 12: + case 0: + printLine(_currentLine); + textPageBreak(); + _numCharsPrinted = 0; + break; + + case 1: + printLine(_currentLine); + _textDimData[sdx].color2 = parseCommand(); + break; + + case 5: + printLine(_currentLine); + _textDimData[sdx].color1 = parseCommand(); + break; + + case 8: + //TODO + break; + + case 11: + //TODO + break; + + case 12: + printLine(_currentLine); + _lineCount++; + _textDimData[sdx].column = 0; + _textDimData[sdx].line++; + break; + + case 18: + //TODO + break; + + case 23: + //TODO + break; + + case 24: + //TODO + break; + + case 26: + //TODO + break; + + case 28: + //TODO + break; + + default: + _lineWidth += _screen->getCharWidth(c); + _currentLine[_numCharsLeft++] = c; + _currentLine[_numCharsLeft] = 0; + + if ((_textDimData[sdx].column + _lineWidth) > (sd->w << 3)) printLine(_currentLine); - _lineCount++; - _textDimData[sdx].column = 0; - _textDimData[sdx].line++; - break; - - case 18: - //TODO - break; - - case 23: - //TODO - break; - - case 24: - //TODO - break; - - case 26: - //TODO - break; - - case 28: - //TODO - break; - - default: - _lineWidth += _screen->getCharWidth(c); - _currentLine[_numCharsLeft++] = c; - _currentLine[_numCharsLeft] = 0; - - if ((_textDimData[sdx].column + _lineWidth) > (sd->w << 3)) - printLine(_currentLine); - - break; + + break; } c = parseCommand(); @@ -654,25 +654,25 @@ void TextDisplayer_LoL::textPageBreak() { _vm->gui_notifyButtonListChanged(); switch (inputFlag) { - case 43: - case 61: + case 43: + case 61: + loop = false; + break; + + case 199: + case 201: + if (_vm->posWithinRect(_vm->_mouseX, _vm->_mouseY, x, y, x + 74, y + 9)) + target = true; + break; + + case 200: + case 202: + if (target) loop = false; - break; - - case 199: - case 201: - if (_vm->posWithinRect(_vm->_mouseX, _vm->_mouseY, x, y, x + 74, y + 9)) - target = true; - break; - - case 200: - case 202: - if (target) - loop = false; - break; + break; - default: - break; + default: + break; } } while (loop); |