This commit is contained in:
Paul 2001-06-25 20:25:28 +00:00
parent 916cdef0aa
commit a5e3a138c2
14 changed files with 464 additions and 70 deletions

View File

@ -18,4 +18,6 @@ DeathForwards
GetHit
CrouchDown
CrouchUp
LookUp
LookUp
IdleWeapon
IdleNet

View File

@ -19,4 +19,5 @@ DeathForwards
GetHit
CrouchDown
CrouchUp
LookUp
LookUp
IdleWeapon

View File

@ -247,7 +247,8 @@ memcard_src := md5 \
pad_src := pads
paul_src := paul \
scenesel
scenesel \
animtest
pickups_src := pickup \
pballoon \

View File

@ -16,56 +16,28 @@
Includes
-------- */
#include "backend\party.h"
#include "paul\animtest.h"
#ifndef __PLAYER_PLAYER_H__
#include "player\player.h"
#endif
#ifndef __GFX_FONT_H__
#include "gfx\font.h"
#endif
#ifndef __PRIM_HEADER__
#include "gfx\prim.h"
#endif
#ifndef __PAD_PADS_H__
#include "pad\pads.h"
#endif
#ifndef __GAME_GAME_H__
#include "game\game.h"
#endif
#ifndef __GAME_GAMESLOT_H__
#include "game\gameslot.h"
#endif
#ifndef __FRONTEND_FRONTEND_H__
#include "frontend\frontend.h"
#endif
#ifndef __GFX_FADER_H__
#include "gfx\fader.h"
#endif
#ifndef _FILEIO_HEADER_
#include "fileio\fileio.h"
#endif
#ifndef __VID_HEADER_
#include "system\vid.h"
#endif
#ifndef __SHOP_SHOP_H__
#include "shop\shop.h"
#endif
#ifndef __GFX_SPRBANK_H__
#include "gfx\sprbank.h"
#endif
#ifndef __ACTOR_HEADER__
#include "gfx\actor.h"
#endif
#ifndef __BACKEND_CREDITS_H__
#include "backend\credits.h"
#endif
#ifndef __MATHTABLE_HEADER__
#include "utils\mathtab.h"
#endif
/* Std Lib
------- */
@ -73,12 +45,8 @@
/* Data
---- */
#ifndef __STRING_ENUMS__
#include <trans.h>
#endif
#ifndef __SPR_PARTY_H__
#include <party.h>
#ifndef __ANIM_SPONGEBOB_HEADER__
#include <ACTOR_SPONGEBOB_Anim.h>
#endif
@ -100,8 +68,69 @@
CAnimTestScene AnimTestScene;
CActorGfx *m_actorSpongebob;
CActorGfx *m_actorPatrick;
static CActorGfx *m_actorSpongebob;
// Anim tables from player.cpp
extern s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB];
extern FileEquate s_addonActorPoolNames[];
static const char *s_animNames[NUM_ANIM_SPONGEBOB]=
{
"ANIM_SPONGEBOB_BUTTBOUNCEEND",
"ANIM_SPONGEBOB_BUTTBOUNCESTART",
"ANIM_SPONGEBOB_FALL",
"ANIM_SPONGEBOB_GETUP",
"ANIM_SPONGEBOB_HITGROUND",
"ANIM_SPONGEBOB_IDLEBREATH",
"ANIM_SPONGEBOB_JUMPEND",
"ANIM_SPONGEBOB_JUMP",
"ANIM_SPONGEBOB_RUN",
"ANIM_SPONGEBOB_RUNSTOP",
"ANIM_SPONGEBOB_RUNSTART",
"ANIM_SPONGEBOB_TEETERBACK",
"ANIM_SPONGEBOB_TEETERFRONT",
"ANIM_SPONGEBOB_SWIPE",
"ANIM_SPONGEBOB_DEATHFORWARDS",
"ANIM_SPONGEBOB_DEATHSQUASH",
"ANIM_SPONGEBOB_DEATHSPIN",
"ANIM_SPONGEBOB_DEATHDRY",
"ANIM_SPONGEBOB_BALLOONJUMP",
"ANIM_SPONGEBOB_BLOWBUBBLE",
"ANIM_SPONGEBOB_FIREEND",
"ANIM_SPONGEBOB_FIRESTART",
"ANIM_SPONGEBOB_IDLEWEAPON",
"ANIM_SPONGEBOB_WALK",
"ANIM_SPONGEBOB_KARATE",
"ANIM_SPONGEBOB_GETHIT",
"ANIM_SPONGEBOB_CROUCHDOWN",
"ANIM_SPONGEBOB_CROUCHUP",
"ANIM_SPONGEBOB_LOOKUP",
"ANIM_SPONGEBOB_IDLEBIGEYE",
"ANIM_SPONGEBOB_IDLEFACEUPSIDEDOWN",
"ANIM_SPONGEBOB_IDLEBANDAID",
"ANIM_SPONGEBOB_IDLEEYEPOP",
"ANIM_SPONGEBOB_IDLEINHAT",
"ANIM_SPONGEBOB_IDLEMATURE",
"ANIM_SPONGEBOB_IDLEMOUSTACHE",
"ANIM_SPONGEBOB_IDLENOFACE",
"ANIM_SPONGEBOB_IDLENET",
"ANIM_SPONGEBOB_IDLEZORRO",
};
static const char *s_addonNames[NUM_PLAYER_ADDONS]=
{
"NET",
"CORALBLOWER",
"JELLYLAUNCHER",
"BUBBLEWAND",
"JELLYFISHINNET",
"GLOVE",
};
static CActorGfx *s_addonActorGfx[NUM_PLAYER_ADDONS];
/*----------------------------------------------------------------------
@ -114,14 +143,23 @@ void CAnimTestScene::init()
{
m_font=new ("game over font") ScalableFontBank();
m_font->initialise(&standardFont);
m_font->setJustification(ScalableFontBank::JUST_CENTRE);
m_font->setJustification(ScalableFontBank::JUST_LEFT);
m_font->setOt(5);
CActorPool::Reset();
m_actorSpongebob=CActorPool::GetActor(ACTORS_SPONGEBOB_SBK);
m_actorSpongebob->SetOtPos(5);
m_actorPatrick=CActorPool::GetActor(ACTORS_PATRICK_SBK);
m_actorPatrick->SetOtPos(5);
m_animNumber=0;
m_animFrame=0;
m_addonNumber=-1;
for(int i=0;i<NUM_PLAYER_ADDONS;i++)
{
s_addonActorGfx[i]=CActorPool::GetActor(s_addonActorPoolNames[i]);
s_addonActorGfx[i]->SetOtPos(4);
}
CActorPool::SetUpCache();
CActorPool::CleanUpCache();
}
@ -135,13 +173,57 @@ void CAnimTestScene::init()
---------------------------------------------------------------------- */
void CAnimTestScene::render()
{
DVECTOR sbpos={100,100};
POLY_F4 *f4;
DVECTOR sbpos={100,130};
char buf[100];
int addonAnimNumber=-1;
// Actors
m_actorSpongebob->Render(sbpos,0,0,0,0);
f4=GetPrimF4();
setXYWH(f4,0,0,512,256);
setRGB0(f4,110,120,130);
AddPrimToList(f4,15);
if(m_addonNumber!=-1)
{
addonAnimNumber=s_animMapNet[m_addonNumber][m_animNumber];
}
// Actor alone
m_actorSpongebob->Render(sbpos,m_animNumber,m_animFrame,0,0);
sbpos.vx+=150;
// Addon alone
if(addonAnimNumber!=-1)
{
s_addonActorGfx[m_addonNumber]->Render(sbpos,addonAnimNumber,m_animFrame,0,0);
}
else
{
m_font->print(sbpos.vx,sbpos.vy-50,"x");
}
sbpos.vx+=150;
// Actor+Addon
m_actorSpongebob->Render(sbpos,m_animNumber,m_animFrame,0,0);
if(addonAnimNumber!=-1)
{
s_addonActorGfx[m_addonNumber]->Render(sbpos,addonAnimNumber,m_animFrame,0,0);
}
CActorPool::CleanUpCache();
sprintf(buf,"Use: Up/Down, Left/Right, L1/L2, Cross and Circle");
m_font->print(20,140,buf);
sprintf(buf,"Anim: %s",s_animNames[m_animNumber]);
m_font->print(20,180,buf);
sprintf(buf,"Frame: %d",m_animFrame);
m_font->print(20,195,buf);
if(m_addonNumber!=-1)
{
sprintf(buf,"Addon: %s",s_addonNames[m_addonNumber]);
m_font->print(20,210,buf);
}
}
@ -153,8 +235,80 @@ void CAnimTestScene::render()
---------------------------------------------------------------------- */
void CAnimTestScene::think(int _frames)
{
int padRepeat,padHeld,padDown;
padRepeat=PadGetRepeat(0);
padHeld=PadGetHeld(0);
padDown=PadGetDown(0);
if(padRepeat&PAD_UP)
{
if(++m_animNumber==NUM_ANIM_SPONGEBOB)
{
m_animNumber=0;
}
m_animFrame=0;
}
else if(padRepeat&PAD_DOWN)
{
if(--m_animNumber<0)
{
m_animNumber=NUM_ANIM_SPONGEBOB-1;
}
m_animFrame=0;
}
if(padHeld&PAD_CROSS)
{
int fc=m_actorSpongebob->getFrameCount(m_animNumber);
m_animFrame+=_frames;
while(m_animFrame>=fc){m_animFrame-=fc;}
}
else if(padHeld&PAD_CIRCLE)
{
if(padDown&PAD_CIRCLE)
{
m_animFrame=0;
}
else
{
int fc=m_actorSpongebob->getFrameCount(m_animNumber);
m_animFrame+=_frames;
if(m_animFrame>=fc)m_animFrame=fc-1;
}
}
else if(padRepeat&PAD_RIGHT)
{
if(++m_animFrame==m_actorSpongebob->getFrameCount(m_animNumber))
{
m_animFrame=0;
}
}
else if(padRepeat&PAD_LEFT)
{
if(--m_animFrame<0)
{
m_animFrame=m_actorSpongebob->getFrameCount(m_animNumber)-1;
}
}
if(padRepeat&PAD_L1)
{
if(++m_addonNumber==NUM_PLAYER_ADDONS)
{
m_addonNumber=-1;
}
}
else if(padRepeat&PAD_L2)
{
if(--m_addonNumber<-1)
{
m_addonNumber=NUM_PLAYER_ADDONS-1;
}
}
}
/*===========================================================================
end */
end */

View File

@ -38,7 +38,7 @@ class CAnimTestScene : public CScene
{
public:
void init();
void shutdown() {}
void shutdown() {;}
void render();
void think(int _frames);
int readyToShutdown() {return false;}
@ -46,7 +46,11 @@ public:
private:
class FontBank *m_fontBank;
class FontBank *m_font;
int m_animNumber;
int m_animFrame;
int m_addonNumber;
};
@ -55,7 +59,7 @@ private:
Globals
------- */
extern CPartyScene PartyScene;
extern CAnimTestScene AnimTestScene;
/*----------------------------------------------------------------------

View File

@ -71,6 +71,10 @@
#include "backend\credits.h"
#endif
#ifndef __PAUL_ANIMTEST_H__
#include "paul\animtest.h"
#endif
/* Std Lib
@ -110,6 +114,7 @@ CScene *CSceneSelector::s_sceneList[]=
&ShopScene,
&PartyScene,
&CreditsScene,
&AnimTestScene,
};
int CSceneSelector::s_sceneCount=sizeof(s_sceneList)/sizeof(CScene*);

View File

@ -299,7 +299,7 @@ PLAYER_ADDONS s_addonNumbers[NUM_PLAYERMODES]=
NO_ADDON, // PLAYER_MODE_CART
};
static s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]=
s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]=
{
// PLAYER_ADDON_NET,
{
@ -498,7 +498,7 @@ static s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]=
-1, // ANIM_SPONGEBOB_BLOWBUBBLE,
-1, // ANIM_SPONGEBOB_FIREEND,
-1, // ANIM_SPONGEBOB_FIRESTART,
-1, // ANIM_SPONGEBOB_IDLEWEAPON,
ANIM_SPONGEBOB_JELLYFISH_IDLEWEAPON, // ANIM_SPONGEBOB_IDLEWEAPON,
-1, // ANIM_SPONGEBOB_WALK,
-1, // ANIM_SPONGEBOB_KARATE,
ANIM_SPONGEBOB_JELLYFISH_GETHIT, // ANIM_SPONGEBOB_GETHIT
@ -513,7 +513,7 @@ static s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]=
-1, // ANIM_SPONGEBOB_IDLEMATURE,
-1, // ANIM_SPONGEBOB_IDLEMOUSTACHE,
-1, // ANIM_SPONGEBOB_IDLENOFACE,
-1, // ANIM_SPONGEBOB_IDLENET,
ANIM_SPONGEBOB_JELLYFISH_IDLENET, // ANIM_SPONGEBOB_IDLENET,
-1, // ANIM_SPONGEBOB_IDLEZORRO,
},

View File

@ -25,7 +25,59 @@
#include "gfx\font.h"
#endif
#include "game/game.h"
#ifndef __GAME_GAME_H__
#include "game/game.h"
#endif
// States
#ifndef __PLAYER__PSLOOK_H__
#include "player\pslook.h"
#endif
#ifndef __PLAYER__PSJUMP_H__
#include "player\psjump.h"
#endif
#ifndef __PLAYER__PSJMPBCK_H__
#include "player\psjmpbck.h"
#endif
#ifndef __PLAYER__PSRUN_H__
#include "player\psrun.h"
#endif
#ifndef __PLAYER__PSFALL_H__
#include "player\psfall.h"
#endif
#ifndef __PLAYER__PSHITGND_H__
#include "player\pshitgnd.h"
#endif
#ifndef __PLAYER__PSIDLE_H__
#include "player\psidle.h"
#endif
#ifndef __PLAYER__PSBUTT_H__
#include "player\psbutt.h"
#endif
#ifndef __PLAYER__PSDUCK_H__
#include "player\psduck.h"
#endif
#ifndef __PLAYER__PSSPRING_H__
#include "player\psspring.h"
#endif
#ifndef __PLAYER_PSCART_H__
#include "player\pscart.h"
#endif
#ifndef __PLAYER_PSFLOAT_H__
#include "player\psfloat.h"
#endif
/* Std Lib
------- */
@ -58,6 +110,32 @@
Vars
---- */
static CPlayerState *s_stateTable[]=
{
&s_stateNoAnimIdle, // STATE_IDLE
&s_stateTeeterIdle, // STATE_IDLETEETER
&s_stateJump, // STATE_JUMP
&s_stateSpring, // STATE_SPRINGUP
&s_stateRun, // STATE_RUN
&s_stateFall, // STATE_FALL
&s_stateFallFar, // STATE_FALLFAR
&s_stateHitGround, // STATE_HITGROUND
&s_stateButtBounce, // STATE_BUTTBOUNCE
&s_stateButtBounceFall, // STATE_BUTTFALL
&s_stateButtBounceLand, // STATE_BUTTLAND
&s_stateButtBounceUp, // STATE_BUTTBOUNCEUP
&s_stateSoakUp, // STATE_SOAKUP
&s_stateGetUp, // STATE_GETUP
&s_stateLookDown, // STATE_LOOKDOWN
&s_stateLookDownRelax, // STATE_LOOKDOWNRELAX
&s_stateLookUp, // STATE_LOOKUP
&s_stateLookUpRelax, // STATE_LOOKUPRELAX
&s_stateJumpBack, // STATE_JUMPBACK
&s_stateCart, // STATE_CART
&s_stateFloat, // STATE_FLOAT
};
/*----------------------------------------------------------------------
Function:
Purpose:
@ -217,5 +295,16 @@ int CPlayerModeBubbleMixture::canBlowBubbleFromThisState()
return ret;
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
CPlayerState **CPlayerModeBubbleMixture::getStateTable()
{
return s_stateTable;
}
/*===========================================================================
end */

View File

@ -57,6 +57,9 @@ private:
int m_blowing;
int m_bubbleDelay;
protected:
virtual class CPlayerState **getStateTable();
};

View File

@ -33,7 +33,59 @@
#include "gfx\font.h"
#endif
#include "game/game.h"
#ifndef __GAME_GAME_H__
#include "game/game.h"
#endif
// States
#ifndef __PLAYER__PSLOOK_H__
#include "player\pslook.h"
#endif
#ifndef __PLAYER__PSJUMP_H__
#include "player\psjump.h"
#endif
#ifndef __PLAYER__PSJMPBCK_H__
#include "player\psjmpbck.h"
#endif
#ifndef __PLAYER__PSRUN_H__
#include "player\psrun.h"
#endif
#ifndef __PLAYER__PSFALL_H__
#include "player\psfall.h"
#endif
#ifndef __PLAYER__PSHITGND_H__
#include "player\pshitgnd.h"
#endif
#ifndef __PLAYER__PSIDLE_H__
#include "player\psidle.h"
#endif
#ifndef __PLAYER__PSBUTT_H__
#include "player\psbutt.h"
#endif
#ifndef __PLAYER__PSDUCK_H__
#include "player\psduck.h"
#endif
#ifndef __PLAYER__PSSPRING_H__
#include "player\psspring.h"
#endif
#ifndef __PLAYER_PSCART_H__
#include "player\pscart.h"
#endif
#ifndef __PLAYER_PSFLOAT_H__
#include "player\psfloat.h"
#endif
/* Std Lib
------- */
@ -66,6 +118,32 @@
Vars
---- */
static CPlayerState *s_stateTable[]=
{
&s_stateWeaponIdle, // STATE_IDLE
&s_stateTeeterIdle, // STATE_IDLETEETER
&s_stateJump, // STATE_JUMP
&s_stateSpring, // STATE_SPRINGUP
&s_stateRun, // STATE_RUN
&s_stateFall, // STATE_FALL
&s_stateFallFar, // STATE_FALLFAR
&s_stateHitGround, // STATE_HITGROUND
&s_stateButtBounce, // STATE_BUTTBOUNCE
&s_stateButtBounceFall, // STATE_BUTTFALL
&s_stateButtBounceLand, // STATE_BUTTLAND
&s_stateButtBounceUp, // STATE_BUTTBOUNCEUP
&s_stateSoakUp, // STATE_SOAKUP
&s_stateGetUp, // STATE_GETUP
&s_stateLookDown, // STATE_LOOKDOWN
&s_stateLookDownRelax, // STATE_LOOKDOWNRELAX
&s_stateLookUp, // STATE_LOOKUP
&s_stateLookUpRelax, // STATE_LOOKUPRELAX
&s_stateJumpBack, // STATE_JUMPBACK
&s_stateCart, // STATE_CART
&s_stateFloat, // STATE_FLOAT
};
/*----------------------------------------------------------------------
Function:
Purpose:
@ -326,5 +404,16 @@ void CPlayerModeJellyLauncher::launchProjectile()
}
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
CPlayerState **CPlayerModeJellyLauncher::getStateTable()
{
return s_stateTable;
}
/*===========================================================================
end */

View File

@ -66,6 +66,9 @@ private:
FIRING_STATE m_firingState;
int m_firingTime;
protected:
virtual class CPlayerState **getStateTable();
};

View File

@ -56,6 +56,7 @@
CPlayerStateUnarmedIdle s_stateUnarmedIdle;
CPlayerStateTeeterIdle s_stateTeeterIdle;
CPlayerStateNoAnimIdle s_stateNoAnimIdle;
CPlayerStateWeaponIdle s_stateWeaponIdle;
CPlayerStateNetIdle s_stateNetIdle;
@ -136,6 +137,31 @@ void CPlayerStateTeeterIdle::think(CPlayerModeBase *_playerMode)
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CPlayerStateNoAnimIdle::enter(CPlayerModeBase *_playerMode)
{
_playerMode->setAnimNo(ANIM_SPONGEBOB_IDLEBREATH);
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CPlayerStateNoAnimIdle::think(CPlayerModeBase *_playerMode)
{
_playerMode->advanceAnimFrameAndCheckForEndOfAnim();
thinkControl(_playerMode);
}
/*----------------------------------------------------------------------
Function:
Purpose:
@ -296,9 +322,9 @@ int CPlayerStateUnarmedIdle::getNumIdleAnims()
static IdleAnims s_weaponIdleAnims[]=
{
// start frame loop frame end frame loop count
{ -1, ANIM_SPONGEBOB_IDLEBREATH, -1, 10*60 }, // default
{ -1, ANIM_SPONGEBOB_IDLEBREATH, -1, 5*60 },
{ -1, ANIM_SPONGEBOB_IDLEBREATH, -1, 5*60 },
{ -1, ANIM_SPONGEBOB_IDLEBREATH, -1, 10*6 }, // default
{ -1, ANIM_SPONGEBOB_IDLEBREATH, -1, 5*6 },
{ -1, ANIM_SPONGEBOB_IDLEBREATH, -1, 5*6 },
{ -1, ANIM_SPONGEBOB_IDLEWEAPON, -1, 1 },
};
static int s_numWeaponIdleAnims=sizeof(s_weaponIdleAnims)/sizeof(IdleAnims);

View File

@ -49,6 +49,14 @@ public:
};
class CPlayerStateNoAnimIdle : public CPlayerStateBaseIdle
{
public:
virtual void enter(class CPlayerModeBase *_playerMode);
virtual void think(class CPlayerModeBase *_playerMode);
};
////
typedef struct
{
@ -118,6 +126,7 @@ private:
extern CPlayerStateUnarmedIdle s_stateUnarmedIdle;
extern CPlayerStateTeeterIdle s_stateTeeterIdle;
extern CPlayerStateNoAnimIdle s_stateNoAnimIdle;
extern CPlayerStateWeaponIdle s_stateWeaponIdle;
extern CPlayerStateNetIdle s_stateNetIdle;

View File

@ -1289,6 +1289,14 @@ SOURCE=..\..\..\source\pad\pads.h
# PROP Default_Filter ""
# Begin Source File
SOURCE=..\..\..\source\paul\animtest.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\source\paul\animtest.h
# End Source File
# Begin Source File
SOURCE=..\..\..\source\paul\paul.cpp
# End Source File
# Begin Source File