1 #ifndef __TIMER_CONTROL_H 2 #define __TIMER_CONTROL_H 3 4 #include "Types.h" 5 6 typedef void (*CUSTOMIZABLE_TIMER_CALLBACK) ( void ); 7 8 // TIMER DEFINES 9 enum 10 { 11 TOVERHEAD = 0, // Overhead time slice 12 NEXTSCROLL, // Scroll Speed timer 13 STARTSCROLL, // Scroll Start timer 14 ANIMATETILES, // Animate tiles timer 15 FPSCOUNTER, // FPS value 16 PATHFINDCOUNTER, // PATH FIND COUNTER 17 CURSORCOUNTER, // ANIMATED CURSOR 18 RMOUSECLICK_DELAY_COUNTER, // RIGHT BUTTON CLICK DELAY 19 LMOUSECLICK_DELAY_COUNTER, // LEFT BUTTON CLICK DELAY 20 MMOUSECLICK_DELAY_COUNTER, // LEFT BUTTON CLICK DELAY 21 TARGETREFINE, // TARGET REFINE 22 CURSORFLASH, // Cursor/AP flash 23 PHYSICSUPDATE, // PHYSICS UPDATE. 24 GLOW_ENEMYS, 25 STRATEGIC_OVERHEAD, // STRATEGIC OVERHEAD 26 CYCLERENDERITEMCOLOR, // CYCLE COLORS 27 NONGUNTARGETREFINE, // TARGET REFINE 28 CURSORFLASHUPDATE, // 29 INVALID_AP_HOLD, // TIME TO HOLD INVALID AP 30 RADAR_MAP_BLINK, // BLINK DELAY FOR RADAR MAP 31 MUSICOVERHEAD, // MUSIC TIMER 32 NUMTIMERS 33 }; 34 35 // Base resultion of callback timer 36 #define BASETIMESLICE 10 37 38 extern const INT32 giTimerIntervals[NUMTIMERS]; 39 extern INT32 giTimerCounters[NUMTIMERS]; 40 41 // GLOBAL SYNC TEMP TIME 42 extern INT32 giClockTimer; 43 44 extern INT32 giTimerDiag; 45 46 extern INT32 giTimerTeamTurnUpdate; 47 48 49 void InitializeJA2Clock(void); 50 void ShutdownJA2Clock(void); 51 52 #define GetJA2Clock() guiBaseJA2Clock 53 54 void PauseTime( BOOLEAN fPaused ); 55 56 void SetCustomizableTimerCallbackAndDelay( INT32 iDelay, CUSTOMIZABLE_TIMER_CALLBACK pCallback, BOOLEAN fReplace ); 57 void CheckCustomizableTimer( void ); 58 59 //Don't modify this value 60 extern UINT32 guiBaseJA2Clock; 61 extern CUSTOMIZABLE_TIMER_CALLBACK gpCustomizableTimerCallback; 62 63 // MACROS 64 // Check if new counter < 0 | set to 0 | Decrement 65 66 #define UPDATECOUNTER( c ) ( ( giTimerCounters[ c ] - BASETIMESLICE ) < 0 ) ? ( giTimerCounters[ c ] = 0 ) : ( giTimerCounters[ c ] -= BASETIMESLICE ) 67 #define RESETCOUNTER( c ) ( giTimerCounters[ c ] = giTimerIntervals[ c ] ) 68 #define COUNTERDONE( c ) ( giTimerCounters[ c ] == 0 ) ? TRUE : FALSE 69 70 #define UPDATETIMECOUNTER( c ) ( ( c - BASETIMESLICE ) < 0 ) ? ( c = 0 ) : ( c -= BASETIMESLICE ) 71 #define RESETTIMECOUNTER( c, d ) ( c = d ) 72 73 #ifdef BOUNDS_CHECKER 74 #define TIMECOUNTERDONE(c, d) true 75 #else 76 #define TIMECOUNTERDONE(c, d) (c == 0) 77 #endif 78 79 #define SYNCTIMECOUNTER() (void)0 80 #define ZEROTIMECOUNTER( c ) ( c = 0 ) 81 82 // whenever guiBaseJA2Clock changes, we must reset all the timer variables that 83 // use it as a reference 84 void ResetJA2ClockGlobalTimers(void); 85 86 #endif