This commit is contained in:
parent
5c2faa793b
commit
02eafd0a46
15 changed files with 160 additions and 273 deletions
|
@ -41,7 +41,6 @@
|
|||
#include "game\convo.h"
|
||||
#endif
|
||||
|
||||
|
||||
#include "Gfx\actor.h"
|
||||
|
||||
#ifndef __VID_HEADER_
|
||||
|
@ -179,131 +178,6 @@
|
|||
#endif
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Friend NPCs
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CNpcFriend::init()
|
||||
{
|
||||
CNpcThing::init();
|
||||
|
||||
Pos.vx = 100;
|
||||
Pos.vy = 100;
|
||||
|
||||
m_extension = EXTEND_RIGHT;
|
||||
|
||||
// temporary
|
||||
m_actorGfx=CActorPool::GetActor(ACTORS_CLAM_SBK);
|
||||
|
||||
//m_animPlaying = true;
|
||||
m_animNo = 0;
|
||||
m_frame = 0;
|
||||
m_reversed = false;
|
||||
|
||||
DVECTOR ofs = getCollisionSize();
|
||||
|
||||
m_drawOffset.vx = 0;
|
||||
m_drawOffset.vy = -( ofs.vy >> 1 );
|
||||
|
||||
setCollisionCentreOffset( 0, -( ofs.vy >> 1 ) );
|
||||
|
||||
//m_spriteBank=new ("enemy sprites") SpriteBank();
|
||||
//m_spriteBank->load(UI_UIGFX_SPR);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CNpcFriend::shutdown()
|
||||
{
|
||||
//m_spriteBank->dump(); delete m_spriteBank;
|
||||
|
||||
delete m_actorGfx;
|
||||
CNpcThing::shutdown();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CNpcFriend::think(int _frames)
|
||||
{
|
||||
CNpcThing::think(_frames);
|
||||
|
||||
switch( m_data[m_type].movementFunc )
|
||||
{
|
||||
case NPC_FRIEND_MOVEMENT_GARY:
|
||||
processGaryMovement( _frames );
|
||||
|
||||
break;
|
||||
|
||||
case NPC_FRIEND_MOVEMENT_STATIC:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CNpcFriend::render()
|
||||
{
|
||||
CNpcThing::render();
|
||||
|
||||
// Render
|
||||
DVECTOR renderPos;
|
||||
DVECTOR offset = CLevel::getCameraPos();
|
||||
|
||||
renderPos.vx = Pos.vx - offset.vx;
|
||||
renderPos.vy = Pos.vy - offset.vy;
|
||||
|
||||
if ( renderPos.vx >= 0 && renderPos.vx <= VidGetScrW() )
|
||||
{
|
||||
if ( renderPos.vy >= 0 && renderPos.vy <= VidGetScrH() )
|
||||
{
|
||||
m_actorGfx->Render(renderPos,m_animNo,m_frame,m_reversed);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void CNpcFriend::processEvent( GAME_EVENT evt, CThing *sourceThing )
|
||||
{
|
||||
switch( evt )
|
||||
{
|
||||
case USER_REQUEST_TALK_EVENT:
|
||||
{
|
||||
if ( m_data[this->m_type].canTalk )
|
||||
{
|
||||
DVECTOR sourcePos;
|
||||
s32 xDiffSqr, yDiffSqr;
|
||||
|
||||
// check talk distance
|
||||
|
||||
sourcePos = sourceThing->getPos();
|
||||
|
||||
xDiffSqr = this->Pos.vx - sourcePos.vx;
|
||||
xDiffSqr *= xDiffSqr;
|
||||
|
||||
yDiffSqr = this->Pos.vy - sourcePos.vy;
|
||||
yDiffSqr *= yDiffSqr;
|
||||
|
||||
if ( xDiffSqr + yDiffSqr < 10000 )
|
||||
{
|
||||
if( !CConversation::isActive() )
|
||||
{
|
||||
CConversation::trigger( SCRIPTS_SPEECHTEST_DAT );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
// ignore
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Enemy NPCs
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -313,7 +187,6 @@ s32 CNpcEnemy::playerYDist;
|
|||
s32 CNpcEnemy::playerXDistSqr;
|
||||
s32 CNpcEnemy::playerYDistSqr;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
CNpcEnemy::NPC_UNIT_TYPE CNpcEnemy::getTypeFromMapEdit( u16 newType )
|
||||
|
@ -322,6 +195,7 @@ CNpcEnemy::NPC_UNIT_TYPE CNpcEnemy::getTypeFromMapEdit( u16 newType )
|
|||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
CNpcEnemy *CNpcEnemy::Create(sThingActor *ThisActor)
|
||||
{
|
||||
CNpcEnemy *enemy;
|
||||
|
|
|
@ -37,77 +37,6 @@
|
|||
|
||||
/*****************************************************************************/
|
||||
|
||||
class CNpcFriend : public CNpcThing
|
||||
{
|
||||
public:
|
||||
enum NPC_FRIEND_UNIT_TYPE
|
||||
{
|
||||
NPC_FRIEND_SANDY_CHEEKS = 0,
|
||||
NPC_FRIEND_GARY = 1,
|
||||
NPC_FRIEND_UNIT_TYPE_MAX,
|
||||
};
|
||||
|
||||
void init();
|
||||
void shutdown();
|
||||
void think(int _frames);
|
||||
void render();
|
||||
void processEvent( GAME_EVENT evt, CThing *sourceThing );
|
||||
void setLayerCollision( class CLayerCollision *_layer ) {m_layerCollision=_layer;}
|
||||
void setType( NPC_FRIEND_UNIT_TYPE newType ) {m_type = newType;}
|
||||
|
||||
private:
|
||||
class CLayerCollision *m_layerCollision;
|
||||
|
||||
protected:
|
||||
enum NPC_FRIEND_MOVEMENT_FUNC
|
||||
{
|
||||
NPC_FRIEND_MOVEMENT_STATIC = 0,
|
||||
NPC_FRIEND_MOVEMENT_GARY = 1,
|
||||
};
|
||||
|
||||
typedef struct NPC_FRIEND_DATA_TYPE
|
||||
{
|
||||
//NPC_FRIEND_INIT_FUNC initFunc;
|
||||
//NPC_FRIEND_SENSOR_FUNC sensorFunc;
|
||||
NPC_FRIEND_MOVEMENT_FUNC movementFunc;
|
||||
//NPC_FRIEND_CLOSE_FUNC closeFunc;
|
||||
//NPC_FRIEND_TIMER_FUNC timerFunc;
|
||||
bool canTalk;
|
||||
u8 speed;
|
||||
u16 turnSpeed;
|
||||
bool detectCollision;
|
||||
DAMAGE_TYPE damageToUserType;
|
||||
}
|
||||
NPC_FRIEND_DATA;
|
||||
|
||||
// gary functions
|
||||
|
||||
void processGaryMovement( int _frames );
|
||||
|
||||
// data
|
||||
|
||||
static NPC_FRIEND_DATA m_data[NPC_FRIEND_UNIT_TYPE_MAX];
|
||||
|
||||
// class SpriteBank *m_spriteBank;
|
||||
|
||||
enum
|
||||
{
|
||||
EXTEND_RIGHT = true,
|
||||
EXTEND_LEFT = false,
|
||||
};
|
||||
|
||||
// internal variables
|
||||
|
||||
NPC_FRIEND_UNIT_TYPE m_type;
|
||||
s32 m_extension;
|
||||
|
||||
int m_frame;
|
||||
int m_animNo;
|
||||
CActorGfx *m_actorGfx;
|
||||
DVECTOR m_drawOffset;
|
||||
bool m_reversed;
|
||||
};
|
||||
|
||||
class CNpcEnemy : public CEnemyThing
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -108,37 +108,6 @@
|
|||
//#endif
|
||||
|
||||
|
||||
CNpcFriend::NPC_FRIEND_DATA CNpcFriend::m_data[NPC_FRIEND_UNIT_TYPE_MAX] =
|
||||
{
|
||||
{ // NPC_SANDY_CHEEKS
|
||||
//NPC_FRIEND_INIT_DEFAULT,
|
||||
//NPC_FRIEND_SENSOR_NONE,
|
||||
NPC_FRIEND_MOVEMENT_STATIC,
|
||||
//NPC_FRIEND_MOVEMENT_MODIFIER_NONE,
|
||||
//NPC_FRIEND_CLOSE_NONE,
|
||||
//NPC_FRIEND_TIMER_NONE,
|
||||
true,
|
||||
3,
|
||||
128,
|
||||
false,
|
||||
DAMAGE__HIT_ENEMY,
|
||||
},
|
||||
|
||||
{ // NPC_GARY
|
||||
//NPC_FRIEND_INIT_DEFAULT,
|
||||
//NPC_FRIEND_SENSOR_NONE,
|
||||
NPC_FRIEND_MOVEMENT_GARY,
|
||||
//NPC_FRIEND_MOVEMENT_MODIFIER_NONE,
|
||||
//NPC_FRIEND_CLOSE_NONE,
|
||||
//NPC_FRIEND_TIMER_NONE,
|
||||
false,
|
||||
3,
|
||||
2048,
|
||||
false,
|
||||
DAMAGE__HIT_ENEMY,
|
||||
},
|
||||
};
|
||||
|
||||
CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||
{
|
||||
/*{ // NPC_FALLING_ITEM
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue