This commit is contained in:
Paul 2001-02-09 21:41:55 +00:00
parent 73ebe07cc2
commit 469fa455ee
9 changed files with 173 additions and 60 deletions

View file

@ -47,6 +47,10 @@
#include "gfx\animtex.h" #include "gfx\animtex.h"
#endif #endif
#ifndef __GAME_PAUSE_H__
#include "game\pause.h"
#endif
int GX=248; int GX=248;
int GY=129; int GY=129;
@ -88,6 +92,9 @@ void CGameScene::init()
m_player->init(); m_player->init();
m_player->setLayerCollision(Level.getCollisionLayer()); m_player->setLayerCollision(Level.getCollisionLayer());
m_pauseMenu=new ("Pause Menu") CPauseMenu();
m_pauseMenu->init();
CFader::setFadingIn(); CFader::setFadingIn();
SetGeomOffset( GX, GY ); SetGeomOffset( GX, GY );
@ -108,6 +115,8 @@ void CGameScene::createPlayer()
void CGameScene::shutdown() void CGameScene::shutdown()
{ {
m_pauseMenu->shutdown();
m_player->shutdown(); delete m_player; m_player->shutdown(); delete m_player;
CThing::shutdownAndDeleteAllThings(); CThing::shutdownAndDeleteAllThings();
@ -121,6 +130,7 @@ void CGameScene::render()
{ {
CamMtx.t[2]=ZPos; // Temp CamMtx.t[2]=ZPos; // Temp
m_pauseMenu->render();
CConversation::render(); CConversation::render();
CThing::renderAllThings(); CThing::renderAllThings();
Level.render(); Level.render();
@ -136,8 +146,15 @@ void CGameScene::think(int _frames)
// } // }
//#endif //#endif
if(PadGetDown(0)&PAD_START)
{
m_pauseMenu->select();
}
CConversation::think(_frames); CConversation::think(_frames);
if(!CConversation::isActive()) m_pauseMenu->think(_frames);
if(!CConversation::isActive()&&
!m_pauseMenu->isActive())
{ {
DVECTOR camPos; DVECTOR camPos;
CThing::thinkAllThings(_frames); CThing::thinkAllThings(_frames);

View file

@ -40,8 +40,9 @@ virtual void createPlayer();
protected: protected:
CLevel Level; CLevel Level;
class CPlayer *m_player; class CPauseMenu *m_pauseMenu;
class CPlayer *m_player;
static FontBank *s_genericFont; static FontBank *s_genericFont;
static MATRIX CamMtx; static MATRIX CamMtx;
//static class SpriteBank *s_sprites; <-- Was causing compile error, sorry //static class SpriteBank *s_sprites; <-- Was causing compile error, sorry

View file

@ -22,12 +22,12 @@
#include "gui\gframe.h" #include "gui\gframe.h"
#endif #endif
#ifndef __GUI_GSPRITE_H__ #ifndef __GUI_GFACTORY_H__
#include "gui\gsprite.h" #include "gui\gfactory.h"
#endif #endif
#ifndef __GUI_GTEXTBOX_H__ #ifndef __MEMORY_HEADER__
#include "gui\gtextbox.h" #include "mem\memory.h"
#endif #endif
@ -68,27 +68,45 @@
Params: Params:
Returns: Returns:
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CConversation::init() #define FRAME_WIDTH 400
#define FRAME_HEIGHT 180
#define TEXT_BOX_WIDTH 300
#define TEXT_BOX_HEIGHT 20
#define OT_POS 5
int m_exitFlag;
extern int newmode;
void CPauseMenu::init()
{ {
/* m_guiFrame=new ("Conversation GUI") CGUIControlFrame();
s_guiFrame=new ("Conversation GUI") CGUIGroupFrame(); m_guiFrame->init(0);
s_guiFrame->init(0); m_guiFrame->setObjectXYWH((512-FRAME_WIDTH)/2,(256-FRAME_HEIGHT)/2,FRAME_WIDTH,FRAME_HEIGHT);
s_guiFrame->setObjectXYWH((512-FRAME_WIDTH)/2,256-FRAME_BOTTOM_OFFSET-FRAME_HEIGHT,FRAME_WIDTH,FRAME_HEIGHT); m_guiFrame->setOt(OT_POS);
s_guiFrame->setOt(OT_POS); m_guiFrame->setFlags(CGUIObject::FLAG_DRAWBORDER);
s_guiFrame->setFlags(CGUIObject::FLAG_DRAWBORDER);
s_guiIcon=new("Conversation Icon") CGUISprite(); CGUIFactory::createValueButtonFrame(m_guiFrame,
s_guiIcon->init(s_guiFrame); (FRAME_WIDTH-TEXT_BOX_WIDTH)/2,10,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT,
s_guiIcon->setObjectXYWH(0,0,FRAME_HEIGHT,FRAME_HEIGHT); STR__PAUSE_MENU__CONTINUE,
s_guiIcon->setOt(OT_POS); &m_exitFlag,true);
s_guiIcon->setSpriteBank(UI_UIGFX_SPR); CGUIFactory::createValueButtonFrame(m_guiFrame,
s_guiIcon->setFrame(0); (FRAME_WIDTH-TEXT_BOX_WIDTH)/2,40,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT,
STR__DEBUG__BASICUNARMED_MODE,
s_guiText=new("Conversation Text") CGUITextBox(); &newmode,0);
s_guiText->init(s_guiFrame); CGUIFactory::createValueButtonFrame(m_guiFrame,
s_guiText->setObjectXYWH(FRAME_HEIGHT,TEXT_BORDER,FRAME_WIDTH-FRAME_HEIGHT-TEXT_BORDER,FRAME_HEIGHT-(TEXT_BORDER*2)); (FRAME_WIDTH-TEXT_BOX_WIDTH)/2,60,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT,
s_guiText->setOt(OT_POS); STR__DEBUG__FULLUNARMED_MODE,
*/ &newmode,1);
CGUIFactory::createValueButtonFrame(m_guiFrame,
(FRAME_WIDTH-TEXT_BOX_WIDTH)/2,80,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT,
STR__DEBUG__SQUEAKYBOOTS_MODE,
&newmode,2);
CGUIFactory::createValueButtonFrame(m_guiFrame,
(FRAME_WIDTH-TEXT_BOX_WIDTH)/2,100,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT,
STR__DEBUG__NET_MODE,
&newmode,3);
CGUIFactory::createValueButtonFrame(m_guiFrame,
(FRAME_WIDTH-TEXT_BOX_WIDTH)/2,120,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT,
STR__DEBUG__CORALBLOWER_MODE,
&newmode,4);
m_active=false; m_active=false;
} }
@ -100,9 +118,9 @@ void CConversation::init()
Params: Params:
Returns: Returns:
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CConversation::shutdown() void CPauseMenu::shutdown()
{ {
// s_guiFrame->shutdown(); m_guiFrame->shutdown();
} }
@ -112,9 +130,11 @@ void CConversation::shutdown()
Params: Params:
Returns: Returns:
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CConversation::select() void CPauseMenu::select()
{ {
m_active=true; m_active=true;
m_exitFlag=false;
m_guiFrame->select();
} }
@ -124,29 +144,30 @@ void CConversation::select()
Params: Params:
Returns: Returns:
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CConversation::think(int _frames) void CPauseMenu::unselect()
{ {
ASSERT(m_active); m_active=false;
// if(isActive()) m_exitFlag=false;
// { m_guiFrame->unselect();
// s_guiFrame->think(_frames);
// }
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Function: Function:
Purpose: Purpose:
Params: Params:
Returns: Returns:
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CConversation::render() #include "game\game.h"
#include "player\player.h"
void CPauseMenu::think(int _frames)
{ {
ASSERT(m_active); if(m_active)
// if(s_currentState==STATE_ACTIVE) {
// { m_guiFrame->think(_frames);
// s_guiFrame->render(); if(m_exitFlag||newmode!=-1)
// } {
unselect();
}
}
} }
@ -156,7 +177,22 @@ void CConversation::render()
Params: Params:
Returns: Returns:
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
int CConversation::isActive() void CPauseMenu::render()
{
if(m_active)
{
m_guiFrame->render();
}
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
int CPauseMenu::isActive()
{ {
return m_active; return m_active;
} }

View file

@ -36,6 +36,7 @@ public:
void shutdown(); void shutdown();
void select(); void select();
void unselect();
void think(int _frames); void think(int _frames);
void render(); void render();
@ -43,7 +44,9 @@ public:
private: private:
int m_active; int m_active;
class CGUIControlFrame *m_guiFrame;
}; };
@ -58,7 +61,7 @@ private:
/*---------------------------------------------------------------------- */ /*---------------------------------------------------------------------- */
#endif /* __GAME_CONVO_H__ */ #endif /* __GAME_PAUSE_H__ */
/*=========================================================================== /*===========================================================================
end */ end */

View file

@ -57,6 +57,9 @@
------------------- */ ------------------- */
//#define _RECORD_DEMO_MODE_ //#define _RECORD_DEMO_MODE_
#ifdef __USER_paul__
#define _STATE_DEBUG_
#endif
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
@ -102,6 +105,38 @@ static void writeDemoControls()
#endif #endif
#ifdef _STATE_DEBUG_
static const char *s_stateText[NUM_STATES]=
{
"IDLE",
"IDLETEETER",
"JUMP",
"RUN",
"FALL",
"FALLFAR",
"BUTTBOUNCE",
"BUTTFALL",
"BUTTLAND",
"ATTACK",
"RUNATTACK",
"AIRATTACK",
"DUCK",
"SOAKUP",
"GETUP",
"DEAD",
};
static const char *s_modeText[NUM_PLAYERMODES]=
{
"BASICUNARMED",
"FULLUNARMED",
"SQUEAKYBOOTS",
"NET",
"CORALBLOWER",
};
#include "gfx\font.h"
FontBank s_debugFont;
#endif
int s_health; int s_health;
int s_screenPos; int s_screenPos;
@ -179,6 +214,11 @@ m_animFrame=0;
m_skel.setAng(512); m_skel.setAng(512);
//m_skel.setAngInc(678); //m_skel.setAngInc(678);
#ifdef _STATE_DEBUG_
s_debugFont.initialise(&standardFont);
s_debugFont.setJustification(FontBank::JUST_LEFT);
#endif
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
@ -189,6 +229,9 @@ m_skel.setAng(512);
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CPlayer::shutdown() void CPlayer::shutdown()
{ {
#ifdef _STATE_DEBUG_
s_debugFont.dump();
#endif
CThing::shutdown(); CThing::shutdown();
} }
@ -198,9 +241,7 @@ void CPlayer::shutdown()
Params: Params:
Returns: Returns:
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
#ifdef __USER_paul__
int newmode=-1; int newmode=-1;
#endif
void CPlayer::think(int _frames) void CPlayer::think(int _frames)
{ {
@ -216,12 +257,12 @@ if(PadGetHeld(0)&PAD_L1&&PadGetHeld(0)&PAD_L2)
Pos.vx=23*16; Pos.vx=23*16;
Pos.vy=10*16; Pos.vy=10*16;
} }
#endif
if(newmode!=-1) if(newmode!=-1)
{ {
setMode((PLAYER_MODE)newmode); setMode((PLAYER_MODE)newmode);
newmode=-1; newmode=-1;
} }
#endif
#ifndef __USER_paul__ #ifndef __USER_paul__
int padInput=PadGetHeld(0); int padInput=PadGetHeld(0);
@ -351,7 +392,7 @@ Pos.vy=((Pos.vy-16)&0xfffffff0)+colHeight;
// Look around // Look around
int pad=getPadInputHeld(); int pad=getPadInputHeld();
if(getPadInputDown()&PAD_CIRCLE) if(PadGetDown(0)&PAD_CIRCLE)
{ {
m_skel.blink(); m_skel.blink();
} }
@ -502,6 +543,15 @@ if(eyes!=-1)
m_skel.Animate(this); m_skel.Animate(this);
m_skel.Render(this); m_skel.Render(this);
} }
#ifdef _STATE_DEBUG_
char buf[128];
sprintf(buf,"STATE: %s",s_stateText[m_currentState]);
s_debugFont.print(40,200,buf);
sprintf(buf,"MODE: %s",s_modeText[m_currentMode]);
s_debugFont.print(40,210,buf);
#endif
} }

View file

@ -77,11 +77,12 @@ void CPlayerStateFall::enter(CPlayer *_player)
void CPlayerStateFall::think(CPlayer *_player) void CPlayerStateFall::think(CPlayer *_player)
{ {
const PlayerMetrics *metrics; const PlayerMetrics *metrics;
int controlHeld; int controlHeld,controlDown;
DVECTOR move; DVECTOR move;
metrics=getPlayerMetrics(_player); metrics=getPlayerMetrics(_player);
controlHeld=getPadInputHeld(_player); controlHeld=getPadInputHeld(_player);
controlDown=getPadInputDown(_player);
if(controlHeld&PI_LEFT) if(controlHeld&PI_LEFT)
{ {
@ -98,16 +99,20 @@ void CPlayerStateFall::think(CPlayer *_player)
fall(_player); fall(_player);
if(controlHeld&PI_ACTION) if(controlDown&PI_ACTION)
{ {
setState(_player,STATE_AIRATTACK); setState(_player,STATE_AIRATTACK);
} }
else if(controlHeld&PI_DOWN) else if(controlHeld&PI_DOWN)
{ {
move.vx=0; if(setState(_player,STATE_BUTTBOUNCE))
move.vy=0; {
setMoveVelocity(_player,&move); // Only do this if this mode allows us to go into butt bounce, otherwise
setState(_player,STATE_BUTTBOUNCE); // SB just floats in the air :)
move.vx=0;
move.vy=0;
setMoveVelocity(_player,&move);
}
} }
advanceAnimFrameAndCheckForEndOfAnim(_player); advanceAnimFrameAndCheckForEndOfAnim(_player);
} }

View file

@ -85,7 +85,7 @@ void CPlayerStateBaseIdle::thinkControl(CPlayer *_player)
if(canMoveRight(_player)) if(canMoveRight(_player))
setState(_player,STATE_RUN); setState(_player,STATE_RUN);
} }
else if(controlHeld&PI_ACTION) else if(controlDown&PI_ACTION)
{ {
setState(_player,STATE_ATTACK); setState(_player,STATE_ATTACK);
} }

View file

@ -90,10 +90,11 @@ void CPlayerStateJump::enter(CPlayer *_player)
void CPlayerStateJump::think(CPlayer *_player) void CPlayerStateJump::think(CPlayer *_player)
{ {
const PlayerMetrics *metrics; const PlayerMetrics *metrics;
int controlHeld; int controlHeld,controlDown;
metrics=getPlayerMetrics(_player); metrics=getPlayerMetrics(_player);
controlHeld=getPadInputHeld(_player); controlHeld=getPadInputHeld(_player);
controlDown=getPadInputDown(_player);
if(m_jumpFrames<=metrics->m_metric[PM__MAX_JUMP_FRAMES]&&PI_JUMP) if(m_jumpFrames<=metrics->m_metric[PM__MAX_JUMP_FRAMES]&&PI_JUMP)
{ {
@ -104,7 +105,7 @@ void CPlayerStateJump::think(CPlayer *_player)
setState(_player,STATE_FALL); setState(_player,STATE_FALL);
} }
if(controlHeld&PI_ACTION) if(controlDown&PI_ACTION)
{ {
setState(_player,STATE_AIRATTACK); setState(_player,STATE_AIRATTACK);
} }

View file

@ -111,7 +111,7 @@ void CPlayerStateRun::think(CPlayer *_player)
{ {
setState(_player,STATE_DUCK); setState(_player,STATE_DUCK);
} }
if(controlHeld&PI_ACTION) if(controlDown&PI_ACTION)
{ {
setState(_player,STATE_RUNATTACK); setState(_player,STATE_RUNATTACK);
} }