This commit is contained in:
parent
0d4d68d560
commit
abd4133a86
24 changed files with 429 additions and 164 deletions
|
@ -30,6 +30,7 @@ music/sb-title.vh
|
||||||
sfx/ingame.pxm
|
sfx/ingame.pxm
|
||||||
sfx/ingame.vb
|
sfx/ingame.vb
|
||||||
sfx/ingame.vh
|
sfx/ingame.vh
|
||||||
|
demo/demo____.dmo
|
||||||
backdrop/credits.gfx
|
backdrop/credits.gfx
|
||||||
backdrop/sky.gfx
|
backdrop/sky.gfx
|
||||||
memcard/memhead.bin
|
memcard/memhead.bin
|
||||||
|
|
|
@ -141,7 +141,8 @@ pad_src := pads
|
||||||
paul_src := paul \
|
paul_src := paul \
|
||||||
scenesel
|
scenesel
|
||||||
|
|
||||||
player_src := panimsfx \
|
player_src := demoplay \
|
||||||
|
panimsfx \
|
||||||
player \
|
player \
|
||||||
pmodes \
|
pmodes \
|
||||||
psbutt \
|
psbutt \
|
||||||
|
|
25
makefile.gfx
25
makefile.gfx
|
@ -464,6 +464,31 @@ GRAF_DIRS_TO_MAKE += $(SCRIPTS_OUT_DIR)
|
||||||
GFX_DATA_OUT += $(SCRIPTS_OUT)
|
GFX_DATA_OUT += $(SCRIPTS_OUT)
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Demo mode data
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
DEMO_IN_DIR := data/demo
|
||||||
|
DEMO_OUT_DIR := $(DATA_OUT)/demo
|
||||||
|
|
||||||
|
DEMO_LIST := demo____
|
||||||
|
|
||||||
|
DEMO_ALL_IN := $(foreach DEMO,$(DEMO_LIST),$(DEMO_IN_DIR)/$(DEMO).dmo)
|
||||||
|
DEMO_ALL_OUT := $(foreach DEMO,$(DEMO_LIST),$(DEMO_OUT_DIR)/$(DEMO).dmo)
|
||||||
|
|
||||||
|
demo: $(DEMO_ALL_OUT)
|
||||||
|
|
||||||
|
cleandemo:
|
||||||
|
@$(RM) -f $(DEMO_ALL_OUT)
|
||||||
|
@$(ECHO) Demo Cleaned
|
||||||
|
|
||||||
|
$(DEMO_ALL_OUT) : $(DEMO_ALL_IN)
|
||||||
|
$(CP) $(DEMO_ALL_IN) $(DEMO_OUT_DIR)
|
||||||
|
$(ATTRIB) -r $(DEMO_ALL_OUT)
|
||||||
|
|
||||||
|
GRAF_DIRS_TO_MAKE += $(DEMO_OUT_DIR)
|
||||||
|
GFX_DATA_OUT += $(DEMO_ALL_OUT)
|
||||||
|
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
# Dirs to Make
|
# Dirs to Make
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
|
@ -46,6 +46,10 @@
|
||||||
#include "gfx\prim.h"
|
#include "gfx\prim.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __PLAYER_DEMOPLAY_H__
|
||||||
|
#include "player\demoplay.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Std Lib
|
/* Std Lib
|
||||||
------- */
|
------- */
|
||||||
|
@ -73,7 +77,25 @@
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
Vars
|
Vars
|
||||||
---- */
|
---- */
|
||||||
static int count;
|
|
||||||
|
/*----------------------------------------------------------------------
|
||||||
|
Function:
|
||||||
|
Purpose:
|
||||||
|
Params:
|
||||||
|
Returns:
|
||||||
|
---------------------------------------------------------------------- */
|
||||||
|
void CDemoGameScene::createPlayer()
|
||||||
|
{
|
||||||
|
m_player=new ("player") CDemoPlayer();
|
||||||
|
((CDemoPlayer*)m_player)->loadControlData(DEMO_DEMO_____DMO); // Ooo
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
Function:
|
Function:
|
||||||
|
@ -87,6 +109,7 @@ void CFrontEndDemoMode::init()
|
||||||
m_smallFont->initialise(&standardFont);
|
m_smallFont->initialise(&standardFont);
|
||||||
m_smallFont->setJustification(FontBank::JUST_CENTRE);
|
m_smallFont->setJustification(FontBank::JUST_CENTRE);
|
||||||
m_smallFont->setOt(500);
|
m_smallFont->setOt(500);
|
||||||
|
m_smallFont->setWobble(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
|
@ -108,9 +131,9 @@ void CFrontEndDemoMode::shutdown()
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
void CFrontEndDemoMode::select()
|
void CFrontEndDemoMode::select()
|
||||||
{
|
{
|
||||||
// LOAD UP DEMO AND DEMO LEVEL
|
m_gameScene=new ("Demo Game Scene") CDemoGameScene();
|
||||||
|
m_gameScene->init();
|
||||||
m_shuttingDown=false;
|
m_shuttingDown=false;
|
||||||
count=0;
|
|
||||||
CFader::setFadingIn();
|
CFader::setFadingIn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,7 +145,7 @@ count=0;
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
void CFrontEndDemoMode::unselect()
|
void CFrontEndDemoMode::unselect()
|
||||||
{
|
{
|
||||||
// DUMP DEMO AND LEVEL
|
m_gameScene->shutdown(); delete m_gameScene;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
|
@ -135,6 +158,8 @@ void CFrontEndDemoMode::render()
|
||||||
{
|
{
|
||||||
sFrameHdr *fh;
|
sFrameHdr *fh;
|
||||||
|
|
||||||
|
m_gameScene->render();
|
||||||
|
|
||||||
// Game logo/title
|
// Game logo/title
|
||||||
CFrontEndScene::renderLogo();
|
CFrontEndScene::renderLogo();
|
||||||
|
|
||||||
|
@ -143,20 +168,6 @@ void CFrontEndDemoMode::render()
|
||||||
m_smallFont->setColour(PRESS_START_TEXT_R,PRESS_START_TEXT_G,PRESS_START_TEXT_B);
|
m_smallFont->setColour(PRESS_START_TEXT_R,PRESS_START_TEXT_G,PRESS_START_TEXT_B);
|
||||||
m_smallFont->print(256,PRESS_START_TEXT_Y,STR__FRONTEND__PRESS_START);
|
m_smallFont->print(256,PRESS_START_TEXT_Y,STR__FRONTEND__PRESS_START);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
m_smallFont->setColour(getRndRange(255),getRndRange(255),getRndRange(255));
|
|
||||||
m_smallFont->print(getRndRange(512),getRndRange(256),">DEMO MODE<");
|
|
||||||
|
|
||||||
|
|
||||||
POLY_G4 *g4;
|
|
||||||
g4=GetPrimG4();
|
|
||||||
setXYWH(g4,0,0,512,256);
|
|
||||||
setRGB0(g4,99,50,50);
|
|
||||||
setRGB1(g4,50,50,99);
|
|
||||||
setRGB2(g4,50,99,50);
|
|
||||||
setRGB3(g4,99,50,99);
|
|
||||||
AddPrimToList(g4,MAX_OT-1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
|
@ -167,10 +178,12 @@ void CFrontEndDemoMode::render()
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
void CFrontEndDemoMode::think(int _frames)
|
void CFrontEndDemoMode::think(int _frames)
|
||||||
{
|
{
|
||||||
|
m_gameScene->think(_frames);
|
||||||
|
|
||||||
if(!m_shuttingDown&&!CFader::isFading())
|
if(!m_shuttingDown&&!CFader::isFading())
|
||||||
{
|
{
|
||||||
count+=_frames;
|
if(PadGetDown(0)&PAD_START||
|
||||||
if(PadGetDown(0)&PAD_START||count>60*20) // OR DEMO ENDED
|
((CDemoPlayer*)m_gameScene->getPlayer())->getFramesLeft()<FADE_OUT_FRAMES)
|
||||||
{
|
{
|
||||||
m_shuttingDown=true;
|
m_shuttingDown=true;
|
||||||
CFader::setFadingOut();
|
CFader::setFadingOut();
|
||||||
|
|
|
@ -22,6 +22,10 @@
|
||||||
#include "frontend\frontend.h"
|
#include "frontend\frontend.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __GAME_GAME_H__
|
||||||
|
#include "game\game.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Std Lib
|
/* Std Lib
|
||||||
------- */
|
------- */
|
||||||
|
@ -34,6 +38,13 @@
|
||||||
Structure defintions
|
Structure defintions
|
||||||
-------------------- */
|
-------------------- */
|
||||||
|
|
||||||
|
class CDemoGameScene : public CGameScene
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void createPlayer();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class CFrontEndDemoMode : public CFrontEndMode
|
class CFrontEndDemoMode : public CFrontEndMode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -51,21 +62,20 @@ public:
|
||||||
private:
|
private:
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
LOGO_CENTRE_Y=74,
|
|
||||||
GAME_TITLE_TEXT_CENTRE_Y=100,
|
|
||||||
GAME_TITLE_TEXT_R=128,
|
|
||||||
GAME_TITLE_TEXT_G=128,
|
|
||||||
GAME_TITLE_TEXT_B=128,
|
|
||||||
|
|
||||||
PRESS_START_TEXT_Y=180,
|
PRESS_START_TEXT_Y=180,
|
||||||
PRESS_START_TEXT_R=150,
|
PRESS_START_TEXT_R=150,
|
||||||
PRESS_START_TEXT_G=100,
|
PRESS_START_TEXT_G=100,
|
||||||
PRESS_START_TEXT_B=100,
|
PRESS_START_TEXT_B=100,
|
||||||
|
|
||||||
|
// Fade-out to titles this many frames before end of demo
|
||||||
|
FADE_OUT_FRAMES=95,
|
||||||
};
|
};
|
||||||
|
|
||||||
class FontBank *m_smallFont;
|
class FontBank *m_smallFont;
|
||||||
|
|
||||||
int m_shuttingDown;
|
int m_shuttingDown;
|
||||||
|
|
||||||
|
CDemoGameScene *m_gameScene;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -175,7 +175,7 @@ void CFrontEndMainTitles::select()
|
||||||
SetScreenImage(s_image);
|
SetScreenImage(s_image);
|
||||||
|
|
||||||
CSoundMediator::setSong(CSoundMediator::SONG_TITLE);
|
CSoundMediator::setSong(CSoundMediator::SONG_TITLE);
|
||||||
CSoundMediator::playSong();
|
m_musicStarted=false;
|
||||||
|
|
||||||
CFader::setFadingIn();
|
CFader::setFadingIn();
|
||||||
}
|
}
|
||||||
|
@ -306,6 +306,13 @@ void CFrontEndMainTitles::think(int _frames)
|
||||||
{
|
{
|
||||||
sval=(sval+(seaspeed*_frames))&4095;
|
sval=(sval+(seaspeed*_frames))&4095;
|
||||||
|
|
||||||
|
// Wait until fade in has finished before starting music
|
||||||
|
if(!m_musicStarted&&!CFader::isFading())
|
||||||
|
{
|
||||||
|
CSoundMediator::playSong();
|
||||||
|
m_musicStarted=true;
|
||||||
|
}
|
||||||
|
|
||||||
switch(m_mode)
|
switch(m_mode)
|
||||||
{
|
{
|
||||||
case MODE__PRESS_START:
|
case MODE__PRESS_START:
|
||||||
|
|
|
@ -100,6 +100,7 @@ private:
|
||||||
int m_gotoCreditsFlag;
|
int m_gotoCreditsFlag;
|
||||||
|
|
||||||
int m_demoTimeout;
|
int m_demoTimeout;
|
||||||
|
int m_musicStarted;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#ifndef __PLAYER_PLAYER_H__
|
#ifndef __PLAYER_PLAYER_H__
|
||||||
#include "player\player.h"
|
#include "player\player.h"
|
||||||
#endif
|
#endif
|
||||||
|
#include "player\demoplay.h"
|
||||||
|
|
||||||
#ifndef __ENEMY_2DENEMY_H__
|
#ifndef __ENEMY_2DENEMY_H__
|
||||||
#include "enemy\2denemy.h"
|
#include "enemy\2denemy.h"
|
||||||
|
@ -34,9 +35,6 @@
|
||||||
#include "gfx\fader.h"
|
#include "gfx\fader.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "level\level.h"
|
|
||||||
#include "gfx\anim.h"
|
|
||||||
|
|
||||||
#ifndef __GFX_BUBICLES__
|
#ifndef __GFX_BUBICLES__
|
||||||
#include "gfx\bubicles.h"
|
#include "gfx\bubicles.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -45,6 +43,9 @@
|
||||||
#include <ingamefx.h>
|
#include <ingamefx.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef _ANIMTEX_HEADER_
|
||||||
|
#include "gfx\animtex.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
int GX=248;
|
int GX=248;
|
||||||
|
@ -83,19 +84,26 @@ void CGameScene::init()
|
||||||
enemy->init();
|
enemy->init();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
m_player=new ("player") CPlayer();
|
createPlayer();
|
||||||
m_player->init();
|
m_player->init();
|
||||||
m_player->setLayerCollision(Level.getCollisionLayer());
|
m_player->setLayerCollision(Level.getCollisionLayer());
|
||||||
|
|
||||||
CAnimDB::LoadAnims();
|
|
||||||
|
|
||||||
CFader::setFadingIn();
|
CFader::setFadingIn();
|
||||||
|
|
||||||
SetGeomOffset( GX, GY );
|
SetGeomOffset( GX, GY );
|
||||||
SetGeomScreen(GH);
|
SetGeomScreen(GH);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
// This is a seperate funtion ( and virtual ) so that we can overload it for
|
||||||
|
// the demo mode (pkg)
|
||||||
|
// NB: This function should *only* include the new function - Don't add anything else here!
|
||||||
|
void CGameScene::createPlayer()
|
||||||
|
{
|
||||||
|
m_player=new ("player") CPlayer();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void CGameScene::shutdown()
|
void CGameScene::shutdown()
|
||||||
|
@ -121,12 +129,12 @@ void CGameScene::render()
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
void CGameScene::think(int _frames)
|
void CGameScene::think(int _frames)
|
||||||
{
|
{
|
||||||
#ifdef __USER_paul__
|
//#ifdef __USER_paul__
|
||||||
if(!CConversation::isActive()&&PadGetDown(0)&PAD_START)
|
// if(!CConversation::isActive()&&PadGetDown(0)&PAD_START)
|
||||||
{
|
// {
|
||||||
CConversation::trigger(SCRIPTS_SPEECHTEST_DAT);
|
// CConversation::trigger(SCRIPTS_SPEECHTEST_DAT);
|
||||||
}
|
// }
|
||||||
#endif
|
//#endif
|
||||||
|
|
||||||
CConversation::think(_frames);
|
CConversation::think(_frames);
|
||||||
if(!CConversation::isActive())
|
if(!CConversation::isActive())
|
||||||
|
|
|
@ -27,6 +27,7 @@ virtual ~CGameScene() {;}
|
||||||
|
|
||||||
|
|
||||||
void init();
|
void init();
|
||||||
|
virtual void createPlayer();
|
||||||
void shutdown();
|
void shutdown();
|
||||||
void render();
|
void render();
|
||||||
void think(int _frames);
|
void think(int _frames);
|
||||||
|
@ -37,7 +38,7 @@ virtual ~CGameScene() {;}
|
||||||
class CPlayer *getPlayer();
|
class CPlayer *getPlayer();
|
||||||
void sendEvent( GAME_EVENT evt, CThing *sourceThing );
|
void sendEvent( GAME_EVENT evt, CThing *sourceThing );
|
||||||
|
|
||||||
private:
|
protected:
|
||||||
|
|
||||||
CLevel Level;
|
CLevel Level;
|
||||||
class CPlayer *m_player;
|
class CPlayer *m_player;
|
||||||
|
|
|
@ -64,6 +64,8 @@ int Size=Width*Height;
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
void CLayerTile3d::shutdown()
|
void CLayerTile3d::shutdown()
|
||||||
{
|
{
|
||||||
|
MemFree(RenderFlagTable);
|
||||||
|
MemFree(PrimGrid);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -38,7 +38,11 @@ CLevel::~CLevel()
|
||||||
{
|
{
|
||||||
for (int i=0; i<CLayerTile::LAYER_TILE_TYPE_MAX; i++)
|
for (int i=0; i<CLayerTile::LAYER_TILE_TYPE_MAX; i++)
|
||||||
{
|
{
|
||||||
if (TileLayers[i]) delete TileLayers[i];
|
if (TileLayers[i])
|
||||||
|
{
|
||||||
|
TileLayers[i]->shutdown();
|
||||||
|
delete TileLayers[i];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,7 +51,7 @@ void CLevel::init()
|
||||||
{
|
{
|
||||||
TileBankHdr=(sTileBankHdr *)CFileIO::loadFile(LEVELS_CHAPTER02_LEVEL04_TBK,"Tile Bank Data");
|
TileBankHdr=(sTileBankHdr *)CFileIO::loadFile(LEVELS_CHAPTER02_LEVEL04_TBK,"Tile Bank Data");
|
||||||
LevelHdr=(sLvlHdr *)CFileIO::loadFile(LEVELS_CHAPTER02_LEVEL0401_LVL,"Level Data");
|
LevelHdr=(sLvlHdr *)CFileIO::loadFile(LEVELS_CHAPTER02_LEVEL0401_LVL,"Level Data");
|
||||||
TPLoadTex(LEVELS_CHAPTER02_LEVEL04_TEX);
|
m_levelTPage=TPLoadTex(LEVELS_CHAPTER02_LEVEL04_TEX);
|
||||||
|
|
||||||
initLayers();
|
initLayers();
|
||||||
}
|
}
|
||||||
|
@ -110,6 +114,9 @@ sTile *TileList=(sTile*)MakePtr(TileBankHdr,TileBankHdr->TileList);
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
void CLevel::shutdown()
|
void CLevel::shutdown()
|
||||||
{
|
{
|
||||||
|
TPFree(m_levelTPage);
|
||||||
|
CollisionLayer->shutdown(); MemFree(CollisionLayer);
|
||||||
|
MemFree(TileBankHdr);
|
||||||
MemFree(LevelHdr);
|
MemFree(LevelHdr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,8 @@ private:
|
||||||
sTileBankHdr *TileBankHdr;
|
sTileBankHdr *TileBankHdr;
|
||||||
static DVECTOR MapPos;
|
static DVECTOR MapPos;
|
||||||
|
|
||||||
|
TPAGE_DESC m_levelTPage;
|
||||||
|
|
||||||
|
|
||||||
// Tile Layers
|
// Tile Layers
|
||||||
CLayerTile *TileLayers[CLayerTile::LAYER_TILE_TYPE_MAX];
|
CLayerTile *TileLayers[CLayerTile::LAYER_TILE_TYPE_MAX];
|
||||||
|
|
|
@ -47,10 +47,79 @@
|
||||||
Params:
|
Params:
|
||||||
Returns:
|
Returns:
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
#include "utils\utils.h"
|
void CDemoPlayer::loadControlData(FileEquate _fe)
|
||||||
|
{
|
||||||
|
int *hdr;
|
||||||
|
|
||||||
|
m_demoData=(char*)CFileIO::loadFile(_fe);
|
||||||
|
hdr=(int*)m_demoData;
|
||||||
|
|
||||||
|
m_controlFrameCount=hdr[0];
|
||||||
|
m_controlDataSize=hdr[1];
|
||||||
|
m_controlData=(demoPlayerControl*)(m_demoData+(sizeof(int)*2));
|
||||||
|
|
||||||
|
m_currentControlFrame=0;
|
||||||
|
m_frameCount=0;
|
||||||
|
m_totalFrameCount=0;
|
||||||
|
|
||||||
|
PAUL_DBGMSG("Loaded demo data");
|
||||||
|
PAUL_DBGMSG("%d actions, %d frames",m_controlDataSize,m_controlFrameCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------
|
||||||
|
Function:
|
||||||
|
Purpose:
|
||||||
|
Params:
|
||||||
|
Returns:
|
||||||
|
---------------------------------------------------------------------- */
|
||||||
|
int CDemoPlayer::getFramesLeft()
|
||||||
|
{
|
||||||
|
return m_controlFrameCount-m_totalFrameCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------
|
||||||
|
Function:
|
||||||
|
Purpose:
|
||||||
|
Params:
|
||||||
|
Returns:
|
||||||
|
---------------------------------------------------------------------- */
|
||||||
|
void CDemoPlayer::shutdown()
|
||||||
|
{
|
||||||
|
MemFree(m_demoData);
|
||||||
|
CPlayer::shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------
|
||||||
|
Function:
|
||||||
|
Purpose:
|
||||||
|
Params:
|
||||||
|
Returns:
|
||||||
|
---------------------------------------------------------------------- */
|
||||||
PLAYERINPUT CDemoPlayer::readPadInput()
|
PLAYERINPUT CDemoPlayer::readPadInput()
|
||||||
{
|
{
|
||||||
return PI_NONE;
|
PLAYERINPUT input;
|
||||||
|
if(m_currentControlFrame>=m_controlDataSize)
|
||||||
|
{
|
||||||
|
// End of control data reached
|
||||||
|
input=PI_NONE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
demoPlayerControl *crnt;
|
||||||
|
crnt=&m_controlData[m_currentControlFrame];
|
||||||
|
input=(PLAYERINPUT)crnt->m_inputValue;
|
||||||
|
if(++m_frameCount==crnt->m_length)
|
||||||
|
{
|
||||||
|
m_currentControlFrame++;
|
||||||
|
m_frameCount=0;
|
||||||
|
}
|
||||||
|
m_totalFrameCount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return input;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,10 @@
|
||||||
#include "player/player.h"
|
#include "player/player.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef _FILEIO_HEADER_
|
||||||
|
#include "fileio\fileio.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Std Lib
|
/* Std Lib
|
||||||
------- */
|
------- */
|
||||||
|
@ -43,9 +47,26 @@ public:
|
||||||
u8 m_length;
|
u8 m_length;
|
||||||
}demoPlayerControl;
|
}demoPlayerControl;
|
||||||
|
|
||||||
|
void loadControlData(FileEquate _fe);
|
||||||
|
int getFramesLeft();
|
||||||
|
|
||||||
|
virtual void shutdown();
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual PLAYERINPUT readPadInput();
|
virtual PLAYERINPUT readPadInput();
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
char *m_demoData;
|
||||||
|
|
||||||
|
demoPlayerControl *m_controlData;
|
||||||
|
int m_controlDataSize;
|
||||||
|
int m_controlFrameCount;
|
||||||
|
|
||||||
|
int m_currentControlFrame;
|
||||||
|
int m_frameCount;
|
||||||
|
int m_totalFrameCount;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -56,6 +56,9 @@
|
||||||
Tyepdefs && Defines
|
Tyepdefs && Defines
|
||||||
------------------- */
|
------------------- */
|
||||||
|
|
||||||
|
//#define _RECORD_DEMO_MODE_
|
||||||
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
Structure defintions
|
Structure defintions
|
||||||
-------------------- */
|
-------------------- */
|
||||||
|
@ -68,8 +71,42 @@
|
||||||
Vars
|
Vars
|
||||||
---- */
|
---- */
|
||||||
|
|
||||||
|
#ifdef _RECORD_DEMO_MODE_
|
||||||
|
|
||||||
|
#include "player\demoplay.h"
|
||||||
|
|
||||||
|
#define MAX_DEMO_SIZE 512 // So max size of a demo is 1k
|
||||||
|
#define MAX_DEMO_TIME_IN_FRAMES 30*60 // Recorded demo will last 60 seconds
|
||||||
|
|
||||||
|
static CDemoPlayer::demoPlayerControl s_demoControls[MAX_DEMO_SIZE]={{PI_NONE,0}};
|
||||||
|
static int s_demoSize=0;
|
||||||
|
static int s_demoFrameCount=0;
|
||||||
|
|
||||||
|
static void writeDemoControls()
|
||||||
|
{
|
||||||
|
char filename[32];
|
||||||
|
int fh;
|
||||||
|
int fc=MAX_DEMO_TIME_IN_FRAMES;
|
||||||
|
|
||||||
|
sprintf(filename,"demo____.dmo");
|
||||||
|
fh=PCcreat((char *)filename,0);
|
||||||
|
ASSERT(fh!=-1);
|
||||||
|
PCwrite(fh,(char*)&fc,sizeof(fc)); // frame count
|
||||||
|
PCwrite(fh,(char*)&s_demoSize,sizeof(s_demoSize)); // demo size
|
||||||
|
for(int i=0;i<s_demoSize;i++)
|
||||||
|
PCwrite(fh,(char*)&s_demoControls[i],sizeof(CDemoPlayer::demoPlayerControl)); // control data
|
||||||
|
PCclose(fh);
|
||||||
|
|
||||||
|
SYSTEM_DBGMSG("Written demo file %s with %d frames",filename,s_demoSize);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int s_health;
|
int s_health;
|
||||||
int s_screenPos;
|
int s_screenPos;
|
||||||
|
int m_cameraScrollPos=0;
|
||||||
|
int m_cameraScrollDir=0;
|
||||||
|
|
||||||
|
|
||||||
int MAP3D_CENTRE_X=170;
|
int MAP3D_CENTRE_X=170;
|
||||||
|
@ -80,10 +117,6 @@ int MAP2D_CENTRE_X=-256;
|
||||||
int MAP2D_CENTRE_Y=-136;
|
int MAP2D_CENTRE_Y=-136;
|
||||||
int MAP2D_BLOCKSTEPSIZE=16;
|
int MAP2D_BLOCKSTEPSIZE=16;
|
||||||
|
|
||||||
|
|
||||||
int m_cameraScrollPos=0;
|
|
||||||
int m_cameraScrollDir=0;
|
|
||||||
|
|
||||||
int CAMERA_SCROLLLIMIT=8;
|
int CAMERA_SCROLLLIMIT=8;
|
||||||
int CAMERA_SCROLLTHRESHOLD=6;
|
int CAMERA_SCROLLTHRESHOLD=6;
|
||||||
int CAMERA_SCROLLSPEED=60;
|
int CAMERA_SCROLLSPEED=60;
|
||||||
|
@ -93,6 +126,9 @@ int CAMERA_STOPMOVETHRESHOLD=10;
|
||||||
|
|
||||||
int angg=900;
|
int angg=900;
|
||||||
|
|
||||||
|
DVECTOR ppos={0,0};
|
||||||
|
DVECTOR ofs={0,0};
|
||||||
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
Function:
|
Function:
|
||||||
|
@ -131,14 +167,12 @@ m_animFrame=0;
|
||||||
Pos.vy=10;
|
Pos.vy=10;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
m_cameraOffsetTarget.vx=0;
|
|
||||||
m_cameraOffsetTarget.vy=0;
|
|
||||||
m_cameraOffset.vx=0;
|
m_cameraOffset.vx=0;
|
||||||
m_cameraOffset.vy=0;
|
m_cameraOffset.vy=0;
|
||||||
m_cameraLookYOffset=0;
|
m_cameraLookYOffset=0;
|
||||||
m_cameraLookTimer=0;
|
m_cameraLookTimer=0;
|
||||||
|
|
||||||
m_lastPadInput=m_padInput=0;
|
m_lastPadInput=m_padInput=PI_NONE;
|
||||||
|
|
||||||
s_health=5;
|
s_health=5;
|
||||||
s_screenPos=128;
|
s_screenPos=128;
|
||||||
|
@ -165,13 +199,7 @@ void CPlayer::shutdown()
|
||||||
Returns:
|
Returns:
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
#ifdef __USER_paul__
|
#ifdef __USER_paul__
|
||||||
// -90,-136
|
|
||||||
// -256,-136
|
|
||||||
// -432,-136
|
|
||||||
DVECTOR ofs={-256,-136}; // nearly -256,-128 ;)
|
|
||||||
int newmode=-1;
|
int newmode=-1;
|
||||||
#else
|
|
||||||
DVECTOR ofs={0,0}; //temporary
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void CPlayer::think(int _frames)
|
void CPlayer::think(int _frames)
|
||||||
|
@ -221,6 +249,7 @@ if(newmode!=-1)
|
||||||
// Horizontal movement
|
// Horizontal movement
|
||||||
if(m_layerCollision->Get((Pos.vx+(m_moveVel.vx>>VELOCITY_SHIFT))>>4,(Pos.vy-1)>>4))
|
if(m_layerCollision->Get((Pos.vx+(m_moveVel.vx>>VELOCITY_SHIFT))>>4,(Pos.vy-1)>>4))
|
||||||
{
|
{
|
||||||
|
// Will hit a wall this frame - Do collision
|
||||||
// Move flush with the edge of the obstruction
|
// Move flush with the edge of the obstruction
|
||||||
int dir,vx,cx,y,i;
|
int dir,vx,cx,y,i;
|
||||||
if(m_moveVel.vx<0)
|
if(m_moveVel.vx<0)
|
||||||
|
@ -245,7 +274,7 @@ if(newmode!=-1)
|
||||||
}
|
}
|
||||||
Pos.vx=cx-dir;
|
Pos.vx=cx-dir;
|
||||||
|
|
||||||
// If running then idle, otherwise leave in same state
|
// If running then go to idle, otherwise leave in same state
|
||||||
if(m_currentState==STATE_RUN)
|
if(m_currentState==STATE_RUN)
|
||||||
{
|
{
|
||||||
setState(STATE_IDLE);
|
setState(STATE_IDLE);
|
||||||
|
@ -254,13 +283,9 @@ if(newmode!=-1)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// No obstruction this frame - Do the movement
|
||||||
Pos.vx+=m_moveVel.vx>>VELOCITY_SHIFT;
|
Pos.vx+=m_moveVel.vx>>VELOCITY_SHIFT;
|
||||||
}
|
}
|
||||||
if(m_currentState==STATE_IDLE&&isOnEdge())
|
|
||||||
{
|
|
||||||
setState(STATE_IDLETEETER);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Vertical movement
|
// Vertical movement
|
||||||
Pos.vy+=m_moveVel.vy>>VELOCITY_SHIFT;
|
Pos.vy+=m_moveVel.vy>>VELOCITY_SHIFT;
|
||||||
|
@ -318,6 +343,12 @@ Pos.vy=((Pos.vy-16)&0xfffffff0)+colHeight;
|
||||||
m_invincibleFrameCount--;
|
m_invincibleFrameCount--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Teeter if on an edge
|
||||||
|
if(m_currentState==STATE_IDLE&&isOnEdge())
|
||||||
|
{
|
||||||
|
setState(STATE_IDLETEETER);
|
||||||
|
}
|
||||||
|
|
||||||
// Look around
|
// Look around
|
||||||
int pad=getPadInputHeld();
|
int pad=getPadInputHeld();
|
||||||
if(getPadInputDown()&PAD_CIRCLE)
|
if(getPadInputDown()&PAD_CIRCLE)
|
||||||
|
@ -326,11 +357,9 @@ if(getPadInputDown()&PAD_CIRCLE)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Camera scroll..
|
||||||
// Map scroll..
|
|
||||||
if(m_cameraScrollDir==-1)
|
if(m_cameraScrollDir==-1)
|
||||||
{
|
{
|
||||||
//right
|
|
||||||
if(m_cameraScrollPos>-CAMERA_SCROLLLIMIT<<8)
|
if(m_cameraScrollPos>-CAMERA_SCROLLLIMIT<<8)
|
||||||
{
|
{
|
||||||
m_cameraScrollPos-=CAMERA_SCROLLSPEED;
|
m_cameraScrollPos-=CAMERA_SCROLLSPEED;
|
||||||
|
@ -343,7 +372,6 @@ if(getPadInputDown()&PAD_CIRCLE)
|
||||||
}
|
}
|
||||||
else if(m_cameraScrollDir==+1)
|
else if(m_cameraScrollDir==+1)
|
||||||
{
|
{
|
||||||
//left
|
|
||||||
if(m_cameraScrollPos<(CAMERA_SCROLLLIMIT<<8))
|
if(m_cameraScrollPos<(CAMERA_SCROLLLIMIT<<8))
|
||||||
{
|
{
|
||||||
m_cameraScrollPos+=CAMERA_SCROLLSPEED;
|
m_cameraScrollPos+=CAMERA_SCROLLSPEED;
|
||||||
|
@ -417,29 +445,15 @@ if(getPadInputDown()&PAD_CIRCLE)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
// Move the camera offset
|
// Move the camera offset
|
||||||
m_cameraOffsetTarget=ofs;
|
ppos.vx=MAP3D_CENTRE_X+((MAP3D_BLOCKSTEPSIZE*m_cameraScrollPos)>>8);
|
||||||
m_cameraOffset=ofs;
|
ppos.vy=MAP3D_CENTRE_Y;
|
||||||
/*
|
ofs.vx=MAP2D_CENTRE_X+((MAP2D_BLOCKSTEPSIZE*(-m_cameraScrollPos))>>8);
|
||||||
for(i=0;i<_frames;i++)
|
ofs.vy=MAP2D_CENTRE_Y;
|
||||||
{
|
|
||||||
int moveDelta;
|
|
||||||
moveDelta=(m_cameraOffset.vx-m_cameraOffsetTarget.vx);
|
|
||||||
if(moveDelta)
|
m_cameraOffset=ofs;
|
||||||
{
|
|
||||||
if(moveDelta<0)
|
|
||||||
{
|
|
||||||
moveDelta>>=2;
|
|
||||||
if(moveDelta==0)moveDelta=1;
|
|
||||||
}
|
|
||||||
else if(moveDelta>0)
|
|
||||||
{
|
|
||||||
moveDelta>>=2;
|
|
||||||
if(moveDelta==0)moveDelta=-1;
|
|
||||||
}
|
|
||||||
m_cameraOffset.vx+=moveDelta;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
if(Pos.vx<0)Pos.vx=0;
|
if(Pos.vx<0)Pos.vx=0;
|
||||||
if(Pos.vy<0)Pos.vy=0;
|
if(Pos.vy<0)Pos.vy=0;
|
||||||
}
|
}
|
||||||
|
@ -451,11 +465,6 @@ m_cameraOffset=ofs;
|
||||||
Returns:
|
Returns:
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
int panim=-1;
|
int panim=-1;
|
||||||
// -3912,500
|
|
||||||
// 130,500
|
|
||||||
// 4172,500
|
|
||||||
DVECTOR ppos={130,500};
|
|
||||||
//int moff=0;
|
|
||||||
|
|
||||||
#ifdef __USER_paul__
|
#ifdef __USER_paul__
|
||||||
int mouth=-1,eyes=-1;
|
int mouth=-1,eyes=-1;
|
||||||
|
@ -480,12 +489,6 @@ if(eyes!=-1)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ppos.vx=MAP3D_CENTRE_X+((MAP3D_BLOCKSTEPSIZE*m_cameraScrollPos)>>8);
|
|
||||||
ppos.vy=MAP3D_CENTRE_Y;
|
|
||||||
ofs.vx=MAP2D_CENTRE_X+((MAP2D_BLOCKSTEPSIZE*(-m_cameraScrollPos))>>8);
|
|
||||||
ofs.vy=MAP2D_CENTRE_Y;
|
|
||||||
|
|
||||||
|
|
||||||
//int xval=255-(MAP2D_BLOCKSTEPSIZE*(-m_cameraScrollPos>>8));
|
//int xval=255-(MAP2D_BLOCKSTEPSIZE*(-m_cameraScrollPos>>8));
|
||||||
//DrawLine(xval-7,0,xval-7,255,0,128,255,0);
|
//DrawLine(xval-7,0,xval-7,255,0,128,255,0);
|
||||||
//DrawLine(xval+7,0,xval+7,255,0,128,255,0);
|
//DrawLine(xval+7,0,xval+7,255,0,128,255,0);
|
||||||
|
@ -513,7 +516,7 @@ DVECTOR CPlayer::getCameraPos()
|
||||||
{
|
{
|
||||||
DVECTOR cameraPos;
|
DVECTOR cameraPos;
|
||||||
cameraPos.vx=Pos.vx+m_cameraOffset.vx;
|
cameraPos.vx=Pos.vx+m_cameraOffset.vx;
|
||||||
cameraPos.vy=Pos.vy+m_cameraOffset.vy;//+m_cameraLookYOffset;
|
cameraPos.vy=Pos.vy+m_cameraOffset.vy;
|
||||||
return cameraPos;
|
return cameraPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -678,11 +681,11 @@ DVECTOR CPlayer::getPlayerPos()
|
||||||
Params:
|
Params:
|
||||||
Returns:
|
Returns:
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
int CPlayer::getPadInputHeld()
|
PLAYERINPUT CPlayer::getPadInputHeld()
|
||||||
{
|
{
|
||||||
return m_padInput;
|
return m_padInput;
|
||||||
}
|
}
|
||||||
int CPlayer::getPadInputDown()
|
PLAYERINPUT CPlayer::getPadInputDown()
|
||||||
{
|
{
|
||||||
return m_padInputDown;
|
return m_padInputDown;
|
||||||
}
|
}
|
||||||
|
@ -905,7 +908,7 @@ void CPlayer::updatePadInput()
|
||||||
{
|
{
|
||||||
m_lastPadInput=m_padInput;
|
m_lastPadInput=m_padInput;
|
||||||
m_padInput=readPadInput();
|
m_padInput=readPadInput();
|
||||||
m_padInputDown=m_padInput&(m_lastPadInput^-1);
|
m_padInputDown=(PLAYERINPUT)(m_padInput&(m_lastPadInput^-1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -915,9 +918,74 @@ void CPlayer::updatePadInput()
|
||||||
Params:
|
Params:
|
||||||
Returns:
|
Returns:
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
int CPlayer::readPadInput()
|
PLAYERINPUT CPlayer::readPadInput()
|
||||||
{
|
{
|
||||||
return PadGetHeld(0);
|
PLAYERINPUT input;
|
||||||
|
int pad;
|
||||||
|
|
||||||
|
input=PI_NONE;
|
||||||
|
pad=PadGetHeld(0);
|
||||||
|
|
||||||
|
if(pad&CPadConfig::getButton(CPadConfig::PAD_CFG_UP))
|
||||||
|
{
|
||||||
|
input=(PLAYERINPUT)(input|PI_UP);
|
||||||
|
}
|
||||||
|
if(pad&CPadConfig::getButton(CPadConfig::PAD_CFG_DOWN))
|
||||||
|
{
|
||||||
|
input=(PLAYERINPUT)(input|PI_DOWN);
|
||||||
|
}
|
||||||
|
if(pad&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT))
|
||||||
|
{
|
||||||
|
input=(PLAYERINPUT)(input|PI_LEFT);
|
||||||
|
}
|
||||||
|
if(pad&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT))
|
||||||
|
{
|
||||||
|
input=(PLAYERINPUT)(input|PI_RIGHT);
|
||||||
|
}
|
||||||
|
if(pad&CPadConfig::getButton(CPadConfig::PAD_CFG_JUMP))
|
||||||
|
{
|
||||||
|
input=(PLAYERINPUT)(input|PI_JUMP);
|
||||||
|
}
|
||||||
|
if(pad&CPadConfig::getButton(CPadConfig::PAD_CFG_ACTION))
|
||||||
|
{
|
||||||
|
input=(PLAYERINPUT)(input|PI_ACTION);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef _RECORD_DEMO_MODE_
|
||||||
|
CDemoPlayer::demoPlayerControl *crnt;
|
||||||
|
PLAYERINPUT lastInput;
|
||||||
|
crnt=&s_demoControls[s_demoSize];
|
||||||
|
if(s_demoFrameCount==0)
|
||||||
|
{
|
||||||
|
crnt->m_inputValue=input;
|
||||||
|
}
|
||||||
|
lastInput=(PLAYERINPUT)crnt->m_inputValue;
|
||||||
|
if(crnt->m_length==255)
|
||||||
|
{
|
||||||
|
lastInput=(PLAYERINPUT)(input-1);
|
||||||
|
}
|
||||||
|
if(lastInput==input)
|
||||||
|
{
|
||||||
|
crnt->m_length++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
s_demoSize++;
|
||||||
|
ASSERT(s_demoSize<MAX_DEMO_SIZE);
|
||||||
|
crnt++;
|
||||||
|
crnt->m_inputValue=input;
|
||||||
|
crnt->m_length=1;
|
||||||
|
}
|
||||||
|
s_demoFrameCount++;
|
||||||
|
if(s_demoFrameCount==30*60)
|
||||||
|
{
|
||||||
|
writeDemoControls();
|
||||||
|
ASSERT(!"DEMO ENDED");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return input;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -106,6 +106,22 @@ typedef enum
|
||||||
}DAMAGE_TYPE;
|
}DAMAGE_TYPE;
|
||||||
|
|
||||||
|
|
||||||
|
// The input from the control pad is remapped to this rather than keeping it in the
|
||||||
|
// normal pad format. This allows us to store all input in one byte ( as opposed to
|
||||||
|
// two bytes ) for demo recording and means that the player state codes don't have
|
||||||
|
// to keep using CPadConfig to remap the controls internally.
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
PI_NONE =0,
|
||||||
|
PI_UP =1<<0,
|
||||||
|
PI_DOWN =1<<1,
|
||||||
|
PI_LEFT =1<<2,
|
||||||
|
PI_RIGHT =1<<3,
|
||||||
|
PI_JUMP =1<<4,
|
||||||
|
PI_ACTION =1<<5,
|
||||||
|
}PLAYERINPUT;
|
||||||
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
Structure defintions
|
Structure defintions
|
||||||
-------------------- */
|
-------------------- */
|
||||||
|
@ -124,10 +140,10 @@ public:
|
||||||
VELOCITY_SHIFT=2
|
VELOCITY_SHIFT=2
|
||||||
};
|
};
|
||||||
|
|
||||||
void init();
|
virtual void init();
|
||||||
void shutdown();
|
virtual void shutdown();
|
||||||
void think(int _frames);
|
virtual void think(int _frames);
|
||||||
void render();
|
virtual void render();
|
||||||
|
|
||||||
DVECTOR getCameraPos();
|
DVECTOR getCameraPos();
|
||||||
|
|
||||||
|
@ -161,8 +177,8 @@ protected:
|
||||||
DVECTOR getMoveVelocity();
|
DVECTOR getMoveVelocity();
|
||||||
void setMoveVelocity(DVECTOR *_moveVel);
|
void setMoveVelocity(DVECTOR *_moveVel);
|
||||||
DVECTOR getPlayerPos();
|
DVECTOR getPlayerPos();
|
||||||
int getPadInputHeld();
|
PLAYERINPUT getPadInputHeld();
|
||||||
int getPadInputDown();
|
PLAYERINPUT getPadInputDown();
|
||||||
|
|
||||||
// Collision
|
// Collision
|
||||||
int isOnSolidGround();
|
int isOnSolidGround();
|
||||||
|
@ -231,16 +247,18 @@ private:
|
||||||
|
|
||||||
int m_lives;
|
int m_lives;
|
||||||
|
|
||||||
DVECTOR m_cameraOffsetTarget;
|
|
||||||
DVECTOR m_cameraOffset;
|
DVECTOR m_cameraOffset;
|
||||||
int m_cameraLookYOffset;
|
int m_cameraLookYOffset;
|
||||||
int m_cameraLookTimer;
|
int m_cameraLookTimer;
|
||||||
|
|
||||||
void updatePadInput();
|
void updatePadInput();
|
||||||
virtual int readPadInput();
|
protected:
|
||||||
int m_padInput; // Controls that are being held down
|
virtual PLAYERINPUT readPadInput();
|
||||||
int m_lastPadInput; // Last frames controls
|
private:
|
||||||
int m_padInputDown; // Controls that were pressed this frame
|
PLAYERINPUT m_padInput; // Controls that are being held down
|
||||||
|
PLAYERINPUT m_lastPadInput; // Last frames controls
|
||||||
|
PLAYERINPUT m_padInputDown; // Controls that were pressed this frame
|
||||||
|
|
||||||
|
|
||||||
// Pointer to the collision layer for the current map
|
// Pointer to the collision layer for the current map
|
||||||
class CLayerCollision *m_layerCollision;
|
class CLayerCollision *m_layerCollision;
|
||||||
|
|
|
@ -93,11 +93,11 @@ void CPlayerStateRunChop::think(CPlayer *_player)
|
||||||
int controlHeld;
|
int controlHeld;
|
||||||
controlHeld=getPadInputHeld(_player);
|
controlHeld=getPadInputHeld(_player);
|
||||||
|
|
||||||
if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT))
|
if(controlHeld&PI_LEFT)
|
||||||
{
|
{
|
||||||
moveLeft(_player);
|
moveLeft(_player);
|
||||||
}
|
}
|
||||||
else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT))
|
else if(controlHeld&PI_RIGHT)
|
||||||
{
|
{
|
||||||
moveRight(_player);
|
moveRight(_player);
|
||||||
}
|
}
|
||||||
|
@ -131,11 +131,11 @@ void CPlayerStateAirChop::think(CPlayer *_player)
|
||||||
int controlHeld;
|
int controlHeld;
|
||||||
controlHeld=getPadInputHeld(_player);
|
controlHeld=getPadInputHeld(_player);
|
||||||
|
|
||||||
if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT))
|
if(controlHeld&PI_LEFT)
|
||||||
{
|
{
|
||||||
moveLeft(_player);
|
moveLeft(_player);
|
||||||
}
|
}
|
||||||
else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT))
|
else if(controlHeld&PI_RIGHT)
|
||||||
{
|
{
|
||||||
moveRight(_player);
|
moveRight(_player);
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,7 +114,7 @@ void CPlayerStateSoakUp::think(CPlayer *_player)
|
||||||
int controlHeld;
|
int controlHeld;
|
||||||
|
|
||||||
controlHeld=getPadInputHeld(_player);
|
controlHeld=getPadInputHeld(_player);
|
||||||
if(!(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_DOWN)))
|
if(!(controlHeld&PI_DOWN))
|
||||||
{
|
{
|
||||||
setState(_player,STATE_GETUP);
|
setState(_player,STATE_GETUP);
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,11 +83,11 @@ void CPlayerStateFall::think(CPlayer *_player)
|
||||||
metrics=getPlayerMetrics(_player);
|
metrics=getPlayerMetrics(_player);
|
||||||
controlHeld=getPadInputHeld(_player);
|
controlHeld=getPadInputHeld(_player);
|
||||||
|
|
||||||
if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT))
|
if(controlHeld&PI_LEFT)
|
||||||
{
|
{
|
||||||
moveLeft(_player);
|
moveLeft(_player);
|
||||||
}
|
}
|
||||||
else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT))
|
else if(controlHeld&PI_RIGHT)
|
||||||
{
|
{
|
||||||
moveRight(_player);
|
moveRight(_player);
|
||||||
}
|
}
|
||||||
|
@ -98,11 +98,11 @@ void CPlayerStateFall::think(CPlayer *_player)
|
||||||
|
|
||||||
fall(_player);
|
fall(_player);
|
||||||
|
|
||||||
if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_ACTION))
|
if(controlHeld&PI_ACTION)
|
||||||
{
|
{
|
||||||
setState(_player,STATE_AIRATTACK);
|
setState(_player,STATE_AIRATTACK);
|
||||||
}
|
}
|
||||||
else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_DOWN))
|
else if(controlHeld&PI_DOWN)
|
||||||
{
|
{
|
||||||
move.vx=0;
|
move.vx=0;
|
||||||
move.vy=0;
|
move.vy=0;
|
||||||
|
@ -138,11 +138,11 @@ void CPlayerStateFallFar::think(CPlayer *_player)
|
||||||
|
|
||||||
controlHeld=getPadInputHeld(_player);
|
controlHeld=getPadInputHeld(_player);
|
||||||
|
|
||||||
if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT))
|
if(controlHeld&PI_LEFT)
|
||||||
{
|
{
|
||||||
moveLeft(_player);
|
moveLeft(_player);
|
||||||
}
|
}
|
||||||
else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT))
|
else if(controlHeld&PI_RIGHT)
|
||||||
{
|
{
|
||||||
moveRight(_player);
|
moveRight(_player);
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,25 +71,25 @@ void CPlayerStateBaseIdle::thinkControl(CPlayer *_player)
|
||||||
controlDown=getPadInputDown(_player);
|
controlDown=getPadInputDown(_player);
|
||||||
controlHeld=getPadInputHeld(_player);
|
controlHeld=getPadInputHeld(_player);
|
||||||
|
|
||||||
if(controlDown&CPadConfig::getButton(CPadConfig::PAD_CFG_JUMP))
|
if(controlDown&PI_JUMP)
|
||||||
{
|
{
|
||||||
setState(_player,STATE_JUMP);
|
setState(_player,STATE_JUMP);
|
||||||
}
|
}
|
||||||
else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT))
|
else if(controlHeld&PI_LEFT)
|
||||||
{
|
{
|
||||||
if(canMoveLeft(_player))
|
if(canMoveLeft(_player))
|
||||||
setState(_player,STATE_RUN);
|
setState(_player,STATE_RUN);
|
||||||
}
|
}
|
||||||
else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT))
|
else if(controlHeld&PI_RIGHT)
|
||||||
{
|
{
|
||||||
if(canMoveRight(_player))
|
if(canMoveRight(_player))
|
||||||
setState(_player,STATE_RUN);
|
setState(_player,STATE_RUN);
|
||||||
}
|
}
|
||||||
else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_ACTION))
|
else if(controlHeld&PI_ACTION)
|
||||||
{
|
{
|
||||||
setState(_player,STATE_ATTACK);
|
setState(_player,STATE_ATTACK);
|
||||||
}
|
}
|
||||||
else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_DOWN))
|
else if(controlHeld&PI_DOWN)
|
||||||
{
|
{
|
||||||
setState(_player,STATE_DUCK);
|
setState(_player,STATE_DUCK);
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,7 +95,7 @@ void CPlayerStateJump::think(CPlayer *_player)
|
||||||
metrics=getPlayerMetrics(_player);
|
metrics=getPlayerMetrics(_player);
|
||||||
controlHeld=getPadInputHeld(_player);
|
controlHeld=getPadInputHeld(_player);
|
||||||
|
|
||||||
if(m_jumpFrames<=metrics->m_metric[PM__MAX_JUMP_FRAMES]&&controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_JUMP))
|
if(m_jumpFrames<=metrics->m_metric[PM__MAX_JUMP_FRAMES]&&PI_JUMP)
|
||||||
{
|
{
|
||||||
m_jumpFrames++;
|
m_jumpFrames++;
|
||||||
}
|
}
|
||||||
|
@ -104,15 +104,15 @@ void CPlayerStateJump::think(CPlayer *_player)
|
||||||
setState(_player,STATE_FALL);
|
setState(_player,STATE_FALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_ACTION))
|
if(controlHeld&PI_ACTION)
|
||||||
{
|
{
|
||||||
setState(_player,STATE_AIRATTACK);
|
setState(_player,STATE_AIRATTACK);
|
||||||
}
|
}
|
||||||
if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT))
|
if(controlHeld&PI_LEFT)
|
||||||
{
|
{
|
||||||
moveLeft(_player);
|
moveLeft(_player);
|
||||||
}
|
}
|
||||||
else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT))
|
else if(controlHeld&PI_RIGHT)
|
||||||
{
|
{
|
||||||
moveRight(_player);
|
moveRight(_player);
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,11 +78,11 @@ void CPlayerStateRun::enter(CPlayer *_player)
|
||||||
setAnimNo(_player,ANIM_PLAYER_ANIM_RUNSTART);
|
setAnimNo(_player,ANIM_PLAYER_ANIM_RUNSTART);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT))
|
if(controlHeld&PI_LEFT)
|
||||||
{
|
{
|
||||||
setFacing(_player,FACING_LEFT);
|
setFacing(_player,FACING_LEFT);
|
||||||
}
|
}
|
||||||
else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT))
|
else if(controlHeld&PI_RIGHT)
|
||||||
{
|
{
|
||||||
setFacing(_player,FACING_RIGHT);
|
setFacing(_player,FACING_RIGHT);
|
||||||
}
|
}
|
||||||
|
@ -103,24 +103,24 @@ void CPlayerStateRun::think(CPlayer *_player)
|
||||||
controlDown=getPadInputDown(_player);
|
controlDown=getPadInputDown(_player);
|
||||||
controlHeld=getPadInputHeld(_player);
|
controlHeld=getPadInputHeld(_player);
|
||||||
|
|
||||||
if(controlDown&CPadConfig::getButton(CPadConfig::PAD_CFG_JUMP))
|
if(controlDown&PI_JUMP)
|
||||||
{
|
{
|
||||||
setState(_player,STATE_JUMP);
|
setState(_player,STATE_JUMP);
|
||||||
}
|
}
|
||||||
if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_DOWN))
|
if(controlHeld&PI_DOWN)
|
||||||
{
|
{
|
||||||
setState(_player,STATE_DUCK);
|
setState(_player,STATE_DUCK);
|
||||||
}
|
}
|
||||||
if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_ACTION))
|
if(controlHeld&PI_ACTION)
|
||||||
{
|
{
|
||||||
setState(_player,STATE_RUNATTACK);
|
setState(_player,STATE_RUNATTACK);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT))
|
if(controlHeld&PI_LEFT)
|
||||||
{
|
{
|
||||||
moveLeft(_player);
|
moveLeft(_player);
|
||||||
}
|
}
|
||||||
else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT))
|
else if(controlHeld&PI_RIGHT)
|
||||||
{
|
{
|
||||||
moveRight(_player);
|
moveRight(_player);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
#include "utils\utils.h"
|
#include "utils\utils.h"
|
||||||
|
|
||||||
#include "system\gp.h"
|
#include "system\gp.h"
|
||||||
|
#include "gfx\anim.h"
|
||||||
|
|
||||||
// scenes
|
// scenes
|
||||||
#include "game\game.h"
|
#include "game\game.h"
|
||||||
|
@ -116,6 +117,8 @@ void InitSystem() // reordered to reduce black screen (hope all is well
|
||||||
|
|
||||||
CBubicleFactory::init();
|
CBubicleFactory::init();
|
||||||
|
|
||||||
|
CAnimDB::LoadAnims();
|
||||||
|
|
||||||
#if defined(__DEBUG_MEM__)
|
#if defined(__DEBUG_MEM__)
|
||||||
DebugMemFontInit();
|
DebugMemFontInit();
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -669,6 +669,14 @@ SOURCE=..\..\..\source\paul\scenesel.h
|
||||||
# PROP Default_Filter ""
|
# PROP Default_Filter ""
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\..\source\player\demoplay.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\..\source\player\demoplay.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=..\..\..\source\player\panimsfx.cpp
|
SOURCE=..\..\..\source\player\panimsfx.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue