From 19dbe081f6b3330b8e827d22f7d23ec5b66f5c14 Mon Sep 17 00:00:00 2001 From: Paul Date: Tue, 27 Feb 2001 22:06:24 +0000 Subject: [PATCH] --- makefile.gaz | 6 +- source/pickups/pshoes.cpp | 20 +- source/pickups/pshoes.h | 4 +- source/player/player.cpp | 8 +- source/player/player.h | 31 +- source/player/pmodes.cpp | 274 +----------------- .../spongebob project/spongebob project.dsp | 48 ++- 7 files changed, 92 insertions(+), 299 deletions(-) diff --git a/makefile.gaz b/makefile.gaz index fc9065bbd..241bbbb66 100644 --- a/makefile.gaz +++ b/makefile.gaz @@ -157,7 +157,6 @@ pickups_src := pickup \ player_src := demoplay \ panimsfx \ player \ - pmodes \ psbutt \ pschop \ psdead \ @@ -167,7 +166,10 @@ player_src := demoplay \ psidle \ psjump \ psrun \ - pstates + pstates \ + modelist \ + pmodes \ + pmboots script_src := script \ function diff --git a/source/pickups/pshoes.cpp b/source/pickups/pshoes.cpp index eab4332de..93bcd8fcb 100644 --- a/source/pickups/pshoes.cpp +++ b/source/pickups/pshoes.cpp @@ -25,6 +25,10 @@ #include "utils\mathtab.h" #endif +#ifndef __PLAYER_PLAYER_H__ +#include "player\player.h" +#endif + /* Std Lib ------- */ @@ -61,7 +65,7 @@ ---------------------------------------------------------------------- */ void CShoesPickup::init() { - CBasePickup::init(); + CBaseRespawningPickup::init(); m_sin=0; } @@ -73,7 +77,19 @@ void CShoesPickup::init() ---------------------------------------------------------------------- */ void CShoesPickup::collect(class CPlayer *_player) { - CBasePickup::collect(_player); + CBaseRespawningPickup::collect(_player); + _player->setMode(PLAYER_MODE_SQUEAKYBOOTS); +} + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +int CShoesPickup::getRespawnTime() +{ + return 60*30; } /*---------------------------------------------------------------------- diff --git a/source/pickups/pshoes.h b/source/pickups/pshoes.h index fb63b5b31..cf388e5c8 100644 --- a/source/pickups/pshoes.h +++ b/source/pickups/pshoes.h @@ -34,7 +34,7 @@ Structure defintions -------------------- */ -class CShoesPickup : public CBasePickup +class CShoesPickup : public CBaseRespawningPickup { public: virtual void init(); @@ -42,6 +42,8 @@ public: virtual void collect(class CPlayer *_player); protected: + virtual int getRespawnTime(); + virtual void thinkPickup(int _frames); virtual void renderPickup(DVECTOR *_pos); diff --git a/source/player/player.cpp b/source/player/player.cpp index 149c69d3c..9b2779317 100644 --- a/source/player/player.cpp +++ b/source/player/player.cpp @@ -319,6 +319,8 @@ if(PadGetDown(0)&PAD_CIRCLE) } } } + + s_modes[m_currentMode].m_modeControl->think(this); } @@ -679,6 +681,7 @@ void CPlayer::setMode(PLAYER_MODE _mode) m_currentMode=_mode; // Need to do something about this setState() for when the new mode doesn't have that state (pkg) setState(m_currentState); + s_modes[m_currentMode].m_modeControl->enter(this); } @@ -1052,7 +1055,10 @@ void CPlayer::takeDamage(DAMAGE_TYPE _damage) break; case DAMAGE__ELECTROCUTION: - // if squeaky boots then ouchThatHurt=false; + if(m_currentMode==PLAYER_MODE_SQUEAKYBOOTS) + { + ouchThatHurt=false; + } break; } diff --git a/source/player/player.h b/source/player/player.h index 1e5adaf20..591a56f44 100644 --- a/source/player/player.h +++ b/source/player/player.h @@ -30,6 +30,10 @@ #include #endif +#ifndef __PLAYER_PMODES_H__ +#include "player\pmodes.h" +#endif + #ifndef __PLAYER_PSTATES_H__ #include "player\pstates.h" #endif @@ -46,6 +50,18 @@ Tyepdefs && Defines ------------------- */ +typedef enum +{ + PLAYER_MODE_BASICUNARMED, + PLAYER_MODE_FULLUNARMED, + PLAYER_MODE_SQUEAKYBOOTS, + PLAYER_MODE_NET, + PLAYER_MODE_CORALBLOWER, + PLAYER_MODE_FLY, + + NUM_PLAYERMODES, +}PLAYER_MODE; + typedef enum { STATE_IDLE, @@ -69,18 +85,6 @@ typedef enum NUM_STATES, }PLAYER_STATE; -typedef enum -{ - PLAYER_MODE_BASICUNARMED, - PLAYER_MODE_FULLUNARMED, - PLAYER_MODE_SQUEAKYBOOTS, - PLAYER_MODE_NET, - PLAYER_MODE_CORALBLOWER, - PLAYER_MODE_FLY, - - NUM_PLAYERMODES, -}PLAYER_MODE; - enum { FACING_LEFT=+1, @@ -171,7 +175,9 @@ protected: // State int setState(PLAYER_STATE _state); +public: void setMode(PLAYER_MODE _mode); +private: int getFacing(); void setFacing(int _facing); int getAnimFrame(); @@ -211,6 +217,7 @@ private: typedef struct { PlayerMetrics m_metrics; + class CPlayerMode *m_modeControl; class CPlayerState *m_states[NUM_STATES]; }PlayerMode; diff --git a/source/player/pmodes.cpp b/source/player/pmodes.cpp index 3afa4a3d1..99dbfffd1 100644 --- a/source/player/pmodes.cpp +++ b/source/player/pmodes.cpp @@ -15,45 +15,6 @@ Includes -------- */ -#include "player\player.h" - -#ifndef __PLAYER__PSJUMP_H__ -#include "player\psjump.h" -#endif - -#ifndef __PLAYER__PSRUN_H__ -#include "player\psrun.h" -#endif - -#ifndef __PLAYER__PSFALL_H__ -#include "player\psfall.h" -#endif - -#ifndef __PLAYER__PSIDLE_H__ -#include "player\psidle.h" -#endif - -#ifndef __PLAYER__PSBUTT_H__ -#include "player\psbutt.h" -#endif - -#ifndef __PLAYER__PSCHOP_H__ -#include "player\pschop.h" -#endif - -#ifndef __PLAYER__PSDUCK_H__ -#include "player\psduck.h" -#endif - -#ifndef __PLAYER__PSDEAD_H__ -#include "player\psdead.h" -#endif - -#ifndef __PLAYER__PSFLY_H__ -#include "player\psfly.h" -#endif - - /* Std Lib ------- */ @@ -76,234 +37,13 @@ Vars ---- */ -CPlayerStateUnarmedIdle stateUnarmedIdle; -CPlayerStateCoralBlowerIdle stateCoralBlowerIdle; -CPlayerStateTeeterIdle stateTeeterIdle; -CPlayerStateJump stateJump; -CPlayerStateRun stateRun; -CPlayerStateFall stateFall; -CPlayerStateFallFar stateFallFar; -CPlayerStateButtBounce stateButtBounce; -CPlayerStateButtBounceFall stateButtBounceFall; -CPlayerStateButtBounceLand stateButtBounceLand; -CPlayerStateChop stateChop; -CPlayerStateRunChop stateRunChop; -CPlayerStateAirChop stateAirChop; -CPlayerStateDuck stateDuck; -CPlayerStateSoakUp stateSoackUp; -CPlayerStateGetUp stateGetup; -CPlayerStateDead stateDead; -CPlayerStateFly stateFly; - - - - - - - - - -CPlayer::PlayerMode CPlayer::s_modes[NUM_PLAYERMODES]= -{ - // - // Basic player mode. No attack, only butt bounce - // - { - { { - DEFAULT_PLAYER_JUMP_VELOCITY, // PM__JUMP_VELOCITY - DEFAULT_PLAYER_MAX_JUMP_FRAMES, // PM__MAX_JUMP_FRAMES - DEFAULT_PLAYER_MAX_SAFE_FALL_FRAMES, // PM__MAX_SAFE_FALL_FRAMES - DEFAULT_PLAYER_MAX_RUN_VELOCITY, // PM__MAX_RUN_VELOCITY - DEFAULT_PLAYER_RUN_SPEEDUP, // PM__RUN_SPEEDUP - DEFAULT_PLAYER_RUN_REVERSESLOWDOWN, // PM__RUN_REVERSESLOWDOWN - DEFAULT_PLAYER_RUN_SLOWDOWN, // PM__RUN_SLOWDOWN - } }, - { - &stateUnarmedIdle, // STATE_IDLE - &stateTeeterIdle, // STATE_IDLETEETER - &stateJump, // STATE_JUMP - &stateRun, // STATE_RUN - &stateFall, // STATE_FALL - &stateFallFar, // STATE_FALLFAR - &stateButtBounce, // STATE_BUTTBOUNCE - &stateButtBounceFall, // STATE_BUTTFALL - &stateButtBounceLand, // STATE_BUTTLAND - NULL, // STATE_ATTACK - NULL, // STATE_RUNATTACK - NULL, // STATE_AIRATTACK - &stateDuck, // STATE_DUCK - &stateSoackUp, // STATE_SOAKUP - &stateGetup, // STATE_GETUP - &stateDead, // STATE_DEAD - } - }, - - // - // Full unarmed player mode. With butt bounce and karate chop - // - { - { { - DEFAULT_PLAYER_JUMP_VELOCITY, // PM__JUMP_VELOCITY - DEFAULT_PLAYER_MAX_JUMP_FRAMES, // PM__MAX_JUMP_FRAMES - DEFAULT_PLAYER_MAX_SAFE_FALL_FRAMES, // PM__MAX_SAFE_FALL_FRAMES - DEFAULT_PLAYER_MAX_RUN_VELOCITY, // PM__MAX_RUN_VELOCITY - DEFAULT_PLAYER_RUN_SPEEDUP, // PM__RUN_SPEEDUP - DEFAULT_PLAYER_RUN_REVERSESLOWDOWN, // PM__RUN_REVERSESLOWDOWN - DEFAULT_PLAYER_RUN_SLOWDOWN, // PM__RUN_SLOWDOWN - } }, - { - &stateUnarmedIdle, // STATE_IDLE - &stateTeeterIdle, // STATE_IDLETEETER - &stateJump, // STATE_JUMP - &stateRun, // STATE_RUN - &stateFall, // STATE_FALL - &stateFallFar, // STATE_FALLFAR - &stateButtBounce, // STATE_BUTTBOUNCE - &stateButtBounceFall, // STATE_BUTTFALL - &stateButtBounceLand, // STATE_BUTTLAND - &stateChop, // STATE_ATTACK - &stateRunChop, // STATE_RUNATTACK - &stateAirChop, // STATE_AIRATTACK - &stateDuck, // STATE_DUCK - &stateSoackUp, // STATE_SOAKUP - &stateGetup, // STATE_GETUP - &stateDead, // STATE_DEAD - } - }, - - // - // Squeaky boots. Also has butt bounce and karate chop - // - { - { { - DEFAULT_PLAYER_JUMP_VELOCITY, // PM__JUMP_VELOCITY - DEFAULT_PLAYER_MAX_JUMP_FRAMES, // PM__MAX_JUMP_FRAMES - DEFAULT_PLAYER_MAX_SAFE_FALL_FRAMES, // PM__MAX_SAFE_FALL_FRAMES - DEFAULT_PLAYER_MAX_RUN_VELOCITY, // PM__MAX_RUN_VELOCITY - DEFAULT_PLAYER_RUN_SPEEDUP, // PM__RUN_SPEEDUP - DEFAULT_PLAYER_RUN_REVERSESLOWDOWN, // PM__RUN_REVERSESLOWDOWN - DEFAULT_PLAYER_RUN_SLOWDOWN, // PM__RUN_SLOWDOWN - } }, - { - &stateUnarmedIdle, // STATE_IDLE - &stateTeeterIdle, // STATE_IDLETEETER - &stateJump, // STATE_JUMP - &stateRun, // STATE_RUN - &stateFall, // STATE_FALL - &stateFallFar, // STATE_FALLFAR - &stateButtBounce, // STATE_BUTTBOUNCE - &stateButtBounceFall, // STATE_BUTTFALL - &stateButtBounceLand, // STATE_BUTTLAND - &stateChop, // STATE_ATTACK - &stateRunChop, // STATE_RUNATTACK - &stateAirChop, // STATE_AIRATTACK - &stateDuck, // STATE_DUCK - &stateSoackUp, // STATE_SOAKUP - &stateGetup, // STATE_GETUP - &stateDead, // STATE_DEAD - } - }, - - // - // Armed with net - // - { - { { - DEFAULT_PLAYER_JUMP_VELOCITY, // PM__JUMP_VELOCITY - DEFAULT_PLAYER_MAX_JUMP_FRAMES, // PM__MAX_JUMP_FRAMES - DEFAULT_PLAYER_MAX_SAFE_FALL_FRAMES, // PM__MAX_SAFE_FALL_FRAMES - DEFAULT_PLAYER_MAX_RUN_VELOCITY, // PM__MAX_RUN_VELOCITY - DEFAULT_PLAYER_RUN_SPEEDUP, // PM__RUN_SPEEDUP - DEFAULT_PLAYER_RUN_REVERSESLOWDOWN, // PM__RUN_REVERSESLOWDOWN - DEFAULT_PLAYER_RUN_SLOWDOWN, // PM__RUN_SLOWDOWN - } }, - { - &stateUnarmedIdle, // STATE_IDLE - &stateTeeterIdle, // STATE_IDLETEETER - &stateJump, // STATE_JUMP - &stateRun, // STATE_RUN - &stateFall, // STATE_FALL - &stateFallFar, // STATE_FALLFAR - NULL, // STATE_BUTTBOUNCE - NULL, // STATE_BUTTFALL - NULL, // STATE_BUTTLAND - NULL, // STATE_ATTACK - NULL, // STATE_RUNATTACK - NULL, // STATE_AIRATTACK - NULL, // STATE_DUCK - NULL, // STATE_SOAKUP - NULL, // STATE_GETUP - &stateDead, // STATE_DEAD - } - }, - - // - // Armed with coral blower ( Heavy weapon so slows SB down ) - // - { - { { - DEFAULT_PLAYER_JUMP_VELOCITY/3, // PM__JUMP_VELOCITY - DEFAULT_PLAYER_MAX_JUMP_FRAMES/2, // PM__MAX_JUMP_FRAMES - DEFAULT_PLAYER_MAX_SAFE_FALL_FRAMES, // PM__MAX_SAFE_FALL_FRAMES - DEFAULT_PLAYER_MAX_RUN_VELOCITY/2, // PM__MAX_RUN_VELOCITY - DEFAULT_PLAYER_RUN_SPEEDUP/2, // PM__RUN_SPEEDUP - DEFAULT_PLAYER_RUN_REVERSESLOWDOWN, // PM__RUN_REVERSESLOWDOWN - DEFAULT_PLAYER_RUN_SLOWDOWN, // PM__RUN_SLOWDOWN - } }, - { - &stateCoralBlowerIdle, // STATE_IDLE - &stateTeeterIdle, // STATE_IDLETEETER - &stateJump, // STATE_JUMP - &stateRun, // STATE_RUN - &stateFall, // STATE_FALL - &stateFallFar, // STATE_FALLFAR - NULL, // STATE_BUTTBOUNCE - NULL, // STATE_BUTTFALL - NULL, // STATE_BUTTLAND - NULL, // STATE_ATTACK - NULL, // STATE_RUNATTACK - NULL, // STATE_AIRATTACK - NULL, // STATE_DUCK - NULL, // STATE_SOAKUP - NULL, // STATE_GETUP - &stateDead, // STATE_DEAD - } - }, - - // - // Fly mode ( A useful debugging mode.. ) - // - { - { { - DEFAULT_PLAYER_JUMP_VELOCITY, // PM__JUMP_VELOCITY - DEFAULT_PLAYER_MAX_JUMP_FRAMES, // PM__MAX_JUMP_FRAMES - DEFAULT_PLAYER_MAX_SAFE_FALL_FRAMES, // PM__MAX_SAFE_FALL_FRAMES - DEFAULT_PLAYER_MAX_RUN_VELOCITY, // PM__MAX_RUN_VELOCITY - DEFAULT_PLAYER_RUN_SPEEDUP, // PM__RUN_SPEEDUP - DEFAULT_PLAYER_RUN_REVERSESLOWDOWN, // PM__RUN_REVERSESLOWDOWN - DEFAULT_PLAYER_RUN_SLOWDOWN, // PM__RUN_SLOWDOWN - } }, - { - &stateFly, // STATE_IDLE - &stateFly, // STATE_IDLETEETER - &stateFly, // STATE_JUMP - &stateFly, // STATE_RUN - &stateFly, // STATE_FALL - &stateFly, // STATE_FALLFAR - &stateFly, // STATE_BUTTBOUNCE - &stateFly, // STATE_BUTTFALL - &stateFly, // STATE_BUTTLAND - &stateFly, // STATE_ATTACK - &stateFly, // STATE_RUNATTACK - &stateFly, // STATE_AIRATTACK - &stateFly, // STATE_DUCK - &stateFly, // STATE_SOAKUP - &stateFly, // STATE_GETUP - &stateFly, // STATE_DEAD - } - }, -}; - +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +void a(){} /*=========================================================================== end */ diff --git a/users/paul/spongebob project/spongebob project.dsp b/users/paul/spongebob project/spongebob project.dsp index 5e9973d97..cf20cb655 100644 --- a/users/paul/spongebob project/spongebob project.dsp +++ b/users/paul/spongebob project/spongebob project.dsp @@ -766,26 +766,17 @@ SOURCE=..\..\..\source\pickups\pspatula.h # End Group # Begin Group "player" +# PROP Default_Filter "" +# Begin Group "modes" + # PROP Default_Filter "" # Begin Source File -SOURCE=..\..\..\source\player\demoplay.cpp +SOURCE=..\..\..\source\player\modelist.cpp # End Source File # Begin Source File -SOURCE=..\..\..\source\player\demoplay.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\source\player\panimsfx.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\..\source\player\player.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\..\source\player\player.h +SOURCE=..\..\..\source\player\pmboots.h # End Source File # Begin Source File @@ -793,6 +784,14 @@ SOURCE=..\..\..\source\player\pmodes.cpp # End Source File # Begin Source File +SOURCE=..\..\..\source\player\pmodes.h +# End Source File +# End Group +# Begin Group "states" + +# PROP Default_Filter "" +# Begin Source File + SOURCE=..\..\..\source\player\psbutt.cpp # End Source File # Begin Source File @@ -872,6 +871,27 @@ SOURCE=..\..\..\source\player\pstates.cpp SOURCE=..\..\..\source\player\pstates.h # End Source File # End Group +# Begin Source File + +SOURCE=..\..\..\source\player\demoplay.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\player\demoplay.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\player\panimsfx.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\player\player.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\player\player.h +# End Source File +# End Group # Begin Group "projectl" # PROP Default_Filter ""