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

	prnpcspr.cpp

	Author:		CRB
	Created: 
	Project:	Spongebob
	Purpose: 

	Copyright (c) 2000 Climax Development Ltd

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

#ifndef	__PROJECTL_PRNPCSPR_H__
#include "projectl\prnpcspr.h"
#endif

#ifndef __VID_HEADER_
#include "system\vid.h"
#endif

#ifndef __LEVEL_LEVEL_H__
#include "level\level.h"
#endif

#include	"game/game.h"

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

CEnemyAsSpriteProjectile	*CEnemyAsSpriteProjectile::Create()
{
	CEnemyAsSpriteProjectile *projectile;

	projectile = (CEnemyAsSpriteProjectile*)CThingManager::GetThing(TYPE_PLAYERPROJECTILE,1);
	if ( !projectile )
	{
		projectile = new ("player projectile") CEnemyAsSpriteProjectile;
	}

	ASSERT(projectile);
	projectile->setThingSubType(1);

	return( projectile );
}

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

void CEnemyAsSpriteProjectile::think( int _frames )
{
	CPlayerProjectile::think( _frames );

	m_rotation += 512;
	m_rotation &= 4095;
}

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

void CEnemyAsSpriteProjectile::setGraphic( int frame )
{
	m_spriteFrame = frame;
	m_rotation = 0;
}

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

void CEnemyAsSpriteProjectile::setRGB( int R, int G, int B )
{
	m_R = R;
	m_G = G;
	m_B = B;
}

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

void CEnemyAsSpriteProjectile::render()
{
	sFrameHdr	*frameHdr;
	DVECTOR	offset;
	int		x,y;
	int		scrnWidth = VidGetScrW();
	int		scrnHeight = VidGetScrH();
	int		spriteWidth = CGameScene::getSpriteBank()->getFrameWidth( m_spriteFrame );
	int		spriteHeight = CGameScene::getSpriteBank()->getFrameHeight( m_spriteFrame );

	offset = getScreenOffset();

	x = Pos.vx - offset.vx;
	y = Pos.vy - offset.vy;

	if ( x < -spriteWidth || y < -spriteHeight || x > scrnWidth || y > scrnHeight )
	{
		return;
	}

	frameHdr = CGameScene::getSpriteBank()->getFrameHeader( m_spriteFrame );
	POLY_FT4 *SprFrame = CGameScene::getSpriteBank()->printRotatedScaledSprite( frameHdr, x, y, 4096, 4096, m_rotation, 0 );

	if ( m_hasRGB )
	{
		setRGB0( SprFrame, m_R, m_G, m_B );
	}
}