#pragma once #include "utils/globals.hpp" #include "text/token.hpp" namespace Nimbin { struct CarriedLine; struct Player; class WordAiSystem { int _max_active_ai = 5; void update_Idle (Text::Token::Data& w, const Player& p, int active_ai_count, double dt); void update_Attack(Text::Token::Data& w, const Player& p, CarriedLine& carried, DynArray& all_words, DynArray& dropped, DynArray& released, double dt); void update_Flee (Text::Token::Data& w, const Player& p, DynArray& released, double dt); void update_Stunned (Text::Token::Data& w, DynArray& released, double dt); void update_StolenTrail(Text::Token::Data& w, double dt); void release_StolenWords(Text::Token::Data& w, DynArray& out); void enter_Attack (Text::Token::Data& w); void enter_Flee (Text::Token::Data& w); void enter_Stunned (Text::Token::Data& w); void enter_Idle (Text::Token::Data& w); void apply_Locomotion(Text::Token::Data& w, const Vec3& target_vel, double dt); public: void set_MaxActiveAi (int n) { _max_active_ai = n; } void update (DynArray& words, const Player& player, CarriedLine& carried, DynArray& dropped, double dt); }; } // namespace Nimbin