?? hge.h.svn-base
字號:
/*
** Haaf's Game Engine 1.7
** Copyright (C) 2003-2007, Relish Games
** hge.relishgames.com
**
** System layer API
*/
#ifndef HGE_H
#define HGE_H
#include <windows.h>
#define HGE_VERSION 0x170
#ifdef HGEDLL
#define EXPORT __declspec(dllexport)
#else
#define EXPORT
#endif
#define CALL __stdcall
#ifdef __BORLANDC__
#define floorf (float)floor
#define sqrtf (float)sqrt
#define acosf (float)acos
#define atan2f (float)atan2
#define cosf (float)cos
#define sinf (float)sin
#define powf (float)pow
#define fabsf (float)fabs
#define min(x,y) ((x) < (y)) ? (x) : (y)
#define max(x,y) ((x) > (y)) ? (x) : (y)
#endif
/*
** Common data types
*/
#ifndef DWORD
typedef unsigned long DWORD;
typedef unsigned short WORD;
typedef unsigned char BYTE;
#endif
/*
** Common math constants
*/
#ifndef M_PI
#define M_PI 3.14159265358979323846f
#define M_PI_2 1.57079632679489661923f
#define M_PI_4 0.785398163397448309616f
#define M_1_PI 0.318309886183790671538f
#define M_2_PI 0.636619772367581343076f
#endif
/*
** HGE Handle types
*/
typedef DWORD HTEXTURE;
typedef DWORD HTARGET;
typedef DWORD HEFFECT;
typedef DWORD HMUSIC;
typedef DWORD HSTREAM;
typedef DWORD HCHANNEL;
/*
** Hardware color macros
*/
#define ARGB(a,r,g,b) ((DWORD(a)<<24) + (DWORD(r)<<16) + (DWORD(g)<<8) + DWORD(b))
#define GETA(col) ((col)>>24)
#define GETR(col) (((col)>>16) & 0xFF)
#define GETG(col) (((col)>>8) & 0xFF)
#define GETB(col) ((col) & 0xFF)
#define SETA(col,a) (((col) & 0x00FFFFFF) + (DWORD(a)<<24))
#define SETR(col,r) (((col) & 0xFF00FFFF) + (DWORD(r)<<16))
#define SETG(col,g) (((col) & 0xFFFF00FF) + (DWORD(g)<<8))
#define SETB(col,b) (((col) & 0xFFFFFF00) + DWORD(b))
/*
** HGE Blending constants
*/
#define BLEND_COLORADD 1
#define BLEND_COLORMUL 0
#define BLEND_ALPHABLEND 2
#define BLEND_ALPHAADD 0
#define BLEND_ZWRITE 4
#define BLEND_NOZWRITE 0
#define BLEND_DEFAULT (BLEND_COLORMUL | BLEND_ALPHABLEND | BLEND_NOZWRITE)
#define BLEND_DEFAULT_Z (BLEND_COLORMUL | BLEND_ALPHABLEND | BLEND_ZWRITE)
/*
** HGE System state constants
*/
enum hgeBoolState
{
HGE_WINDOWED = 12, // bool run in window? (default: false)
HGE_ZBUFFER = 13, // bool use z-buffer? (default: false)
HGE_TEXTUREFILTER = 28, // bool texture filtering? (default: true)
HGE_USESOUND = 18, // bool use BASS for sound? (default: true)
HGE_DONTSUSPEND = 24, // bool focus lost:suspend? (default: false)
HGE_HIDEMOUSE = 25, // bool hide system cursor? (default: true)
HGE_SHOWSPLASH = 27, // bool hide system cursor? (default: true)
HGEBOOLSTATE_FORCE_DWORD = 0x7FFFFFFF
};
enum hgeFuncState
{
HGE_FRAMEFUNC = 1, // bool*() frame function (default: NULL) (you MUST set this)
HGE_RENDERFUNC = 2, // bool*() render function (default: NULL)
HGE_FOCUSLOSTFUNC = 3, // bool*() focus lost function (default: NULL)
HGE_FOCUSGAINFUNC = 4, // bool*() focus gain function (default: NULL)
HGE_GFXRESTOREFUNC = 5, // bool*() exit function (default: NULL)
HGE_EXITFUNC = 6, // bool*() exit function (default: NULL)
HGEFUNCSTATE_FORCE_DWORD = 0x7FFFFFFF
};
enum hgeHwndState
{
HGE_HWND = 26, // int window handle: read only
HGE_HWNDPARENT = 27, // int parent win handle (default: 0)
HGEHWNDSTATE_FORCE_DWORD = 0x7FFFFFFF
};
enum hgeIntState
{
HGE_SCREENWIDTH = 9, // int screen width (default: 800)
HGE_SCREENHEIGHT = 10, // int screen height (default: 600)
HGE_SCREENBPP = 11, // int screen bitdepth (default: 32) (desktop bpp in windowed mode)
HGE_SAMPLERATE = 19, // int sample rate (default: 44100)
HGE_FXVOLUME = 20, // int global fx volume (default: 100)
HGE_MUSVOLUME = 21, // int global music volume (default: 100)
HGE_FPS = 23, // int fixed fps (default: HGEFPS_UNLIMITED)
HGEINTSTATE_FORCE_DWORD = 0x7FFFFFF
};
enum hgeStringState
{
HGE_ICON = 7, // char* icon resource (default: NULL)
HGE_TITLE = 8, // char* window title (default: "HGE")
HGE_INIFILE = 15, // char* ini file (default: NULL) (meaning no file)
HGE_LOGFILE = 16, // char* log file (default: NULL) (meaning no file)
HGESTRINGSTATE_FORCE_DWORD = 0x7FFFFFFF
};
/*
** Callback protoype used by HGE
*/
typedef bool (*hgeCallback)();
/*
** HGE_FPS system state special constants
*/
#define HGEFPS_UNLIMITED 0
#define HGEFPS_VSYNC -1
/*
** HGE Primitive type constants
*/
#define HGEPRIM_LINES 2
#define HGEPRIM_TRIPLES 3
#define HGEPRIM_QUADS 4
/*
** HGE Vertex structure
*/
struct hgeVertex
{
float x, y; // screen position
float z; // Z-buffer depth 0..1
DWORD col; // color
float tx, ty; // texture coordinates
};
/*
** HGE Triple structure
*/
struct hgeTriple
{
hgeVertex v[3];
HTEXTURE tex;
int blend;
};
/*
** HGE Quad structure
*/
struct hgeQuad
{
hgeVertex v[4];
HTEXTURE tex;
int blend;
};
/*
** HGE Input Event structure
*/
struct hgeInputEvent
{
int type; // event type
int key; // key code
int flags; // event flags
int chr; // character code
int wheel; // wheel shift
float x; // mouse cursor x-coordinate
float y; // mouse cursor y-coordinate
};
/*
** HGE Input Event type constants
*/
#define INPUT_KEYDOWN 1
#define INPUT_KEYUP 2
#define INPUT_MBUTTONDOWN 3
#define INPUT_MBUTTONUP 4
#define INPUT_MOUSEMOVE 5
#define INPUT_MOUSEWHEEL 6
/*
** HGE Input Event flags
*/
#define HGEINP_SHIFT 1
#define HGEINP_CTRL 2
#define HGEINP_ALT 4
#define HGEINP_CAPSLOCK 8
#define HGEINP_SCROLLLOCK 16
#define HGEINP_NUMLOCK 32
#define HGEINP_REPEAT 64
/*
** HGE Interface class
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -