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

	hlog.cpp

	Author:		CRB
	Created: 
	Project:	Spongebob
	Purpose: 

	Copyright (c) 2001 Climax Development Ltd

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

#ifndef __HAZARD_HLOG_H__
#include "hazard\hlog.h"
#endif

#ifndef	__UTILS_HEADER__
#include	"utils\utils.h"
#endif


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

void CNpcLogHazard::init()
{
	CNpcHazard::init();

	m_extension = 0;
	m_velocity = 40;
	m_height = 50;

	m_respawnRate = 4;
}

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

void CNpcLogHazard::setWaypoints( sThingHazard *ThisHazard )
{
	int pointNum;

	u16	*PntList=(u16*)MakePtr(ThisHazard,sizeof(sThingHazard));

	u16 newXPos, newYPos;

	m_npcPath.setWaypointCount( ThisHazard->PointCount - 1 );

	newXPos = (u16) *PntList;
	setWaypointPtr( PntList );
	PntList++;
	newYPos = (u16) *PntList;
	PntList++;

	DVECTOR startPos;
	startPos.vx = ( newXPos << 4 ) + 8;
	startPos.vy = ( newYPos << 4 ) + 16;

	s32 minY, maxY;

	m_npcPath.getPathYExtents( &minY, &maxY );
	m_height = maxY - minY;

	Pos = startPos;
	Pos.vy = minY;
	m_base = Pos;

	s32 minX, maxX;

	m_npcPath.getPathXExtents( &minX, &maxX );

	m_thinkArea.x1 = minX;
	m_thinkArea.x2 = maxX;
	m_thinkArea.y1 = minY;
	m_thinkArea.y2 = maxY;
}

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

void CNpcLogHazard::processMovement( int _frames )
{
	if ( m_extendDir == EXTEND_DOWN )
	{
		m_extension += _frames;

		if ( m_extension > m_height )
		{
			m_extension = m_height;
			m_extendDir = EXTEND_UP;
		}
	}
	else
	{
		m_extension -= _frames;

		if ( m_extension < 0 )
		{
			m_extension = 0;
			m_extendDir = EXTEND_DOWN;
		}
	}

	Pos.vy = m_base.vy + m_extension;
}