aboutsummaryrefslogtreecommitdiff
path: root/engines/dreamweb/people.cpp
diff options
context:
space:
mode:
authorFilippos Karapetis2011-12-16 00:02:57 +0200
committerFilippos Karapetis2011-12-16 00:02:57 +0200
commit6792fa2fb650d4ac225b4b4352b41fd17323c4c4 (patch)
treebbd63e1081a1414d9e4d181b01ec5df03258fd0d /engines/dreamweb/people.cpp
parent60f9b91ced244fd7bdb822cc4471a937d38d6179 (diff)
downloadscummvm-rg350-6792fa2fb650d4ac225b4b4352b41fd17323c4c4.tar.gz
scummvm-rg350-6792fa2fb650d4ac225b4b4352b41fd17323c4c4.tar.bz2
scummvm-rg350-6792fa2fb650d4ac225b4b4352b41fd17323c4c4.zip
DREAMWEB: Port 'businessman' to C++
Diffstat (limited to 'engines/dreamweb/people.cpp')
-rw-r--r--engines/dreamweb/people.cpp68
1 files changed, 66 insertions, 2 deletions
diff --git a/engines/dreamweb/people.cpp b/engines/dreamweb/people.cpp
index e4e368211e..003921b163 100644
--- a/engines/dreamweb/people.cpp
+++ b/engines/dreamweb/people.cpp
@@ -40,7 +40,7 @@ static void (DreamGenContext::*reelCallbacks[57])() = {
NULL, NULL,
NULL, NULL,
NULL, &DreamGenContext::poolGuard,
- NULL, &DreamGenContext::businessMan,
+ NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL, NULL,
@@ -72,7 +72,7 @@ static void (DreamGenContext::*reelCallbacksCPP[57])(ReelRoutine &) = {
&DreamGenContext::keeper, &DreamGenContext::candles1,
&DreamGenContext::smallCandle, &DreamGenContext::security,
&DreamGenContext::copper, /*&DreamGenContext::poolGuard*/NULL,
- &DreamGenContext::rockstar, /*&DreamGenContext::businessMan*/NULL,
+ &DreamGenContext::rockstar, &DreamGenContext::businessMan,
&DreamGenContext::train, &DreamGenContext::genericPerson /*aide*/,
&DreamGenContext::mugger, &DreamGenContext::helicopter,
&DreamGenContext::introMagic1, &DreamGenContext::introMusic,
@@ -948,4 +948,68 @@ void DreamGenContext::mugger(ReelRoutine &routine) {
}
}
+void DreamGenContext::businessMan(ReelRoutine &routine) {
+ data.byte(kPointermode) = 0;
+ data.word(kWatchingtime) = 2;
+ if (routine.reelPointer() == 2) {
+ // First
+ DreamBase::setupTimedUse(49, 30, 1, 68, 174);
+ return;
+ }
+
+ if (routine.reelPointer() == 95) {
+ // Bus combat won - end
+ data.byte(kPointermode) = 0;
+ data.word(kWatchingtime) = 0;
+ return;
+ }
+
+ if (routine.reelPointer() == 49)
+ return; // buscombatend
+
+ if (checkSpeed(routine)) {
+ uint16 nextReelPointer = routine.reelPointer() + 1;
+ if (nextReelPointer == 48) {
+ data.byte(kMandead) = 2; // before dead body
+ } else if (nextReelPointer == 15) {
+ nextReelPointer--;
+ if (data.byte(kLastweapon) == 3) {
+ // Shield bonus
+ data.byte(kLastweapon) = (byte)-1;
+ data.byte(kCombatcount) = 0;
+ nextReelPointer = 51;
+ } else {
+ // No shield bonus
+ data.byte(kCombatcount)++;
+ if (data.byte(kCombatcount) == 20) {
+ data.byte(kCombatcount) = 0;
+ nextReelPointer = 15;
+ }
+ }
+ } else {
+ // Bus combat won
+ if (nextReelPointer == 91) {
+ turnPathOn(0);
+ turnPathOn(1);
+ turnPathOn(2);
+ turnPathOff(3);
+ data.byte(kManspath) = 5;
+ data.byte(kFinaldest) = 5;
+ findXYFromPath();
+ data.byte(kResetmanxy) = 1;
+ nextReelPointer = 92;
+ }
+ }
+
+ routine.setReelPointer(nextReelPointer);
+ }
+
+ showGameReel(&routine);
+ routine.mapY = data.byte(kMapy);
+ if (routine.reelPointer() == 14) {
+ data.word(kWatchingtime) = 0;
+ data.byte(kPointermode) = 2;
+ }
+}
+
} // End of namespace DreamGen