1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- #ifndef __SEQ_H
- #define __SEQ_H
- #include "helix.h"
- #include "typedefs.h"
- #include "resource.h"
- #define kSEQSig "SEQ\x1A"
- #define kSEQVersion 0x0300
- struct SEQFRAME
- {
- unsigned nTile : 12;
- unsigned translucent : 1;
- unsigned translucentR : 1;
- unsigned blocking : 1;
- unsigned hitscan : 1;
- unsigned xrepeat : 8;
- unsigned yrepeat : 8;
- signed shade : 8;
- unsigned pal : 5;
- unsigned trigger : 1; // trigger callback
- unsigned smoke : 1; // add smoke tsprite
- // unsigned shadeRelative : 1;
- // unsigned reserved : 16;
- unsigned reserved : 17;
- };
- typedef void (*SEQCALLBACK)( int type, int nXIndex );
- struct Seq
- {
- char signature[4];
- short version;
- short nFrames; // sequence length
- short ticksPerFrame; // inverted play rate
- short soundID;
- uchar flags;
- char pad[3];
- SEQFRAME frame[];
- void Preload( void );
- };
- // sequence flags
- enum {
- kSeqLoop = 1,
- kSeqRemove = 2,
- };
- void seqSpawn( int nSeqID, int type, int nXIndex, SEQCALLBACK callback = NULL );
- void seqKill( int type, int nXIndex );
- /* use this when you need to delete a sprite which has a sequence playing. */
- void seqKillAll( void );
- int seqGetStatus( int type, int nXIndex );
- /* find out whether a sequence is finished */
- void seqProcess( int nTicks );
- /* update all sequences */
- #endif
|