|
| ArenaAI (AbstractKart *kart) |
|
virtual void | update (int ticks) OVERRIDE |
| This is the main entry point for the AI.
|
|
virtual void | reset () OVERRIDE |
| Resets the AI when a race is restarted.
|
|
virtual void | newLap (int lap) OVERRIDE |
| Callback whenever a new lap is triggered.
|
|
| AIBaseController (AbstractKart *kart) |
|
virtual void | reset () OVERRIDE |
|
virtual bool | disableSlipstreamBonus () const OVERRIDE |
| Certain AI levels will not receive a slipstream bonus in order to be not as hard.
|
|
virtual void | crashed (const Material *m) OVERRIDE |
| This is called when the kart crashed with the terrain.
|
|
virtual void | crashed (const AbstractKart *k) OVERRIDE |
|
virtual void | handleZipper (bool play_sound) OVERRIDE |
|
virtual void | finishedRace (float time) OVERRIDE |
| Called whan this controller's kart finishes the last lap.
|
|
virtual void | collectedItem (const ItemState &item, float previous_energy=0) OVERRIDE |
|
virtual void | setPosition (int p) OVERRIDE |
|
virtual bool | isPlayerController () const OVERRIDE |
| This function checks if this player is not an AI, i.e.
|
|
virtual bool | isLocalPlayerController () const OVERRIDE |
| This function checks if this is a local player.
|
|
virtual bool | action (PlayerAction action, int value, bool dry_run=false) OVERRIDE |
| Default: ignore actions.
|
|
virtual void | skidBonusTriggered () OVERRIDE |
|
virtual bool | saveState (BareNetworkString *buffer) const OVERRIDE |
|
virtual void | rewindTo (BareNetworkString *buffer) OVERRIDE |
|
void | setNetworkAI (bool val) |
|
virtual void | update (int ticks) OVERRIDE |
|
| Controller (AbstractKart *kart) |
| Constructor, saves the kart pointer and a pointer to the KartControl of the kart.
|
|
virtual void | reset ()=0 |
|
virtual void | update (int ticks)=0 |
|
virtual void | handleZipper (bool play_sound)=0 |
|
virtual void | collectedItem (const ItemState &item, float previous_energy=0)=0 |
|
virtual void | crashed (const AbstractKart *k)=0 |
|
virtual void | crashed (const Material *m)=0 |
|
virtual void | setPosition (int p)=0 |
|
virtual bool | isLocalPlayerController () const =0 |
| This function checks if this is a local player.
|
|
virtual bool | isPlayerController () const =0 |
| This function checks if this player is not an AI, i.e.
|
|
virtual bool | disableSlipstreamBonus () const =0 |
|
virtual bool | saveState (BareNetworkString *buffer) const =0 |
|
virtual void | rewindTo (BareNetworkString *buffer)=0 |
|
virtual void | rumble (float strength_low, float strength_high, uint16_t duration) |
|
virtual void | setControllerName (const std::string &name) |
| Sets the controller name for this controller.
|
|
const std::string & | getControllerName () const |
| Returns the name of this controller.
|
|
virtual bool | action (PlayerAction action, int value, bool dry_run=false)=0 |
| Default: ignore actions.
|
|
virtual void | newLap (int lap)=0 |
| Callback whenever a new lap is triggered.
|
|
virtual void | skidBonusTriggered ()=0 |
|
virtual void | finishedRace (float time)=0 |
| Called whan this controller's kart finishes the last lap.
|
|
virtual KartControl * | getControls () |
| Get a pointer on the kart controls.
|
|
void | setControls (KartControl *kc) |
|
virtual bool | canGetAchievements () const |
| Only local players can get achievements.
|
|
virtual core::stringw | getName (bool include_handicap_string=true) const |
| Display name of the controller.
|
|
AbstractKart * | getKart () const |
| Returns the kart controlled by this controller.
|
|
|
void | tryCollectItem (Vec3 *aim_point, int *target_node) const |
| Try to collect item in arena, if no suitable item is found, like they are swapped, it will follow closest kart instead.
|
|
virtual void | findClosestKart (bool consider_difficulty, bool find_sta)=0 |
| Find the closest kart around this AI, implemented by sub-class.
|
|
void | setControllerName (const std::string &name) OVERRIDE |
| In debug mode when the user specified –ai-debug on the command line set the name of the controller as on-screen text, so that the different AI controllers can be distinguished.
|
|
float | steerToPoint (const Vec3 &point) |
| Computes the steering angle to reach a certain point.
|
|
float | normalizeAngle (float angle) |
| Normalises an angle to be between -pi and _ pi.
|
|
bool | isStuck () const |
| This can be called to detect if the kart is stuck (i.e.
|
|
void | determineTurnRadius (const Vec3 &end, Vec3 *center, float *radius) const |
| Determine the center point and radius of a circle given two points on the circle and the tangent at the first point.
|
|
virtual void | setSteering (float angle, float dt) |
| Converts the steering angle to a lr steering in the range of -1 to 1.
|
|
virtual bool | canSkid (float steer_fraction)=0 |
| Return true if AI can skid now.
|
|
|
ItemManager * | m_item_manager |
|
ArenaGraph * | m_graph |
| Pointer to the ArenaGraph.
|
|
AbstractKart * | m_closest_kart |
| Pointer to the closest kart around this kart.
|
|
int | m_closest_kart_node |
| The ArenaNode at which the closest kart located on.
|
|
Vec3 | m_closest_kart_point |
| The closest kart location.
|
|
RaceManager::Difficulty | m_cur_difficulty |
| Holds the current difficulty.
|
|
irr::scene::ISceneNode * | m_debug_sphere |
| For debugging purpose: a sphere indicating where the AI is targeting at.
|
|
irr::scene::ISceneNode * | m_debug_sphere_next |
| For debugging purpose: a sphere indicating where the first turning corner is located.
|
|
int | m_target_node |
| The ArenaNode at which the target point located on.
|
|
Vec3 | m_target_point |
| The coordinates of target point.
|
|
bool | m_mini_skid |
| True if AI can skid, currently only do when close to target, see doSkiddingTest().
|
|
bool | m_enabled_network_ai |
|
float | m_kart_length |
| Length of the kart, storing it here saves many function calls.
|
|
float | m_kart_width |
| Cache width of kart.
|
|
Track * | m_track |
| Keep a pointer to the track to reduce calls.
|
|
const AIProperties * | m_ai_properties |
| A pointer to the AI properties for this kart.
|
|
AbstractKart * | m_kart |
| Pointer to the kart that is controlled by this controller.
|
|
KartControl * | m_controls |
| A pointer to the main controller, from which the kart takes it commands.
|
|
std::string | m_controller_name |
| The name of the controller, mainly used for debugging purposes.
|
|
|
void | configSpeed () |
| Configure a suitable speed depends on current turn radius.
|
|
void | configSteering () |
| This function config the steering (m_steering_angle) of AI.
|
|
void | checkIfStuck (const float dt) |
| Determine whether AI is stuck, by checking if it stays on the same node for a long period of time (see m_on_node), or isStuck() is true.
|
|
void | determinePath (int forward, std::vector< int > *path) |
| Determine if the path to target needs to be changed to avoid bad items, it will also set the turn radius based on the new path if necessary.
|
|
void | doSkiddingTest () |
| Determine if AI should skid: When it's close to target, but not straight ahead, in front of it, same steering side and with suitable difficulties which are in expert and supertux only.
|
|
void | doUTurn (const float dt) |
| Make AI reverse so that it faces in front of the last target point.
|
|
bool | gettingUnstuck (int ticks) |
| Function to let AI get unstuck.
|
|
bool | updateAimingPosition (Vec3 *target_point) |
| Update aiming position, use path finding if necessary.
|
|
void | useItems (const float dt) |
| Determine how AI should use its item, different m_cur_difficulty will have a corresponding strategy.
|
|
virtual bool | canSkid (float steer_fraction) OVERRIDE |
| Return true if AI can skid now.
|
|
virtual void | findTarget ()=0 |
| Find a suitable target for this frame, implemented by sub-class.
|
|
virtual bool | forceBraking () |
| If true, AI will always try to brake for this frame.
|
|
virtual int | getCurrentNode () const =0 |
| Return the current ArenaNode the AI located on.
|
|
virtual float | getKartDistance (const AbstractKart *kart) const =0 |
| Return the distance based on graph distance matrix to any kart.
|
|
virtual bool | ignorePathFinding () |
| If true, AI will drive directly to target without path finding.
|
|
virtual bool | isWaiting () const =0 |
| If true, AI will stop moving.
|
|
virtual bool | isKartOnRoad () const =0 |
| If true, AI stays on the ArenaNode correctly, otherwise RescueAnimation will be done after sometime.
|
|
virtual void | resetAfterStop () |
| Overridden if any action is needed to be done when AI stopped moving or changed driving direction.
|
|
|
Vec3 | m_target_point_lc |
| Local coordinates of current target point.
|
|
Vec3 | m_reverse_point |
| Save the last target point before reversing, so AI will end reversing until facing in front of it.
|
|
bool | m_is_stuck |
| Indicates that the kart is currently stuck, and m_ticks_since_reversing is counting down.
|
|
bool | m_is_uturn |
| Indicates that the kart need a uturn to reach a node behind, and m_time_since_uturn is counting down.
|
|
std::set< int > | m_on_node |
| Holds the unique node ai has driven through, useful to tell if AI is stuck by determine the size of this set.
|
|
float | m_time_since_last_shot |
| Time an item has been collected and not used.
|
|
float | m_ticks_since_reversing |
| This is a timer that counts down when the kart is reversing to get unstuck.
|
|
float | m_time_since_driving |
| This is a timer that counts down when the kart is starting to drive.
|
|
float | m_time_since_uturn |
| This is a timer that counts down when the kart is doing u-turn.
|
|
int | m_ticks_since_off_road |
| This is a timer that counts when the kart start going off road.
|
|
float | m_turn_radius |
| Used to determine braking and nitro usage.
|
|
float | m_steering_angle |
| Used to determine if skidding can be done.
|
|
Vec3 | m_current_forward_point |
| The point in front of the AI which distance is m_kart_length, used to compensate the time difference between steering when finding next node.
|
|
int | m_current_forward_node |
| The ArenaNode at which the forward point located on.
|
|
A base class for AI that use navmesh to work.