SBSPSS/source/enemy/npc.cpp
Charles f81e80230f
2001-01-16 19:35:34 +00:00

175 lines
2.1 KiB
C++

#include "enemy\npc.h"
#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 __GAME_GAME_H__
#include "game\game.h"
#endif
#ifndef __PLAYER_PLAYER_H__
#include "player\player.h"
#endif
CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] =
{
{
NPC_INIT_DEFAULT,
NPC_SENSOR_NONE,
NPC_MOVEMENT_VERTICAL,
NPC_MOVEMENT_MODIFIER_NONE,
},
};
void CNpc::init()
{
m_type = NPC_TEST_TYPE;
switch ( m_data[this->m_type].initFunc )
{
case NPC_INIT_DEFAULT:
m_controlFunc = NPC_CONTROL_MOVEMENT;
break;
default:
m_controlFunc = NPC_CONTROL_MOVEMENT;
break;
}
}
void CNpc::shutdown()
{
}
void CNpc::think(int _frames)
{
m_controlFunc = NPC_CONTROL_MOVEMENT;
switch ( this->m_controlFunc )
{
case NPC_CONTROL_MOVEMENT:
if ( !processSensor() )
{
processMovement();
}
break;
case NPC_CONTROL_SHOT:
processShot();
break;
case NPC_CONTROL_CLOSE:
processClose();
break;
case NPC_CONTROL_COLLISION:
processCollision();
break;
}
processTimer();
}
bool CNpc::processSensor()
{
switch( m_data[this->m_type].sensorFunc )
{
case NPC_SENSOR_NONE:
return( false );
case NPC_SENSOR_USER_CLOSE:
/*if ( user is close )
{
this->controlFunc = NPC_CONTROL_CLOSE;
processClose();
return( true );
}
else*/
{
return( false );
}
}
return( false );
}
void CNpc::processMovement()
{
switch( m_data[this->m_type].movementFunc )
{
case NPC_MOVEMENT_STATIC:
switch( m_data[this->m_type].movementModifierFunc )
{
case NPC_MOVEMENT_MODIFIER_NONE:
break;
case NPC_MOVEMENT_MODIFIER_BOB:
//staticBob();
break;
}
break;
case NPC_MOVEMENT_FIXED_PATH:
break;
case NPC_MOVEMENT_USER_SEEK:
CPlayer *player;
player = GameScene.getPlayer();
break;
case NPC_MOVEMENT_VERTICAL:
Pos.vy--;
break;
default:
break;
}
}
void CNpc::processShot()
{
}
void CNpc::processClose()
{
}
void CNpc::processCollision()
{
}
void CNpc::processTimer()
{
}
void CNpc::render()
{
}