#ifndef __GLOBALS_H
#define __GLOBALS_H

#include "engine.h"
#include "resource.h"
#include "inifile.h"

/***********************************************************************
 * Global constants
 **********************************************************************/

#define kRequiredFiles	30

#define kMaxPlayers		8

// Game clock timer resolution
#define kTimerRate      120

// number of clock ticks per game frame
#define kFrameTicks     4	// 30 frames/sec

// Physics constants
#define kZUnitsPerMeter (32 << 8)
#define kXUnitsPerMeter (32 << 4)
#define kRealGravity 	20.0     // meter/sec^2
//#define kRealGravity 	9.8     // meter/sec^2
#define M2Z(n)       (int)((n) * kZUnitsPerMeter)  // convert meters to z units
#define M2X(n)       (int)((n) * kXUnitsPerMeter)  // convert meters to x units
#define kGravity     (int)(M2Z(kRealGravity) / (kTimerRate * kTimerRate) + .5)

enum
{
	kNetModeOff			= 0,
	kNetModeCoop,
	kNetModeBloodBath,
	kNetModeTeams
};


/***********************************************************************
 * Global variables
 **********************************************************************/
extern Resource gSysRes;
extern IniFile BloodINI;

extern char gBuildDate[];
extern int gOldDisplayMode;
extern long gFrameClock;
extern int gFrameTicks;
extern int gFrame;
extern volatile long gGameClock;
extern int gCacheMiss;
extern int gFrameRate;
extern int gGamma;
extern int gSpring;					// û(m/k)
extern int gSpringPhaseInc;			// kAngle360 / T

extern BOOL gPaused;
extern BOOL gNetGame;
extern int gNetPlayers;
extern int gNetMode;

void ClockStrobe( void );
void LockClockStrobe( void );
void UnlockClockStrobe( void );

#endif
