⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stdenv.h

📁 俄罗斯方块的整套源代码
💻 H
字号:

#ifndef __STDENV_H__
#define __STDENV_H__


//////////////////////////////////////////////////////////////////////////
/*!
 	\file		StdEnv.h
	\brief		此头文件中定义了整个框架通用的一些宏和自定义数据类型,
				此外还定义了调试模式、作弊模式等一些特殊模式的开关。
	\author		ChenChang
	\version	0.1
	\date		2006-12-28
 */

#include "AEEAppGen.h"
#include "AEEModGen.h"
#include "AEEStdLib.h"


// ----------------------------------------------------------------------
// 自定义数据类型
// ----------------------------------------------------------------------
typedef signed long long int64;	/*!< \brief \warning 如果使用了该类型,则在编译时必须使用 ARM9 的处理器,编译参数
									CPU = -cpu ARM926EJ-S */

// ----------------------------------------------------------------------
// 自定义宏
// ----------------------------------------------------------------------
#define JBM_DEBUG			/*!< \brief 定义是否启动调试模式,在非调试模式下,ASSERT,TRACE,REMINDER等众多宏都将会关闭 */

#ifdef JBM_DEBUG
	#define JBM_SHOW_FRAMES	/*!< \brief 显示帧速 */
	#define JBM_MODE_CHEAT	/*!< \brief 开启作弊模式 */
#endif

#if defined(JBM_DEBUG) && defined(AEE_SIMULATOR)
	#define JBM_WIN_DEBUG	/*!< \brief 开启模拟器下的调试状态 */
#endif

#if defined AEE_SIMULATOR
	#pragma warning (disable:4819)	/*!< \brief 关闭源码文本非 Unicode 格式时的错误警告 */
#endif

#ifdef JBM_WIN_DEBUG
	#pragma warning(disable:4530)	/*!< \brief 关闭 STL 错误警告提示 */
#endif


/*!
	\addtogroup MACRO_REMINDER
 	\brief	RedStorm 提出了如下一些宏,各个宏的具体含义根据字面意思即可理解。
	
	其使用方法如下:
	\code
		#pragma REMINDER("type your message here")
	\endcode
	\note	你所输入的提示信息将会在编译完成时提示在编译信息框中,
			双击提示信息将可以跳转到该语句处。
	@{
 */
#ifdef JBM_WIN_DEBUG
	#define REMINDER_STR( x )			#x
	#define REMINDER_STR2( x )			REMINDER_STR(x)
	#define REMINDER( msg )				message( __FILE__ "(" REMINDER_STR2(__LINE__) ") : REMINDER " msg )
	#define REMINDERTO(to, msg )		message( __FILE__ "(" REMINDER_STR2(__LINE__) ") : REMINDER [TO "#to"] " msg )
	#define HARDCODED(v)				message( __FILE__ "(" REMINDER_STR2(__LINE__) ") : HARDCODED '"#v"'"  )
	#define MUST_NOT_CHECKIN			message( __FILE__ "(" REMINDER_STR2(__LINE__) ") : *************************** MUST NOT CHECKIN THIS ***********************")
	#define REMOVE_THIS_SHIT			message( __FILE__ "(" REMINDER_STR2(__LINE__) ") : REMOVE THIS SHIT : TEMP/HARDCODED/HACKED OR JUST PLAIN WRONG STUFF HERE.")
	#define BIG_REMOVE_THIS_SHIT(msg)	REMINDER("\n \
	********************************************************** \n \
	********************************************************** \n \
	_____   ______  __  __   ____  __      __ ______ 				 \n \
	|  __ \\ |  ____||  \\/  | / __ \\ \\ \\    / /|  ____|			   \n \
	| |__) || |__   | \\  / || |  | | \\ \\  / / | |__            \n \
	|  _  / |  __|  | |\\/| || |  | |  \\ \\/ /  |  __|           \n \
	| | \\ \\ | |____ | |  | || |__| |   \\  /   | |____          \n \
	|_|  \\_\\|______||_|  |_| \\____/     \\/    |______|         \n \
	\n \
	_______  _    _  _____   _____                    \n \
	|__   __|| |  | ||_   _| / ____|                   \n \
	| |   | |__| |  | |  | (___                     \n \
	| |   |  __  |  | |   \\___ \\ 							     \n \
	| |   | |  | | _| |_  ____) |                   \n \
	|_|   |_|  |_||_____||_____/                    \n \
	\n \
	_____  _    _  _____  _______                     \n \
	/ ____|| |  | ||_   _||__   __|                    \n \
	| (___  | |__| |  | |     | |                       \n \
	\\___ \\ |  __  |  | |     | |                       \n \
	____) || |  | | _| |_    | |                       \n \
	|_____/ |_|  |_||_____|   |_|                       \n \
	\n \
	********************************************************** \n \
	" msg "	 \n \
	********************************************************** \n \
	********************************************************** \n")
#else
	#define REMINDER_STR( x )
	#define REMINDER_STR2( x )
	#define REMINDER( msg )
	#define REMINDERTO(to, msg )
	#define HARDCODED(v)
	#define MUST_NOT_CHECKIN
	#define REMOVE_THIS_SHIT
	#define BIG_REMOVE_THIS_SHIT(msg)
#endif
/*!
 	@}
 */


/*!
	\addtogroup MACRO_DEBUG
	\brief	一系列调试用宏,在模拟器上可以通过 Output 窗口查看结果,
			在手机上可以通过 BREW AppLogger 查看结果。
	@{
*/
#ifdef JBM_WIN_DEBUG
	#define BREAKPOINT			_asm int 3
	#define ASSERT(x)			if(!(x)) { BREAKPOINT }	/*!< \warning 这里 BREAKPOINT 之后不能加分号 */
	#define VERIFY(x)			if(!(x)) { BREAKPOINT }
	#define VERIFY_SUCCESS(x)	if ((x) != SUCCESS) { BREAKPOINT; }
	#define TRACER()			DBGPRINTF("[%s]   -   %d", __FILE__, __LINE__)
	#define TRACE				DBGPRINTF
	#define TRACEVAR(x)			TRACE("%s: %d", #x, x);
#else
	#define BREAKPOINT
	#define ASSERT(x)
	#define VERIFY(x)			(x)	/*!< \brief \warning VERIFY()在 Release 版中也会执行一遍,而 ASSERT() 则仅在 Debug 版中执行 */
	#define VERIFY_SUCCESS(x)	(x)
	#ifdef JBM_DEBUG
		#define TRACER()		DBGPRINTF("[%s]   -   %d", __FILE__, __LINE__)
		#define TRACE			DBGPRINTF
		#define TRACEVAR(x)		TRACE("%s: %d", #x, x);
	#else
		#define TRACER()
		#define TRACE
		#define TRACEVAR(x)		
	#endif
#endif
/*!
 	@}
 */


#define CleanDeleteBitmap(p)	if (p) { IBITMAP_Release(p); p = NULL; }
#define CleanDeleteImage(p)		if (p) { IIMAGE_Release(p); p = NULL; }
#endif

//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -