This commit is contained in:
parent
a076fb4f5e
commit
aab11cab87
4 changed files with 139 additions and 1 deletions
|
@ -127,7 +127,8 @@ platform_src := platform \
|
||||||
prbridge \
|
prbridge \
|
||||||
pbaloon \
|
pbaloon \
|
||||||
ptrpdoor \
|
ptrpdoor \
|
||||||
pconveyr
|
pconveyr \
|
||||||
|
pplayer
|
||||||
|
|
||||||
hazard_src := hazard \
|
hazard_src := hazard \
|
||||||
hfalling \
|
hfalling \
|
||||||
|
|
125
source/platform/pplayer.cpp
Normal file
125
source/platform/pplayer.cpp
Normal file
|
@ -0,0 +1,125 @@
|
||||||
|
/*=========================================================================
|
||||||
|
|
||||||
|
pplayer.cpp
|
||||||
|
|
||||||
|
Author: CRB
|
||||||
|
Created:
|
||||||
|
Project: Spongebob
|
||||||
|
Purpose:
|
||||||
|
|
||||||
|
Copyright (c) 2001 Climax Development Ltd
|
||||||
|
|
||||||
|
===========================================================================*/
|
||||||
|
|
||||||
|
#ifndef __PLATFORM_PPLAYER_H__
|
||||||
|
#include "platform\pplayer.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __GAME_GAME_H__
|
||||||
|
#include "game\game.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __SPR_SPRITES_H__
|
||||||
|
#include <sprites.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void CNpcPlayerBubblePlatform::postInit()
|
||||||
|
{
|
||||||
|
CNpcPlatform::postInit();
|
||||||
|
|
||||||
|
m_pop = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void CNpcPlayerBubblePlatform::processLifetime( int _frames )
|
||||||
|
{
|
||||||
|
m_lifetime -= _frames;
|
||||||
|
|
||||||
|
if ( m_pop )
|
||||||
|
{
|
||||||
|
if ( m_lifetime <= 0 )
|
||||||
|
{
|
||||||
|
setToShutdown();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( m_lifetime <= 0 )
|
||||||
|
{
|
||||||
|
m_pop = true;
|
||||||
|
|
||||||
|
m_lifetime = GameState::getOneSecondInFrames() >> 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void CNpcPlayerBubblePlatform::render()
|
||||||
|
{
|
||||||
|
if ( m_isActive )
|
||||||
|
{
|
||||||
|
CPlatformThing::render();
|
||||||
|
|
||||||
|
// Render
|
||||||
|
if (canRender())
|
||||||
|
{
|
||||||
|
DVECTOR &renderPos=getRenderPos();
|
||||||
|
|
||||||
|
if ( m_pop )
|
||||||
|
{
|
||||||
|
CGameScene::getSpriteBank()->printRotatedScaledSprite( FRM__BALLOONBURST, renderPos.vx, renderPos.vy - 16, 4096 << 1, 4096 << 1, 0, 10 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_modelGfx->Render(renderPos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
int CNpcPlayerBubblePlatform::checkCollisionAgainst(CThing *_thisThing, int _frames)
|
||||||
|
{
|
||||||
|
switch(_thisThing->getThingType())
|
||||||
|
{
|
||||||
|
case TYPE_PLAYERPROJECTILE:
|
||||||
|
return( false );
|
||||||
|
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
int collided = false;
|
||||||
|
|
||||||
|
if ( m_detectCollision && m_isActive && !isSetToShutdown() && !m_pop )
|
||||||
|
{
|
||||||
|
CRECT thisRect, thatRect;
|
||||||
|
|
||||||
|
thisRect = getCollisionArea();
|
||||||
|
thatRect = _thisThing->getCollisionArea();
|
||||||
|
|
||||||
|
DVECTOR posDelta = getPosDelta();
|
||||||
|
|
||||||
|
thisRect.y1 -= abs( posDelta.vy ) >> 1;
|
||||||
|
thisRect.y2 += abs( posDelta.vy ) >> 1;
|
||||||
|
|
||||||
|
posDelta = _thisThing->getPosDelta();
|
||||||
|
|
||||||
|
thatRect.y1 -= abs( posDelta.vy ) >> 1;
|
||||||
|
thatRect.y2 += abs( posDelta.vy ) >> 1;
|
||||||
|
|
||||||
|
if(((thisRect.x1>=thatRect.x1&&thisRect.x1<=thatRect.x2)||(thisRect.x2>=thatRect.x1&&thisRect.x2<=thatRect.x2)||(thisRect.x1<=thatRect.x1&&thisRect.x2>=thatRect.x2))&&
|
||||||
|
((thisRect.y1>=thatRect.y1&&thisRect.y1<=thatRect.y2)||(thisRect.y2>=thatRect.y1&&thisRect.y2<=thatRect.y2)||(thisRect.y1<=thatRect.y1&&thisRect.y2>=thatRect.y2)))
|
||||||
|
{
|
||||||
|
collided = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return( collided );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -20,6 +20,14 @@
|
||||||
|
|
||||||
class CNpcPlayerBubblePlatform : public CNpcPlatform
|
class CNpcPlayerBubblePlatform : public CNpcPlatform
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
virtual void postInit();
|
||||||
|
virtual void render();
|
||||||
|
virtual int checkCollisionAgainst(CThing *_thisThing, int _frames);
|
||||||
|
protected:
|
||||||
|
virtual void processLifetime( int _frames );
|
||||||
|
|
||||||
|
u8 m_pop;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -1437,6 +1437,10 @@ SOURCE=..\..\..\source\platform\ppendulm.h
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\..\source\platform\pplayer.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=..\..\..\source\platform\pplayer.h
|
SOURCE=..\..\..\source\platform\pplayer.h
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue