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

📄 game.h

📁 Torus 3D Engine is an open-source OpenGL ES 3D Engine for creating your own games in BREW environmen
💻 H
字号:
// ==========================================================================================================
//
// EspacoX 3D
// Copyright (C)2005, Imersiva Interactive
// Written by Vander Nunes
//
// ==========================================================================================================

#ifndef __GAME_H__

	#define __GAME_H__

	#include "game.bid"
	#include "../../../engine/torus.h"
	#include "../../../engine/scenegraph/scenegraph.h"
	#include "../../../engine/sprite.h"
	#include "../../../engine/music.h"

	// --------------------------------------------------------------------------
	//
	// USER-DEFINED GAME CLASS
	//
	// --------------------------------------------------------------------------
	class CGame
	{

		public:

			CGame();
			~CGame();

			// ---------------------------------------------------------------------------------------
			//
			// Mandatory declarations
			//
			// ---------------------------------------------------------------------------------------

			// Application, Shell, and Display
			// ***IMPORTANT***: MUST BE THE FIRST CLASS MEMBER...
			AEEApplet										m_applet;

			// engine pointer
			CEngine*										m_pEngine;

			// camera
			CCamera*										m_pCam;

			boolean											Init();
			void												CleanUp();

			static void									Destroy(CGame* pGame);
			static boolean							HandleInitEvent(CGame* pGame, AEEEvent eCode, uint16 wParam, uint32 dwParam);
			boolean											HandleEvent(AEEEvent eCode, uint16 wParam, uint32 dwParam);
			boolean											KeyPressEvent(uint16 wParam);
			boolean											KeyReleaseEvent(uint16 wParam);

			static void									NextFrame(CGame* pGame);
			void												RenderFrame();

			// ---------------------------------------------------------------------------------------
			//
			// Game specific extensions
			//
			// ---------------------------------------------------------------------------------------

			#define USE_LIGHT						0
			#define MAX_SHIPS						10
			#define MAX_FLAGS						10
			#define GRID_SIZE						31
			#define PLAYER_MOVE_SPEED		2
			#define PLAYER_TURN_SPEED		10
			#define ENEMY_MOVE_SPEED		2
			#define ENEMY_STEPS_TURN		16
			#define GET_READY_DELAY			30
			#define DIE_IMPULSE					96000
			#define DIE_GRAVITY					8192

			#define STATUS_START				1
			#define STATUS_LOADING			2
			#define STATUS_INTRO				3
			#define STATUS_NEWLEVEL			4
			#define STATUS_PLAYING			5
			#define STATUS_DYING				6
			#define STATUS_PASSLEVEL		7
			#define STATUS_GAMEOVER			8

			void												AddLight(void);
			void												CleanUpLevel();
			boolean											LoadLevel(char* szPakFile, byte jLevel);
			void												TurnEnemy(byte idx);

			boolean											LoadResources();
			void												RenderStart();
			void												RenderIntro();
			void												RenderNewLevel();
			void												RenderGame();
			void												RenderDying();
			void												RenderPassLevel();
			void												RenderGameOver();

			// key Variables
			int													m_key_state;
			uint16											m_key_wParam;
			boolean											m_kSELECT, m_kLEFT, m_kRIGHT, m_kUP, m_kDOWN, m_kCLEAR;

			CSceneGraph*								m_pScene;

			dword												m_dwFrame;												// frame counter
			byte												m_jGameStatus;
			dword												m_dwScore;
			byte												m_jLevel;
			byte												m_jLifes;
			byte*												m_pLevelGrid;
			CSceneItem**								m_pPtrGrid;
			byte												m_jEnemyTurns;										// bitmasked turns
			byte												m_jEnemyStepsToTurn[MAX_SHIPS];		// steps to self make curves
			byte												m_jEnemyCount;
			byte												m_jFlagsCount, m_jFlagsLeft;
			byte												m_jOldValue[MAX_SHIPS];	// stores what was before in a tile occupied by enemy
			int													m_DieImpulse;

			vec3_t											m_PlayerStartPos;
			vec3_t											m_EnemyStartPos[MAX_SHIPS];

			int													m_iIntroTextIdx;	// scrolling for text in the intro screen

			byte												m_jTurnLeft, m_jTurnRight;
			boolean											m_klastLEFT, m_klastRIGHT, m_klastUP, m_klastDOWN;

			CSprite*										m_pSpr8x13;
			CSprite*										m_pSprNumbers;
			CSprite*										m_pSprGameOver;
			CSprite*										m_pSprScore;
			CSprite*										m_pSprLevel;
			CSprite*										m_pSprLive;
			CSprite*										m_pSprPressStart;
			CSprite*										m_pSprGetReady;

			CMusic*											m_pMusIntro;
			CMusic*											m_pSndLevel;
			CMusic*											m_pSndBonus;
			CMusic*											m_pSndSpecialBonus;
			CMusic*											m_pSndBang;

			CSceneItem*									m_pPlayer;
			CSceneItem*									m_pEnemies[MAX_SHIPS];
			CSceneItem*									m_pFlags[MAX_FLAGS];
			CSceneItem*									m_pTiles[GRID_SIZE*GRID_SIZE];
	};

	// --------------------------------------------------------------------------
	//
	// overloads
	//
	// --------------------------------------------------------------------------

	void *operator new(size_t dwSize) throw()
	{
		return MALLOC(dwSize);
	}

	void operator delete(void *po) throw()
	{
		FREE(po);
	}

	void *operator new [] (size_t dwSize) throw()
	{
		return MALLOC(dwSize);
	}

	void operator delete [] (void *po) throw()
	{
		FREE(po);
	}

#endif

⌨️ 快捷键说明

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