123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- // Sequence Header File
- #ifndef __SEQUENCE__
- #define __SEQUENCE__
- class CSequence
- {
- typedef list < CSequence * > sequence_l;
- // typedef map < int, CSequence *> sequenceID_m;
- typedef list < CBlock * > block_l;
- public:
- //Constructors / Destructors
- CSequence( void );
- ~CSequence( void );
- //Creation and deletion
- static CSequence *Create( void );
- void Delete( CIcarus* icarus );
- //Organization functions
- void AddChild( CSequence * );
- void RemoveChild( CSequence * );
- void SetParent( CSequence * );
- CSequence *GetParent( void ) const { return m_parent; }
- //Block manipulation
- CBlock *PopCommand( int );
- int PushCommand( CBlock *, int );
- //Flag utilties
- void SetFlag( int );
- void RemoveFlag( int, bool = false );
- int HasFlag( int );
- int GetFlags( void ) const { return m_flags; }
- void SetFlags( int flags ) { m_flags = flags; }
- //Various encapsulation utilities
- int GetIterations( void ) const { return m_iterations; }
- void SetIterations( int it ) { m_iterations = it; }
- int GetID( void ) const { return m_id; }
- void SetID( int id ) { m_id = id; }
- CSequence *GetReturn( void ) const { return m_return; }
- void SetReturn ( CSequence *sequence );
- int GetNumCommands( void ) const { return m_numCommands; }
- int GetNumChildren( void ) const { return m_children.size(); }
- CSequence *GetChildByID( int id );
- CSequence *GetChildByIndex( int iIndex );
- bool HasChild( CSequence *sequence );
- int Save();
- int Load( CIcarus* icarus );
- // Overloaded new operator.
- inline void *operator new( size_t size )
- { // Allocate the memory.
- return IGameInterface::GetGame()->Malloc( size );
- }
- // Overloaded delete operator.
- inline void operator delete( void *pRawData )
- { // Free the Memory.
- IGameInterface::GetGame()->Free( pRawData );
- }
- enum
- {
- SQ_COMMON = 0x00000000, //Common one-pass sequence
- SQ_LOOP = 0x00000001, //Looping sequence
- SQ_RETAIN = 0x00000002, //Inside a looping sequence list, retain the information
- SQ_AFFECT = 0x00000004, //Affect sequence
- SQ_RUN = 0x00000008, //A run block
- SQ_PENDING = 0x00000010, //Pending use, don't free when flushing the sequences
- SQ_CONDITIONAL = 0x00000020, //Conditional statement
- SQ_TASK = 0x00000040, //Task block
- };
- enum
- {
- POP_FRONT,
- POP_BACK,
- PUSH_FRONT,
- PUSH_BACK
- };
- protected:
- int SaveCommand( CBlock *block );
- int LoadCommand( CBlock *block, CIcarus *icarus );
- //Organization information
- sequence_l m_children;
- //sequenceID_m m_childrenMap;
- //int m_numChildren;
- CSequence *m_parent;
- CSequence *m_return;
- //Data information
- block_l m_commands;
- int m_flags;
- int m_iterations;
- int m_id;
- int m_numCommands;
- };
- #endif //__SEQUENCE__
|