diff --git a/source/hazard/hspikes.cpp b/source/hazard/hspikes.cpp new file mode 100644 index 000000000..eadac5584 --- /dev/null +++ b/source/hazard/hspikes.cpp @@ -0,0 +1,75 @@ +/*========================================================================= + + hspikes.cpp + + Author: CRB + Created: + Project: Spongebob + Purpose: + + Copyright (c) 2001 Climax Development Ltd + +===========================================================================*/ + +#ifndef __HAZARD_HSPIKES_H__ +#include "hazard\hspikes.h" +#endif + +#ifndef __LAYER_COLLISION_H__ +#include "level\layercollision.h" +#endif + +void CNpcSpikesHazard::init() +{ + CNpcHazard::init(); + + m_state = SPIKES_RISING; +} + +void CNpcSpikesHazard::processMovement( int _frames ) +{ + s32 minY, maxY; + m_npcPath.getPathYExtents( &minY, &maxY ); + + switch ( m_state ) + { + case SPIKES_DROPPING: + { + if ( maxY - Pos.vy == 0 ) + { + m_state = SPIKES_RISING; + } + else + { + Pos.vy += 3 * _frames; + + if ( Pos.vy > maxY ) + { + Pos.vy = maxY; + } + } + + + break; + } + + case SPIKES_RISING: + { + if ( minY - Pos.vy == 0 ) + { + m_state = SPIKES_DROPPING; + } + else + { + Pos.vy -= 3 * _frames; + + if ( Pos.vy < minY ) + { + Pos.vy = minY; + } + } + + break; + } + } +} diff --git a/source/hazard/hspikes.h b/source/hazard/hspikes.h new file mode 100644 index 000000000..a41edcaad --- /dev/null +++ b/source/hazard/hspikes.h @@ -0,0 +1,37 @@ +/*========================================================================= + + hspikes.h + + Author: CRB + Created: + Project: Spongebob + Purpose: + + Copyright (c) 2001 Climax Development Ltd + +===========================================================================*/ + +#ifndef __HAZARD_HSPIKES_H__ +#define __HAZARD_HSPIKES_H__ + +#ifndef __HAZARD_HAZARD_H__ +#include "hazard\hazard.h" +#endif + +class CNpcSpikesHazard : public CNpcHazard +{ +public: + void init(); +protected: + void processMovement( int _frames ); + + enum SPIKES_STATE + { + SPIKES_DROPPING, + SPIKES_RISING, + }; + + SPIKES_STATE m_state; +}; + +#endif \ No newline at end of file