diff --git a/data/DataCache.scr b/data/DataCache.scr index e4c4828e8..447c32e02 100644 --- a/data/DataCache.scr +++ b/data/DataCache.scr @@ -30,6 +30,7 @@ music/sb-title.vh sfx/ingame.pxm sfx/ingame.vb sfx/ingame.vh +demo/demo____.dmo backdrop/credits.gfx backdrop/sky.gfx memcard/memhead.bin diff --git a/makefile.gaz b/makefile.gaz index be776ccda..1ccb1b134 100644 --- a/makefile.gaz +++ b/makefile.gaz @@ -141,7 +141,8 @@ pad_src := pads paul_src := paul \ scenesel -player_src := panimsfx \ +player_src := demoplay \ + panimsfx \ player \ pmodes \ psbutt \ diff --git a/makefile.gfx b/makefile.gfx index 31869f6d9..1fa3c3b39 100644 --- a/makefile.gfx +++ b/makefile.gfx @@ -464,6 +464,31 @@ GRAF_DIRS_TO_MAKE += $(SCRIPTS_OUT_DIR) 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 #---------------------------------------------------------------------------- diff --git a/source/frontend/demomode.cpp b/source/frontend/demomode.cpp index a9579de4a..95abee0be 100644 --- a/source/frontend/demomode.cpp +++ b/source/frontend/demomode.cpp @@ -46,6 +46,10 @@ #include "gfx\prim.h" #endif +#ifndef __PLAYER_DEMOPLAY_H__ +#include "player\demoplay.h" +#endif + /* Std Lib ------- */ @@ -73,7 +77,25 @@ /*---------------------------------------------------------------------- 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: @@ -87,6 +109,7 @@ void CFrontEndDemoMode::init() m_smallFont->initialise(&standardFont); m_smallFont->setJustification(FontBank::JUST_CENTRE); m_smallFont->setOt(500); + m_smallFont->setWobble(true); } /*---------------------------------------------------------------------- @@ -108,9 +131,9 @@ void CFrontEndDemoMode::shutdown() ---------------------------------------------------------------------- */ void CFrontEndDemoMode::select() { - // LOAD UP DEMO AND DEMO LEVEL + m_gameScene=new ("Demo Game Scene") CDemoGameScene(); + m_gameScene->init(); m_shuttingDown=false; -count=0; CFader::setFadingIn(); } @@ -122,7 +145,7 @@ count=0; ---------------------------------------------------------------------- */ void CFrontEndDemoMode::unselect() { - // DUMP DEMO AND LEVEL + m_gameScene->shutdown(); delete m_gameScene; } /*---------------------------------------------------------------------- @@ -135,6 +158,8 @@ void CFrontEndDemoMode::render() { sFrameHdr *fh; + m_gameScene->render(); + // Game logo/title 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->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) { + m_gameScene->think(_frames); + if(!m_shuttingDown&&!CFader::isFading()) { - count+=_frames; - if(PadGetDown(0)&PAD_START||count>60*20) // OR DEMO ENDED + if(PadGetDown(0)&PAD_START|| + ((CDemoPlayer*)m_gameScene->getPlayer())->getFramesLeft() #endif +#ifndef _ANIMTEX_HEADER_ +#include "gfx\animtex.h" +#endif int GX=248; @@ -83,19 +84,26 @@ void CGameScene::init() enemy->init(); #endif - m_player=new ("player") CPlayer(); + createPlayer(); m_player->init(); m_player->setLayerCollision(Level.getCollisionLayer()); - CAnimDB::LoadAnims(); - CFader::setFadingIn(); SetGeomOffset( GX, GY ); 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() @@ -121,12 +129,12 @@ void CGameScene::render() /*****************************************************************************/ void CGameScene::think(int _frames) { -#ifdef __USER_paul__ - if(!CConversation::isActive()&&PadGetDown(0)&PAD_START) - { - CConversation::trigger(SCRIPTS_SPEECHTEST_DAT); - } -#endif +//#ifdef __USER_paul__ +// if(!CConversation::isActive()&&PadGetDown(0)&PAD_START) +// { +// CConversation::trigger(SCRIPTS_SPEECHTEST_DAT); +// } +//#endif CConversation::think(_frames); if(!CConversation::isActive()) diff --git a/source/game/game.h b/source/game/game.h index e5445b7e2..27a3973e4 100644 --- a/source/game/game.h +++ b/source/game/game.h @@ -27,6 +27,7 @@ virtual ~CGameScene() {;} void init(); +virtual void createPlayer(); void shutdown(); void render(); void think(int _frames); @@ -37,7 +38,7 @@ virtual ~CGameScene() {;} class CPlayer *getPlayer(); void sendEvent( GAME_EVENT evt, CThing *sourceThing ); -private: +protected: CLevel Level; class CPlayer *m_player; diff --git a/source/level/layertile3d.cpp b/source/level/layertile3d.cpp index 49d9752d7..49168ab25 100644 --- a/source/level/layertile3d.cpp +++ b/source/level/layertile3d.cpp @@ -64,6 +64,8 @@ int Size=Width*Height; /*****************************************************************************/ void CLayerTile3d::shutdown() { + MemFree(RenderFlagTable); + MemFree(PrimGrid); } /*****************************************************************************/ diff --git a/source/level/level.cpp b/source/level/level.cpp index 21bdad645..1f6549100 100644 --- a/source/level/level.cpp +++ b/source/level/level.cpp @@ -38,7 +38,11 @@ CLevel::~CLevel() { for (int i=0; ishutdown(); + delete TileLayers[i]; + } } } @@ -47,7 +51,7 @@ void CLevel::init() { TileBankHdr=(sTileBankHdr *)CFileIO::loadFile(LEVELS_CHAPTER02_LEVEL04_TBK,"Tile Bank Data"); LevelHdr=(sLvlHdr *)CFileIO::loadFile(LEVELS_CHAPTER02_LEVEL0401_LVL,"Level Data"); - TPLoadTex(LEVELS_CHAPTER02_LEVEL04_TEX); + m_levelTPage=TPLoadTex(LEVELS_CHAPTER02_LEVEL04_TEX); initLayers(); } @@ -110,6 +114,9 @@ sTile *TileList=(sTile*)MakePtr(TileBankHdr,TileBankHdr->TileList); /*****************************************************************************/ void CLevel::shutdown() { + TPFree(m_levelTPage); + CollisionLayer->shutdown(); MemFree(CollisionLayer); + MemFree(TileBankHdr); MemFree(LevelHdr); } diff --git a/source/level/level.h b/source/level/level.h index 14d1b59ac..d8e8f14f6 100644 --- a/source/level/level.h +++ b/source/level/level.h @@ -34,6 +34,8 @@ private: sTileBankHdr *TileBankHdr; static DVECTOR MapPos; + TPAGE_DESC m_levelTPage; + // Tile Layers CLayerTile *TileLayers[CLayerTile::LAYER_TILE_TYPE_MAX]; diff --git a/source/player/demoplay.cpp b/source/player/demoplay.cpp index 5dfcdabc1..5176478a6 100644 --- a/source/player/demoplay.cpp +++ b/source/player/demoplay.cpp @@ -47,10 +47,79 @@ Params: 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() { - 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; } diff --git a/source/player/demoplay.h b/source/player/demoplay.h index 467232034..452efb4c9 100644 --- a/source/player/demoplay.h +++ b/source/player/demoplay.h @@ -22,6 +22,10 @@ #include "player/player.h" #endif +#ifndef _FILEIO_HEADER_ +#include "fileio\fileio.h" +#endif + /* Std Lib ------- */ @@ -43,9 +47,26 @@ public: u8 m_length; }demoPlayerControl; + void loadControlData(FileEquate _fe); + int getFramesLeft(); + + virtual void shutdown(); + + protected: virtual PLAYERINPUT readPadInput(); + + private: + char *m_demoData; + + demoPlayerControl *m_controlData; + int m_controlDataSize; + int m_controlFrameCount; + + int m_currentControlFrame; + int m_frameCount; + int m_totalFrameCount; }; diff --git a/source/player/player.cpp b/source/player/player.cpp index 7df626cb9..35c9db81d 100644 --- a/source/player/player.cpp +++ b/source/player/player.cpp @@ -56,6 +56,9 @@ Tyepdefs && Defines ------------------- */ +//#define _RECORD_DEMO_MODE_ + + /*---------------------------------------------------------------------- Structure defintions -------------------- */ @@ -68,8 +71,42 @@ 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;iGet((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 int dir,vx,cx,y,i; if(m_moveVel.vx<0) @@ -245,7 +274,7 @@ if(newmode!=-1) } 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) { setState(STATE_IDLE); @@ -254,13 +283,9 @@ if(newmode!=-1) } else { + // No obstruction this frame - Do the movement Pos.vx+=m_moveVel.vx>>VELOCITY_SHIFT; } - if(m_currentState==STATE_IDLE&&isOnEdge()) - { - setState(STATE_IDLETEETER); - } - // Vertical movement Pos.vy+=m_moveVel.vy>>VELOCITY_SHIFT; @@ -318,6 +343,12 @@ Pos.vy=((Pos.vy-16)&0xfffffff0)+colHeight; m_invincibleFrameCount--; } + // Teeter if on an edge + if(m_currentState==STATE_IDLE&&isOnEdge()) + { + setState(STATE_IDLETEETER); + } + // Look around int pad=getPadInputHeld(); if(getPadInputDown()&PAD_CIRCLE) @@ -326,34 +357,31 @@ if(getPadInputDown()&PAD_CIRCLE) } - - // Map scroll.. - if(m_cameraScrollDir==-1) - { - //right - if(m_cameraScrollPos>-CAMERA_SCROLLLIMIT<<8) + // Camera scroll.. + if(m_cameraScrollDir==-1) { - m_cameraScrollPos-=CAMERA_SCROLLSPEED; - if(m_cameraScrollPos<-CAMERA_SCROLLLIMIT<<8) + if(m_cameraScrollPos>-CAMERA_SCROLLLIMIT<<8) { - m_cameraScrollPos=-CAMERA_SCROLLLIMIT<<8; - m_cameraScrollDir=0; + m_cameraScrollPos-=CAMERA_SCROLLSPEED; + if(m_cameraScrollPos<-CAMERA_SCROLLLIMIT<<8) + { + m_cameraScrollPos=-CAMERA_SCROLLLIMIT<<8; + m_cameraScrollDir=0; + } } } - } - else if(m_cameraScrollDir==+1) - { - //left - if(m_cameraScrollPos<(CAMERA_SCROLLLIMIT<<8)) + else if(m_cameraScrollDir==+1) { - m_cameraScrollPos+=CAMERA_SCROLLSPEED; - if(m_cameraScrollPos>CAMERA_SCROLLLIMIT<<8) + if(m_cameraScrollPos<(CAMERA_SCROLLLIMIT<<8)) { - m_cameraScrollPos=CAMERA_SCROLLLIMIT<<8; - m_cameraScrollDir=0; + m_cameraScrollPos+=CAMERA_SCROLLSPEED; + if(m_cameraScrollPos>CAMERA_SCROLLLIMIT<<8) + { + m_cameraScrollPos=CAMERA_SCROLLLIMIT<<8; + m_cameraScrollDir=0; + } } } - } @@ -417,29 +445,15 @@ if(getPadInputDown()&PAD_CIRCLE) #endif // Move the camera offset -m_cameraOffsetTarget=ofs; -m_cameraOffset=ofs; -/* - for(i=0;i<_frames;i++) - { - int moveDelta; - moveDelta=(m_cameraOffset.vx-m_cameraOffsetTarget.vx); - if(moveDelta) - { - 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; - } - } -*/ +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; + + + + m_cameraOffset=ofs; + if(Pos.vx<0)Pos.vx=0; if(Pos.vy<0)Pos.vy=0; } @@ -451,11 +465,6 @@ m_cameraOffset=ofs; Returns: ---------------------------------------------------------------------- */ int panim=-1; -// -3912,500 -// 130,500 -// 4172,500 -DVECTOR ppos={130,500}; -//int moff=0; #ifdef __USER_paul__ int mouth=-1,eyes=-1; @@ -480,12 +489,6 @@ if(eyes!=-1) } #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)); //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; 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; } @@ -678,11 +681,11 @@ DVECTOR CPlayer::getPlayerPos() Params: Returns: ---------------------------------------------------------------------- */ -int CPlayer::getPadInputHeld() +PLAYERINPUT CPlayer::getPadInputHeld() { return m_padInput; } -int CPlayer::getPadInputDown() +PLAYERINPUT CPlayer::getPadInputDown() { return m_padInputDown; } @@ -905,7 +908,7 @@ void CPlayer::updatePadInput() { m_lastPadInput=m_padInput; 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: 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_demoSizem_inputValue=input; + crnt->m_length=1; + } + s_demoFrameCount++; + if(s_demoFrameCount==30*60) + { + writeDemoControls(); + ASSERT(!"DEMO ENDED"); + } +#endif + + return input; } diff --git a/source/player/player.h b/source/player/player.h index 097370ba1..ef8b8c1bb 100644 --- a/source/player/player.h +++ b/source/player/player.h @@ -106,6 +106,22 @@ typedef enum }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 -------------------- */ @@ -124,10 +140,10 @@ public: VELOCITY_SHIFT=2 }; - void init(); - void shutdown(); - void think(int _frames); - void render(); + virtual void init(); + virtual void shutdown(); + virtual void think(int _frames); + virtual void render(); DVECTOR getCameraPos(); @@ -161,8 +177,8 @@ protected: DVECTOR getMoveVelocity(); void setMoveVelocity(DVECTOR *_moveVel); DVECTOR getPlayerPos(); - int getPadInputHeld(); - int getPadInputDown(); + PLAYERINPUT getPadInputHeld(); + PLAYERINPUT getPadInputDown(); // Collision int isOnSolidGround(); @@ -231,17 +247,19 @@ private: int m_lives; - DVECTOR m_cameraOffsetTarget; DVECTOR m_cameraOffset; int m_cameraLookYOffset; int m_cameraLookTimer; void updatePadInput(); - virtual int readPadInput(); - int m_padInput; // Controls that are being held down - int m_lastPadInput; // Last frames controls - int m_padInputDown; // Controls that were pressed this frame +protected: + virtual PLAYERINPUT readPadInput(); +private: + 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 class CLayerCollision *m_layerCollision; }; diff --git a/source/player/pschop.cpp b/source/player/pschop.cpp index d24af28b1..903f0c312 100644 --- a/source/player/pschop.cpp +++ b/source/player/pschop.cpp @@ -93,11 +93,11 @@ void CPlayerStateRunChop::think(CPlayer *_player) int controlHeld; controlHeld=getPadInputHeld(_player); - if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT)) + if(controlHeld&PI_LEFT) { moveLeft(_player); } - else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT)) + else if(controlHeld&PI_RIGHT) { moveRight(_player); } @@ -131,11 +131,11 @@ void CPlayerStateAirChop::think(CPlayer *_player) int controlHeld; controlHeld=getPadInputHeld(_player); - if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT)) + if(controlHeld&PI_LEFT) { moveLeft(_player); } - else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT)) + else if(controlHeld&PI_RIGHT) { moveRight(_player); } diff --git a/source/player/psduck.cpp b/source/player/psduck.cpp index c57e026a6..7245092c5 100644 --- a/source/player/psduck.cpp +++ b/source/player/psduck.cpp @@ -114,7 +114,7 @@ void CPlayerStateSoakUp::think(CPlayer *_player) int controlHeld; controlHeld=getPadInputHeld(_player); - if(!(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_DOWN))) + if(!(controlHeld&PI_DOWN)) { setState(_player,STATE_GETUP); } diff --git a/source/player/psfall.cpp b/source/player/psfall.cpp index 703b8849e..e86c5454b 100644 --- a/source/player/psfall.cpp +++ b/source/player/psfall.cpp @@ -83,11 +83,11 @@ void CPlayerStateFall::think(CPlayer *_player) metrics=getPlayerMetrics(_player); controlHeld=getPadInputHeld(_player); - if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT)) + if(controlHeld&PI_LEFT) { moveLeft(_player); } - else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT)) + else if(controlHeld&PI_RIGHT) { moveRight(_player); } @@ -98,11 +98,11 @@ void CPlayerStateFall::think(CPlayer *_player) fall(_player); - if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_ACTION)) + if(controlHeld&PI_ACTION) { setState(_player,STATE_AIRATTACK); } - else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_DOWN)) + else if(controlHeld&PI_DOWN) { move.vx=0; move.vy=0; @@ -138,11 +138,11 @@ void CPlayerStateFallFar::think(CPlayer *_player) controlHeld=getPadInputHeld(_player); - if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT)) + if(controlHeld&PI_LEFT) { moveLeft(_player); } - else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT)) + else if(controlHeld&PI_RIGHT) { moveRight(_player); } diff --git a/source/player/psidle.cpp b/source/player/psidle.cpp index f27656df4..dcc1bea02 100644 --- a/source/player/psidle.cpp +++ b/source/player/psidle.cpp @@ -71,25 +71,25 @@ void CPlayerStateBaseIdle::thinkControl(CPlayer *_player) controlDown=getPadInputDown(_player); controlHeld=getPadInputHeld(_player); - if(controlDown&CPadConfig::getButton(CPadConfig::PAD_CFG_JUMP)) + if(controlDown&PI_JUMP) { setState(_player,STATE_JUMP); } - else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT)) + else if(controlHeld&PI_LEFT) { if(canMoveLeft(_player)) setState(_player,STATE_RUN); } - else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT)) + else if(controlHeld&PI_RIGHT) { if(canMoveRight(_player)) setState(_player,STATE_RUN); } - else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_ACTION)) + else if(controlHeld&PI_ACTION) { setState(_player,STATE_ATTACK); } - else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_DOWN)) + else if(controlHeld&PI_DOWN) { setState(_player,STATE_DUCK); } diff --git a/source/player/psjump.cpp b/source/player/psjump.cpp index 2883d37c0..2f4654093 100644 --- a/source/player/psjump.cpp +++ b/source/player/psjump.cpp @@ -95,7 +95,7 @@ void CPlayerStateJump::think(CPlayer *_player) metrics=getPlayerMetrics(_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++; } @@ -104,15 +104,15 @@ void CPlayerStateJump::think(CPlayer *_player) setState(_player,STATE_FALL); } - if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_ACTION)) + if(controlHeld&PI_ACTION) { setState(_player,STATE_AIRATTACK); } - if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT)) + if(controlHeld&PI_LEFT) { moveLeft(_player); } - else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT)) + else if(controlHeld&PI_RIGHT) { moveRight(_player); } diff --git a/source/player/psrun.cpp b/source/player/psrun.cpp index 4c66ec932..1d3f826cf 100644 --- a/source/player/psrun.cpp +++ b/source/player/psrun.cpp @@ -78,11 +78,11 @@ void CPlayerStateRun::enter(CPlayer *_player) setAnimNo(_player,ANIM_PLAYER_ANIM_RUNSTART); } - if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT)) + if(controlHeld&PI_LEFT) { setFacing(_player,FACING_LEFT); } - else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT)) + else if(controlHeld&PI_RIGHT) { setFacing(_player,FACING_RIGHT); } @@ -103,24 +103,24 @@ void CPlayerStateRun::think(CPlayer *_player) controlDown=getPadInputDown(_player); controlHeld=getPadInputHeld(_player); - if(controlDown&CPadConfig::getButton(CPadConfig::PAD_CFG_JUMP)) + if(controlDown&PI_JUMP) { setState(_player,STATE_JUMP); } - if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_DOWN)) + if(controlHeld&PI_DOWN) { setState(_player,STATE_DUCK); } - if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_ACTION)) + if(controlHeld&PI_ACTION) { setState(_player,STATE_RUNATTACK); } - if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT)) + if(controlHeld&PI_LEFT) { moveLeft(_player); } - else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT)) + else if(controlHeld&PI_RIGHT) { moveRight(_player); } diff --git a/source/system/main.cpp b/source/system/main.cpp index d5e4f683d..5b3fee187 100644 --- a/source/system/main.cpp +++ b/source/system/main.cpp @@ -13,6 +13,7 @@ #include "utils\utils.h" #include "system\gp.h" +#include "gfx\anim.h" // scenes #include "game\game.h" @@ -116,6 +117,8 @@ void InitSystem() // reordered to reduce black screen (hope all is well CBubicleFactory::init(); + CAnimDB::LoadAnims(); + #if defined(__DEBUG_MEM__) DebugMemFontInit(); #endif diff --git a/users/paul/spongebob project/spongebob project.dsp b/users/paul/spongebob project/spongebob project.dsp index a504b442d..cd299f5e7 100644 --- a/users/paul/spongebob project/spongebob project.dsp +++ b/users/paul/spongebob project/spongebob project.dsp @@ -669,6 +669,14 @@ SOURCE=..\..\..\source\paul\scenesel.h # PROP Default_Filter "" # 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 # End Source File # Begin Source File