common.h
来自「MDEngine2plus游戏开发库! 用来开发游戏超级简单!」· C头文件 代码 · 共 334 行
H
334 行
#ifndef MD_COMMON_H
#define MD_COMMON_H
#define SAFE_DELETE(A) if( (A) != NULL ) { delete [] (A); (A) = NULL; }
#define SAFE_RELEASE(A) if( (A) != NULL ) { (A) -> Release(); (A) = NULL; }
const DWORD JSPKFileFlag = 0x4B50534A;
#define FILE_PROVIDER_MASK 0x4650454C // FileProvider
#define PROFILE_PROVIDER_MASK 0x5046454C // ProfileProvider
#define CODEC_PROVIDER_MASK 0x45444650 // EDL Provider
#define IMAGE_PROVIDER_MASK 0x494D454C // ImageProvider
#define SOUND_PROVIDER_MASK 0x53445056 // SoundProvider
#define MAX_PWD 255
#define PF_VALUEMAXLEN 512
////////////////////////////////////////////////////////////
//
// MDEngine - Engine/Surface Module
//
////////////////////////////////////////////////////////////
#define RGBMODE_555 (16<<2)+1 // 16位 555 模式
#define RGBMODE_565 (16<<2)+2 // 16位 565 模式
#define RGBMODE_16 16<<2 // 16位 未知 模式
#define RGBMODE_24 24<<2 // 24位模式
#define RGBMODE_32 32<<2 // 32位模式
#define RGBMODE_NONE 8 <<2 // 8 位调色板模式
#define RGBMODE_AUTO 6 // 使用主图面像素格式
#define SUR_PRIMARY 1
#define SUR_BACK 2
#define SUR_WORK 4
#define COLORKEY_NO 0xFFFFFFFF
struct SurfaceInfo
{
int Width; //图面宽
int Height; //图面高
BYTE *GraphBuffer; //图面缓冲区指针
DWORD GraphPitch; //图面缓冲区跨度
};
////////////////////////////////////////////////////////////
//
// MDEngine - Text Module
//
////////////////////////////////////////////////////////////
#define FONT_BOLD 1
#define FONT_ITALIC 2
#define FONT_UNDERLINE 4
#define FONT_StrikeOut 8
#define FONT_TRANSPARENT 0xFFFFFFFF
////////////////////////////////////////////////////////////
//
// MDEngine - Input Module
//
////////////////////////////////////////////////////////////
#define INPUT_NONE 0
#define INPUT_KEYBOARD 1
#define INPUT_MOUSE 2
#define INPUT_JOYSTICK 4
#define KEY_NONE 0 // 没有按键被按下
#define KD_ALWAYS 0
#define KD_DOWN 1
#define KD_UP 2
#define DIM_OFFSET 300
#define DIM_X 20+DIM_OFFSET
#define DIM_Y 21+DIM_OFFSET
#define DIM_Z 22+DIM_OFFSET
#define DIM_BUTTON0 0 +DIM_OFFSET
#define DIM_BUTTON1 1 +DIM_OFFSET
#define DIM_BUTTON2 2 +DIM_OFFSET
#define DIM_BUTTON3 3 +DIM_OFFSET
#define DIM_BUTTON4 4 +DIM_OFFSET
#define DIM_BUTTON5 5 +DIM_OFFSET
#define DIM_BUTTON6 6 +DIM_OFFSET
#define DIM_BUTTON7 7 +DIM_OFFSET
#define DIM_BUTTON(X) ((X)+DIM_OFFSET)
#define DIJ_OFFSET 400
#define DIJ_X 60 + DIJ_OFFSET
#define DIJ_Y 62 + DIJ_OFFSET
#define DIJ_Z 64 + DIJ_OFFSET
#define DIJ_RTX 66 + DIJ_OFFSET
#define DIJ_RTY 68 + DIJ_OFFSET
#define DIJ_RTZ 70 + DIJ_OFFSET
#define DIJ_SLIDER0 72 + DIJ_OFFSET
#define DIJ_SLIDER1 74 + DIJ_OFFSET
#define DIJ_LX 60 + DIJ_OFFSET
#define DIJ_RX 61 + DIJ_OFFSET
#define DIJ_LY 62 + DIJ_OFFSET
#define DIJ_RY 63 + DIJ_OFFSET
#define DIJ_LZ 64 + DIJ_OFFSET
#define DIJ_RZ 65 + DIJ_OFFSET
#define DIJ_BUTTON(X) ((X)+DIJ_OFFSET)
#define DIK_ENTER DIK_RETURN
////////////////////////////////////////////////////////////
//
// MDEngine - Audio Module
//
////////////////////////////////////////////////////////////
#define VOL_MAX 1.0 // 最大音量 (默认)
#define VOL_MIN 0.0 // 最小音量
#define PAN_LEFT -1.0 // 左声道音量最大,右声道静音
#define PAN_RIGHT 1.0 // 右声道音量最大,左声道静音
#define PAN_CENTER 0.0 // 左右声道平均 (默认)
////////////////////////////////////////////////////////////
//
// MDEngine - CPU Module
//
////////////////////////////////////////////////////////////
typedef struct CPUExtensions
{
bool FPU_FloatingPointUnit;
bool VME_Virtual8086ModeEnhancements;
bool DE_DebuggingExtensions;
bool PSE_PageSizeExtensions;
bool TSC_TimeStampCounter;
bool MSR_ModelSpecificRegisters;
bool PAE_PhysicalAddressExtension;
bool MCE_MachineCheckException;
bool CX8_COMPXCHG8B_Instruction;
bool APIC_AdvancedProgrammableInterruptController;
unsigned int APIC_ID;
bool SEP_FastSystemCall;
bool MTRR_MemoryTypeRangeRegisters;
bool PGE_PTE_GlobalFlag;
bool MCA_MachineCheckArchitecture;
bool CMOV_ConditionalMoveAndCompareInstructions;
bool FGPAT_PageAttributeTable;
bool PSE36_36bitPageSizeExtension;
bool PN_ProcessorSerialNumber;
bool CLFSH_CFLUSH_Instruction;
unsigned int CLFLUSH_InstructionCacheLineSize;
bool DS_DebugStore;
bool ACPI_ThermalMonitorAndClockControl;
bool EMMX_MultimediaExtensions;
bool MMX_MultimediaExtensions;
bool FXSR_FastStreamingSIMD_ExtensionsSaveRestore;
bool SSE_StreamingSIMD_Extensions;
bool SSE2_StreamingSIMD2_Extensions;
bool SS_SelfSnoop;
bool HT_HyperThreading;
unsigned int HT_HyterThreadingSiblings;
bool TM_ThermalMonitor;
bool IA64_Intel64BitArchitecture;
bool _3DNOW_InstructionExtensions;
bool _E3DNOW_InstructionExtensions;
bool AA64_AMD64BitArchitecture;
} CPUExtensions;
typedef struct CPUCache
{
bool bPresent;
char strSize[32];
unsigned int uiAssociativeWays;
unsigned int uiLineSize;
bool bSectored;
char strCache[128];
} CPUCache;
typedef struct CPUL1Cache
{
CPUCache Instruction;
CPUCache Data;
} CPUL1Cache;
typedef struct CPUTLB
{
bool bPresent;
char strPageSize[32];
unsigned int uiAssociativeWays;
unsigned int uiEntries;
char strTLB[128];
} CPUTLB;
typedef struct CPUInfo
{
char strVendor[16];
unsigned int uiFamily;
unsigned int uiExtendedFamily;
char strFamily[64];
unsigned int uiModel;
unsigned int uiExtendedModel;
char strModel[128];
unsigned int uiStepping;
unsigned int uiType;
char strType[64];
unsigned int uiBrandID;
char strBrandID[64];
char strProcessorSerial[64];
unsigned long MaxSupportedLevel;
unsigned long MaxSupportedExtendedLevel;
CPUExtensions _Ext;
CPUL1Cache _L1;
CPUCache _L2;
CPUCache _L3;
CPUCache _Trace;
CPUTLB _Instruction;
CPUTLB _Data;
} CPUInfo;
enum ENCODE_TYPE{ENC_NONE,ENC_RLE,ENC_LZW};
enum FILE_ERR_CODE{
FERR_NONE,
FERR_OPENFAILED,
FERR_GETSIZEFAILED,
FERR_MEMLOW,
FERR_READFAILED,
FERR_SEEKFAILED,
FERR_SAVEFAILED,
FERR_INVALIDPRO,
FERR_INVALIDPAK,
FERR_SAVEBUFFAILED,
FERR_NODECODER,
FERR_DECODEFAILED
};
const char FILE_ERR_MSG[][60]=
{
"\0",
"无法打开文件:%s\n该文件可能不存在",
"获取文件 %s 大小失败!",
"内存不足!\n无法为文件 %s分配足够的空间",
"读取文件 %s 失败!",
"文件指针移动失败!",
"数据写入文件 %s 失败!",
"无效的FileProviderDLL",
"密码错误或者无效的数据包文件 %s,或没有与之相关联的服务组件",
"缓冲区数据保存失败!您的磁盘空间可能不足",
"无法找到合适的解码组件!请向文件提供者索取需要的解码组件",
"数据解码失败!无法还原数据"
};
enum PROFILE_ERR_CODE{
PFERR_NONE,
PFERR_OPENFAILED,
PFERR_GETSIZE,
PFERR_READFAILED,
PFERR_SAVEFAILED
};
const char PROFILE_ERR_MSG[][60]=
{
"\0",
"无法打开、创建ini配置文件:%s",
"无法获取该ini配置文件%s的长度信息!",
"读取ini配置文件%s失败!",
"保存ini配置文件%s失败!您的磁盘空间可能不足"
};
enum ENGINE_ERR_CODE{
EN_NOERR,
DD_CREATE,
DD_CORP,
DD_DISPMODE,
DD_PRIM,
DD_BACK,
DD_WORK,
DD_CLIP
};
const char EngineErrMsg[][30]=
{
" ",
"DirectDraw7 创建失败!",
"DirectDraw7 协作模式设置失败!",
"DirectDraw7 显示模式设置失败!",
"DirectDraw7 主表面创建失败!",
"DirectDraw7 缓冲区创建失败!",
"DirectDraw7 工作缓冲创建失败!",
"DirectDraw7 剪裁器创建失败!"
};
enum INPUT_ERR_CODE{
INPUT_NOERR,
INPUT_CREATE,
INPUT_CREATEMOUSE,
INPUT_SETMOUSE,
INPUT_MOUSECORP,
INPUT_CREATEKEYBOARD,
INPUT_SETKEYBOARD,
INPUT_KEYBOARDCORP,
INPUT_SETJOYS,
INPUT_JOYSCORP
};
const char InputErrMsg[][30]=
{
" ",
"DirectInput设备创建失败!",
"鼠标设备创建失败!",
"设置鼠标数据格式失败!",
"鼠标协作模式设置失败!",
"键盘设备创建失败!",
"设置键盘数据格式失败!",
"键盘协作模式设置失败!",
"设置游戏手柄数据格式失败!",
"游戏手柄协作模式设置失败!"
};
#define SOUND_STATIC 2 // 00000010 - 11111101 (0xFD)
#define SOUND_STREAM 4 // 00000100 -
#define SOUND_3D 8 // 00001000 -
#define SOUND_LOOP 1 // 00000001 -
#define SOUNDSTAT_LOOP 1
#define SOUNDSTAT_PLAY 2
#define SOUNDSTAT_STOPSTREAM 128 // 10000000
enum SOUND_ERR_CODE{
SOUND_NOERROR,
SINVALID_PARAM,
SFILE_NOTFOUND,
};
const char SOUND_ERR_MSG[][60]=
{
"\0",
"传递的参数无效",
"打开文件失败,文件可能不存在",
};
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?