See the file LICENSE for the license governing this code.
#pragma once
#include "Headers.h"
LevelObject > Character > AI
AI
represents a specific type of Character
object which is controlled by artificial intelligence.
This class is not meant to be instantiated.
It is further derived into Enemy
and NPC
which are further derived into specific enemies and NPCs.
music
(string filename) to play a begin a looping music track when the AI first seeks or attacks the player.onDeath
(string trigger) in the tmx object properties to trigger actions when the AI dies.
The format for trigger actions goes like this: <verb> <object-name>
.
Example: onDeath
= open Door0
will open a door named “Door0” when the AI
dies.Moods determine what thoughts and actions an AI will take. Moods use a timer that counts down. When the timer reaches zero a new mood is chosen.
enum
{
kMoodSleep,
kMoodSeek,
kMoodAttack
};
const float kTimerUp = -9999.0f;
class AI : public Character
{
public:
virtual const char* const profileName()=0;
AI();
virtual ~AI();
Set properties.
virtual void setProperties(Level& level, ValueMap& dict);
Tick / animate.
virtual void tick(float delta);
virtual void animate(float delta);
Run the sleep mood.
virtual void moodSleep(float delta);
Run the seek mood.
virtual void moodSeek(float delta);
Run the attack mood.
virtual void moodAttack(float delta);
Run actions when the player’s input becomes locked.
virtual void onLock();
Die.
virtual void die();
Disable (become dead).
virtual void disable();
protected:
The current mood of this AI.
int mood;
A timer used in mood functions.
float timer;
The amount of time the AI has been awake.
float awakeDuration, awakeDurationMax;
The amount of time the AI sleeps for.
float sleepDuration;
The AI’s last position.
Vec2 lastPos;
Whether the AI is locked.
bool locked;
Triggers (example: onDeath=open Door0).
map<string, string> triggers;
Set wake distance.
virtual void setWakeDistance(float dist);
Set the AI’s mood.
virtual void setMood(int newMood);
Choose a new mood.
virtual void chooseMood();
Returns true if the AI can wake up.
virtual bool canWakeup();
When alerted, AI will wake up if sleeping.
virtual void alert(LevelObject* obj);
Fade the sprite out.
void fadeOut(float delay, float duration);
Emit some smoke.
void emitSmoke(float delay, float duration);
private:
typedef Character super;
typedef AI self;
float wakeDistanceSQ;
string music;
};
Core
Object types