ArnieBoids  1.0.0
JOINT AI PROJECT
Predator Class Reference

#include <Predator.hpp>

Inheritance diagram for Predator:
Collaboration diagram for Predator:

Public Member Functions

 Predator (thor::ParticleSystem &particleSystem, std::function< void(Bullet *)> const &fireCallback, sf::Vector2f position)
 
 ~Predator ()
 
void update () override
 Makes the ship flock toward other predators and prey_. Fires bullet at prey_ if facing toward it. More...
 
void onCollide (Ship *other) override
 Takes damage if colliding with player. More...
 
- Public Member Functions inherited from Ship
 Ship (thor::ParticleSystem &particleSystem, sf::Vector2f const &position, float maxSpeed, unsigned int health=1u)
 
 ~Ship ()
 
void takeDamage (unsigned int amount=1u)
 Reduces health by the specified amount. More...
 
bool isDead () const
 Returns true if health is zero. More...
 
void thrust ()
 Apply acceleration in direction of forward vector. More...
 
void brake ()
 Apply deceleration if thrust is present. More...
 
void turnLeft ()
 Turn ship left. More...
 
void turnRight ()
 Turn ship right. More...
 
bool trigger ()
 Attempt to fire, returns success. More...
 
void turnToward (sf::Vector2f const &direction)
 
sf::Vector2f getForward () const
 Returns forward direction of ship. More...
 
sf::Vector2f getVelocity () const
 Returns velocity. More...
 
void setRadarRange (float range)
 Radar radius accessors. More...
 
float getRadarRange () const
 
int getHealth () const
 Health accessors. More...
 
void addHealth (unsigned int health)
 
unsigned int getMaxHealth () const
 

Static Public Member Functions

static void setPrey (Ship *prey)
 

Private Member Functions

sf::Vector2f separation () const
 Keeps ships from piling on top of each other. More...
 
sf::Vector2f cohesion () const
 Keeps the ship moving in the same direction as nearby flockmates. Finds the averagelocation of nearby flockmates and manipulates the steering force to move in that direction. More...
 
sf::Vector2f alignment () const
 
sf::Vector2f flock () const
 

Private Attributes

std::function< void(Bullet *)> fireCallback_
 

Static Private Attributes

static Shipprey_ = nullptr
 
static std::list< Predator * > flock_ = std::list<Predator*>()
 

Additional Inherited Members

- Public Attributes inherited from Ship
sf::RectangleShape debug_rect_
 
- Protected Member Functions inherited from Ship
void clampToMaxSpeed ()
 Clamps the length of the velocity_ vector to MAX_SPEED_. More...
 
float tickToSec (unsigned int ticks) const
 Ticks to seconds. More...
 
virtual void updateParticleEmitter ()
 
- Protected Attributes inherited from Ship
const float MAX_SPEED_
 Maximum length of velocity vector. More...
 
const unsigned int MAX_HEALTH_
 
float refireTime_
 
float coolDown_
 
unsigned int ticks_
 
sf::Vector2f velocity_
 Delta position per update. More...
 
sf::Vector2f accel_
 Delta velocity after update !velocity_ += accel_ in update! More...
 
int health_
 Current health. More...
 
sf::Vector2f forward_
 Unit vector for ship's heading. More...
 
float thrust_
 How fast the ship accelerates. More...
 
float turnSpeed_
 How fast (in degrees) the ship can turn. More...
 
float radarRange_
 Ship's radar radius. More...
 
thor::UniversalEmitter particleEmitter_
 Does nothing on it's own. Derived classes should play with this. More...
 
float particleAngleVariance_
 

Constructor & Destructor Documentation

Predator::Predator ( thor::ParticleSystem &  particleSystem,
std::function< void(Bullet *)> const &  fireCallback,
sf::Vector2f  position 
)
Predator::~Predator ( )

Member Function Documentation

sf::Vector2f Predator::alignment ( ) const
private
Returns
The desired heading after alignment.

Here is the call graph for this function:

Here is the caller graph for this function:

sf::Vector2f Predator::cohesion ( ) const
private

Keeps the ship moving in the same direction as nearby flockmates. Finds the averagelocation of nearby flockmates and manipulates the steering force to move in that direction.

Returns
The desired position after cohesion.

Here is the caller graph for this function:

sf::Vector2f Predator::flock ( ) const
private

Here is the call graph for this function:

Here is the caller graph for this function:

void Predator::onCollide ( Ship other)
overridevirtual

Takes damage if colliding with player.

Implements Ship.

Here is the call graph for this function:

sf::Vector2f Predator::separation ( ) const
private

Keeps ships from piling on top of each other.

Returns
The desired position after separation.

Here is the caller graph for this function:

void Predator::setPrey ( Ship prey)
static

Here is the caller graph for this function:

void Predator::update ( )
overridevirtual

Makes the ship flock toward other predators and prey_. Fires bullet at prey_ if facing toward it.

Reimplemented from Ship.

Here is the call graph for this function:

Member Data Documentation

std::function<void(Bullet*)> Predator::fireCallback_
private
std::list< Predator * > Predator::flock_ = std::list<Predator*>()
staticprivate
Ship * Predator::prey_ = nullptr
staticprivate

The documentation for this class was generated from the following files: