From 8bbd44bdecbeb53e0ece614651b949e3b30dbe75 Mon Sep 17 00:00:00 2001 From: Charles Date: Mon, 23 Apr 2001 18:33:40 +0000 Subject: [PATCH] --- source/platform/pbob.cpp | 82 ++++++++++++++++++++++++++++++++++++++++ source/platform/pbob.h | 33 ++++++++++++++++ 2 files changed, 115 insertions(+) create mode 100644 source/platform/pbob.cpp create mode 100644 source/platform/pbob.h diff --git a/source/platform/pbob.cpp b/source/platform/pbob.cpp new file mode 100644 index 000000000..c3689684d --- /dev/null +++ b/source/platform/pbob.cpp @@ -0,0 +1,82 @@ +/*========================================================================= + + pbob.cpp + + Author: CRB + Created: + Project: Spongebob + Purpose: + + Copyright (c) 2001 Climax Development Ltd + +===========================================================================*/ + +#ifndef __PLATFORM_PBOB_H__ +#include "platform\pbob.h" +#endif + +#ifndef __GAME_GAME_H__ +#include "game\game.h" +#endif + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +void CNpcBobbingPlatform::processMovement( int _frames ) +{ + if ( m_contact ) + { + CPlayer *player = GameScene.getPlayer(); + DVECTOR playerPos = player->getPos(); + + int height = player->getHeightFromGroundNoPlatform( playerPos.vx, playerPos.vy ); + + // if stood on, increase velocity + + if ( m_velocity < 0 ) + { + m_velocity = 0; + } + else if ( m_velocity < 4 ) + { + if ( height <= 0 ) + { + m_velocity = 0; + } + else + { + m_velocity += 1; + } + } + + m_state = NPC_BOB_MOVE; + } + else + { + if ( m_state == NPC_BOB_MOVE ) + { + // otherwise drop velocity and ultimately reverse course + + if ( m_velocity > -2 ) + { + m_velocity--; + } + } + } + + if ( m_velocity ) + { + s32 moveY = m_velocity * _frames; + + if ( Pos.vy + moveY < m_initPos.vy ) + { + Pos.vy = m_initPos.vy; + m_velocity = 0; + m_state = NPC_BOB_STOP; + moveY = 0; + } + else + { + Pos.vy += moveY; + } + } +} \ No newline at end of file diff --git a/source/platform/pbob.h b/source/platform/pbob.h new file mode 100644 index 000000000..86aeaf70c --- /dev/null +++ b/source/platform/pbob.h @@ -0,0 +1,33 @@ +/*========================================================================= + + pbob.h + + Author: CRB + Created: + Project: Spongebob + Purpose: + + Copyright (c) 2001 Climax Development Ltd + +===========================================================================*/ + +#ifndef __PLATFORM_PBOB_H__ +#define __PLATFORM_PBOB_H__ + +#ifndef __PLATFORM_PLATFORM_H__ +#include "platform\platform.h" +#endif + +class CNpcBobbingPlatform : public CNpcPlatform +{ +protected: + virtual void processMovement( int _frames ); + + enum NPC_BOB_STATE + { + NPC_BOB_STOP = 0, + NPC_BOB_MOVE = 1, + }; +}; + +#endif \ No newline at end of file