KYRA: Some formatting fixes.
This commit is contained in:
parent
1a5026570a
commit
c96e5de291
10 changed files with 173 additions and 141 deletions
|
@ -26,10 +26,10 @@
|
||||||
namespace Kyra {
|
namespace Kyra {
|
||||||
|
|
||||||
void KyraEngine_v2::allocAnimObjects(int actors, int anims, int items) {
|
void KyraEngine_v2::allocAnimObjects(int actors, int anims, int items) {
|
||||||
_animObjects = new AnimObj[actors+anims+items];
|
_animObjects = new AnimObj[actors + anims + items];
|
||||||
assert(_animObjects);
|
assert(_animObjects);
|
||||||
|
|
||||||
memset(_animObjects, 0, sizeof(AnimObj)*(actors+anims+items));
|
memset(_animObjects, 0, sizeof(AnimObj) * (actors + anims + items));
|
||||||
|
|
||||||
_animActor = _animObjects;
|
_animActor = _animObjects;
|
||||||
_animAnims = _animObjects + actors;
|
_animAnims = _animObjects + actors;
|
||||||
|
|
|
@ -169,7 +169,7 @@ bool CharacterGenerator::start(EoBCharacter *characters, uint8 ***faceShapes) {
|
||||||
_vm->sound()->playTrack(_vm->game() == GI_EOB1 ? 20 : 13);
|
_vm->sound()->playTrack(_vm->game() == GI_EOB1 ? 20 : 13);
|
||||||
_activeBox = 0;
|
_activeBox = 0;
|
||||||
|
|
||||||
for (bool loop = true; loop && (!_vm->shouldQuit()); ) {
|
for (bool loop = true; loop && (!_vm->shouldQuit());) {
|
||||||
_vm->_gui->updateBoxFrameHighLight(_activeBox + 6);
|
_vm->_gui->updateBoxFrameHighLight(_activeBox + 6);
|
||||||
int inputFlag = getInput(_vm->_activeButtons);
|
int inputFlag = getInput(_vm->_activeButtons);
|
||||||
_vm->removeInputTop();
|
_vm->removeInputTop();
|
||||||
|
@ -260,7 +260,7 @@ void CharacterGenerator::init() {
|
||||||
|
|
||||||
for (int i = 0; i < 17; i++) {
|
for (int i = 0; i < 17; i++) {
|
||||||
const CreatePartyModButton *c = &_chargenModButtons[i];
|
const CreatePartyModButton *c = &_chargenModButtons[i];
|
||||||
_chargenButtonLabels[i] = c->labelW? _screen->encodeShape(c->encodeLabelX, c->encodeLabelY, c->labelW, c->labelH, true) : 0;
|
_chargenButtonLabels[i] = c->labelW ? _screen->encodeShape(c->encodeLabelX, c->encodeLabelY, c->labelW, c->labelH, true) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
_screen->copyPage(3, 2);
|
_screen->copyPage(3, 2);
|
||||||
|
@ -380,7 +380,7 @@ int CharacterGenerator::viewDeleteCharacter() {
|
||||||
printStats(_activeBox, 2);
|
printStats(_activeBox, 2);
|
||||||
|
|
||||||
int res = 0;
|
int res = 0;
|
||||||
for (bool loop = true; loop && _characters[_activeBox].name[0] && !_vm->shouldQuit(); ) {
|
for (bool loop = true; loop && _characters[_activeBox].name[0] && !_vm->shouldQuit();) {
|
||||||
_vm->_gui->updateBoxFrameHighLight(_activeBox + 6);
|
_vm->_gui->updateBoxFrameHighLight(_activeBox + 6);
|
||||||
int inputFlag = getInput(_vm->_activeButtons);
|
int inputFlag = getInput(_vm->_activeButtons);
|
||||||
int cbx = _activeBox;
|
int cbx = _activeBox;
|
||||||
|
@ -467,7 +467,7 @@ void CharacterGenerator::createPartyMember() {
|
||||||
generateStats(_activeBox);
|
generateStats(_activeBox);
|
||||||
statsAndFacesMenu();
|
statsAndFacesMenu();
|
||||||
|
|
||||||
for (_characters[_activeBox].name[0] = 0; _characters[_activeBox].name[0] == 0 && !_vm->shouldQuit(); ) {
|
for (_characters[_activeBox].name[0] = 0; _characters[_activeBox].name[0] == 0 && !_vm->shouldQuit();) {
|
||||||
processFaceMenuSelection(_chargenMinStats[6]);
|
processFaceMenuSelection(_chargenMinStats[6]);
|
||||||
printStats(_activeBox, 0);
|
printStats(_activeBox, 0);
|
||||||
_screen->printShadedText(_chargenStrings2[11], 149, 100, 9, 0);
|
_screen->printShadedText(_chargenStrings2[11], 149, 100, 9, 0);
|
||||||
|
@ -594,10 +594,10 @@ int CharacterGenerator::getInput(Button *buttonList) {
|
||||||
if (_vm->game() == GI_EOB1 && _vm->sound()->checkTrigger()) {
|
if (_vm->game() == GI_EOB1 && _vm->sound()->checkTrigger()) {
|
||||||
_vm->sound()->resetTrigger();
|
_vm->sound()->resetTrigger();
|
||||||
_vm->sound()->playTrack(20);
|
_vm->sound()->playTrack(20);
|
||||||
// WORKAROUND for EOB II: The original implements the same sound trigger check as in EOB I.
|
|
||||||
// However, Westwood seems to have forgotten to set the trigger at the end of the AdLib song,
|
|
||||||
// so that the music will not loop. We simply check whether the sound driver is still playing.
|
|
||||||
} else if (_vm->game() == GI_EOB2 && !_vm->sound()->isPlaying()) {
|
} else if (_vm->game() == GI_EOB2 && !_vm->sound()->isPlaying()) {
|
||||||
|
// WORKAROUND for EOB II: The original implements the same sound trigger check as in EOB I.
|
||||||
|
// However, Westwood seems to have forgotten to set the trigger at the end of the AdLib song,
|
||||||
|
// so that the music will not loop. We simply check whether the sound driver is still playing.
|
||||||
_vm->delay(3 * _vm->_tickLength);
|
_vm->delay(3 * _vm->_tickLength);
|
||||||
_vm->sound()->playTrack(13);
|
_vm->sound()->playTrack(13);
|
||||||
}
|
}
|
||||||
|
@ -678,7 +678,7 @@ void CharacterGenerator::modifyMenu() {
|
||||||
EoBCharacter *c = &_characters[_activeBox];
|
EoBCharacter *c = &_characters[_activeBox];
|
||||||
int8 hpLO = c->hitPointsCur;
|
int8 hpLO = c->hitPointsCur;
|
||||||
|
|
||||||
for (int i = 0; i >= 0 && i < 7; ) {
|
for (int i = 0; i >= 0 && i < 7;) {
|
||||||
switch (i) {
|
switch (i) {
|
||||||
case 0:
|
case 0:
|
||||||
i = modifyStat(i, &c->strengthCur, &c->strengthExtCur);
|
i = modifyStat(i, &c->strengthCur, &c->strengthExtCur);
|
||||||
|
@ -959,8 +959,8 @@ int CharacterGenerator::rollDice() {
|
||||||
}
|
}
|
||||||
|
|
||||||
int CharacterGenerator::modifyStat(int index, int8 *stat1, int8 *stat2) {
|
int CharacterGenerator::modifyStat(int index, int8 *stat1, int8 *stat2) {
|
||||||
uint8 *s1 = (uint8*) stat1;
|
uint8 *s1 = (uint8 *)stat1;
|
||||||
uint8 *s2 = (uint8*) stat2;
|
uint8 *s2 = (uint8 *)stat2;
|
||||||
|
|
||||||
initButtonsFromList(31, 10);
|
initButtonsFromList(31, 10);
|
||||||
Button *b = _vm->gui_getButton(_vm->_activeButtons, index + 1);
|
Button *b = _vm->gui_getButton(_vm->_activeButtons, index + 1);
|
||||||
|
@ -984,10 +984,10 @@ int CharacterGenerator::modifyStat(int index, int8 *stat1, int8 *stat2) {
|
||||||
_chargenMinStats[6] = getMinHp(c->cClass, c->constitutionCur, c->level[0], c->level[1], c->level[2]);
|
_chargenMinStats[6] = getMinHp(c->cClass, c->constitutionCur, c->level[0], c->level[1], c->level[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (bool loop = true; loop && !_vm->shouldQuit(); ) {
|
for (bool loop = true; loop && !_vm->shouldQuit();) {
|
||||||
uint8 v1 = *s1;
|
uint8 v1 = *s1;
|
||||||
updateMagicShapes();
|
updateMagicShapes();
|
||||||
int inputFlag = getInput(_vm->_activeButtons);
|
int inputFlag = getInput(_vm->_activeButtons);
|
||||||
_vm->removeInputTop();
|
_vm->removeInputTop();
|
||||||
|
|
||||||
if (inputFlag == _vm->_keyMap[Common::KEYCODE_LEFT] || inputFlag == _vm->_keyMap[Common::KEYCODE_KP4] || inputFlag == _vm->_keyMap[Common::KEYCODE_MINUS] || inputFlag == _vm->_keyMap[Common::KEYCODE_KP_MINUS] || inputFlag == 0x8009) {
|
if (inputFlag == _vm->_keyMap[Common::KEYCODE_LEFT] || inputFlag == _vm->_keyMap[Common::KEYCODE_KP4] || inputFlag == _vm->_keyMap[Common::KEYCODE_MINUS] || inputFlag == _vm->_keyMap[Common::KEYCODE_KP_MINUS] || inputFlag == 0x8009) {
|
||||||
|
@ -1139,9 +1139,19 @@ void CharacterGenerator::finish() {
|
||||||
_screen->updateScreen();
|
_screen->updateScreen();
|
||||||
|
|
||||||
if (_vm->game() == GI_EOB1) {
|
if (_vm->game() == GI_EOB1) {
|
||||||
static const int8 classDefaultItemsList[] = { 1, 17, 2, 17, 46, -1, 4, -1, 5, -1, 6, 2, 7, -1, 8, -1, 9, 21, 10, 2, 31, 2 };
|
static const int8 classDefaultItemsList[] = {
|
||||||
static const int8 classDefaultItemsListIndex[] = { 4, 8, 0, -1, 4, 3, 0, -1, 4, 10, 0, 8, 3, 6, 1, -1, 2, 7, 0, -1,
|
1, 17, 2, 17, 46, -1, 4, -1, 5, -1, 6,
|
||||||
4, 5, 0, -1, 4, 7, 0, 8, 4, 5, 0, 8, 4, 6, 8, 8, 4, 6, 5, 8, 3, 6, 5, -1, 2, 7, 5, 0, 4, 6, 7, 0, 4, 3, 7, 0, 2, 6, 7, 1 };
|
2, 7, -1, 8, -1, 9, 21, 10, 2, 31, 2
|
||||||
|
};
|
||||||
|
|
||||||
|
static const int8 classDefaultItemsListIndex[] = {
|
||||||
|
4, 8, 0, -1, 4, 3, 0, -1, 4, 10,
|
||||||
|
0, 8, 3, 6, 1, -1, 2, 7, 0, -1,
|
||||||
|
4, 5, 0, -1, 4, 7, 0, 8, 4, 5,
|
||||||
|
0, 8, 4, 6, 8, 8, 4, 6, 5, 8,
|
||||||
|
3, 6, 5, -1, 2, 7, 5, 0, 4, 6,
|
||||||
|
7, 0, 4, 3, 7, 0, 2, 6, 7, 1
|
||||||
|
};
|
||||||
|
|
||||||
_characters[0].inventory[2] = _vm->duplicateItem(35);
|
_characters[0].inventory[2] = _vm->duplicateItem(35);
|
||||||
|
|
||||||
|
@ -1416,13 +1426,13 @@ const int32 CharacterGenerator::_classMenuMasks[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
const int32 CharacterGenerator::_alignmentMenuMasks[] = {
|
const int32 CharacterGenerator::_alignmentMenuMasks[] = {
|
||||||
0x01FF, 0x0007, 0x0001, 0x01FF, 0x01FF, 0x01FE, 0x01FF, 0x01FE,
|
0x01FF, 0x0007, 0x0001, 0x01FF, 0x01FF, 0x01FE, 0x01FF, 0x01FE,
|
||||||
0x01FF, 0x01FE, 0x01FE, 0x01FE, 0x01FF, 0x0007, 0x01FF
|
0x01FF, 0x01FE, 0x01FE, 0x01FE, 0x01FF, 0x0007, 0x01FF
|
||||||
};
|
};
|
||||||
|
|
||||||
const int16 CharacterGenerator::_raceModifiers[] = {
|
const int16 CharacterGenerator::_raceModifiers[] = {
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 0, -1, 0, 0, 1, 0, 0
|
0, 0, 0, 0, 1, -1, 0, 1, -1, 0, 0, 0, -1, 0, 0, 1, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
// Transfer Party
|
// Transfer Party
|
||||||
|
@ -1627,7 +1637,7 @@ int TransferPartyWiz::selectCharactersMenu() {
|
||||||
int highlight = 0;
|
int highlight = 0;
|
||||||
bool update = false;
|
bool update = false;
|
||||||
|
|
||||||
for (bool loop = true; loop && (!_vm->shouldQuit()); ) {
|
for (bool loop = true; loop && (!_vm->shouldQuit());) {
|
||||||
int inputFlag = _vm->checkInput(0, false, 0) & 0x8ff;
|
int inputFlag = _vm->checkInput(0, false, 0) & 0x8ff;
|
||||||
_vm->removeInputTop();
|
_vm->removeInputTop();
|
||||||
|
|
||||||
|
@ -1843,7 +1853,7 @@ Item TransferPartyWiz::convertItem(Item eob1Item) {
|
||||||
itm2->type = itm1->type;
|
itm2->type = itm1->type;
|
||||||
itm2->level = 0xff;
|
itm2->level = 0xff;
|
||||||
|
|
||||||
switch(itm2->type) {
|
switch (itm2->type) {
|
||||||
case 35:
|
case 35:
|
||||||
itm1->value += 25;
|
itm1->value += 25;
|
||||||
// fall through
|
// fall through
|
||||||
|
@ -1960,6 +1970,6 @@ bool EoBCoreEngine::startPartyTransfer() {
|
||||||
return TransferPartyWiz(this, _screen).start();
|
return TransferPartyWiz(this, _screen).start();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // End of namespace Kyra
|
} // End of namespace Kyra
|
||||||
|
|
||||||
#endif // ENABLE_EOB
|
#endif // ENABLE_EOB
|
||||||
|
|
|
@ -36,9 +36,12 @@
|
||||||
|
|
||||||
namespace Kyra {
|
namespace Kyra {
|
||||||
|
|
||||||
EoBCoreEngine::EoBCoreEngine(OSystem *system, const GameFlags &flags) : KyraRpgEngine(system, flags), _numLargeItemShapes(flags.gameID == GI_EOB1 ? 14 : 11),
|
EoBCoreEngine::EoBCoreEngine(OSystem *system, const GameFlags &flags)
|
||||||
_numSmallItemShapes(flags.gameID == GI_EOB1 ? 23 : 26), _numThrownItemShapes(flags.gameID == GI_EOB1 ? 12 : 9), _numItemIconShapes(flags.gameID == GI_EOB1 ? 89 : 112),
|
: KyraRpgEngine(system, flags), _numLargeItemShapes(flags.gameID == GI_EOB1 ? 14 : 11),
|
||||||
_teleporterWallId(flags.gameID == GI_EOB1 ? 52 : 44) {
|
_numSmallItemShapes(flags.gameID == GI_EOB1 ? 23 : 26),
|
||||||
|
_numThrownItemShapes(flags.gameID == GI_EOB1 ? 12 : 9),
|
||||||
|
_numItemIconShapes(flags.gameID == GI_EOB1 ? 89 : 112),
|
||||||
|
_teleporterWallId(flags.gameID == GI_EOB1 ? 52 : 44) {
|
||||||
_screen = 0;
|
_screen = 0;
|
||||||
_gui = 0;
|
_gui = 0;
|
||||||
_debugger = 0;
|
_debugger = 0;
|
||||||
|
@ -52,10 +55,10 @@ EoBCoreEngine::EoBCoreEngine(OSystem *system, const GameFlags &flags) : KyraRpgE
|
||||||
_flashShapeTimer = 0;
|
_flashShapeTimer = 0;
|
||||||
_drawSceneTimer = 0;
|
_drawSceneTimer = 0;
|
||||||
|
|
||||||
_largeItemShapes = _smallItemShapes = _thrownItemShapes = _spellShapes = _firebeamShapes = _itemIconShapes =
|
_largeItemShapes = _smallItemShapes = _thrownItemShapes = _spellShapes = _firebeamShapes = 0;
|
||||||
_wallOfForceShapes = _teleporterShapes = _sparkShapes = _compassShapes = 0;
|
_itemIconShapes = _wallOfForceShapes = _teleporterShapes = _sparkShapes = _compassShapes = 0;
|
||||||
_redSplatShape = _greenSplatShape = _deadCharShape = _disabledCharGrid = _blackBoxSmallGrid =
|
_redSplatShape = _greenSplatShape = _deadCharShape = _disabledCharGrid = 0;
|
||||||
_weaponSlotGrid = _blackBoxWideGrid = _lightningColumnShape = 0;
|
_blackBoxSmallGrid = _weaponSlotGrid = _blackBoxWideGrid = _lightningColumnShape = 0;
|
||||||
_tempIconShape = 0;
|
_tempIconShape = 0;
|
||||||
|
|
||||||
_monsterDustStrings = 0;
|
_monsterDustStrings = 0;
|
||||||
|
@ -149,42 +152,62 @@ EoBCoreEngine::EoBCoreEngine(OSystem *system, const GameFlags &flags) : KyraRpgE
|
||||||
_wallsOfForce = 0;
|
_wallsOfForce = 0;
|
||||||
|
|
||||||
_rrCount = 0;
|
_rrCount = 0;
|
||||||
memset(_rrNames, 0, 10 * sizeof(const char*));
|
memset(_rrNames, 0, 10 * sizeof(const char *));
|
||||||
memset(_rrId, 0, 10 * sizeof(int8));
|
memset(_rrId, 0, 10 * sizeof(int8));
|
||||||
|
|
||||||
_mainMenuStrings = _levelGainStrings = _monsterSpecAttStrings = _characterGuiStringsHp = _characterGuiStringsWp = _characterGuiStringsWr = _characterGuiStringsSt =
|
_mainMenuStrings = _levelGainStrings = _monsterSpecAttStrings = _characterGuiStringsHp = 0;
|
||||||
_characterGuiStringsIn = _characterStatusStrings7 = _characterStatusStrings8 = _characterStatusStrings9 = _characterStatusStrings12 = _characterStatusStrings13 = 0;
|
_characterGuiStringsWp = _characterGuiStringsWr = _characterGuiStringsSt = 0;
|
||||||
_classModifierFlags = _saveThrowLevelIndex = _saveThrowModDiv = _saveThrowModExt = _wandTypes = _drawObjPosIndex = _flightObjFlipIndex = _expObjectTblIndex =
|
_characterGuiStringsIn = _characterStatusStrings7 = _characterStatusStrings8 = 0;
|
||||||
_expObjectShpStart = _expObjectTlMode = _expObjectAnimTbl1 = _expObjectAnimTbl2 = _expObjectAnimTbl3 = 0;
|
_characterStatusStrings9 = _characterStatusStrings12 = _characterStatusStrings13 = 0;
|
||||||
_monsterStepTable0 = _monsterStepTable1 = _monsterStepTable2 = _monsterStepTable3 = _projectileWeaponAmmoTypes = _flightObjShpMap = _flightObjSclIndex = 0;
|
_classModifierFlags = _saveThrowLevelIndex = _saveThrowModDiv = _saveThrowModExt = 0;
|
||||||
_monsterCloseAttPosTable1 = _monsterCloseAttPosTable2 = _monsterCloseAttChkTable1 = _monsterCloseAttChkTable2 = _monsterCloseAttDstTable1 = _monsterCloseAttDstTable2 = 0;
|
_wandTypes = _drawObjPosIndex = _flightObjFlipIndex = _expObjectTblIndex = 0;
|
||||||
_monsterProximityTable = _findBlockMonstersTable = _wallOfForceDsY = _wallOfForceDsNumW = _wallOfForceDsNumH = _wallOfForceShpId = _wllFlagPreset = _teleporterShapeCoords = 0;
|
_expObjectShpStart = _expObjectTlMode = _expObjectAnimTbl1 = _expObjectAnimTbl2 = _expObjectAnimTbl3 = 0;
|
||||||
_monsterCloseAttUnkTable = _monsterFrmOffsTable1 = _monsterFrmOffsTable2 = _monsterDirChangeTable = _portalSeq = 0;
|
_monsterStepTable0 = _monsterStepTable1 = _monsterStepTable2 = _monsterStepTable3 = 0;
|
||||||
|
_projectileWeaponAmmoTypes = _flightObjShpMap = _flightObjSclIndex = 0;
|
||||||
|
_monsterCloseAttPosTable1 = _monsterCloseAttPosTable2 = _monsterCloseAttChkTable1 = 0;
|
||||||
|
_monsterCloseAttChkTable2 = _monsterCloseAttDstTable1 = _monsterCloseAttDstTable2 = 0;
|
||||||
|
_monsterProximityTable = _findBlockMonstersTable = _wallOfForceDsY = _wallOfForceDsNumW = 0;
|
||||||
|
_wallOfForceDsNumH = _wallOfForceShpId = _wllFlagPreset = _teleporterShapeCoords = 0;
|
||||||
|
_monsterCloseAttUnkTable = _monsterFrmOffsTable1 = _monsterFrmOffsTable2 = 0;
|
||||||
|
_monsterDirChangeTable = _portalSeq = 0;
|
||||||
_wallOfForceDsX = 0;
|
_wallOfForceDsX = 0;
|
||||||
_expObjectAnimTbl1Size = _expObjectAnimTbl2Size = _expObjectAnimTbl3Size = _wllFlagPresetSize = _scriptTimersCount = _buttonList1Size = _buttonList2Size =
|
_expObjectAnimTbl1Size = _expObjectAnimTbl2Size = _expObjectAnimTbl3Size = 0;
|
||||||
_buttonList3Size = _buttonList4Size = _buttonList5Size = _buttonList6Size = _buttonList7Size = _buttonList8Size = 0;
|
_wllFlagPresetSize = _scriptTimersCount = _buttonList1Size = _buttonList2Size = 0;
|
||||||
|
_buttonList3Size = _buttonList4Size = _buttonList5Size = _buttonList6Size = 0;
|
||||||
|
_buttonList7Size = _buttonList8Size = 0;
|
||||||
_inventorySlotsY = _mnDef = 0;
|
_inventorySlotsY = _mnDef = 0;
|
||||||
_transferStringsScummVM = 0;
|
_transferStringsScummVM = 0;
|
||||||
_buttonDefs = 0;
|
_buttonDefs = 0;
|
||||||
_npcPreset = 0;
|
_npcPreset = 0;
|
||||||
_chargenStatStrings = _chargenRaceSexStrings = _chargenClassStrings = _chargenAlignmentStrings = _pryDoorStrings = _warningStrings = _ripItemStrings =
|
_chargenStatStrings = _chargenRaceSexStrings = _chargenClassStrings = 0;
|
||||||
_cursedString = _enchantedString = _magicObjectStrings = _magicObjectString5 = _patternSuffix = _patternGrFix1 = _patternGrFix2 = _validateArmorString =
|
_chargenAlignmentStrings = _pryDoorStrings = _warningStrings = _ripItemStrings = 0;
|
||||||
_validateCursedString = _validateNoDropString = _potionStrings = _wandStrings = _itemMisuseStrings = _suffixStringsRings = _suffixStringsPotions =
|
_cursedString = _enchantedString = _magicObjectStrings = _magicObjectString5 = 0;
|
||||||
_suffixStringsWands = _takenStrings = _potionEffectStrings = _yesNoStrings = _npcMaxStrings = _okStrings = _npcJoinStrings = _cancelStrings =
|
_patternSuffix = _patternGrFix1 = _patternGrFix2 = _validateArmorString = 0;
|
||||||
_abortStrings = _saveLoadStrings = _mnWord = _mnPrompt = _bookNumbers = _mageSpellList = _clericSpellList = _spellNames = _magicStrings1 = _magicStrings2 =
|
_validateCursedString = _validateNoDropString = _potionStrings = _wandStrings = 0;
|
||||||
_magicStrings3 = _magicStrings4 = _magicStrings6 = _magicStrings7 = _magicStrings8 = 0;
|
_itemMisuseStrings = _suffixStringsRings = _suffixStringsPotions = 0;
|
||||||
|
_suffixStringsWands = _takenStrings = _potionEffectStrings = _yesNoStrings = 0;
|
||||||
|
_npcMaxStrings = _okStrings = _npcJoinStrings = _cancelStrings = 0;
|
||||||
|
_abortStrings = _saveLoadStrings = _mnWord = _mnPrompt = _bookNumbers = 0;
|
||||||
|
_mageSpellList = _clericSpellList = _spellNames = _magicStrings1 = 0;
|
||||||
|
_magicStrings2 = _magicStrings3 = _magicStrings4 = _magicStrings6 = 0;
|
||||||
|
_magicStrings7 = _magicStrings8 = 0;
|
||||||
_spellAnimBuffer = 0;
|
_spellAnimBuffer = 0;
|
||||||
_sparkEffectDefSteps = _sparkEffectDefSubSteps = _sparkEffectDefShift = _sparkEffectDefAdd = _sparkEffectDefX = _sparkEffectDefY = _sparkEffectOfShift =
|
_sparkEffectDefSteps = _sparkEffectDefSubSteps = _sparkEffectDefShift = 0;
|
||||||
_sparkEffectOfX = _sparkEffectOfY = _magicFlightObjectProperties = _turnUndeadEffect = _burningHandsDest = _coneOfColdGfxTbl = 0;
|
_sparkEffectDefAdd = _sparkEffectDefX = _sparkEffectDefY = _sparkEffectOfShift = 0;
|
||||||
|
_sparkEffectOfX = _sparkEffectOfY = _magicFlightObjectProperties = 0;
|
||||||
|
_turnUndeadEffect = _burningHandsDest = _coneOfColdGfxTbl = 0;
|
||||||
_sparkEffectOfFlags1 = _sparkEffectOfFlags2 = 0;
|
_sparkEffectOfFlags1 = _sparkEffectOfFlags2 = 0;
|
||||||
_coneOfColdDest1 = _coneOfColdDest2 = _coneOfColdDest3 = _coneOfColdDest4 = 0;
|
_coneOfColdDest1 = _coneOfColdDest2 = _coneOfColdDest3 = _coneOfColdDest4 = 0;
|
||||||
_coneOfColdGfxTblSize = 0;
|
_coneOfColdGfxTblSize = 0;
|
||||||
_menuButtonDefs = 0;
|
_menuButtonDefs = 0;
|
||||||
_menuStringsMain = _menuStringsSaveLoad = _menuStringsOnOff = _menuStringsSpells = _menuStringsRest = _menuStringsDrop = _menuStringsExit = _menuStringsStarve =
|
_menuStringsMain = _menuStringsSaveLoad = _menuStringsOnOff = _menuStringsSpells = 0;
|
||||||
_menuStringsScribe = _menuStringsDrop2 = _menuStringsHead = _menuStringsPoison = _menuStringsMgc = _menuStringsPrefs = _menuStringsRest2 = _menuStringsRest3 =
|
_menuStringsRest = _menuStringsDrop = _menuStringsExit = _menuStringsStarve = 0;
|
||||||
_menuStringsRest4 = _menuStringsDefeat = _menuStringsTransfer = _menuStringsSpec = _menuStringsSpellNo = _menuYesNoStrings = 0;
|
_menuStringsScribe = _menuStringsDrop2 = _menuStringsHead = _menuStringsPoison = 0;
|
||||||
|
_menuStringsMgc = _menuStringsPrefs = _menuStringsRest2 = _menuStringsRest3 = 0;
|
||||||
|
_menuStringsRest4 = _menuStringsDefeat = _menuStringsTransfer = _menuStringsSpec = 0;
|
||||||
|
_menuStringsSpellNo = _menuYesNoStrings = 0;
|
||||||
_errorSlotEmptyString = _errorSlotNoNameString = _menuOkString = 0;
|
_errorSlotEmptyString = _errorSlotNoNameString = _menuOkString = 0;
|
||||||
_spellLevelsMage = _spellLevelsCleric = _numSpellsCleric = _numSpellsWisAdj = _numSpellsPal = _numSpellsMage = 0;
|
_spellLevelsMage = _spellLevelsCleric = _numSpellsCleric = _numSpellsWisAdj = _numSpellsPal = _numSpellsMage = 0;
|
||||||
_mnNumWord = _numSpells = _mageSpellListSize = _spellLevelsMageSize = _spellLevelsClericSize = 0;
|
_mnNumWord = _numSpells = _mageSpellListSize = _spellLevelsMageSize = _spellLevelsClericSize = 0;
|
||||||
_inventorySlotsX = _slotValidationFlags = _encodeMonsterShpTable = 0;
|
_inventorySlotsX = _slotValidationFlags = _encodeMonsterShpTable = 0;
|
||||||
memset(_expRequirementTables, 0, sizeof(_expRequirementTables));
|
memset(_expRequirementTables, 0, sizeof(_expRequirementTables));
|
||||||
|
@ -197,15 +220,15 @@ EoBCoreEngine::EoBCoreEngine(OSystem *system, const GameFlags &flags) : KyraRpgE
|
||||||
|
|
||||||
#define DWM0 _dscWallMapping.push_back(0)
|
#define DWM0 _dscWallMapping.push_back(0)
|
||||||
#define DWM(x) _dscWallMapping.push_back(&_sceneDrawVar##x)
|
#define DWM(x) _dscWallMapping.push_back(&_sceneDrawVar##x)
|
||||||
DWM0; DWM0; DWM(Down); DWM(Right);
|
DWM0; DWM0; DWM(Down); DWM(Right);
|
||||||
DWM(Down); DWM(Right); DWM(Down); DWM0;
|
DWM(Down); DWM(Right); DWM(Down); DWM0;
|
||||||
DWM(Down); DWM(Left); DWM(Down); DWM(Left);
|
DWM(Down); DWM(Left); DWM(Down); DWM(Left);
|
||||||
DWM0; DWM0; DWM(Down); DWM(Right);
|
DWM0; DWM0; DWM(Down); DWM(Right);
|
||||||
DWM(Down); DWM(Right); DWM(Down); DWM0;
|
DWM(Down); DWM(Right); DWM(Down); DWM0;
|
||||||
DWM(Down); DWM(Left); DWM(Down); DWM(Left);
|
DWM(Down); DWM(Left); DWM(Down); DWM(Left);
|
||||||
DWM(Down); DWM(Right); DWM(Down); DWM0;
|
DWM(Down); DWM(Right); DWM(Down); DWM0;
|
||||||
DWM(Down); DWM(Left); DWM0; DWM(Right);
|
DWM(Down); DWM(Left); DWM0; DWM(Right);
|
||||||
DWM(Down); DWM0; DWM0; DWM(Left);
|
DWM(Down); DWM0; DWM0; DWM(Left);
|
||||||
#undef DWM
|
#undef DWM
|
||||||
#undef DWM0
|
#undef DWM0
|
||||||
}
|
}
|
||||||
|
@ -402,7 +425,7 @@ Common::Error EoBCoreEngine::init() {
|
||||||
memset(_noDoorSwitch, 0, sizeof(_noDoorSwitch));
|
memset(_noDoorSwitch, 0, sizeof(_noDoorSwitch));
|
||||||
|
|
||||||
_monsterShapes = new uint8*[36];
|
_monsterShapes = new uint8*[36];
|
||||||
memset(_monsterShapes, 0, 36 * sizeof(uint8*));
|
memset(_monsterShapes, 0, 36 * sizeof(uint8 *));
|
||||||
_monsterDecorations = new SpriteDecoration[36];
|
_monsterDecorations = new SpriteDecoration[36];
|
||||||
memset(_monsterDecorations, 0, 36 * sizeof(SpriteDecoration));
|
memset(_monsterDecorations, 0, 36 * sizeof(SpriteDecoration));
|
||||||
_monsterPalettes = new uint8*[24];
|
_monsterPalettes = new uint8*[24];
|
||||||
|
@ -1153,7 +1176,7 @@ int EoBCoreEngine::prepareForNewPartyMember(int16 itemType, int16 itemValue) {
|
||||||
gui_drawDialogueBox();
|
gui_drawDialogueBox();
|
||||||
_txt->printDialogueText(_npcMaxStrings[0]);
|
_txt->printDialogueText(_npcMaxStrings[0]);
|
||||||
int r = runDialogue(-1, 7, _characters[0].name, _characters[1].name, _characters[2].name, _characters[3].name,
|
int r = runDialogue(-1, 7, _characters[0].name, _characters[1].name, _characters[2].name, _characters[3].name,
|
||||||
_characters[4].name, _characters[5].name, _abortStrings[0]) - 1;
|
_characters[4].name, _characters[5].name, _abortStrings[0]) - 1;
|
||||||
|
|
||||||
if (r == 6)
|
if (r == 6)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1187,12 +1210,12 @@ void EoBCoreEngine::removeCharacterFromParty(int charIndex) {
|
||||||
if (i == 16 || !c->inventory[i])
|
if (i == 16 || !c->inventory[i])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
setItemPosition((Item*)&_levelBlockProperties[_currentBlock & 0x3ff].drawObjects, _currentBlock, c->inventory[i], _dropItemDirIndex[(_currentDirection << 2) + rollDice(1, 2, -1)]);
|
setItemPosition((Item *)&_levelBlockProperties[_currentBlock & 0x3ff].drawObjects, _currentBlock, c->inventory[i], _dropItemDirIndex[(_currentDirection << 2) + rollDice(1, 2, -1)]);
|
||||||
c->inventory[i] = 0;
|
c->inventory[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (c->inventory[16])
|
while (c->inventory[16])
|
||||||
setItemPosition((Item*)&_levelBlockProperties[_currentBlock & 0x3ff].drawObjects, _currentBlock, getQueuedItem(&c->inventory[16], 0, -1), _dropItemDirIndex[(_currentDirection << 2) + rollDice(1, 2, -1)]);
|
setItemPosition((Item *)&_levelBlockProperties[_currentBlock & 0x3ff].drawObjects, _currentBlock, getQueuedItem(&c->inventory[16], 0, -1), _dropItemDirIndex[(_currentDirection << 2) + rollDice(1, 2, -1)]);
|
||||||
|
|
||||||
c->inventory[16] = 0;
|
c->inventory[16] = 0;
|
||||||
|
|
||||||
|
@ -1281,7 +1304,7 @@ void EoBCoreEngine::setupDialogueButtons(int presetfirst, int numStr, va_list &a
|
||||||
_dialogueHighlightedButton = 0;
|
_dialogueHighlightedButton = 0;
|
||||||
|
|
||||||
for (int i = 0; i < numStr; i++) {
|
for (int i = 0; i < numStr; i++) {
|
||||||
const char *s = va_arg(args, const char*);
|
const char *s = va_arg(args, const char *);
|
||||||
if (s)
|
if (s)
|
||||||
_dialogueButtonString[i] = s;
|
_dialogueButtonString[i] = s;
|
||||||
else
|
else
|
||||||
|
@ -1549,7 +1572,7 @@ void EoBCoreEngine::displayParchment(int id) {
|
||||||
|
|
||||||
int EoBCoreEngine::countResurrectionCandidates() {
|
int EoBCoreEngine::countResurrectionCandidates() {
|
||||||
_rrCount = 0;
|
_rrCount = 0;
|
||||||
memset(_rrNames, 0, 10 * sizeof(const char*));
|
memset(_rrNames, 0, 10 * sizeof(const char *));
|
||||||
|
|
||||||
for (int i = 0; i < 6; i++) {
|
for (int i = 0; i < 6; i++) {
|
||||||
if (!testCharacter(i, 1))
|
if (!testCharacter(i, 1))
|
||||||
|
@ -1617,7 +1640,7 @@ void EoBCoreEngine::seq_portal() {
|
||||||
_screen->copyRegion(24, 0, 24, 0, 144, 104, 5, 2, Screen::CR_NO_P_CHECK);
|
_screen->copyRegion(24, 0, 24, 0, 144, 104, 5, 2, Screen::CR_NO_P_CHECK);
|
||||||
delay(30 * _tickLength);
|
delay(30 * _tickLength);
|
||||||
|
|
||||||
for (const int8 *pos = _portalSeq; *pos > -1 && !shouldQuit(); ) {
|
for (const int8 *pos = _portalSeq; *pos > -1 && !shouldQuit();) {
|
||||||
int s = *pos++;
|
int s = *pos++;
|
||||||
_screen->drawShape(0, shapes3[s], 28, 9, 0);
|
_screen->drawShape(0, shapes3[s], 28, 9, 0);
|
||||||
_screen->drawShape(0, shapes1[s], 34, 28, 0);
|
_screen->drawShape(0, shapes1[s], 34, 28, 0);
|
||||||
|
@ -1814,7 +1837,7 @@ int EoBCoreEngine::projectileWeaponAttack(int charIndex, Item item) {
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < 27; i++) {
|
for (int i = 0; i < 27; i++) {
|
||||||
if (_items[_characters[charIndex].inventory[i]].type == t) {
|
if (_items[_characters[charIndex].inventory[i]].type == t) {
|
||||||
SWAP(ammoItem, _characters[charIndex].inventory[i] );
|
SWAP(ammoItem, _characters[charIndex].inventory[i]);
|
||||||
if (i < 2)
|
if (i < 2)
|
||||||
gui_drawCharPortraitWithStats(charIndex);
|
gui_drawCharPortraitWithStats(charIndex);
|
||||||
break;
|
break;
|
||||||
|
@ -1954,7 +1977,7 @@ bool EoBCoreEngine::characterAttackHitTest(int charIndex, int monsterIndex, int
|
||||||
int d = (p < 1 || p > 3) ? 0 : _items[item].value;
|
int d = (p < 1 || p > 3) ? 0 : _items[item].value;
|
||||||
|
|
||||||
if (_flags.gameID == GI_EOB2) {
|
if (_flags.gameID == GI_EOB2) {
|
||||||
if ((p > 0 && p < 4) || !item ){
|
if ((p > 0 && p < 4) || !item) {
|
||||||
if (((_monsterProps[t].immunityFlags & 0x200) && (d <= 0)) || ((_monsterProps[t].immunityFlags & 0x1000) && (d <= 1)))
|
if (((_monsterProps[t].immunityFlags & 0x200) && (d <= 0)) || ((_monsterProps[t].immunityFlags & 0x1000) && (d <= 1)))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -2006,7 +2029,7 @@ bool EoBCoreEngine::flyingObjectMonsterHit(EoBFlyingObject *fo, int monsterIndex
|
||||||
if (!characterAttackHitTest(fo->attackerId, monsterIndex, fo->item, 0))
|
if (!characterAttackHitTest(fo->attackerId, monsterIndex, fo->item, 0))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
calcAndInflictMonsterDamage(&_monsters[monsterIndex], fo->attackerId, fo->item, 0, (fo->attackerId == -1) ? 0x110: 0x910, 5, 3);
|
calcAndInflictMonsterDamage(&_monsters[monsterIndex], fo->attackerId, fo->item, 0, (fo->attackerId == -1) ? 0x110 : 0x910, 5, 3);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2150,10 +2173,9 @@ int EoBCoreEngine::calcMonsterDamage(EoBMonsterInPlay *m, int times, int pips, i
|
||||||
s = 1;
|
s = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((flags & 0x100) && (!(_itemTypes[_items[pips].type].allowedClasses & 4 /* bug in original code ??*/)) &&
|
if ((flags & 0x100) && (!(_itemTypes[_items[pips].type].allowedClasses & 4 /* bug in original code ??*/))
|
||||||
((_flags.gameID == GI_EOB2 && (p->immunityFlags & 0x100)) ||
|
&& ((_flags.gameID == GI_EOB2 && (p->immunityFlags & 0x100)) || (_flags.gameID == GI_EOB1 && (p->capsFlags & 4))))
|
||||||
(_flags.gameID == GI_EOB1 && (p->capsFlags & 4))))
|
s >>= 1;
|
||||||
s >>= 1;
|
|
||||||
|
|
||||||
if (p->immunityFlags & 0x2000) {
|
if (p->immunityFlags & 0x2000) {
|
||||||
if (flags & 0x100) {
|
if (flags & 0x100) {
|
||||||
|
@ -2191,8 +2213,8 @@ int EoBCoreEngine::calcDamageModifers(int charIndex, EoBMonsterInPlay *m, int it
|
||||||
if (item) {
|
if (item) {
|
||||||
EoBItemType *p = &_itemTypes[itemType];
|
EoBItemType *p = &_itemTypes[itemType];
|
||||||
int t = m ? m->type : 0;
|
int t = m ? m->type : 0;
|
||||||
s += ((m && (_monsterProps[t].capsFlags & 1)) ? rollDice(p->dmgNumDiceL, p->dmgNumPipsL, p->dmgIncS /* bug in original code ? */) :
|
s += ((m && (_monsterProps[t].capsFlags & 1)) ? rollDice(p->dmgNumDiceL, p->dmgNumPipsL, p->dmgIncS /* bug in original code ? */) :
|
||||||
rollDice(p->dmgNumDiceS, p->dmgNumPipsS, p->dmgIncS));
|
rollDice(p->dmgNumDiceS, p->dmgNumPipsS, p->dmgIncS));
|
||||||
s += _items[item].value;
|
s += _items[item].value;
|
||||||
} else {
|
} else {
|
||||||
s += rollDice(1, 2);
|
s += rollDice(1, 2);
|
||||||
|
@ -2209,7 +2231,7 @@ bool EoBCoreEngine::trySavingThrow(void *target, int hpModifier, int level, int
|
||||||
|
|
||||||
int s = getSaveThrowModifier(hpModifier, level, type);
|
int s = getSaveThrowModifier(hpModifier, level, type);
|
||||||
if (((race == 3 || race == 5) && (type == 4 || type == 1 || type == 0)) || (race == 4 && (type == 4 || type == 1))) {
|
if (((race == 3 || race == 5) && (type == 4 || type == 1 || type == 0)) || (race == 4 && (type == 4 || type == 1))) {
|
||||||
EoBCharacter *c = (EoBCharacter*)target;
|
EoBCharacter *c = (EoBCharacter *)target;
|
||||||
s -= constMod[c->constitutionCur];
|
s -= constMod[c->constitutionCur];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2319,6 +2341,6 @@ void EoBCoreEngine::snd_stopSound() {
|
||||||
_sound->playSoundEffect(0);
|
_sound->playSoundEffect(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // End of namespace Kyra
|
} // End of namespace Kyra
|
||||||
|
|
||||||
#endif // ENABLE_EOB
|
#endif // ENABLE_EOB
|
||||||
|
|
|
@ -53,9 +53,9 @@ void GUI::updateSaveFileList(Common::String targetName, bool excludeQuickSaves)
|
||||||
|
|
||||||
for (Common::StringArray::const_iterator i = saveFileList.begin(); i != saveFileList.end(); ++i) {
|
for (Common::StringArray::const_iterator i = saveFileList.begin(); i != saveFileList.end(); ++i) {
|
||||||
char s1 = 0, s2 = 0, s3 = 0;
|
char s1 = 0, s2 = 0, s3 = 0;
|
||||||
s1 = (*i)[i->size()-3];
|
s1 = (*i)[i->size() - 3];
|
||||||
s2 = (*i)[i->size()-2];
|
s2 = (*i)[i->size() - 2];
|
||||||
s3 = (*i)[i->size()-1];
|
s3 = (*i)[i->size() - 1];
|
||||||
if (!isdigit(static_cast<unsigned char>(s1)) || !isdigit(static_cast<unsigned char>(s2)) || !isdigit(static_cast<unsigned char>(s3)))
|
if (!isdigit(static_cast<unsigned char>(s1)) || !isdigit(static_cast<unsigned char>(s2)) || !isdigit(static_cast<unsigned char>(s3)))
|
||||||
continue;
|
continue;
|
||||||
s1 -= '0';
|
s1 -= '0';
|
||||||
|
@ -63,7 +63,7 @@ void GUI::updateSaveFileList(Common::String targetName, bool excludeQuickSaves)
|
||||||
s3 -= '0';
|
s3 -= '0';
|
||||||
if (excludeQuickSaves && s1 == 9 && s2 == 9)
|
if (excludeQuickSaves && s1 == 9 && s2 == 9)
|
||||||
continue;
|
continue;
|
||||||
_saveSlots.push_back(s1*100+s2*10+s3);
|
_saveSlots.push_back(s1 * 100 + s2 * 10 + s3);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_saveSlots.begin() == _saveSlots.end())
|
if (_saveSlots.begin() == _saveSlots.end())
|
||||||
|
@ -75,7 +75,7 @@ void GUI::updateSaveFileList(Common::String targetName, bool excludeQuickSaves)
|
||||||
void GUI::sortSaveSlots() {
|
void GUI::sortSaveSlots() {
|
||||||
Common::sort(_saveSlots.begin(), _saveSlots.end(), Common::Less<int>());
|
Common::sort(_saveSlots.begin(), _saveSlots.end(), Common::Less<int>());
|
||||||
if (_saveSlots.size() > 2)
|
if (_saveSlots.size() > 2)
|
||||||
Common::sort(_saveSlots.begin()+1, _saveSlots.end(), Common::Greater<int>());
|
Common::sort(_saveSlots.begin() + 1, _saveSlots.end(), Common::Greater<int>());
|
||||||
}
|
}
|
||||||
|
|
||||||
int GUI::getNextSavegameSlot() {
|
int GUI::getNextSavegameSlot() {
|
||||||
|
@ -117,11 +117,11 @@ void GUI::updateSaveSlotsList(Common::String targetName, bool force) {
|
||||||
Common::InSaveFile *in;
|
Common::InSaveFile *in;
|
||||||
|
|
||||||
_savegameList = new char*[_savegameListSize];
|
_savegameList = new char*[_savegameListSize];
|
||||||
memset(_savegameList, 0, _savegameListSize * sizeof(char*));
|
memset(_savegameList, 0, _savegameListSize * sizeof(char *));
|
||||||
|
|
||||||
for (int i = 0; i < numSaves; i++) {
|
for (int i = 0; i < numSaves; i++) {
|
||||||
in = _vm->openSaveForReading(_vm->getSavegameFilename(targetName, _saveSlots[i]).c_str(), header, targetName == _vm->_targetName);
|
in = _vm->openSaveForReading(_vm->getSavegameFilename(targetName, _saveSlots[i]).c_str(), header, targetName == _vm->_targetName);
|
||||||
char **listEntry = &_savegameList[allowEmptySlots? _saveSlots[i] : i];
|
char **listEntry = &_savegameList[allowEmptySlots ? _saveSlots[i] : i];
|
||||||
if (in) {
|
if (in) {
|
||||||
*listEntry = new char[header.description.size() + 1];
|
*listEntry = new char[header.description.size() + 1];
|
||||||
Common::strlcpy(*listEntry, header.description.c_str(), header.description.size() + 1);
|
Common::strlcpy(*listEntry, header.description.c_str(), header.description.size() + 1);
|
||||||
|
|
|
@ -211,7 +211,7 @@ int GUI_v2::processButtonList(Button *buttonList, uint16 inputFlag, int8 mouseWh
|
||||||
|
|
||||||
bool progress = false;
|
bool progress = false;
|
||||||
|
|
||||||
if (mouseX >= x && mouseY >= y && mouseX <= x+buttonList->width && mouseY <= y+buttonList->height)
|
if (mouseX >= x && mouseY >= y && mouseX <= x + buttonList->width && mouseY <= y + buttonList->height)
|
||||||
progress = true;
|
progress = true;
|
||||||
|
|
||||||
buttonList->flags2 &= ~0x80;
|
buttonList->flags2 &= ~0x80;
|
||||||
|
@ -425,7 +425,7 @@ void GUI_v2::renewHighlight(Menu &menu) {
|
||||||
int x = item.x + menu.x; int y = item.y + menu.y;
|
int x = item.x + menu.x; int y = item.y + menu.y;
|
||||||
int x2 = x + item.width - 1; int y2 = y + item.height - 1;
|
int x2 = x + item.width - 1; int y2 = y + item.height - 1;
|
||||||
redrawText(menu);
|
redrawText(menu);
|
||||||
_screen->fillRect(x+2, y+2, x2-2, y2-2, item.bkgdColor);
|
_screen->fillRect(x + 2, y + 2, x2 - 2, y2 - 2, item.bkgdColor);
|
||||||
redrawHighlight(menu);
|
redrawHighlight(menu);
|
||||||
_screen->updateScreen();
|
_screen->updateScreen();
|
||||||
}
|
}
|
||||||
|
@ -736,10 +736,10 @@ int GUI_v2::deleteMenu(Button *caller) {
|
||||||
break;
|
break;
|
||||||
// We are only renaming all savefiles until we get some slots missing
|
// We are only renaming all savefiles until we get some slots missing
|
||||||
// Also not rename quicksave slot filenames
|
// Also not rename quicksave slot filenames
|
||||||
if (*(i-1) != *i || *i >= 990)
|
if (*(i - 1) != *i || *i >= 990)
|
||||||
break;
|
break;
|
||||||
Common::String oldName = _vm->getSavegameFilename(*i);
|
Common::String oldName = _vm->getSavegameFilename(*i);
|
||||||
Common::String newName = _vm->getSavegameFilename(*i-1);
|
Common::String newName = _vm->getSavegameFilename(*i - 1);
|
||||||
_vm->_saveFileMan->renameSavefile(oldName, newName);
|
_vm->_saveFileMan->renameSavefile(oldName, newName);
|
||||||
}
|
}
|
||||||
_saveMenu.menuNameId = _vm->gameFlags().isTalkie ? 9 : 17;
|
_saveMenu.menuNameId = _vm->gameFlags().isTalkie ? 9 : 17;
|
||||||
|
@ -845,7 +845,7 @@ int GUI_v2::getCharWidth(uint8 c) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void GUI_v2::drawTextfieldBlock(int x, int y, uint8 c) {
|
void GUI_v2::drawTextfieldBlock(int x, int y, uint8 c) {
|
||||||
_screen->fillRect(x+1, y+1, x+7, y+8, c);
|
_screen->fillRect(x + 1, y + 1, x + 7, y + 8, c);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GUI_v2::choiceDialog(int name, bool type) {
|
bool GUI_v2::choiceDialog(int name, bool type) {
|
||||||
|
|
|
@ -121,7 +121,7 @@ KyraEngine_v2::~KyraEngine_v2() {
|
||||||
|
|
||||||
delete[] _animObjects;
|
delete[] _animObjects;
|
||||||
|
|
||||||
for (Common::Array<const Opcode*>::iterator i = _opcodesAnimation.begin(); i != _opcodesAnimation.end(); ++i)
|
for (Common::Array<const Opcode *>::iterator i = _opcodesAnimation.begin(); i != _opcodesAnimation.end(); ++i)
|
||||||
delete *i;
|
delete *i;
|
||||||
_opcodesAnimation.clear();
|
_opcodesAnimation.clear();
|
||||||
|
|
||||||
|
@ -162,8 +162,8 @@ void KyraEngine_v2::delay(uint32 amount, bool updateGame, bool isMainLoop) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool KyraEngine_v2::checkSpecialSceneExit(int num, int x, int y) {
|
bool KyraEngine_v2::checkSpecialSceneExit(int num, int x, int y) {
|
||||||
if (_specialExitTable[0+num] > x || _specialExitTable[5+num] > y ||
|
if (_specialExitTable[0 + num] > x || _specialExitTable[5 + num] > y ||
|
||||||
_specialExitTable[10+num] < x || _specialExitTable[15+num] < y)
|
_specialExitTable[10 + num] < x || _specialExitTable[15 + num] < y)
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,13 +44,13 @@ KyraEngine_v1::kReadSaveHeaderError KyraEngine_v1::readSaveHeader(Common::Seekab
|
||||||
header.flags = 0;
|
header.flags = 0;
|
||||||
header.thumbnail = 0;
|
header.thumbnail = 0;
|
||||||
|
|
||||||
if (type == MKTAG('K','Y','R','A') || type == MKTAG('A','R','Y','K')) { // old Kyra1 header ID
|
if (type == MKTAG('K', 'Y', 'R', 'A') || type == MKTAG('A', 'R', 'Y', 'K')) { // old Kyra1 header ID
|
||||||
header.gameID = GI_KYRA1;
|
header.gameID = GI_KYRA1;
|
||||||
header.oldHeader = true;
|
header.oldHeader = true;
|
||||||
} else if (type == MKTAG('H','O','F','S')) { // old Kyra2 header ID
|
} else if (type == MKTAG('H', 'O', 'F', 'S')) { // old Kyra2 header ID
|
||||||
header.gameID = GI_KYRA2;
|
header.gameID = GI_KYRA2;
|
||||||
header.oldHeader = true;
|
header.oldHeader = true;
|
||||||
} else if (type == MKTAG('W','W','S','V')) {
|
} else if (type == MKTAG('W', 'W', 'S', 'V')) {
|
||||||
header.gameID = in->readByte();
|
header.gameID = in->readByte();
|
||||||
} else {
|
} else {
|
||||||
// try checking for original save header
|
// try checking for original save header
|
||||||
|
@ -68,12 +68,12 @@ KyraEngine_v1::kReadSaveHeaderError KyraEngine_v1::readSaveHeader(Common::Seekab
|
||||||
|
|
||||||
type = in->readUint32BE();
|
type = in->readUint32BE();
|
||||||
header.version = in->readUint16LE();
|
header.version = in->readUint16LE();
|
||||||
if (type == MKTAG('M','B','L','3') && header.version == 100) {
|
if (type == MKTAG('M', 'B', 'L', '3') && header.version == 100) {
|
||||||
saveOk = true;
|
saveOk = true;
|
||||||
header.description = descriptionBuffer;
|
header.description = descriptionBuffer;
|
||||||
header.gameID = GI_KYRA2;
|
header.gameID = GI_KYRA2;
|
||||||
break;
|
break;
|
||||||
} else if (type == MKTAG('M','B','L','4') && header.version == 102) {
|
} else if (type == MKTAG('M', 'B', 'L', '4') && header.version == 102) {
|
||||||
saveOk = true;
|
saveOk = true;
|
||||||
header.description = descriptionBuffer;
|
header.description = descriptionBuffer;
|
||||||
header.gameID = GI_KYRA3;
|
header.gameID = GI_KYRA3;
|
||||||
|
@ -91,7 +91,7 @@ KyraEngine_v1::kReadSaveHeaderError KyraEngine_v1::readSaveHeader(Common::Seekab
|
||||||
}
|
}
|
||||||
|
|
||||||
header.version = in->readUint32BE();
|
header.version = in->readUint32BE();
|
||||||
if (header.version > CURRENT_SAVE_VERSION || (header.oldHeader && header.version > 8) || (type == MKTAG('A','R','Y','K') && header.version > 3))
|
if (header.version > CURRENT_SAVE_VERSION || (header.oldHeader && header.version > 8) || (type == MKTAG('A', 'R', 'Y', 'K') && header.version > 3))
|
||||||
return kRSHEInvalidVersion;
|
return kRSHEInvalidVersion;
|
||||||
|
|
||||||
// Versions prior to 9 are using a fixed length description field
|
// Versions prior to 9 are using a fixed length description field
|
||||||
|
@ -182,10 +182,10 @@ Common::WriteStream *KyraEngine_v1::openSaveForWriting(const char *filename, con
|
||||||
}
|
}
|
||||||
|
|
||||||
// Savegame version
|
// Savegame version
|
||||||
out->writeUint32BE(MKTAG('W','W','S','V'));
|
out->writeUint32BE(MKTAG('W', 'W', 'S', 'V'));
|
||||||
out->writeByte(_flags.gameID);
|
out->writeByte(_flags.gameID);
|
||||||
out->writeUint32BE(CURRENT_SAVE_VERSION);
|
out->writeUint32BE(CURRENT_SAVE_VERSION);
|
||||||
out->write(saveName, strlen(saveName)+1);
|
out->write(saveName, strlen(saveName) + 1);
|
||||||
if (_flags.isTalkie)
|
if (_flags.isTalkie)
|
||||||
out->writeUint32BE(GF_TALKIE);
|
out->writeUint32BE(GF_TALKIE);
|
||||||
else if (_flags.platform == Common::kPlatformFMTowns || _flags.platform == Common::kPlatformPC98)
|
else if (_flags.platform == Common::kPlatformFMTowns || _flags.platform == Common::kPlatformPC98)
|
||||||
|
|
|
@ -42,7 +42,7 @@ void KyraEngine_v2::updateSpecialSceneScripts() {
|
||||||
|
|
||||||
while (_system->getMillis() <= nextTime) {
|
while (_system->getMillis() <= nextTime) {
|
||||||
if (_sceneSpecialScriptsTimer[_lastProcessedSceneScript] <= _system->getMillis() &&
|
if (_sceneSpecialScriptsTimer[_lastProcessedSceneScript] <= _system->getMillis() &&
|
||||||
!_specialSceneScriptState[_lastProcessedSceneScript]) {
|
!_specialSceneScriptState[_lastProcessedSceneScript]) {
|
||||||
_specialSceneScriptRunFlag = true;
|
_specialSceneScriptRunFlag = true;
|
||||||
|
|
||||||
while (_specialSceneScriptRunFlag && _sceneSpecialScriptsTimer[_lastProcessedSceneScript] <= _system->getMillis()) {
|
while (_specialSceneScriptRunFlag && _sceneSpecialScriptsTimer[_lastProcessedSceneScript] <= _system->getMillis()) {
|
||||||
|
@ -52,7 +52,7 @@ void KyraEngine_v2::updateSpecialSceneScripts() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_emc->isValid(&_sceneSpecialScripts[_lastProcessedSceneScript])) {
|
if (!_emc->isValid(&_sceneSpecialScripts[_lastProcessedSceneScript])) {
|
||||||
_emc->start(&_sceneSpecialScripts[_lastProcessedSceneScript], _desc.firstAnimSceneScript+_lastProcessedSceneScript);
|
_emc->start(&_sceneSpecialScripts[_lastProcessedSceneScript], _desc.firstAnimSceneScript + _lastProcessedSceneScript);
|
||||||
_specialSceneScriptRunFlag = false;
|
_specialSceneScriptRunFlag = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -155,14 +155,14 @@ int KyraEngine_v2::pathfinderInitPositionTable(int *moveTable) {
|
||||||
}
|
}
|
||||||
|
|
||||||
lastEntry = pathfinderAddToPositionTable(lastEntry, newX, newY);
|
lastEntry = pathfinderAddToPositionTable(lastEntry, newX, newY);
|
||||||
_pathfinderPositionTable[lastEntry*2+0] = -1;
|
_pathfinderPositionTable[lastEntry * 2 + 0] = -1;
|
||||||
_pathfinderPositionTable[lastEntry*2+1] = -1;
|
_pathfinderPositionTable[lastEntry * 2 + 1] = -1;
|
||||||
return lastEntry;
|
return lastEntry;
|
||||||
}
|
}
|
||||||
|
|
||||||
int KyraEngine_v2::pathfinderAddToPositionTable(int index, int v1, int v2) {
|
int KyraEngine_v2::pathfinderAddToPositionTable(int index, int v1, int v2) {
|
||||||
_pathfinderPositionTable[index<<1] = v1;
|
_pathfinderPositionTable[index << 1] = v1;
|
||||||
_pathfinderPositionTable[(index<<1)+1] = v2;
|
_pathfinderPositionTable[(index << 1) + 1] = v2;
|
||||||
++index;
|
++index;
|
||||||
if (index >= 199)
|
if (index >= 199)
|
||||||
--index;
|
--index;
|
||||||
|
@ -173,23 +173,23 @@ int KyraEngine_v2::pathfinderInitPositionIndexTable(int tableLen, int x, int y)
|
||||||
int x1 = 0, y1 = 0;
|
int x1 = 0, y1 = 0;
|
||||||
int x2 = 0, y2 = 0;
|
int x2 = 0, y2 = 0;
|
||||||
int lastEntry = 0;
|
int lastEntry = 0;
|
||||||
int index2 = tableLen-1, index1 = 0;
|
int index2 = tableLen - 1, index1 = 0;
|
||||||
while (index2 > index1) {
|
while (index2 > index1) {
|
||||||
x1 = _pathfinderPositionTable[index1*2+0] + x;
|
x1 = _pathfinderPositionTable[index1 * 2 + 0] + x;
|
||||||
y1 = _pathfinderPositionTable[index1*2+1] + y;
|
y1 = _pathfinderPositionTable[index1 * 2 + 1] + y;
|
||||||
x2 = _pathfinderPositionTable[index2*2+0] + x;
|
x2 = _pathfinderPositionTable[index2 * 2 + 0] + x;
|
||||||
y2 = _pathfinderPositionTable[index2*2+1] + y;
|
y2 = _pathfinderPositionTable[index2 * 2 + 1] + y;
|
||||||
|
|
||||||
if (directLinePassable(x1, y1, x2, y2)) {
|
if (directLinePassable(x1, y1, x2, y2)) {
|
||||||
lastEntry = pathfinderAddToPositionIndexTable(lastEntry, index2);
|
lastEntry = pathfinderAddToPositionIndexTable(lastEntry, index2);
|
||||||
if (tableLen-1 == index2)
|
if (tableLen - 1 == index2)
|
||||||
break;
|
break;
|
||||||
index1 = index2;
|
index1 = index2;
|
||||||
index2 = tableLen-1;
|
index2 = tableLen - 1;
|
||||||
} else if (index1+1 == index2) {
|
} else if (index1 + 1 == index2) {
|
||||||
lastEntry = pathfinderAddToPositionIndexTable(lastEntry, index2);
|
lastEntry = pathfinderAddToPositionIndexTable(lastEntry, index2);
|
||||||
index1 = index2;
|
index1 = index2;
|
||||||
index2 = tableLen-1;
|
index2 = tableLen - 1;
|
||||||
} else {
|
} else {
|
||||||
--index2;
|
--index2;
|
||||||
}
|
}
|
||||||
|
@ -212,14 +212,14 @@ void KyraEngine_v2::pathfinderFinializePath(int *moveTable, int tableLen, int x,
|
||||||
int sizeLeft = moveTableSize;
|
int sizeLeft = moveTableSize;
|
||||||
for (int i = 0; i < tableLen; ++i) {
|
for (int i = 0; i < tableLen; ++i) {
|
||||||
index2 = _pathfinderPositionIndexTable[i];
|
index2 = _pathfinderPositionIndexTable[i];
|
||||||
x1 = _pathfinderPositionTable[index1*2+0] + x;
|
x1 = _pathfinderPositionTable[index1 * 2 + 0] + x;
|
||||||
y1 = _pathfinderPositionTable[index1*2+1] + y;
|
y1 = _pathfinderPositionTable[index1 * 2 + 1] + y;
|
||||||
x2 = _pathfinderPositionTable[index2*2+0] + x;
|
x2 = _pathfinderPositionTable[index2 * 2 + 0] + x;
|
||||||
y2 = _pathfinderPositionTable[index2*2+1] + y;
|
y2 = _pathfinderPositionTable[index2 * 2 + 1] + y;
|
||||||
|
|
||||||
int wayLen = findWay(x1, y1, x2, y2, moveTable, sizeLeft);
|
int wayLen = findWay(x1, y1, x2, y2, moveTable, sizeLeft);
|
||||||
moveTable += wayLen;
|
moveTable += wayLen;
|
||||||
sizeLeft -= wayLen; // unlike the original we want to be sure that the size left is correct
|
sizeLeft -= wayLen; // unlike the original we want to be sure that the size left is correct
|
||||||
index1 = index2;
|
index1 = index2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
namespace Kyra {
|
namespace Kyra {
|
||||||
|
|
||||||
Screen_v2::Screen_v2(KyraEngine_v1 *vm, OSystem *system, const ScreenDim *dimTable, const int dimTableSize)
|
Screen_v2::Screen_v2(KyraEngine_v1 *vm, OSystem *system, const ScreenDim *dimTable, const int dimTableSize)
|
||||||
: Screen(vm, system, dimTable, dimTableSize), _wsaFrameAnimBuffer(0) {
|
: Screen(vm, system, dimTable, dimTableSize), _wsaFrameAnimBuffer(0) {
|
||||||
_wsaFrameAnimBuffer = new uint8[1024];
|
_wsaFrameAnimBuffer = new uint8[1024];
|
||||||
assert(_wsaFrameAnimBuffer);
|
assert(_wsaFrameAnimBuffer);
|
||||||
}
|
}
|
||||||
|
@ -187,7 +187,7 @@ uint8 *Screen_v2::getPtrToShape(uint8 *shpFile, int shape) {
|
||||||
int Screen_v2::getShapeScaledWidth(const uint8 *shpFile, int scale) {
|
int Screen_v2::getShapeScaledWidth(const uint8 *shpFile, int scale) {
|
||||||
if (!shpFile)
|
if (!shpFile)
|
||||||
return 0;
|
return 0;
|
||||||
int width = READ_LE_UINT16(shpFile+3);
|
int width = READ_LE_UINT16(shpFile + 3);
|
||||||
return (width * scale) >> 8;
|
return (width * scale) >> 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -201,7 +201,7 @@ int Screen_v2::getShapeScaledHeight(const uint8 *shpFile, int scale) {
|
||||||
uint16 Screen_v2::getShapeSize(const uint8 *shp) {
|
uint16 Screen_v2::getShapeSize(const uint8 *shp) {
|
||||||
if (!shp)
|
if (!shp)
|
||||||
return 0;
|
return 0;
|
||||||
return READ_LE_UINT16(shp+6);
|
return READ_LE_UINT16(shp + 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8 *Screen_v2::makeShapeCopy(const uint8 *src, int index) {
|
uint8 *Screen_v2::makeShapeCopy(const uint8 *src, int index) {
|
||||||
|
@ -242,7 +242,7 @@ int Screen_v2::getLayer(int x, int y) {
|
||||||
int Screen_v2::getRectSize(int w, int h) {
|
int Screen_v2::getRectSize(int w, int h) {
|
||||||
if (w > 320 || h > 200)
|
if (w > 320 || h > 200)
|
||||||
return 0;
|
return 0;
|
||||||
return w*h;
|
return w * h;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Screen_v2::setTextColorMap(const uint8 *cmap) {
|
void Screen_v2::setTextColorMap(const uint8 *cmap) {
|
||||||
|
@ -250,7 +250,7 @@ void Screen_v2::setTextColorMap(const uint8 *cmap) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Screen_v2::wsaFrameAnimationStep(int x1, int y1, int x2, int y2,
|
void Screen_v2::wsaFrameAnimationStep(int x1, int y1, int x2, int y2,
|
||||||
int w1, int h1, int w2, int h2, int srcPage, int dstPage, int dim) {
|
int w1, int h1, int w2, int h2, int srcPage, int dstPage, int dim) {
|
||||||
|
|
||||||
if (!(w1 || h1 || w2 || h2))
|
if (!(w1 || h1 || w2 || h2))
|
||||||
return;
|
return;
|
||||||
|
@ -281,7 +281,7 @@ void Screen_v2::wsaFrameAnimationStep(int x1, int y1, int x2, int y2,
|
||||||
memcpy(dt, s, w2);
|
memcpy(dt, s, w2);
|
||||||
} else if (t > 0) {
|
} else if (t > 0) {
|
||||||
if (w1 == 1) {
|
if (w1 == 1) {
|
||||||
memset(dt, *s, w2);
|
memset(dt, *s, w2);
|
||||||
} else {
|
} else {
|
||||||
t = ((((((w2 - w1 + 1) & 0xffff) << 8) / w1) + 0x100) & 0xffff) << 8;
|
t = ((((((w2 - w1 + 1) & 0xffff) << 8) / w1) + 0x100) & 0xffff) << 8;
|
||||||
int bp = 0;
|
int bp = 0;
|
||||||
|
@ -353,7 +353,7 @@ bool Screen_v2::calcBounds(int w0, int h0, int &x1, int &y1, int &w1, int &h1, i
|
||||||
h1 = t;
|
h1 = t;
|
||||||
y1 = 0;
|
y1 = 0;
|
||||||
}
|
}
|
||||||
t = h0 - y1;
|
t = h0 - y1;
|
||||||
if (t < 1) {
|
if (t < 1) {
|
||||||
w1 = h1 = -1;
|
w1 = h1 = -1;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -57,7 +57,7 @@ int KyraEngine_v2::o2_setCharacterFacingOverwrite(EMCState *script) {
|
||||||
|
|
||||||
int KyraEngine_v2::o2_trySceneChange(EMCState *script) {
|
int KyraEngine_v2::o2_trySceneChange(EMCState *script) {
|
||||||
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_trySceneChange(%p) (%d, %d, %d, %d)", (const void *)script,
|
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_trySceneChange(%p) (%d, %d, %d, %d)", (const void *)script,
|
||||||
stackPos(0), stackPos(1), stackPos(2), stackPos(3));
|
stackPos(0), stackPos(1), stackPos(2), stackPos(3));
|
||||||
|
|
||||||
_unkHandleSceneChangeFlag = 1;
|
_unkHandleSceneChangeFlag = 1;
|
||||||
int success = inputSceneChange(stackPos(0), stackPos(1), stackPos(2), stackPos(3));
|
int success = inputSceneChange(stackPos(0), stackPos(1), stackPos(2), stackPos(3));
|
||||||
|
@ -87,7 +87,7 @@ int KyraEngine_v2::o2_checkForItem(EMCState *script) {
|
||||||
|
|
||||||
int KyraEngine_v2::o2_defineItem(EMCState *script) {
|
int KyraEngine_v2::o2_defineItem(EMCState *script) {
|
||||||
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_defineItem(%p) (%d, %d, %d, %d)", (const void *)script,
|
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_defineItem(%p) (%d, %d, %d, %d)", (const void *)script,
|
||||||
stackPos(0), stackPos(1), stackPos(2), stackPos(3));
|
stackPos(0), stackPos(1), stackPos(2), stackPos(3));
|
||||||
int freeItem = findFreeItem();
|
int freeItem = findFreeItem();
|
||||||
|
|
||||||
if (freeItem >= 0) {
|
if (freeItem >= 0) {
|
||||||
|
@ -102,13 +102,13 @@ int KyraEngine_v2::o2_defineItem(EMCState *script) {
|
||||||
|
|
||||||
int KyraEngine_v2::o2_addSpecialExit(EMCState *script) {
|
int KyraEngine_v2::o2_addSpecialExit(EMCState *script) {
|
||||||
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_addSpecialExit(%p) (%d, %d, %d, %d, %d)", (const void *)script,
|
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_addSpecialExit(%p) (%d, %d, %d, %d, %d)", (const void *)script,
|
||||||
stackPos(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4));
|
stackPos(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4));
|
||||||
if (_specialExitCount < 5) {
|
if (_specialExitCount < 5) {
|
||||||
_specialExitTable[_specialExitCount+0] = stackPos(0);
|
_specialExitTable[_specialExitCount + 0] = stackPos(0);
|
||||||
_specialExitTable[_specialExitCount+5] = stackPos(1);
|
_specialExitTable[_specialExitCount + 5] = stackPos(1);
|
||||||
_specialExitTable[_specialExitCount+10] = stackPos(2) + stackPos(0) - 1;
|
_specialExitTable[_specialExitCount + 10] = stackPos(2) + stackPos(0) - 1;
|
||||||
_specialExitTable[_specialExitCount+15] = stackPos(3) + stackPos(1) - 1;
|
_specialExitTable[_specialExitCount + 15] = stackPos(3) + stackPos(1) - 1;
|
||||||
_specialExitTable[_specialExitCount+20] = stackPos(4);
|
_specialExitTable[_specialExitCount + 20] = stackPos(4);
|
||||||
++_specialExitCount;
|
++_specialExitCount;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -226,7 +226,7 @@ int KyraEngine_v2::o2_defineRoomEntrance(EMCState *script) {
|
||||||
|
|
||||||
int KyraEngine_v2::o2_runAnimationScript(EMCState *script) {
|
int KyraEngine_v2::o2_runAnimationScript(EMCState *script) {
|
||||||
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_runAnimationScript(%p) ('%s', %d, %d, %d)", (const void *)script, stackPosString(0), stackPos(1),
|
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_runAnimationScript(%p) ('%s', %d, %d, %d)", (const void *)script, stackPosString(0), stackPos(1),
|
||||||
stackPos(2), stackPos(3));
|
stackPos(2), stackPos(3));
|
||||||
|
|
||||||
runAnimationScript(stackPosString(0), stackPos(3), stackPos(2) ? 1 : 0, stackPos(1), stackPos(2));
|
runAnimationScript(stackPosString(0), stackPos(3), stackPos(2) ? 1 : 0, stackPos(1), stackPos(2));
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -241,7 +241,7 @@ int KyraEngine_v2::o2_setSpecialSceneScriptRunTime(EMCState *script) {
|
||||||
|
|
||||||
int KyraEngine_v2::o2_defineScene(EMCState *script) {
|
int KyraEngine_v2::o2_defineScene(EMCState *script) {
|
||||||
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_defineScene(%p) (%d, '%s', %d, %d, %d, %d, %d, %d)",
|
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_defineScene(%p) (%d, '%s', %d, %d, %d, %d, %d, %d)",
|
||||||
(const void *)script, stackPos(0), stackPosString(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5), stackPos(6), stackPos(7));
|
(const void *)script, stackPos(0), stackPosString(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5), stackPos(6), stackPos(7));
|
||||||
const int scene = stackPos(0);
|
const int scene = stackPos(0);
|
||||||
strcpy(_sceneList[scene].filename1, stackPosString(1));
|
strcpy(_sceneList[scene].filename1, stackPosString(1));
|
||||||
strcpy(_sceneList[scene].filename2, stackPosString(1));
|
strcpy(_sceneList[scene].filename2, stackPosString(1));
|
||||||
|
@ -323,7 +323,7 @@ int KyraEngine_v2::o2_getVocHigh(EMCState *script) {
|
||||||
|
|
||||||
int KyraEngine_v2::o2a_setAnimationShapes(EMCState *script) {
|
int KyraEngine_v2::o2a_setAnimationShapes(EMCState *script) {
|
||||||
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2a_setAnimationShapes(%p) ('%s', %d, %d, %d, %d, %d)", (const void *)script,
|
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2a_setAnimationShapes(%p) ('%s', %d, %d, %d, %d, %d)", (const void *)script,
|
||||||
stackPosString(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5));
|
stackPosString(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5));
|
||||||
strcpy(_animShapeFilename, stackPosString(0));
|
strcpy(_animShapeFilename, stackPosString(0));
|
||||||
_animShapeLastEntry = stackPos(1);
|
_animShapeLastEntry = stackPos(1);
|
||||||
_animShapeWidth = stackPos(2);
|
_animShapeWidth = stackPos(2);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue