📄 runner.h
字号:
#include <stdio.h>
#include <string.h>
#include <io.h>
#include <windows.h>
#ifndef TAG_RUNNER
#define TAG_RUNNER
/*
========================================================================
[ 常用的定义 ]
========================================================================
*/
typedef char SINT8;
typedef unsigned char UINT8;
typedef short int SINT16;
typedef unsigned short int UINT16;
typedef int SINT32;
typedef unsigned int UINT32;
//typedef __int64 INT64;
//typedef unsigned char BYTE;
//typedef char CHAR;
//typedef float REAL32;
//typedef double REAL64;
//typedef int BOOL;
#define RESULT int
#define _RESULT RESULT
/*
========================================================================
*/
/*
========================================================================
[ 调试输出 ]
========================================================================
*/
#define INFO_LOG_FLAG 0x0001
#define INFO_CONSOLE_FLAG 0x0010
#define INFO_LIST_FLAG 0x0100
#define INFO_MESSAGEBOX 0x1000
extern UINT32 OUT_INFO_FLAG;
#define Out(format , data) \
if(OUT_INFO_FLAG & INFO_LOG_FLAG) \
{ FILE *fp = fopen("log.txt" , "a+t"); fprintf(fp , format , data); fclose(fp); \
} \
if(OUT_INFO_FLAG & INFO_CONSOLE_FLAG) \
{ printf( format , data ); \
} \
if(OUT_INFO_FLAG & INFO_MESSAGEBOX) \
{ char info[128]; sprintf(info , format , data); MessageBox(NULL , info , "Msg" , 0); \
}
/*
========================================================================
*/
/*
========================================================================
[ 与脚本语言LUA的接口 ]
========================================================================
*/
extern "C"
{
#include "lua.h"
#include "lualib.h"
}
extern lua_State *L_S;
#define DoString(run_str) if(run_str) { int oldtop = lua_gettop(L_S);lua_dostring(L_S,run_str);lua_settop(L_S, oldtop); }
#define DoFile(file_name) if(file_name) { int oldtop = lua_gettop(L_S);lua_dofile(L_S , file_name);lua_settop(L_S, oldtop); }
#define DoProc(Proc_ID) \
if(1) \
{ SINT8 run_str[32]; \
sprintf(run_str , "f = proc[\"%s\"]" , Proc_ID); \
DoString(run_str); \
DoString("f()"); \
}
/*
========================================================================
*/
/*
========================================================================
[ 内存管理(lua) ]
========================================================================
*/
extern UINT32 g_dwMemAlloc;
extern UINT32 g_dwMemPeak;
void AddMemory(void *mem , UINT32 size);
void DecMemory(void *mem);
#define FreeMemory(m) if(m) { delete m; DecMemory(m); m = NULL;}
#define GetMemory(p , m , n) { p = new m[n]; AddMemory(p , sizeof(m) * n); }
#define GetMemoryI(p , m) { p = new m; AddMemory(p , sizeof(m)); }
/*
========================================================================
*/
/*
========================================================================
[ 文件&目录实用function ]
========================================================================
*/
#define MAX_PATHX 255
#define MAX_FILE_IN_DIR 255
UINT32 GetFileSize(SINT8 *filename);
SINT8 GetDirFileName(SINT8 **file_list , SINT8 *dir_name , SINT8 load_mode);
SINT8 GetExeBuildTime(SINT8 *time_str);
VOID DataToTextFile(LPBYTE pbData , int iWidth , int iHeight , TCHAR *strFileName);
/*
========================================================================
*/
/*
========================================================================
[ RLE function (just for color key and 16bit) ]
========================================================================
*/
#define RLE_FLAG_NULL 1 //全空
#define RLE_FLAG_FULL 2 //全满
struct RLE_HEADER
{
DWORD dwSize; // 数据的总长度(以字节为单位)
WORD wWidth; // 宽度
WORD wHeight; // 高度
WORD wLeft; // 最左边的有效像素
WORD wRight; // 最右边的有效像素
WORD wTop; // 最上面的有效图素
WORD wBottom; // 最下面的有效图素
DWORD dwColorKey; // 透明色
BYTE bFlag; // = RLE_FLAG..
};
//总长度为21个字节
#define GetRleHeader(pData , pHeader) { memcpy(pHeader , pData , sizeof(RLE_HEADER)); }
VOID GetSurfaceDataFromRleData(LPWORD pwSurfaceData , LPWORD pwRleData , DWORD dwPitch);
LPWORD GetRleDataFromSurfaceData(LPWORD pwSurfaceData , int w , int h , DWORD dwPitch , DWORD dwColorKey);
/*
========================================================================
*/
/*
========================================================================
[ Coordinate functions ]
========================================================================
*/
VOID Coord_2DWorldToGrid(int x , int y , int *piGridX , int *piGridY , float fGridWidth , float fGridHeight , int iGridNum);
VOID Coord_GridTo2DWorld(int x , int y , int *piWorldX , int *piWorldY , float fGridWidth , float fGridHeight , int iGridNum);
VOID Blit_GetValidRect(RECT *prcDest , RECT *prcSrc ,
int iDrawX , int iDrawY ,
RECT rcDest , RECT rcSrc);
/*
========================================================================
*/
/*
========================================================================
[ 键盘处理 ]
========================================================================
*/
#define RKEY_A 65
#define RKEY_B 66
#define RKEY_C 67
#define RKEY_D 68
#define RKEY_E 69
#define RKEY_F 70
#define RKEY_G 71
#define RKEY_H 72
#define RKEY_I 73
#define RKEY_J 74
#define RKEY_K 75
#define RKEY_L 76
#define RKEY_M 77
#define RKEY_N 78
#define RKEY_O 79
#define RKEY_P 80
#define RKEY_Q 81
#define RKEY_R 82
#define RKEY_S 83
#define RKEY_T 84
#define RKEY_U 85
#define RKEY_V 86
#define RKEY_W 87
#define RKEY_X 88
#define RKEY_Y 89
#define RKEY_Z 90
#define RKEY_F1 VK_F1
#define RKEY_F2 VK_F2
#define RKEY_F3 VK_F3
#define RKEY_F4 VK_F4
#define RKEY_F5 VK_F5
#define RKEY_F6 VK_F6
#define RKEY_F7 VK_F7
#define RKEY_F8 VK_F8
#define RKEY_F9 VK_F9
#define RKEY_F10 VK_F10
#define RKEY_F11 VK_F11
#define RKEY_F12 VK_F12
#define RKEY_SHIFT 11
#define RKEY_CTRL 12
#define RKEY_ALT 13
#define MAX_RKEY 128
extern int g_iKey[];
VOID GetRKeyState();
/*
========================================================================
*/
/*
========================================================================
[ Runner初始化和结束 ]
========================================================================
*/
VOID InitRunner();
VOID EndRunner();
/*
========================================================================
*/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -