diff options
author | David Eriksson | 2003-11-07 15:34:51 +0000 |
---|---|---|
committer | David Eriksson | 2003-11-07 15:34:51 +0000 |
commit | c0fe2a5da3cc84c8802517815d0822341e81cb0e (patch) | |
tree | 292be0bc8862db69b59d90082334d41101b3f9e6 /queen | |
parent | fcf6d6613d92534321d28f9c1806ffeb21fcf9b8 (diff) | |
download | scummvm-rg350-c0fe2a5da3cc84c8802517815d0822341e81cb0e.tar.gz scummvm-rg350-c0fe2a5da3cc84c8802517815d0822341e81cb0e.tar.bz2 scummvm-rg350-c0fe2a5da3cc84c8802517815d0822341e81cb0e.zip |
Implement some special actions
svn-id: r11194
Diffstat (limited to 'queen')
-rw-r--r-- | queen/cutaway.cpp | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/queen/cutaway.cpp b/queen/cutaway.cpp index e3364e6da5..ae6e5eadfd 100644 --- a/queen/cutaway.cpp +++ b/queen/cutaway.cpp @@ -292,11 +292,150 @@ void Cutaway::actionSpecialMove(int index) { switch (index) { + case 2: + _logic->joeUseDress(false); + break; + + // c74a.cut - use clothes + case 3: + _logic->joeUseClothes(false); + break; + + case 4: + _logic->joeUseUnderwear(); + break; + + // cdres.cut + case 5: + _logic->display()->palSetJoe(JP_DRESS); + break; + + // cdclo.cut - Set Joe's palette + case 6: + _logic->display()->palSetJoe(JP_CLOTHES); + break; + + // c73e.cut - carbam background animation + case 7: + _graphics->bobClear(5); // Car + _graphics->bobClear(6); // FX + _graphics->bobClear(7); // Rico + _graphics->bob(5)->active = true; + _graphics->bob(6)->active = true; + _graphics->bob(7)->active = true; + break; + + // c74a.cut - Turn off big oil splat and gun shots! + case 8: + { + // XXX bamflag=0; + uint16 oilBobIndex = _logic->findBob(594); + _graphics->bob(oilBobIndex)->active = false; + _graphics->bob(7)->active = false; + } + break; + // cdint.cut - put camera on Joe case 16: _graphics->cameraBob(0); break; + // c75b.cut - Lightning hits plane + case 28: + { + _graphics->cameraBob(-1); + + short iy = 0, x, ydir = -1, j, k; + + BobSlot *planeBob = _graphics->bob(5); + BobSlot *lightningBob = _graphics->bob(20); + + planeBob->box.y2 = lightningBob->box.y2 = 199; + planeBob->y = 135; + + planeBob->scale = 20; + + for (x = 660; x > 163; x -= 6) { + planeBob->x = x; + planeBob->y = 135 + iy; + + iy -= ydir; + if (iy < -9 || iy > 9) + ydir = -ydir; + + planeBob->scale++; + if (planeBob->scale > 100) + planeBob->scale = 100; + + int scrollX = x - 163; + if (scrollX > 320) + scrollX = 320; + _logic->display()->horizontalScroll(scrollX); + + _logic->update(); + } + + planeBob->scale = 100; + _logic->display()->horizontalScroll(0); + + planeBob->x -= -8; + planeBob->y += 6; + + lightningBob->x = 160; + lightningBob->y = 0; + + // 23/2/95 - Play lightning SFX + // XXX sfxplay(NULLstr); + + _graphics->bankUnpack(18, lightningBob->frameNum, 15); + _graphics->bankUnpack(4, planeBob ->frameNum, 15); + + // Plane plunges into the jungle! + + BobSlot *fireBob = _graphics->bob(6); + + fireBob->animating = true; + fireBob->x = planeBob->x; + fireBob->y = planeBob->y + 10; + + _graphics->bankUnpack(19, fireBob->frameNum, 15); + _logic->update(); + + k = 20; + j = 1; + + for (x = 163; x > -30; x -= 10) { + planeBob->y += 4; + fireBob->y += 4; + planeBob->x = fireBob->x = x; + + if (k < 40) { + _graphics->bankUnpack(j, planeBob->frameNum, 15); + _graphics->bankUnpack(k, fireBob ->frameNum, 15); + k++; + j++; + + if (j == 4) + j = 1; + } + + _logic->update(); + } + + _graphics->cameraBob(0); + } + break; + + // c74a.cut - Wait for car to reach correct position before pouring oil + case 31: + // XXX while(bamindex!=60) update(); + break; + + // c75b.cut - Screen shake + case 32: + // TODO implement + break; + // cred.cut - scale title case 34: { |