102 lines
2.5 KiB
C++
102 lines
2.5 KiB
C++
/*=========================================================================
|
|
|
|
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,0);
|
|
if ( !projectile )
|
|
{
|
|
projectile = new ("player projectile") CEnemyAsSpriteProjectile;
|
|
}
|
|
|
|
ASSERT(projectile);
|
|
|
|
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 );
|
|
}
|
|
}
|