📄 t3dlib1.h
字号:
#ifndef T3DLIB1
#define T3DLIB1
#define SCREEN_WIDTH 640
#define SCREEN_HEIGHT 480
#define SCREEN_BPP 8
#define MAX_COLORS_PALETTE 256
#define DEFAULT_PALETTE_FILE "PALDATA2.PAL"
#define SCREEN_FULLSCREEN 0
#define SCREEN_WINDOWED 1
#define BITMAP_ID 0x4D42
#define BITMAP_STATE_DEAD 0
#define BITMAP_STATE_ALIVE 1
#define BITMAP_STATE_DYING 2
#define BITMAP_ATTR_LOADED 128
#define BITMAP_EXTRACT_MODE_CELL 0
#define BITMAP_EXTRACT_MODE_ABS 1
#define DD_PIXEL_FORMAT8 8
#define DD_PIXEL_FORMAT555 15
#define DD_PIXEL_FORMAT565 16
#define DD_PIXEL_FORMAT888 24
#define DD_PIXEL_FORMATALPHA888 32
#define BOB_STATE_DEAD 0
#define BOB_STATE_ALIVE 1
#define BOB_STATE_DYING 2
#define BOB_STATE_ANIM_DONE 1
#define MAX_BOB_FRAMES 80
#define MAX_BOB_ANIMATIONS 40
#define BOB_ATTR_SINGLE_FRAME 1
#define BOB_ATTR_MULTI_FRAME 2
#define BOB_ATTR_MULTI_ANIM 4
#define BOB_ATTR_ANIM_ONE_SHOT 8
#define BOB_ATTR_VISIBLE 16
#define BOB_ATTR_BOUNCE 32
#define BOB_ATTR_WRAPAROUND 64
#define BOB_ATTR_LOADED 128
#define BOB_ATTR_CLONE 256
#define SCREEN_DARKNESS 0
#define SCREEN_WHITENESS 1
#define SCREEN_SWIPE_X 2
#define SCREEN_SWIPE_Y 3
#define SCREEN_DISOLVE 4
#define SCREEN_SCRUNCH 5
#define SCREEN_BLUENESS 6
#define SCREEN_REDNESS 7
#define SCREEN_GREENNESS 8
#define BLINKER_ADD 0
#define BLINKER_DELETE 1
#define BLINKER_UPDATE 2
#define BLINKER_RUN 3
#define PI ((float)3.141592654f)
#define PI2 ((float)6.283185307f)
#define PI_DIV_2 ((float)1.570796327f)
#define PI_DIV_4 ((float)0.785398163f)
#define PI_INV ((float)0.318309886f)
#define FIXP16_SHIFT 16
#define FIXP16_MAG 65536
#define FIXP16_DP_MASK 0x0000ffff
#define FIXP16_WP_MASK 0xffff0000
#define FIXP16_ROUND_UP 0x00008000
#define _RGB16BIT555(r,g,b) ((b & 31) + ((g & 31) << 5) + ((r & 31) << 10))
#define _RGB16BIT565(r,g,b) ((b & 31) + ((g & 63) << 5) + ((r & 31) << 11))
#define _RGB24BIT(a,r,g,b) ((b) + ((g) << 8) + ((r) << 16) )
#define _RGB32BIT(a,r,g,b) ((b) + ((g) << 8) + ((r) << 16) + ((a) << 24))
#define SET_BIT(word,bit_flag) ((word)=((word) | (bit_flag)))
#define RESET_BIT(word,bit_flag) ((word)=((word) & (~bit_flag)))
#define DDRAW_INIT_STRUCT(ddstruct) { memset(&ddstruct,0,sizeof(ddstruct)); ddstruct.dwSize=sizeof(ddstruct); }
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
#define MAX(a, b) (((a) > (b)) ? (b) : (a))
#define SWAP(a,b,t) {t=a; a=b; b=t;}
#define DEG_TO_RAD(ang) ((ang)*PI/180.0)
#define RAD_TO_DEG(rads) ((rads)*180.0/PI)
#define RAND_RANGE(x,y) ( (x) + (rand()%((y)-(x)+1)))
typedef unsigned short USHORT;
typedef unsigned short WORD;
typedef unsigned char UCHAR;
typedef unsigned char BYTE;
typedef unsigned int QUAD;
typedef unsigned int UINT;
typedef struct BITMAP_FILE_TAG
{
BITMAPFILEHEADER bitmapfileheader;
BITMAPINFOHEADER bitmapinfoheader;
PALETTEENTRY palette[256];
UCHAR *buffer;
} BITMAP_FILE, *BITMAP_FILE_PTR;
typedef struct BOB_TYP
{
int state;
int anim_state;
int attr;
float x,y; // position bitmap will be displayed at
float xv,yv; // velocity of object
int width, height; // the width and height of the bob
int width_fill; // internal, used to force 8*x wide surfaces
int bpp; // bits per pixel
int counter_1; // general counters
int counter_2;
int max_count_1; // general threshold values;
int max_count_2;
int varsI[16]; // stack of 16 integers
float varsF[16]; // stack of 16 floats
int curr_frame; // current animation frame
int num_frames; // total number of animation frames
int curr_animation; // index of current animation
int anim_counter; // used to time animation transitions
int anim_index; // animation element index
int anim_count_max; // number of cycles before animation
int *animations[MAX_BOB_ANIMATIONS]; // animation sequences
LPDIRECTDRAWSURFACE7 images[MAX_BOB_FRAMES]; // the bitmap images DD surfaces
} BOB, *BOB_PTR;
// the simple bitmap image
typedef struct BITMAP_IMAGE_TYP
{
int state; // state of bitmap
int attr; // attributes of bitmap
int x,y; // position of bitmap
int width, height; // size of bitmap
int num_bytes; // total bytes of bitmap
int bpp; // bits per pixel
UCHAR *buffer; // pixels of bitmap
} BITMAP_IMAGE, *BITMAP_IMAGE_PTR;
// blinking light structure
typedef struct BLINKER_TYP
{
// user sets these
int color_index; // index of color to blink
PALETTEENTRY on_color; // RGB value of "on" color
PALETTEENTRY off_color; // RGB value of "off" color
int on_time; // number of frames to keep "on"
int off_time; // number of frames to keep "off"
// internal member
int counter; // counter for state transitions
int state; // state of light, -1 off, 1 on, 0 dead
} BLINKER, *BLINKER_PTR;
// a 2D vertex
typedef struct VERTEX2DI_TYP
{
int x,y; // the vertex
} VERTEX2DI, *VERTEX2DI_PTR;
// a 2D vertex
typedef struct VERTEX2DF_TYP
{
float x,y; // the vertex
} VERTEX2DF, *VERTEX2DF_PTR;
// a 2D polygon
typedef struct POLYGON2D_TYP
{
int state; // state of polygon
int num_verts; // number of vertices
int x0,y0; // position of center of polygon
int xv,yv; // initial velocity
DWORD color; // could be index or PALETTENTRY
VERTEX2DF *vlist; // pointer to vertex list
} POLYGON2D, *POLYGON2D_PTR;
// matrix defines
// 3x3 matrix /////////////////////////////////////////////
typedef struct MATRIX3X3_TYP
{
union
{
float M[3][3]; // array indexed data storage
// storage in row major form with explicit names
struct
{
float M00, M01, M02;
float M10, M11, M12;
float M20, M21, M22;
}; // end explicit names
}; // end union
} MATRIX3X3, *MATRIX3X3_PTR;
// 1x3 matrix /////////////////////////////////////////////
typedef struct MATRIX1X3_TYP
{
union
{
float M[3]; // array indexed data storage
// storage in row major form with explicit names
struct
{
float M00, M01, M02;
}; // end explicit names
}; // end union
} MATRIX1X3, *MATRIX1X3_PTR;
// 3x2 matrix /////////////////////////////////////////////
typedef struct MATRIX3X2_TYP
{
union
{
float M[3][2]; // array indexed data storage
// storage in row major form with explicit names
struct
{
float M00, M01;
float M10, M11;
float M20, M21;
}; // end explicit names
}; // end union
} MATRIX3X2, *MATRIX3X2_PTR;
// 1x2 matrix /////////////////////////////////////////////
typedef struct MATRIX1X2_TYP
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -