MADS: Fix showing covered pit by default in Easy mode

This commit is contained in:
Paul Gilbert 2015-03-08 11:44:06 -04:00
parent 10361d077a
commit 2b1155711f
3 changed files with 16 additions and 17 deletions

View File

@ -1697,7 +1697,7 @@ void Scene208::updateTrap() {
_scene->_sequences.setDepth(_globals._sequenceIndexes[3], 15);
_globals._sequenceIndexes[3] = _scene->_sequences.startCycle(_globals._spriteIndexes[3], false, 1);
_scene->_hotspots.activate(NOUN_DEEP_PIT, false);
int idx = _scene->_dynamicHotspots.add(NOUN_LEAF_COVERED_PIT, VERB_WALKTO, _globals._sequenceIndexes[2], Common::Rect(0, 0, 0, 0));
int idx = _scene->_dynamicHotspots.add(NOUN_LEAF_COVERED_PIT, VERB_WALKTO, _globals._sequenceIndexes[3], Common::Rect(0, 0, 0, 0));
_scene->_dynamicHotspots.setPosition(idx, Common::Point(100, 146), FACING_NORTH);
_scene->_dynamicHotspots[idx]._articleNumber = PREP_ON;
}
@ -1796,7 +1796,6 @@ void Scene208::preActions() {
}
void Scene208::subAction(int mode) {
switch (_game._trigger) {
case 0: {
_game._player._stepEnabled = false;
@ -1804,21 +1803,21 @@ void Scene208::subAction(int mode) {
_globals._sequenceIndexes[5] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[5], false, 6, 1, 0, 0);
_scene->_sequences.setMsgLayout(_globals._sequenceIndexes[5]);
int abortVal;
int endTrigger;
if ((mode == 1) || (mode == 2))
abortVal = 1;
endTrigger = 1;
else
abortVal = 2;
endTrigger = 2;
_scene->_sequences.addSubEntry(_globals._sequenceIndexes[5], SEQUENCE_TRIGGER_EXPIRE, 0, abortVal);
_scene->_sequences.addSubEntry(_globals._sequenceIndexes[5], SEQUENCE_TRIGGER_EXPIRE, 0, endTrigger);
}
break;
case 1: {
int oldVal = _globals._sequenceIndexes[5];
_globals._sequenceIndexes[5] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[6], false, 12, 3, 0, 0);
int oldSeq = _globals._sequenceIndexes[5];
_globals._sequenceIndexes[5] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[5], false, 12, 3, 0, 0);
_scene->_sequences.setAnimRange(_globals._sequenceIndexes[5], 3, 4);
_scene->_sequences.setMsgLayout(_globals._sequenceIndexes[5]);
_scene->_sequences.updateTimeout(_globals._sequenceIndexes[5], oldVal);
_scene->_sequences.updateTimeout(_globals._sequenceIndexes[5], oldSeq);
_scene->_sequences.addSubEntry(_globals._sequenceIndexes[5], SEQUENCE_TRIGGER_EXPIRE, 0, 2);
_vm->_sound->command(20);
}

View File

@ -95,8 +95,8 @@ bool SequenceList::addSubEntry(int index, SequenceTrigger mode, int frameIndex,
}
int SequenceList::add(int spriteListIndex, bool flipped, int frameIndex, int triggerCountdown, int delayTicks, int extraTicks, int numTicks,
int msgX, int msgY, bool nonFixed, int scale, int depth, int frameInc, SpriteAnimType animType, int numSprites,
int frameStart) {
int msgX, int msgY, bool nonFixed, int scale, int depth, int frameInc, SpriteAnimType animType, int numSprites,
int frameStart) {
Scene &scene = _vm->_game->_scene;
// Find a free slot
@ -477,17 +477,17 @@ int SequenceList::startPingPongCycle(int srcSpriteIndex, bool flipped, int numTi
extraTicks, numTicks, 0, 0, true, 100, depth - 1, 1, ANIMTYPE_PING_PONG, 0, 0);
}
void SequenceList::updateTimeout(int spriteIdx, int seqIndex) {
void SequenceList::updateTimeout(int srcSeqIndex, int destSeqIndex) {
Player &player = _vm->_game->_player;
int timeout;
if (spriteIdx >= 0)
timeout = _entries[spriteIdx]._timeout;
if (srcSeqIndex >= 0)
timeout = _entries[srcSeqIndex]._timeout;
else
timeout = player._priorTimer + player._ticksAmount;
if (seqIndex >= 0)
_entries[seqIndex]._timeout = timeout;
if (destSeqIndex >= 0)
_entries[destSeqIndex]._timeout = timeout;
else
player._priorTimer = timeout - player._ticksAmount;

View File

@ -119,7 +119,7 @@ public:
int startCycle(int srcSpriteIdx, bool flipped, int cycleIndex);
int startPingPongCycle(int srcSpriteIndex, bool flipped, int numTicks,
int triggerCountdown = 0, int timeoutTicks = 0, int extraTicks = 0);
void updateTimeout(int spriteIdx, int seqIndex);
void updateTimeout(int destSeqIndex, int srcSeqIndex);
void setScale(int spriteIdx, int scale);
void setMsgLayout(int seqIndex);
void setDone(int seqIndex);