📄 game.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 + -