From a2adda516bdf790651283201a666f253a8bfcc49 Mon Sep 17 00:00:00 2001 From: uruk Date: Mon, 17 Jun 2013 10:38:38 +0200 Subject: AVALANCHE: Initial PtoC output. --- engines/avalanche/sequence.cpp | 92 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 engines/avalanche/sequence.cpp (limited to 'engines/avalanche/sequence.cpp') 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. */ +} + -- cgit v1.2.3