diff --git a/makefile.gfx b/makefile.gfx index 84aec852a..68f793e74 100644 --- a/makefile.gfx +++ b/makefile.gfx @@ -175,7 +175,8 @@ PLAYER_ANIM_IN_DIR := $(ACTOR_IN_DIR)/SpongeBob/SbAnim/GinFiles # DUFF_ANIMS deathfall runjumpend runjumpstart PLAYER_ANIM_LIST := buttbounceend buttbouncestart deathbackwards deathdry deathforwards deathspin deathtar electricshock electricshockend electricshockstart faceback facefront \ fall getup getuprun hitground hover hoverend hoverstart idlebreathe idlehoola idlelook idlewigglearm jumpend karate knockback knockforward run \ - runstart runstop soakup talk01 talk02 talk03 talk04 teeterback teeterfront + runstart runstop soakup talk01 talk02 talk03 talk04 teeterback teeterfront \ + idlewind PLAYER_ANIM_IN := $(foreach FILE, $(PLAYER_ANIM_LIST),$(PLAYER_ANIM_IN_DIR)/$(FILE).gin) PLAYER_ANIM_OUT := $(ANIM_OUT_DIR)/Player.Abk diff --git a/source/player/panimsfx.cpp b/source/player/panimsfx.cpp index d47f0b5c5..c4a4e8877 100644 --- a/source/player/panimsfx.cpp +++ b/source/player/panimsfx.cpp @@ -129,7 +129,13 @@ static const int s_runStopCount=sizeof(s_runStopSfx)/sizeof(CPlayer::AnimFrameSf // ANIM_PLAYER_ANIM_TEETERBACK // ANIM_PLAYER_ANIM_TEETERFRONT - +// ANIM_PLAYER_ANIM_IDLEWIND +static const CPlayer::AnimFrameSfx s_idleWindSfx[]= +{ + { 7, CSoundMediator::SFX_HAZARD__SWAMP_GAS, }, + { 24, CSoundMediator::SFX_SPONGEBOB_WALK_2, }, +}; +static const int s_idleWindCount=sizeof(s_idleWindSfx)/sizeof(CPlayer::AnimFrameSfx); @@ -175,6 +181,7 @@ const CPlayer::AnimSfx CPlayer::s_animSfx[]= { 0, NULL }, // ANIM_PLAYER_ANIM_TALK04 { 0, NULL }, // ANIM_PLAYER_ANIM_TEETERBACK { 0, NULL }, // ANIM_PLAYER_ANIM_TEETERFRONT + { s_idleWindCount, s_idleWindSfx }, // ANIM_PLAYER_ANIM_IDLEWIND }; diff --git a/source/player/psidle.cpp b/source/player/psidle.cpp index 85f0696fa..031103e35 100644 --- a/source/player/psidle.cpp +++ b/source/player/psidle.cpp @@ -156,19 +156,16 @@ void CPlayerStateIdle::setNextIdleAnim(CPlayer *_player) int animNo; if(m_idleTime<5) { - m_currentIdleAnim=0; // First anim in list is the default idle + // Run the default idle anim a number of times before + // starting to do weird things.. + m_currentIdleAnim=0; } else { - if(getNumIdleAnims()>1) + // Alternate random idle anims with the default one + if(m_currentIdleAnim==0&&getNumIdleAnims()>1) { - // Randomly choose the next anim to run - int lastAnim; - lastAnim=m_currentIdleAnim; - do - { - m_currentIdleAnim=getRndRange(getNumIdleAnims()); - }while(m_currentIdleAnim==lastAnim); + m_currentIdleAnim=getRndRange(getNumIdleAnims()); } else { @@ -195,7 +192,6 @@ void CPlayerStateIdle::setNextIdleAnim(CPlayer *_player) m_idleTime++; } - } @@ -208,12 +204,18 @@ void CPlayerStateIdle::setNextIdleAnim(CPlayer *_player) static IdleAnims s_unarmedIdleAnims[]= { // start frame loop frame end frame loop count - { -1, ANIM_PLAYER_ANIM_IDLEBREATHE, -1, 4 }, + { -1, ANIM_PLAYER_ANIM_IDLEBREATHE, -1, 4 }, // default { -1, ANIM_PLAYER_ANIM_IDLEBREATHE, -1, 10 }, - { ANIM_PLAYER_ANIM_FACEFRONT, ANIM_PLAYER_ANIM_IDLEHOOLA, ANIM_PLAYER_ANIM_FACEBACK, 3 }, - { ANIM_PLAYER_ANIM_FACEFRONT, ANIM_PLAYER_ANIM_IDLEWIGGLEARM, ANIM_PLAYER_ANIM_FACEBACK, 3 }, + { ANIM_PLAYER_ANIM_FACEFRONT, ANIM_PLAYER_ANIM_IDLEHOOLA, ANIM_PLAYER_ANIM_FACEBACK, 5 }, + { ANIM_PLAYER_ANIM_FACEFRONT, ANIM_PLAYER_ANIM_IDLEWIGGLEARM, ANIM_PLAYER_ANIM_FACEBACK, 5 }, { -1, ANIM_PLAYER_ANIM_IDLELOOK, -1, 1 }, + { -1, ANIM_PLAYER_ANIM_IDLEWIND, -1, 1 }, }; +//idlekick +//idlescratch +//? - idlesleep* - wakeup +//idlestretch +//idlewind static int s_numUnarmedIdleAnims=sizeof(s_unarmedIdleAnims)/sizeof(IdleAnims); IdleAnims *CPlayerStateUnarmedIdle::getIdleAnimsDb(int _animNo) { @@ -235,7 +237,7 @@ int CPlayerStateUnarmedIdle::getNumIdleAnims() static IdleAnims s_coralBlowerIdleAnims[]= { // start frame loop frame end frame loop count - { -1, ANIM_PLAYER_ANIM_IDLEBREATHE, -1, 4 }, + { -1, ANIM_PLAYER_ANIM_IDLEBREATHE, -1, 4 }, // default { -1, ANIM_PLAYER_ANIM_IDLEBREATHE, -1, 10 }, { -1, ANIM_PLAYER_ANIM_IDLELOOK, -1, 1 }, };