From 54e3f3b5b63f4bdc00dbdff3175b2941ef07f2ef Mon Sep 17 00:00:00 2001 From: Paul Date: Tue, 3 Apr 2001 21:00:00 +0000 Subject: [PATCH] --- source/player/pmjelly.cpp | 196 ++++++++++++++++++++++++++++++++++++++ source/player/pmjelly.h | 80 ++++++++++++++++ 2 files changed, 276 insertions(+) create mode 100644 source/player/pmjelly.cpp create mode 100644 source/player/pmjelly.h diff --git a/source/player/pmjelly.cpp b/source/player/pmjelly.cpp new file mode 100644 index 000000000..937d99af6 --- /dev/null +++ b/source/player/pmjelly.cpp @@ -0,0 +1,196 @@ +/*========================================================================= + + pmjelly.cpp + + Author: PKG + Created: + Project: Spongebob + Purpose: + + Copyright (c) 2001 Climax Development Ltd + +===========================================================================*/ + +/*---------------------------------------------------------------------- + Includes + -------- */ + +#include "player\pmjelly.h" + +#ifndef __GFX_SPRBANK_H__ +#include "gfx\sprbank.h" +#endif + + +/* Std Lib + ------- */ + +/* Data + ---- */ + +#ifndef __ANIM_SPONGEBOB_HEADER__ +#include +#endif + +#ifndef __SPR_INGAMEFX_H__ +#include +#endif + + +/*---------------------------------------------------------------------- + Tyepdefs && Defines + ------------------- */ + +/*---------------------------------------------------------------------- + Structure defintions + -------------------- */ + +/*---------------------------------------------------------------------- + Function Prototypes + ------------------- */ + +/*---------------------------------------------------------------------- + Vars + ---- */ + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +void CPlayerModeJelly::enter() +{ + m_netting=false; + m_netState=NET_STATE__EMPTY; +} + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +//int netstate; +void CPlayerModeJelly::think() +{ + // If we're netting then restore the 'real' anim number/frame before + // doing the think so that the rest of the code doesn't know what + // is going on ;) + if(m_netting) + { + setAnimNo(m_savedAnimNo); + setAnimFrame(m_savedAnimFrame); + } + CPlayerModeBase::think(); + + // Start to net? + if(!m_netting&&getPadInputDown()&PI_ACTION&&canSwingNetFromThisState()) + { + m_netFrame=0; + m_netting=true; + switch(m_netState) + { + case NET_STATE__EMPTY: + m_netState=NET_STATE__FULL; + break; + case NET_STATE__FULL: + m_netState=NET_STATE__EMPTY; + break; + } + } + + // Netting? + if(m_netting) + { +//!!! m_player->setAnimNo(ANIM_SPONGEBOB_KARATE); + m_player->setAnimNo(ANIM_SPONGEBOB_FIRE); + m_player->setAnimFrame(m_netFrame); + m_netFrame++; + if(m_netFrame>=m_player->getAnimFrameCount()) + { + m_player->setAnimNo(m_savedAnimNo); + m_player->setAnimFrame(m_savedAnimFrame); + m_netting=false; + } + } +// netstate=m_netState; +} + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +void CPlayerModeJelly::renderModeUi() +{ + SpriteBank *sb; + sFrameHdr *fh; + + sb=m_player->getSpriteBank(); + fh=sb->getFrameHeader(FRM__NET); + if(m_netState==NET_STATE__FULL) + { + // Net has a jellyfish inside + sb->printFT4Scaled(fh,CPlayer::POWERUPUI_ICONX-(fh->W/2),CPlayer::POWERUPUI_ICONY-(fh->H/2),0,0,CPlayer::POWERUPUI_OT,256+128); + } + else + { + sb->printFT4(fh,CPlayer::POWERUPUI_ICONX-(fh->W/2),CPlayer::POWERUPUI_ICONY-(fh->H/2),0,0,CPlayer::POWERUPUI_OT); + } +} + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +void CPlayerModeJelly::setAnimNo(int _animNo) +{ + CPlayerModeBase::setAnimNo(_animNo); + m_savedAnimNo=_animNo; +} + +void CPlayerModeJelly::setAnimFrame(int _animFrame) +{ + CPlayerModeBase::setAnimFrame(_animFrame); + m_savedAnimFrame=_animFrame; +} + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +int CPlayerModeJelly::canSwingNetFromThisState() +{ + int ret=false; + + switch(getState()) + { + case STATE_IDLE: + case STATE_IDLETEETER: + case STATE_JUMP: + case STATE_RUN: + case STATE_FALL: + ret=true; + break; + + case STATE_FALLFAR: + case STATE_BUTTBOUNCE: + case STATE_BUTTFALL: + case STATE_BUTTLAND: + case STATE_DUCK: + case STATE_SOAKUP: + case STATE_GETUP: + break; + } + + return ret; +} + +/*=========================================================================== +end */ diff --git a/source/player/pmjelly.h b/source/player/pmjelly.h new file mode 100644 index 000000000..b71272c21 --- /dev/null +++ b/source/player/pmjelly.h @@ -0,0 +1,80 @@ +/*========================================================================= + + pmjelly.h + + Author: PKG + Created: + Project: Spongebob + Purpose: + + Copyright (c) 2001 Climax Development Ltd + +===========================================================================*/ + +#ifndef __PLAYER_PMJELLY_H__ +#define __PLAYER_PMJELLY_H__ + +/*---------------------------------------------------------------------- + Includes + -------- */ + +#ifndef __PLAYER_PMODES_H__ +#include "player\pmodes.h" +#endif + + +/* Std Lib + ------- */ + +/*---------------------------------------------------------------------- + Tyepdefs && Defines + ------------------- */ + +/*---------------------------------------------------------------------- + Structure defintions + -------------------- */ + +class CPlayerModeJelly : public CPlayerModeBase +{ +public: + virtual void enter(); + virtual void think(); + virtual void renderModeUi(); + + virtual void setAnimNo(int _animNo); + virtual void setAnimFrame(int _animFrame); + +private: + typedef enum + { + NET_STATE__EMPTY, + NET_STATE__FULL, + } NetState; + + int canSwingNetFromThisState(); + + int m_savedAnimNo,m_savedAnimFrame; + int m_netFrame; + int m_netting; + NetState m_netState; + +}; + + +/*---------------------------------------------------------------------- + Globals + ------- */ + +/*---------------------------------------------------------------------- + Functions + --------- */ + +/*---------------------------------------------------------------------- */ + +#endif /* __PLAYER_PMJELLY_H__ */ + +/*=========================================================================== + end */ + + +