/*=========================================================================

	pgeyser.cpp

	Author:		CRB
	Created:
	Project:	Spongebob
	Purpose:

	Copyright (c) 2001 Climax Development Ltd

===========================================================================*/

#ifndef __PLATFORM_PGEYSER_H__
#include "platform\pgeyser.h"
#endif

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void CNpcGeyserPlatform::postInit()
{
	m_npcPath.setPathType( CNpcPath::SINGLE_USE_PATH );

	m_isFiring = false;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void CNpcGeyserPlatform::processMovement( int _frames )
{
	if ( m_isFiring )
	{
		s32 moveY = 0;
		s32 distX, distY, heading;
		bool pathComplete;

		m_npcPath.thinkVertical( Pos, &pathComplete, &distX, &distY, &heading );

		if ( pathComplete )
		{
			m_npcPath.resetPath();
			reinit();
			m_isFiring = false;
		}
		else
		{
			s32 minY, maxY;

			m_npcPath.getPathYExtents( &minY, &maxY );

			moveY = m_data[m_type].speed * _frames;

			if ( Pos.vy < ( minY + 64 ) )
			{
				s32 multiplier = Pos.vy - minY;

				moveY = ( multiplier * moveY ) >> 6;

				if ( moveY < 1 )
				{
					moveY = 1;
				}
			}

			if ( heading == 3072 )
			{
				moveY = -moveY;
			}

			Pos.vy += moveY;
		}
	}
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void CNpcGeyserPlatform::processTimer( int _frames )
{
	if ( m_timer > 0 )
	{
		m_timer -= _frames;
	}
	else
	{
		m_isFiring = true;
	}
}