aboutsummaryrefslogtreecommitdiff
path: root/engines/avalanche/sequence.cpp
diff options
context:
space:
mode:
authoruruk2013-06-17 10:38:38 +0200
committeruruk2013-06-17 10:38:38 +0200
commita2adda516bdf790651283201a666f253a8bfcc49 (patch)
treebdc6479a6889d15d1b25e47e28f0c86f093a9610 /engines/avalanche/sequence.cpp
parent2f0e43bb2e402bbcf65175934d21ade6febaad60 (diff)
downloadscummvm-rg350-a2adda516bdf790651283201a666f253a8bfcc49.tar.gz
scummvm-rg350-a2adda516bdf790651283201a666f253a8bfcc49.tar.bz2
scummvm-rg350-a2adda516bdf790651283201a666f253a8bfcc49.zip
AVALANCHE: Initial PtoC output.
Diffstat (limited to 'engines/avalanche/sequence.cpp')
-rw-r--r--engines/avalanche/sequence.cpp92
1 files changed, 92 insertions, 0 deletions
diff --git a/engines/avalanche/sequence.cpp b/engines/avalanche/sequence.cpp
new file mode 100644
index 0000000000..00c838a95a
--- /dev/null
+++ b/engines/avalanche/sequence.cpp
@@ -0,0 +1,92 @@
+#include "ptoc.h"
+
+/*
+ ÛßÜ ÛßÜ ÜßßÜ ßÛß Ûßß Üß ßÛß ÜßÛßÜ ßÛß ÛÜ Û ÜÛßß ßÛß ÛßÜ Ûßß Û
+ Ûß ÛÛ Û Û Ü Û Ûßß ßÜ Û Û Û Û Û Û ÛÜÛ ßßßÜ Û ÛÛ Ûßß Û
+ ß ß ß ßß ßß ßßß ß ß ß ß ß ßßß ß ßß ßßß ß ß ß ßßß ßßß
+
+ SEQUENCE The sequencer. */
+
+#define __sequence_implementation__
+
+
+#include "sequence.h"
+
+
+/*#include "Gyro.h"*/
+/*#include "Timeout.h"*/
+/*#include "Celer.h"*/
+/*#include "Trip5.h"*/
+
+
+void then_show(byte what)
+{
+ byte fv;
+;
+ for( fv=1; fv <= seq_length; fv ++)
+ if (seq[fv]==0)
+ {;
+ seq[fv]=what;
+ return;
+ }
+}
+
+void first_show(byte what)
+{;
+ /* First, we need to blank out the entire array. */
+ fillchar(seq,sizeof(seq),'\0');
+
+ /* Then it's just the same as then_show. */
+ then_show(what);
+
+}
+
+void then_flip(byte where,byte ped)
+{;
+ then_show(now_flip);
+
+ dna.flip_to_where=where;
+ dna.flip_to_ped=ped;
+}
+
+void start_to_close()
+{;
+ lose_timer(reason_sequencer);
+ set_up_timer(7,procsequence,reason_sequencer);
+}
+
+void start_to_open()
+{;
+ dna.user_moves_avvy=false; /* They can't move. */
+ stopwalking; /* And they're not moving now. */
+ start_to_close(); /* Apart from that, it's the same thing. */
+}
+
+void call_sequencer();
+
+ /* This proc is called by Timeout when it's time to do another frame. */
+static void shove_left()
+{;
+ move(seq[2],seq[1],seq_length-1); /* Shift everything to the left. */
+}
+
+void call_sequencer()
+{;
+ switch (seq[1]) {
+ case 0: return; break; /* No more routines. */
+ case 1 ... 176: {; /* Show a frame. */
+ show_one(seq[1]);
+ shove_left();
+ }
+ break;
+ case 177: {;
+ user_moves_avvy=true;
+ fliproom(flip_to_where,flip_to_ped); /* 177 = Flip room. */
+ if (seq[1]==177) shove_left();
+ }
+ break;
+ }
+
+ start_to_close(); /* Make sure this proc gets called again. */
+}
+