mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
o See: builddefines.h: #define USE_HIGHSPEED_GAMELOOP_TIMER o Gamers reported on the Bears Pit, that an executable compiled WITH the highspeed timer enabled makes the game unplayable slow in mapscreen mode when doing certain actions (repair, ...). That is the reason, why I made the compilation of the highspeed timer optional. Currently it is disabled. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5355 3b4a5df2-a311-0410-b5c6-a8a6f20db521
180 lines
5.6 KiB
C
180 lines
5.6 KiB
C
#ifndef __TIMER_CONTROL_H
|
|
#define __TIMER_CONTROL_H
|
|
|
|
#ifndef CALLBACKTIMER
|
|
#define CALLBACKTIMER
|
|
#endif
|
|
|
|
typedef INT32 TIMECOUNTER;
|
|
|
|
//typedef void (__stdcall *JA2_TIMERPROC)( UINT32 uiID, UINT32 uiMsg, UINT32 uiUser, UINT32 uiDw1, UINT32 uiDw2 );
|
|
|
|
typedef void (*CUSTOMIZABLE_TIMER_CALLBACK) ( void );
|
|
|
|
// CALLBACK TIMER DEFINES
|
|
enum
|
|
{
|
|
ITEM_LOCATOR_CALLBACK,
|
|
NUM_TIMER_CALLBACKS
|
|
};
|
|
|
|
#define TILE_ANIM__NORMAL_SPEED 200
|
|
#define TILE_ANIM__FAST_SPEED 30
|
|
|
|
|
|
// TIMER DEFINES
|
|
enum
|
|
{
|
|
TOVERHEAD = 0, // Overhead time slice
|
|
NEXTSCROLL, // Scroll Speed timer
|
|
STARTSCROLL, // Scroll Start timer
|
|
ANIMATETILES, // Animate tiles timer
|
|
FPSCOUNTER, // FPS value
|
|
PATHFINDCOUNTER, // PATH FIND COUNTER
|
|
CURSORCOUNTER, // ANIMATED CURSOR
|
|
RMOUSECLICK_DELAY_COUNTER, // RIGHT BUTTON CLICK DELAY
|
|
LMOUSECLICK_DELAY_COUNTER, // LEFT BUTTON CLICK DELAY
|
|
SLIDETEXT, // DAMAGE DISPLAY
|
|
TARGETREFINE, // TARGET REFINE
|
|
CURSORFLASH, // Cursor/AP flash
|
|
FADE_GUY_OUT, // FADE MERCS OUT
|
|
PANELSLIDE_UNUSED, // PANLE SLIDE
|
|
TCLOCKUPDATE, // CLOCK UPDATE
|
|
PHYSICSUPDATE, // PHYSICS UPDATE.
|
|
GLOW_ENEMYS,
|
|
STRATEGIC_OVERHEAD, // STRATEGIC OVERHEAD
|
|
CYCLERENDERITEMCOLOR, // CYCLE COLORS
|
|
NONGUNTARGETREFINE, // TARGET REFINE
|
|
CURSORFLASHUPDATE, //
|
|
INVALID_AP_HOLD, // TIME TO HOLD INVALID AP
|
|
RADAR_MAP_BLINK, // BLINK DELAY FOR RADAR MAP
|
|
OVERHEAD_MAP_BLINK, // OVERHEADMAP
|
|
MUSICOVERHEAD, // MUSIC TIMER
|
|
RUBBER_BAND_START_DELAY,
|
|
NUMTIMERS
|
|
};
|
|
|
|
#ifdef USE_HIGHSPEED_GAMELOOP_TIMER
|
|
#else
|
|
// Base resultion of callback timer
|
|
#define BASETIMESLICE 10
|
|
#endif
|
|
|
|
|
|
// TIMER INTERVALS
|
|
extern INT32 giTimerIntervals[ NUMTIMERS ];
|
|
// TIMER COUNTERS
|
|
extern INT32 giTimerCounters[ NUMTIMERS ];
|
|
|
|
// GLOBAL SYNC TEMP TIME
|
|
extern INT32 giClockTimer;
|
|
extern INT32 giTimerDiag;
|
|
extern INT32 giTimerTeamTurnUpdate;
|
|
|
|
|
|
// Functions
|
|
BOOLEAN InitializeJA2Clock( void );
|
|
void ShutdownJA2Clock( void );
|
|
|
|
#define GetJA2Clock() guiBaseJA2Clock
|
|
|
|
#ifdef USE_HIGHSPEED_GAMELOOP_TIMER
|
|
#define GetJA2NoPauseClock() guiBaseJA2NoPauseClock
|
|
#endif
|
|
|
|
UINT32 GetPauseJA2Clock( );
|
|
|
|
UINT32 InitializeJA2TimerID( UINT32 uiDelay, UINT32 uiCallbackID, UINT32 uiUser );
|
|
void RemoveJA2TimerCallback( UINT32 uiTimer );
|
|
|
|
void PauseTime( BOOLEAN fPaused );
|
|
|
|
void SetCustomizableTimerCallbackAndDelay( INT32 iDelay, CUSTOMIZABLE_TIMER_CALLBACK pCallback, BOOLEAN fReplace );
|
|
void CheckCustomizableTimer( void );
|
|
|
|
#ifdef USE_HIGHSPEED_GAMELOOP_TIMER
|
|
void SetFastForwardPeriod(DOUBLE value);
|
|
void SetFastForwardKey(INT32 key);
|
|
BOOLEAN IsFastForwardKeyPressed();
|
|
void SetFastForwardMode(BOOLEAN enable);
|
|
BOOLEAN IsFastForwardMode();
|
|
INT32 GetFastForwardLoopCount();
|
|
void SetFastForwardLoopCount(INT32 value);
|
|
|
|
void SetNotifyFrequencyKey(INT32 value);
|
|
void SetClockSpeedPercent(FLOAT value);
|
|
|
|
BOOLEAN IsTimerActive();
|
|
BOOLEAN IsJA2TimerThread();
|
|
|
|
BOOLEAN IsHiSpeedClockMode();
|
|
void SetHiSpeedClockMode(BOOLEAN enable);
|
|
#endif
|
|
|
|
//Don't modify this value
|
|
extern UINT32 guiBaseJA2Clock;
|
|
extern UINT32 guiBaseJA2NoPauseClock;
|
|
extern CUSTOMIZABLE_TIMER_CALLBACK gpCustomizableTimerCallback;
|
|
|
|
#ifdef USE_HIGHSPEED_GAMELOOP_TIMER
|
|
typedef void (*TIMER_NOTIFY_CALLBACK) ( INT32 timer, PTR state );
|
|
void AddTimerNotifyCallback( TIMER_NOTIFY_CALLBACK callback, PTR state );
|
|
void RemoveTimerNotifyCallback( TIMER_NOTIFY_CALLBACK callback, PTR state );
|
|
void ClearTimerNotifyCallbacks();
|
|
|
|
BOOLEAN UpdateCounter(INT32 iTimer);
|
|
void ResetCounter(INT32 iTimer);
|
|
BOOLEAN CounterDone(INT32 iTimer);
|
|
void ResetTimerCounter(INT32 &timer, INT32 value);
|
|
BOOLEAN TimeCounterDone(INT32 timer);
|
|
void ZeroTimeCounter(INT32& timer);
|
|
|
|
|
|
#define UPDATECOUNTER( c ) UpdateCounter(c)
|
|
#define RESETCOUNTER( c ) ResetCounter(c)
|
|
#define COUNTERDONE( c ) CounterDone(c)
|
|
#define UPDATETIMECOUNTER( c ) UpdateTimeCounter(c)
|
|
#define RESETTIMECOUNTER( c, d ) ResetTimerCounter(c, d)
|
|
#define TIMECOUNTERDONE(c, d) TimeCounterDone(c)
|
|
#define SYNCTIMECOUNTER( )
|
|
#define ZEROTIMECOUNTER(c) ZeroTimeCounter(c)
|
|
#else
|
|
|
|
// MACROS
|
|
// CHeck if new counter < 0 | set to 0 | Decrement
|
|
|
|
#ifdef CALLBACKTIMER
|
|
|
|
#define UPDATECOUNTER( c ) ( ( giTimerCounters[ c ] - BASETIMESLICE ) < 0 ) ? ( giTimerCounters[ c ] = 0 ) : ( giTimerCounters[ c ] -= BASETIMESLICE )
|
|
#define RESETCOUNTER( c ) ( giTimerCounters[ c ] = giTimerIntervals[ c ] )
|
|
#define COUNTERDONE( c ) ( giTimerCounters[ c ] == 0 ) ? TRUE : FALSE
|
|
|
|
#define UPDATETIMECOUNTER( c ) ( ( c - BASETIMESLICE ) < 0 ) ? ( c = 0 ) : ( c -= BASETIMESLICE )
|
|
#define RESETTIMECOUNTER( c, d ) ( c = d )
|
|
|
|
#ifdef BOUNDS_CHECKER
|
|
#define TIMECOUNTERDONE( c, d ) ( TRUE )
|
|
#else
|
|
#define TIMECOUNTERDONE( c, d ) ( c == 0 ) ? TRUE : FALSE
|
|
#endif
|
|
|
|
#define SYNCTIMECOUNTER( )
|
|
#define ZEROTIMECOUNTER( c ) ( c = 0 )
|
|
|
|
#else
|
|
|
|
#define UPDATECOUNTER( c )
|
|
#define RESETCOUNTER( c ) ( giTimerCounters[ c ] = giClockTimer )
|
|
#define COUNTERDONE( c ) ( ( ( giClockTimer = GetJA2Clock() ) - giTimerCounters[ c ] ) > giTimerIntervals[ c ] ) ? TRUE : FALSE
|
|
|
|
#define UPDATETIMECOUNTER( c )
|
|
#define RESETTIMECOUNTER( c, d ) ( c = giClockTimer )
|
|
#define TIMECOUNTERDONE( c, d ) ( giClockTimer - c > d ) ? TRUE : FALSE
|
|
#define SYNCTIMECOUNTER( ) ( giClockTimer = GetJA2Clock() )
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
void SetTileAnimCounter( INT32 iTime );
|
|
#endif |