diff --git a/source/game/pause.cpp b/source/game/pause.cpp index 31fbfec03..a7591f319 100644 --- a/source/game/pause.cpp +++ b/source/game/pause.cpp @@ -121,6 +121,7 @@ void CPauseMenu::init() STR__DEBUG__BALLOON_MODE, &newmode,PLAYER_MODE_BALLOON); xpos+=TEXT_SPACING; +//#ifndef __USER_paul__ CGUIFactory::createValueButtonFrame(m_guiFrame, (FRAME_WIDTH-TEXT_BOX_WIDTH)/2,xpos,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT, STR__DEBUG__BUBBLEMIXTURE_MODE, @@ -131,7 +132,6 @@ void CPauseMenu::init() STR__DEBUG__NET_MODE, &newmode,PLAYER_MODE_NET); xpos+=TEXT_SPACING; -#ifndef __USER_CDBUILD__ CGUIFactory::createValueButtonFrame(m_guiFrame, (FRAME_WIDTH-TEXT_BOX_WIDTH)/2,xpos,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT, STR__DEBUG__CORALBLOWER_MODE, @@ -147,7 +147,7 @@ void CPauseMenu::init() STR__DEBUG__DEAD_MODE, &newmode,PLAYER_MODE_DEAD); xpos+=TEXT_SPACING; -#endif +//#endif m_active=false; } diff --git a/source/pickups/pblower.cpp b/source/pickups/pblower.cpp index 46a910512..4c50f2656 100644 --- a/source/pickups/pblower.cpp +++ b/source/pickups/pblower.cpp @@ -25,6 +25,10 @@ #include "player\player.h" #endif +#ifndef __GAME_GAME_H__ +#include "game\game.h" +#endif + #ifndef __GFX_OTPOS_H__ #include "gfx\otpos.h" #endif @@ -71,6 +75,8 @@ void CCoralBlowerPickup::init() fh=getSpriteBank()->getFrameHeader(FRM__BLOWER); setCollisionSize(fh->W,fh->H); + + GameScene.getPlayer()->registerAddon(PLAYER_ADDON_CORALBLOWER); } /*---------------------------------------------------------------------- diff --git a/source/pickups/pbubmix.cpp b/source/pickups/pbubmix.cpp index 719bae0e3..3c129caf7 100644 --- a/source/pickups/pbubmix.cpp +++ b/source/pickups/pbubmix.cpp @@ -29,6 +29,10 @@ #include "player\player.h" #endif +#ifndef __GAME_GAME_H__ +#include "game\game.h" +#endif + #ifndef __GFX_OTPOS_H__ #include "gfx\otpos.h" #endif @@ -167,6 +171,8 @@ void CBubbleWandPickup::init() fh=getSpriteBank()->getFrameHeader(FRM__BUBBLEWAND); setCollisionSize(fh->W,fh->H); + + GameScene.getPlayer()->registerAddon(PLAYER_ADDON_BUBBLEWAND); } /*---------------------------------------------------------------------- diff --git a/source/pickups/pglasses.cpp b/source/pickups/pglasses.cpp index 2d9f6a9d8..5411bd1f8 100644 --- a/source/pickups/pglasses.cpp +++ b/source/pickups/pglasses.cpp @@ -21,6 +21,10 @@ #include "pickups\pglasses.h" +#ifndef __GAME_GAME_H__ +#include "game\game.h" +#endif + #ifndef __PLAYER_PLAYER_H__ #include "player\player.h" #endif @@ -74,6 +78,8 @@ void CGlassesPickup::init() fh=getSpriteBank()->getFrameHeader(FRM__GLASSES); setCollisionSize(fh->W,fh->H); + + GameScene.getPlayer()->registerAddon(PLAYER_ADDON_BUBBLEWAND); } /*---------------------------------------------------------------------- diff --git a/source/pickups/pjlammo.cpp b/source/pickups/pjlammo.cpp index 102871ec5..979fde909 100644 --- a/source/pickups/pjlammo.cpp +++ b/source/pickups/pjlammo.cpp @@ -29,6 +29,10 @@ #include "player\player.h" #endif +#ifndef __GAME_GAME_H__ +#include "game\game.h" +#endif + #ifndef __GFX_OTPOS_H__ #include "gfx\otpos.h" #endif @@ -165,6 +169,8 @@ void CJellyLauncherPickup::init() fh=getSpriteBank()->getFrameHeader(FRM__LAUNCHER); setCollisionSize(fh->W,fh->H); + + GameScene.getPlayer()->registerAddon(PLAYER_ADDON_JELLYLAUNCHER); } /*---------------------------------------------------------------------- diff --git a/source/pickups/pnet.cpp b/source/pickups/pnet.cpp index e98fde434..9489d361f 100644 --- a/source/pickups/pnet.cpp +++ b/source/pickups/pnet.cpp @@ -25,6 +25,10 @@ #include "player\player.h" #endif +#ifndef __GAME_GAME_H__ +#include "game\game.h" +#endif + /* Std Lib ------- */ @@ -71,6 +75,8 @@ void CNetPickup::init() fh=getSpriteBank()->getFrameHeader(FRM__NET); setCollisionSize(fh->W,fh->H); + + GameScene.getPlayer()->registerAddon(PLAYER_ADDON_NET); } /*---------------------------------------------------------------------- diff --git a/source/player/player.cpp b/source/player/player.cpp index fb3f7fec9..fba1ded1f 100644 --- a/source/player/player.cpp +++ b/source/player/player.cpp @@ -92,6 +92,31 @@ #include #endif +#ifndef __ANIM_SPONGEBOB_HEADER__ +#include +#endif + +#ifndef __ANIM_SPONGEBOB_NET_HEADER__ +#include +#endif + +#ifndef __ANIM_SPONGEBOB_CORALBLOWER_HEADER__ +#include +#endif + +#ifndef __ANIM_SPONGEBOB_JELLYLAUNCHER_HEADER__ +#include +#endif + +//#ifndef __ANIM_SPONGEBOB_GLASSES_HEADER__ +//#include +//#endif + +//#ifndef __ANIM_SPONGEBOB_BUBBLEWAND_HEADER__ +//#include +//#endif + + /*---------------------------------------------------------------------- Tyepdefs && Defines @@ -239,7 +264,183 @@ pint ledgeShift=1; pint cammove=2; -CActorGfx *m_actorWeaponGfx; + +// --------------------------------- Addon stuff --------------------------------- +CActorGfx *s_addonActorGfx[NUM_PLAYER_ADDONS]= +{ + NULL, // PLAYER_ADDON_NET + NULL, // PLAYER_ADDON_CORALBLOWER + NULL, // PLAYER_ADDON_JELLYLAUNCHER + NULL, // PLAYER_ADDON_GLASSES + NULL, // PLAYER_ADDON_BUBBLEWAND +}; +FileEquate s_addonActorPoolNames[NUM_PLAYER_ADDONS]= +{ + ACTORS_SPONGEBOB_NET_SBK, // PLAYER_ADDON_NET + ACTORS_SPONGEBOB_CORALBLOWER_SBK, // PLAYER_ADDON_CORALBLOWER + ACTORS_SPONGEBOB_JELLYLAUNCHER_SBK, // PLAYER_ADDON_JELLYLAUNCHER + (FileEquate)-1, // PLAYER_ADDON_GLASSES + (FileEquate)-1, // PLAYER_ADDON_BUBBLEWAND +}; +PLAYER_ADDONS s_addonNumbers[NUM_PLAYERMODES]= +{ + NO_ADDON, // PLAYER_MODE_BASICUNARMED + NO_ADDON, // PLAYER_MODE_FULLUNARMED + NO_ADDON, // PLAYER_MODE_BALLOON + PLAYER_ADDON_BUBBLEWAND, // PLAYER_MODE_BUBBLE_MIXTURE + PLAYER_ADDON_NET, // PLAYER_MODE_NET + PLAYER_ADDON_CORALBLOWER, // PLAYER_MODE_CORALBLOWER + PLAYER_ADDON_JELLYLAUNCHER, // PLAYER_MODE_JELLY_LAUNCHER + NO_ADDON, // PLAYER_MODE_DEAD + NO_ADDON, // PLAYER_MODE_FLY +}; + +static s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]= +{ + // PLAYER_ADDON_NET, + { + ANIM_SPONGEBOB_NET_BUTTBOUNCEEND, // ANIM_SPONGEBOB_BUTTBOUNCEEND, + ANIM_SPONGEBOB_NET_BUTTBOUNCESTART, // ANIM_SPONGEBOB_BUTTBOUNCESTART, + ANIM_SPONGEBOB_NET_FALL, // ANIM_SPONGEBOB_FALL, + ANIM_SPONGEBOB_NET_GETUP, // ANIM_SPONGEBOB_GETUP, + ANIM_SPONGEBOB_NET_HITGROUND, // ANIM_SPONGEBOB_HITGROUND, + ANIM_SPONGEBOB_NET_IDLEBREATH, // ANIM_SPONGEBOB_IDLEBREATH, + ANIM_SPONGEBOB_NET_IDLEWIND, // ANIM_SPONGEBOB_IDLEWIND, + ANIM_SPONGEBOB_NET_JUMPEND, // ANIM_SPONGEBOB_JUMPEND, + ANIM_SPONGEBOB_NET_JUMP, // ANIM_SPONGEBOB_JUMP, + ANIM_SPONGEBOB_NET_RUN, // ANIM_SPONGEBOB_RUN, + ANIM_SPONGEBOB_NET_RUNSTOP, // ANIM_SPONGEBOB_RUNSTOP, + ANIM_SPONGEBOB_NET_RUNSTART, // ANIM_SPONGEBOB_RUNSTART, + ANIM_SPONGEBOB_NET_SOAKUP, // ANIM_SPONGEBOB_SOAKUP, + ANIM_SPONGEBOB_NET_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK, + ANIM_SPONGEBOB_NET_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT, + ANIM_SPONGEBOB_NET_SWIPE, // ANIM_SPONGEBOB_SWIPE, + ANIM_SPONGEBOB_NET_DEATHSPIN, // ANIM_SPONGEBOB_DEATHSPIN, + -1, // ANIM_SPONGEBOB_BALLOONJUMP, + -1, // ANIM_SPONGEBOB_BLOWBUBBLE, + -1, // ANIM_SPONGEBOB_FIREEND, + -1, // ANIM_SPONGEBOB_FIRESTART, + -1, // ANIM_SPONGEBOB_IDLEWEAPON, + -1, // ANIM_SPONGEBOB_WALK, + -1, // ANIM_SPONGEBOB_KARATE, + }, + + // PLAYER_ADDON_CORALBLOWER, + { + -1, // ANIM_SPONGEBOB_BUTTBOUNCEEND, + -1, // ANIM_SPONGEBOB_BUTTBOUNCESTART, + ANIM_SPONGEBOB_CORALBLOWER_FALL, // ANIM_SPONGEBOB_FALL, + ANIM_SPONGEBOB_CORALBLOWER_GETUP, // ANIM_SPONGEBOB_GETUP, + ANIM_SPONGEBOB_CORALBLOWER_HITGROUND, // ANIM_SPONGEBOB_HITGROUND, + ANIM_SPONGEBOB_CORALBLOWER_IDLEBREATH, // ANIM_SPONGEBOB_IDLEBREATH, + ANIM_SPONGEBOB_CORALBLOWER_IDLEWIND, // ANIM_SPONGEBOB_IDLEWIND, + ANIM_SPONGEBOB_CORALBLOWER_JUMPEND, // ANIM_SPONGEBOB_JUMPEND, + ANIM_SPONGEBOB_CORALBLOWER_JUMP, // ANIM_SPONGEBOB_JUMP, + -1, // ANIM_SPONGEBOB_RUN, + -1, // ANIM_SPONGEBOB_RUNSTOP, + -1, // ANIM_SPONGEBOB_RUNSTART, + ANIM_SPONGEBOB_CORALBLOWER_SOAKUP, // ANIM_SPONGEBOB_SOAKUP, + ANIM_SPONGEBOB_CORALBLOWER_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK, + ANIM_SPONGEBOB_CORALBLOWER_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT, + -1, // ANIM_SPONGEBOB_SWIPE, + ANIM_SPONGEBOB_CORALBLOWER_DEATHSPIN, // ANIM_SPONGEBOB_DEATHSPIN, + -1, // ANIM_SPONGEBOB_BALLOONJUMP, + -1, // ANIM_SPONGEBOB_BLOWBUBBLE, + ANIM_SPONGEBOB_CORALBLOWER_FIREEND, // ANIM_SPONGEBOB_FIREEND, + ANIM_SPONGEBOB_CORALBLOWER_FIRESTART, // ANIM_SPONGEBOB_FIRESTART, + -1, // ANIM_SPONGEBOB_IDLEWEAPON, + ANIM_SPONGEBOB_CORALBLOWER_WALK, // ANIM_SPONGEBOB_WALK, + -1, // ANIM_SPONGEBOB_KARATE, + }, + + // PLAYER_ADDON_JELLYLAUNCHER, + { + ANIM_SPONGEBOB_JELLYLAUNCHER_BUTTBOUNCEEND, // ANIM_SPONGEBOB_BUTTBOUNCEEND, + ANIM_SPONGEBOB_JELLYLAUNCHER_BUTTBOUNCESTART, // ANIM_SPONGEBOB_BUTTBOUNCESTART, + ANIM_SPONGEBOB_JELLYLAUNCHER_FALL, // ANIM_SPONGEBOB_FALL, + ANIM_SPONGEBOB_JELLYLAUNCHER_GETUP, // ANIM_SPONGEBOB_GETUP, + ANIM_SPONGEBOB_JELLYLAUNCHER_HITGROUND, // ANIM_SPONGEBOB_HITGROUND, + ANIM_SPONGEBOB_JELLYLAUNCHER_IDLEBREATH, // ANIM_SPONGEBOB_IDLEBREATH, + ANIM_SPONGEBOB_JELLYLAUNCHER_IDLEWIND, // ANIM_SPONGEBOB_IDLEWIND, + ANIM_SPONGEBOB_JELLYLAUNCHER_JUMPEND, // ANIM_SPONGEBOB_JUMPEND, + ANIM_SPONGEBOB_JELLYLAUNCHER_JUMP, // ANIM_SPONGEBOB_JUMP, + ANIM_SPONGEBOB_JELLYLAUNCHER_RUN, // ANIM_SPONGEBOB_RUN, + ANIM_SPONGEBOB_JELLYLAUNCHER_RUNSTOP, // ANIM_SPONGEBOB_RUNSTOP, + ANIM_SPONGEBOB_JELLYLAUNCHER_RUNSTART, // ANIM_SPONGEBOB_RUNSTART, + ANIM_SPONGEBOB_JELLYLAUNCHER_SOAKUP, // ANIM_SPONGEBOB_SOAKUP, + ANIM_SPONGEBOB_JELLYLAUNCHER_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK, + ANIM_SPONGEBOB_JELLYLAUNCHER_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT, + -1, // ANIM_SPONGEBOB_SWIPE, + ANIM_SPONGEBOB_JELLYLAUNCHER_DEATHSPIN, // ANIM_SPONGEBOB_DEATHSPIN, + -1, // ANIM_SPONGEBOB_BALLOONJUMP, + -1, // ANIM_SPONGEBOB_BLOWBUBBLE, + ANIM_SPONGEBOB_JELLYLAUNCHER_FIREEND, // ANIM_SPONGEBOB_FIREEND, + ANIM_SPONGEBOB_JELLYLAUNCHER_FIRESTART, // ANIM_SPONGEBOB_FIRESTART, + -1, // ANIM_SPONGEBOB_IDLEWEAPON, + -1, // ANIM_SPONGEBOB_WALK, + -1, // ANIM_SPONGEBOB_KARATE, + }, + + // PLAYER_ADDON_GLASSES, + { + -1, // ANIM_SPONGEBOB_BUTTBOUNCEEND, + -1, // ANIM_SPONGEBOB_BUTTBOUNCESTART, + -1, // ANIM_SPONGEBOB_FALL, + -1, // ANIM_SPONGEBOB_GETUP, + -1, // ANIM_SPONGEBOB_HITGROUND, + -1, // ANIM_SPONGEBOB_IDLEBREATH, + -1, // ANIM_SPONGEBOB_IDLEWIND, + -1, // ANIM_SPONGEBOB_JUMPEND, + -1, // ANIM_SPONGEBOB_JUMP, + -1, // ANIM_SPONGEBOB_RUN, + -1, // ANIM_SPONGEBOB_RUNSTOP, + -1, // ANIM_SPONGEBOB_RUNSTART, + -1, // ANIM_SPONGEBOB_SOAKUP, + -1, // ANIM_SPONGEBOB_TEETERBACK, + -1, // ANIM_SPONGEBOB_TEETERFRONT, + -1, // ANIM_SPONGEBOB_SWIPE, + -1, // ANIM_SPONGEBOB_DEATHSPIN, + -1, // ANIM_SPONGEBOB_BALLOONJUMP, + -1, // ANIM_SPONGEBOB_BLOWBUBBLE, + -1, // ANIM_SPONGEBOB_FIREEND, + -1, // ANIM_SPONGEBOB_FIRESTART, + -1, // ANIM_SPONGEBOB_IDLEWEAPON, + -1, // ANIM_SPONGEBOB_WALK, + -1, // ANIM_SPONGEBOB_KARATE, + }, + + // PLAYER_ADDON_BUBBLEWAND, + { + -1, // ANIM_SPONGEBOB_BUTTBOUNCEEND, + -1, // ANIM_SPONGEBOB_BUTTBOUNCESTART, + -1, // ANIM_SPONGEBOB_FALL, + -1, // ANIM_SPONGEBOB_GETUP, + -1, // ANIM_SPONGEBOB_HITGROUND, + -1, // ANIM_SPONGEBOB_IDLEBREATH, + -1, // ANIM_SPONGEBOB_IDLEWIND, + -1, // ANIM_SPONGEBOB_JUMPEND, + -1, // ANIM_SPONGEBOB_JUMP, + -1, // ANIM_SPONGEBOB_RUN, + -1, // ANIM_SPONGEBOB_RUNSTOP, + -1, // ANIM_SPONGEBOB_RUNSTART, + -1, // ANIM_SPONGEBOB_SOAKUP, + -1, // ANIM_SPONGEBOB_TEETERBACK, + -1, // ANIM_SPONGEBOB_TEETERFRONT, + -1, // ANIM_SPONGEBOB_SWIPE, + -1, // ANIM_SPONGEBOB_DEATHSPIN, + -1, // ANIM_SPONGEBOB_BALLOONJUMP, + -1, // ANIM_SPONGEBOB_BLOWBUBBLE, + -1, // ANIM_SPONGEBOB_FIREEND, + -1, // ANIM_SPONGEBOB_FIRESTART, + -1, // ANIM_SPONGEBOB_IDLEWEAPON, + -1, // ANIM_SPONGEBOB_WALK, + -1, // ANIM_SPONGEBOB_KARATE, + }, +}; + +// ------------------------------------------------------------------------------- + + /*---------------------------------------------------------------------- @@ -250,6 +451,8 @@ CActorGfx *m_actorWeaponGfx; ---------------------------------------------------------------------- */ void CPlayer::init() { + int i; + CPlayerThing::init(); m_fontBank=new ("PlayerFont") FontBank(); @@ -261,12 +464,9 @@ void CPlayer::init() m_layerCollision=NULL; - CActorPool::AddActor(ACTORS_SPONGEBOB_NET_SBK); - m_actorWeaponGfx=CActorPool::GetActor(ACTORS_SPONGEBOB_NET_SBK); - m_actorGfx=CActorPool::GetActor(ACTORS_SPONGEBOB_SBK); - for(int i=0;iinitialise(this); } @@ -287,6 +487,14 @@ m_animFrame=0; resetPlayerCollisionSizeToBase(); m_divingHelmet=false; + +//#ifdef __USER_paul__ +registerAddon(PLAYER_ADDON_NET); +registerAddon(PLAYER_ADDON_CORALBLOWER); +registerAddon(PLAYER_ADDON_JELLYLAUNCHER); +registerAddon(PLAYER_ADDON_GLASSES); +registerAddon(PLAYER_ADDON_BUBBLEWAND); +//#endif } /*---------------------------------------------------------------------- @@ -297,11 +505,21 @@ m_animFrame=0; ---------------------------------------------------------------------- */ void CPlayer::shutdown() { - for(int i=0;ishutdown(); } + for(i=0;idump(); delete m_spriteBank; @@ -569,9 +787,9 @@ int panim=-1; #include "gfx\prim.h" // (pkg) int healthx=40; int healthy=40; -int healthr=200; -int healthg=75; -int healthb=75; +int healthr=128; +int healthg=0; +int healthb=0; #ifdef __USER_paul__ #define NUM_LASTPOS 50 @@ -781,6 +999,26 @@ ATTACK_STATE CPlayer::getAttackState() return m_currentPlayerModeClass->getAttackState(); } + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +void CPlayer::registerAddon(PLAYER_ADDONS _addon) +{ + if(!s_addonActorGfx[_addon]) + { + FileEquate sbk; + sbk=s_addonActorPoolNames[_addon]; + if(sbk!=-1) + { + s_addonActorGfx[_addon]=CActorPool::GetActor(sbk); + } + } +} + /*---------------------------------------------------------------------- Function: Purpose: @@ -952,52 +1190,45 @@ void CPlayer::respawn() Params: Returns: ---------------------------------------------------------------------- */ -#ifndef __ANIM_SPONGEBOB_NET_HEADER__ -#include -#endif - -static s8 s_animMapNet[]= -{ - ANIM_SPONGEBOB_NET_BUTTBOUNCEEND, // ANIM_SPONGEBOB_BUTTBOUNCEEND=0, - ANIM_SPONGEBOB_NET_BUTTBOUNCESTART, // ANIM_SPONGEBOB_BUTTBOUNCESTART, - ANIM_SPONGEBOB_NET_FALL, // ANIM_SPONGEBOB_FALL, - ANIM_SPONGEBOB_NET_GETUP, // ANIM_SPONGEBOB_GETUP, - ANIM_SPONGEBOB_NET_HITGROUND, // ANIM_SPONGEBOB_HITGROUND, - ANIM_SPONGEBOB_NET_IDLEBREATH, // ANIM_SPONGEBOB_IDLEBREATH, - ANIM_SPONGEBOB_NET_IDLEWIND, // ANIM_SPONGEBOB_IDLEWIND, - ANIM_SPONGEBOB_NET_JUMPEND, // ANIM_SPONGEBOB_JUMPEND, - ANIM_SPONGEBOB_NET_JUMP, // ANIM_SPONGEBOB_JUMP, - ANIM_SPONGEBOB_NET_RUN, // ANIM_SPONGEBOB_RUN, - ANIM_SPONGEBOB_NET_RUNSTOP, // ANIM_SPONGEBOB_RUNSTOP, - ANIM_SPONGEBOB_NET_RUNSTART, // ANIM_SPONGEBOB_RUNSTART, - ANIM_SPONGEBOB_NET_SOAKUP, // ANIM_SPONGEBOB_SOAKUP, - ANIM_SPONGEBOB_NET_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK, - ANIM_SPONGEBOB_NET_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT, - ANIM_SPONGEBOB_NET_SWIPE, // ANIM_SPONGEBOB_SWIPE, - ANIM_SPONGEBOB_NET_DEATHSPIN, // ANIM_SPONGEBOB_DEATHSPIN, - -1, // ANIM_SPONGEBOB_BALLOONJUMP, - -1, // ANIM_SPONGEBOB_BLOWBUBBLE, - -1, // ANIM_SPONGEBOB_FIREEND, - -1, // ANIM_SPONGEBOB_FIRESTART, - -1, // ANIM_SPONGEBOB_IDLEWEAPON, - -1, // ANIM_SPONGEBOB_WALK, - -1, // ANIM_SPONGEBOB_KARATE, -}; - - void CPlayer::renderSb(DVECTOR *_pos,int _animNo,int _animFrame) { - if(m_currentMode==PLAYER_MODE_NET) + int addon; + + // Render an addon? + addon=s_addonNumbers[m_currentMode]; + if(addon!=NO_ADDON) { - if(s_animMapNet[_animNo]!=-1) + s8 addonAnimFrame=s_animMapNet[addon][_animNo]; + if(addonAnimFrame!=-1) { - if(_animFramegetFrameCount(s_animMapNet[_animNo])) + CActorGfx *addonGfx=s_addonActorGfx[addon]; + if(addonGfx&& + _animFrame>=addonGfx->getFrameCount(addonAnimFrame)) { - m_actorWeaponGfx->Render(*_pos,s_animMapNet[_animNo],_animFrame,m_facing==FACING_RIGHT?0:1); + PAUL_DBGMSG("FRAME OVERRUN ON SPONGEBOB ADDON!"); + _animFrame=0; } + addonGfx->Render(*_pos,addonAnimFrame,_animFrame,m_facing==FACING_RIGHT?0:1); } } + // Render glasses addon? + if(isWearingGlasses()) + { + s8 addonAnimFrame=s_animMapNet[PLAYER_ADDON_GLASSES][_animNo]; + if(addonAnimFrame!=-1) + { + CActorGfx *addonGfx=s_addonActorGfx[PLAYER_ADDON_GLASSES]; + if(_animFrame>=addonGfx->getFrameCount(addonAnimFrame)) + { + PAUL_DBGMSG("FRAME OVERRUN ON SPONGEBOB GLASSES ADDON!"); + _animFrame=0; + } + addonGfx->Render(*_pos,addonAnimFrame,_animFrame,m_facing==FACING_RIGHT?0:1); + } + } + + // Render SB m_actorGfx->Render(*_pos,_animNo,_animFrame,m_facing==FACING_RIGHT?0:1); } diff --git a/source/player/player.h b/source/player/player.h index b749d727b..349ce3d85 100644 --- a/source/player/player.h +++ b/source/player/player.h @@ -81,6 +81,18 @@ typedef enum NUM_STATES, }PLAYER_STATE; +typedef enum +{ + PLAYER_ADDON_NET, + PLAYER_ADDON_CORALBLOWER, + PLAYER_ADDON_JELLYLAUNCHER, + PLAYER_ADDON_GLASSES, + PLAYER_ADDON_BUBBLEWAND, + + NUM_PLAYER_ADDONS, + NO_ADDON, +}PLAYER_ADDONS; + enum { FACING_LEFT=+1, @@ -170,6 +182,8 @@ public: ATTACK_STATE getAttackState(); int isRecoveringFromHit() {return m_invincibleFrameCount!=0||m_currentMode==PLAYER_MODE_DEAD;} + void registerAddon(PLAYER_ADDONS _addon); + public: void setMode(PLAYER_MODE _mode); int getFacing(); diff --git a/source/triggers/tlook.cpp b/source/triggers/tlook.cpp index 3f840ba8b..30f69e371 100644 --- a/source/triggers/tlook.cpp +++ b/source/triggers/tlook.cpp @@ -17,10 +17,6 @@ #include "triggers\tlook.h" -#ifndef __GAME_GAME_H__ -#include "game\game.h" -#endif - #ifndef __PLAYER_PLAYER_H__ #include "player\player.h" #endif @@ -56,22 +52,20 @@ ---------------------------------------------------------------------- */ void CLookTrigger::collidedWith(CThing *_thisThing) { - CPlayer *player; DVECTOR collCentre; CRECT collArea; ASSERT(_thisThing->getThingType()==TYPE_PLAYER); // Only collide if players feet are inside the trigger - player=GameScene.getPlayer(); - collCentre=player->getCollisionCentre(); + collCentre=((CPlayer*)_thisThing)->getCollisionCentre(); collArea.x1=collCentre.vx-5; collArea.y1=collCentre.vy-5; collArea.x2=collArea.x1+10; collArea.y2=collArea.y1+10; if(checkCollisionAgainstArea(&collArea)) { - player->setLedgeLookAhead(+4); + ((CPlayer*)_thisThing)->setLedgeLookAhead(+4); } } diff --git a/source/triggers/trestart.cpp b/source/triggers/trestart.cpp index 39859d7f7..55140cbdc 100644 --- a/source/triggers/trestart.cpp +++ b/source/triggers/trestart.cpp @@ -17,10 +17,6 @@ #include "triggers\trestart.h" -#ifndef __GAME_GAME_H__ -#include "game\game.h" -#endif - #ifndef __PLAYER_PLAYER_H__ #include "player\player.h" #endif