This commit is contained in:
Paul 2001-02-01 17:01:12 +00:00
parent 7305dd575f
commit 499849fae1
6 changed files with 91 additions and 15 deletions

View file

@ -135,7 +135,8 @@ pad_src := pads
paul_src := paul \ paul_src := paul \
scenesel scenesel
player_src := player \ player_src := panimsfx \
player \
pmodes \ pmodes \
psbutt \ psbutt \
pschop \ pschop \

View file

@ -5,7 +5,7 @@
Author: PKG Author: PKG
Created: Created:
Project: Spongebob Project: Spongebob
Purpose: Purpose: Handles automatically generated sound effects based upon anim frames
Copyright (c) 2001 Climax Development Ltd Copyright (c) 2001 Climax Development Ltd
@ -70,6 +70,7 @@ static const int s_buttBounceEndCount=sizeof(s_buttBounceEndSfx)/sizeof(CPlayer:
// ANIM_PLAYER_ANIM_IDLEHOOLA // ANIM_PLAYER_ANIM_IDLEHOOLA
// ANIM_PLAYER_ANIM_IDLELOOK // ANIM_PLAYER_ANIM_IDLELOOK
// ANIM_PLAYER_ANIM_IDLEWIGGLEARM // ANIM_PLAYER_ANIM_IDLEWIGGLEARM
// ANIM_PLAYER_ANIM_JUMPEND // ANIM_PLAYER_ANIM_JUMPEND
static CPlayer::AnimFrameSfx s_jumpEndSfx[]= static CPlayer::AnimFrameSfx s_jumpEndSfx[]=
{ {
@ -78,7 +79,13 @@ static CPlayer::AnimFrameSfx s_jumpEndSfx[]=
}; };
static const int s_jumpEndCount=sizeof(s_jumpEndSfx)/sizeof(CPlayer::AnimFrameSfx); static const int s_jumpEndCount=sizeof(s_jumpEndSfx)/sizeof(CPlayer::AnimFrameSfx);
// ANIM_PLAYER_ANIM_KARATE // ANIM_PLAYER_ANIM_KARATE Might have to go into the CPlayerStateChop::enter code (PKG)
static CPlayer::AnimFrameSfx s_chopSfx[]=
{
{ 1, CSoundMediator::SFX_SPONGEBOB_KARATE_1, },
};
static const int s_chopCount=sizeof(s_chopSfx)/sizeof(CPlayer::AnimFrameSfx);
// ANIM_PLAYER_ANIM_KNOCKBACK // ANIM_PLAYER_ANIM_KNOCKBACK
// ANIM_PLAYER_ANIM_KNOCKFORWARD // ANIM_PLAYER_ANIM_KNOCKFORWARD
@ -111,6 +118,9 @@ static const int s_runStopCount=sizeof(s_runStopSfx)/sizeof(CPlayer::AnimFrameSf
// This is the table that ties up anims to sfx
// CPlayer::setAnimFrame() uses this table to generate sfx based upon anim frames
CPlayer::AnimSfx CPlayer::s_animSfx[]= CPlayer::AnimSfx CPlayer::s_animSfx[]=
{ {
{ s_buttBounceEndCount, s_buttBounceEndSfx }, // ANIM_PLAYER_ANIM_BUTTBOUNCEEND { s_buttBounceEndCount, s_buttBounceEndSfx }, // ANIM_PLAYER_ANIM_BUTTBOUNCEEND
@ -137,7 +147,7 @@ CPlayer::AnimSfx CPlayer::s_animSfx[]=
{ 0, NULL }, // ANIM_PLAYER_ANIM_IDLELOOK { 0, NULL }, // ANIM_PLAYER_ANIM_IDLELOOK
{ 0, NULL }, // ANIM_PLAYER_ANIM_IDLEWIGGLEARM { 0, NULL }, // ANIM_PLAYER_ANIM_IDLEWIGGLEARM
{ s_jumpEndCount, s_jumpEndSfx }, // ANIM_PLAYER_ANIM_JUMPEND { s_jumpEndCount, s_jumpEndSfx }, // ANIM_PLAYER_ANIM_JUMPEND
{ 0, NULL }, // ANIM_PLAYER_ANIM_KARATE { s_chopCount, s_chopSfx }, // ANIM_PLAYER_ANIM_KARATE
{ 0, NULL }, // ANIM_PLAYER_ANIM_KNOCKBACK { 0, NULL }, // ANIM_PLAYER_ANIM_KNOCKBACK
{ 0, NULL }, // ANIM_PLAYER_ANIM_KNOCKFORWARD { 0, NULL }, // ANIM_PLAYER_ANIM_KNOCKFORWARD
{ s_runCount, s_runSfx }, // ANIM_PLAYER_ANIM_RUN { s_runCount, s_runSfx }, // ANIM_PLAYER_ANIM_RUN

View file

@ -438,13 +438,45 @@ void CPlayer::setFacing(int _facing)
m_skel.setDir(_facing); m_skel.setDir(_facing);
} }
} }
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
int CPlayer::getAnimFrame() int CPlayer::getAnimFrame()
{ {
return m_animFrame; return m_animFrame;
} }
void CPlayer::setAnimFrame(int _animFrame) void CPlayer::setAnimFrame(int _animFrame)
{ {
AnimSfx *sfx;
m_animFrame=_animFrame; m_animFrame=_animFrame;
// Are there any sfx for this frame?
sfx=&s_animSfx[m_animNo];
if(sfx->m_numAnimFrameSfx)
{
AnimFrameSfx *frameSfx;
int i;
frameSfx=sfx->m_animFrameSfx;
for(i=0;i<sfx->m_numAnimFrameSfx;i++)
{
if(m_animFrame==frameSfx->m_frame)
{
CSoundMediator::playSfx(frameSfx->m_sfxId);
}
if(m_animFrame<frameSfx->m_frame)
{
break;
}
frameSfx++;
}
}
} }
int CPlayer::getAnimFrameCount() int CPlayer::getAnimFrameCount()
{ {
@ -459,6 +491,14 @@ void CPlayer::setAnimNo(int _animNo)
m_animNo=_animNo; m_animNo=_animNo;
m_animFrame=0; m_animFrame=0;
} }
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
DVECTOR CPlayer::getMoveVelocity() DVECTOR CPlayer::getMoveVelocity()
{ {
return m_moveVel; return m_moveVel;
@ -471,6 +511,14 @@ DVECTOR CPlayer::getPlayerPos()
{ {
return Pos; return Pos;
} }
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
int CPlayer::getPadInputHeld() int CPlayer::getPadInputHeld()
{ {
return m_padInput; return m_padInput;
@ -480,21 +528,12 @@ int CPlayer::getPadInputDown()
return m_padInputDown; return m_padInputDown;
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Function: Function:
Purpose: Purpose:
Params: Params:
Returns: Returns:
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
int CPlayer::isOnSolidGround() int CPlayer::isOnSolidGround()
{ {
return Pos.vy>23*16;//16*15; return Pos.vy>23*16;//16*15;

View file

@ -34,6 +34,10 @@
#include "player\pstates.h" #include "player\pstates.h"
#endif #endif
#ifndef __SOUND_SOUND_H__
#include "sound\sound.h"
#endif
/* Std Lib /* Std Lib
------- */ ------- */
@ -162,14 +166,26 @@ friend class CPlayerState;
private: private:
typedef struct typedef struct
{ {
PlayerMetrics m_metrics; PlayerMetrics m_metrics;
class CPlayerState *m_states[NUM_STATES]; class CPlayerState *m_states[NUM_STATES];
}PlayerMode; }PlayerMode;
public:
typedef struct
{
int m_frame;
CSoundMediator::SFXID m_sfxId;
} AnimFrameSfx;
private:
typedef struct
{
int m_numAnimFrameSfx;
struct AnimFrameSfx *m_animFrameSfx;
} AnimSfx;
static AnimSfx s_animSfx[];
int m_animFrame; int m_animFrame;
int m_animNo; int m_animNo;
CSkel m_skel; CSkel m_skel;

View file

@ -27,6 +27,10 @@
#include "pad\pads.h" #include "pad\pads.h"
#endif #endif
#ifndef __SOUND_SOUND_H__
#include "sound\sound.h"
#endif
/* Std Lib /* Std Lib
------- */ ------- */
@ -72,6 +76,8 @@ void CPlayerStateJump::enter(CPlayer *_player)
DVECTOR move=getMoveVelocity(_player); DVECTOR move=getMoveVelocity(_player);
move.vy=-metrics->m_metric[PM__JUMP_VELOCITY]<<CPlayer::VELOCITY_SHIFT; move.vy=-metrics->m_metric[PM__JUMP_VELOCITY]<<CPlayer::VELOCITY_SHIFT;
setMoveVelocity(_player,&move); setMoveVelocity(_player,&move);
CSoundMediator::playSfx(CSoundMediator::SFX_SPONGEBOB_JUMP);
} }

View file

@ -629,6 +629,10 @@ SOURCE=..\..\..\source\paul\scenesel.h
# PROP Default_Filter "" # PROP Default_Filter ""
# Begin Source File # Begin Source File
SOURCE=..\..\..\source\player\panimsfx.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\source\player\player.cpp SOURCE=..\..\..\source\player\player.cpp
# End Source File # End Source File
# Begin Source File # Begin Source File