This commit is contained in:
Charles 2001-01-22 16:01:49 +00:00
parent c2e12f8c57
commit 1d72f15761
3 changed files with 195 additions and 0 deletions

46
source/enemy/nanemone.cpp Normal file
View File

@ -0,0 +1,46 @@
/*=========================================================================
nanemone.cpp
Author: CRB
Created:
Project: Spongebob
Purpose:
Copyright (c) 2000 Climax Development Ltd
===========================================================================*/
#ifndef __ENEMY_NPC_H__
#include "enemy\npc.h"
#endif
#ifndef __PROJECTL_PROJECTL_H__
#include "projectl\projectl.h"
#endif
#ifndef __GAME_GAME_H__
#include "game\game.h"
#endif
void CNpc::processCloseAnemone2Attack( int _frames )
{
int fireLoop;
CProjectile *projectile;
s16 heading;
for ( fireLoop = 0 ; fireLoop < 5 ; fireLoop++ )
{
heading = m_baseHeading - 1024 + ( fireLoop * 512 );
heading %= 4096;
projectile = new( "test projectile" ) CProjectile;
projectile->init( Pos, heading );
}
m_controlFunc = NPC_CONTROL_MOVEMENT;
m_timerFunc = NPC_TIMER_ATTACK_DONE;
m_timerTimer = GameState::getOneSecondInFrames();
m_sensorFunc = NPC_SENSOR_NONE;
}

View File

@ -0,0 +1,107 @@
/*=========================================================================
projectl.cpp
Author: CRB
Created:
Project: Spongebob
Purpose:
Copyright (c) 2000 Climax Development Ltd
===========================================================================*/
#ifndef __PROJECTL_PROJECTL_H__
#include "projectl\projectl.h"
#endif
#ifndef __GFX_SPRBANK_H__
#include "gfx\sprbank.h"
#endif
#ifndef __LEVEL_LEVEL_H__
#include "level\level.h"
#endif
#ifndef __FILE_EQUATES_H__
#include <biglump.h>
#endif
#ifndef __SPR_UIGFX_H__
#include <uigfx.h>
#endif
#ifndef __VID_HEADER_
#include "system\vid.h"
#endif
#ifndef __GAME_GAME_H__
#include "game\game.h"
#endif
/*****************************************************************************/
void CProjectile::init()
{
m_spriteBank=new ("projectile sprites") SpriteBank();
m_spriteBank->load(UI_UIGFX_SPR);
m_heading = 0;
m_lifetime = GameState::getOneSecondInFrames() * 2;
}
void CProjectile::init( DVECTOR initPos, s16 initHeading )
{
init();
m_heading = initHeading;
Pos = initPos;
}
void CProjectile::shutdown()
{
m_spriteBank->dump(); delete m_spriteBank;
}
void CProjectile::think(int _frames)
{
Pos.vx += ( _frames * 3 * rcos( m_heading ) ) >> 12;
Pos.vy += ( _frames * 3 * rsin( m_heading ) ) >> 12;
m_lifetime -= _frames;
if ( m_lifetime <= 0 )
{
shutdown();
delete this;
}
}
void CProjectile::render()
{
DVECTOR offset;
int x,y;
int scrnWidth = VidGetScrW();
int scrnHeight = VidGetScrH();
int spriteWidth = m_spriteBank->getFrameWidth(FRM_BARNACLEBOY);
int spriteHeight = m_spriteBank->getFrameHeight(FRM_BARNACLEBOY);
offset = getScreenOffset();
x = Pos.vx - offset.vx + ( scrnWidth >> 1 ) - ( spriteWidth >> 1 );
y = Pos.vy - offset.vy + ( scrnHeight >> 1 ) - ( spriteHeight >> 1 );
m_spriteBank->printFT4(FRM_BARNACLEBOY,x,y,0,0,0);
}
DVECTOR CProjectile::getScreenOffset()
{
return CLevel::getCameraPos();
}
void CProjectile::processEvent( GAME_EVENT evt, CThing *sourceThing )
{
}
/*****************************************************************************/

View File

@ -0,0 +1,42 @@
/*=========================================================================
projectl.h
Author: CRB
Created:
Project: Spongebob
Purpose:
Copyright (c) 2000 Climax Development Ltd
===========================================================================*/
#ifndef __PROJECTL_PROJECTL_H__
#define __PROJECTL_PROJECTL_H__
#include "Game/Thing.h"
#include "Gfx/Skel.h"
/*****************************************************************************/
class CProjectile : public CThing
{
public:
void init();
void init( DVECTOR initPos, s16 initHeading );
void shutdown();
void think(int _frames);
virtual void render();
void processEvent( GAME_EVENT evt, CThing *sourceThing );
protected:
DVECTOR getScreenOffset();
class SpriteBank *m_spriteBank;
s16 m_heading;
s32 m_lifetime;
};
/*****************************************************************************/
#endif