aboutsummaryrefslogtreecommitdiff
path: root/script.cpp
diff options
context:
space:
mode:
authorVincent Hamm2002-03-05 23:41:41 +0000
committerVincent Hamm2002-03-05 23:41:41 +0000
commitc21e9da1b6c46f145f8061ca77dd5b9b9627e782 (patch)
tree824f1ce524979fd09ef6a88e6268cd3c30f97d3f /script.cpp
parent8d6efb265f1d38599d80eebe80570b5bfba944f8 (diff)
downloadscummvm-rg350-c21e9da1b6c46f145f8061ca77dd5b9b9627e782.tar.gz
scummvm-rg350-c21e9da1b6c46f145f8061ca77dd5b9b9627e782.tar.bz2
scummvm-rg350-c21e9da1b6c46f145f8061ca77dd5b9b9627e782.zip
Next episode in V7 reimplementation. Nearly working
svn-id: r3658
Diffstat (limited to 'script.cpp')
-rw-r--r--script.cpp164
1 files changed, 80 insertions, 84 deletions
diff --git a/script.cpp b/script.cpp
index 4ea32ece6e..1a368b21dc 100644
--- a/script.cpp
+++ b/script.cpp
@@ -606,11 +606,10 @@ void Scumm::checkAndRunVar33() {
_sentenceNum--;
-#if !defined(FULL_THROTTLE)
- if (sentence[_sentenceNum].unk2 &&
- sentence[_sentenceNum].unk3==sentence[_sentenceNum].unk4)
- return;
-#endif
+ if(!(_features & GF_AFTER_V7))
+ if (sentence[_sentenceNum].unk2 &&
+ sentence[_sentenceNum].unk3==sentence[_sentenceNum].unk4)
+ return;
_localParamList[0] = sentence[_sentenceNum].unk5;
_localParamList[1] = sentence[_sentenceNum].unk4;
@@ -797,64 +796,63 @@ void Scumm::faceActorToObj(int act, int obj) {
}
void Scumm::animateActor(int act, int anim) {
-#if defined(FULL_THROTTLE)
- int cmd,dir;
- Actor *a;
+ if(_features & GF_AFTER_V7) {
+ int cmd,dir;
+ Actor *a;
- a = derefActorSafe(act, "animateActor");
+ a = derefActorSafe(act, "animateActor");
- if (anim==0xFF)
- anim = 2000;
+ if (anim==0xFF)
+ anim = 2000;
- cmd = anim / 1000;
- dir = anim % 1000;
+ cmd = anim / 1000;
+ dir = anim % 1000;
- /* temporary code */
-// dir = newDirToOldDir(dir);
-
- switch(cmd) {
- case 2:
- stopActorMoving(a);
- startAnimActor(a, a->standFrame);
- break;
- case 3:
- a->moving &= ~4;
- fixActorDirection(a, dir);
- break;
- case 4:
- turnToDirection(a, dir);
- break;
- default:
- startAnimActor(a, anim);
- }
+ /* temporary code */
+// dir = newDirToOldDir(dir);
+ switch(cmd) {
+ case 2:
+ stopActorMoving(a);
+ startAnimActor(a, a->standFrame);
+ break;
+ case 3:
+ a->moving &= ~4;
+ fixActorDirection(a, dir);
+ break;
+ case 4:
+ turnToDirection(a, dir);
+ break;
+ default:
+ startAnimActor(a, anim);
+ }
-#else
- int dir;
- Actor *a;
-
- a = derefActorSafe(act, "animateActor");
- if (!a) return;
+ } else {
+ int dir;
+ Actor *a;
- dir = anim&3;
+ a = derefActorSafe(act, "animateActor");
+ if (!a) return;
+
+ dir = anim&3;
- switch(anim>>2) {
- case 0x3F:
- stopActorMoving(a);
- startAnimActor(a, a->standFrame);
- break;
- case 0x3E:
- a->moving &= ~4;
- fixActorDirection(a, oldDirToNewDir(dir));
- break;
- case 0x3D:
- turnToDirection(a, oldDirToNewDir(dir));
- break;
- default:
- startAnimActor(a, anim);
+ switch(anim>>2) {
+ case 0x3F:
+ stopActorMoving(a);
+ startAnimActor(a, a->standFrame);
+ break;
+ case 0x3E:
+ a->moving &= ~4;
+ fixActorDirection(a, oldDirToNewDir(dir));
+ break;
+ case 0x3D:
+ turnToDirection(a, oldDirToNewDir(dir));
+ break;
+ default:
+ startAnimActor(a, anim);
+ }
+
}
-
-#endif
}
bool Scumm::isScriptRunning(int script) {
@@ -862,7 +860,7 @@ bool Scumm::isScriptRunning(int script) {
ScriptSlot *ss = vm.slot;
for (i=0; i<NUM_SCRIPT_SLOT; i++,ss++)
if (ss->number==script && (ss->where==WIO_GLOBAL ||
- ss->where==WIO_LOCAL) && ss->status)
+ ss->where==WIO_LOCAL) && ss->status)
return true;
return false;
}
@@ -1018,46 +1016,44 @@ void Scumm::exitCutscene() {
vm.cutScenePtr[vm.cutSceneStackPointer] = 0;
}
}
-#if defined(FULL_THROTTLE)
void Scumm::doSentence(int c, int b, int a) {
- SentenceTab *st;
+ if(_features & GF_AFTER_V7) {
+ SentenceTab *st;
- if (b==a)
- return;
+ if (b==a)
+ return;
- st = &sentence[_sentenceNum-1];
+ st = &sentence[_sentenceNum-1];
- if (_sentenceNum &&
- st->unk5 == c && st->unk4==b && st->unk3==a)
- return;
+ if (_sentenceNum &&
+ st->unk5 == c && st->unk4==b && st->unk3==a)
+ return;
- _sentenceNum++;
- st++;
+ _sentenceNum++;
+ st++;
- st->unk5 = c;
- st->unk4 = b;
- st->unk3 = a;
- st->unk = 0;
+ st->unk5 = c;
+ st->unk4 = b;
+ st->unk3 = a;
+ st->unk = 0;
- warning("dosentence(%d,%d,%d)", c, b, a);
+ warning("dosentence(%d,%d,%d)", c, b, a);
-}
+ } else {
-#else
-void Scumm::doSentence(int c, int b, int a) {
- SentenceTab *st;
+ SentenceTab *st;
- st = &sentence[_sentenceNum++];
+ st = &sentence[_sentenceNum++];
- st->unk5 = c;
- st->unk4 = b;
- st->unk3 = a;
+ st->unk5 = c;
+ st->unk4 = b;
+ st->unk3 = a;
- if (!(st->unk3&0xFF00))
- st->unk2 = 0;
- else
- st->unk2 = 1;
+ if (!(st->unk3&0xFF00))
+ st->unk2 = 0;
+ else
+ st->unk2 = 1;
- st->unk = 0;
+ st->unk = 0;
+ }
}
-#endif