diff --git a/source/projectl/prnpcspr.cpp b/source/projectl/prnpcspr.cpp new file mode 100644 index 000000000..4c86b5ba3 --- /dev/null +++ b/source/projectl/prnpcspr.cpp @@ -0,0 +1,73 @@ +/*========================================================================= + + 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 + +void CEnemyAsSpriteProjectile::think( int _frames ) +{ + CPlayerProjectile::think( _frames ); + + m_rotation += 512; + m_rotation &= 4095; +} + +void CEnemyAsSpriteProjectile::setGraphic( int frame ) +{ + m_spriteFrame = frame; +} + +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 = m_spriteBank->getFrameWidth( m_spriteFrame ); + int spriteHeight = m_spriteBank->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 = m_spriteBank->getFrameHeader( m_spriteFrame ); + POLY_FT4 *SprFrame = m_spriteBank->printRotatedScaledSprite( frameHdr, x, y, 4096, 4096, m_rotation, 0 ); + + if ( m_hasRGB ) + { + setRGB0( SprFrame, m_R, m_G, m_B ); + } +} diff --git a/source/projectl/prnpcspr.h b/source/projectl/prnpcspr.h new file mode 100644 index 000000000..c949ac173 --- /dev/null +++ b/source/projectl/prnpcspr.h @@ -0,0 +1,46 @@ +/*========================================================================= + + prnpcspr.h + + Author: CRB + Created: + Project: Spongebob + Purpose: + + Copyright (c) 2000 Climax Development Ltd + +===========================================================================*/ + +#ifndef __PROJECTL_PRNPCSPR_H__ +#define __PROJECTL_PRNPCSPR_H__ + +#ifndef __PROJECTL_PROJECTL_H__ +#include "projectl\projectl.h" +#endif + +#ifndef __GFX_SPRBANK_H__ +#include "gfx\sprbank.h" +#endif + +#ifndef __ACTOR_HEADER__ +#include "gfx\actor.h" +#endif + +class CEnemyAsSpriteProjectile : public CPlayerProjectile +{ +public: + void render(); + void setGraphic( int frame ); + void setRGB( int R, int G, int B ); + void setHasRGB( u8 hasRGB ) {m_hasRGB = hasRGB;} + virtual void think(int _frames); +protected: + s16 m_rotation; + int m_spriteFrame; + int m_R; + int m_G; + int m_B; + u8 m_hasRGB; +}; + +#endif \ No newline at end of file