62 if (counter > MAX_COUNTER_VALUE ) {
76 static const int MAX_COUNTER_VALUE = 100;
83 return counter_ < MAX_COUNTER_VALUE;
112 void handle_generic_event(
const std::string& event_name);
114 const std::set<map_location>&
get();
156 virtual config to_side_context_config()
const = 0;
161 virtual int get_recursion_count()
const = 0;
171 virtual void on_readonly_context_create() = 0;
172 virtual const team& current_team()
const = 0;
173 virtual void diagnostic(
const std::string&
msg) = 0;
174 virtual void log_message(
const std::string& msg) = 0;
181 virtual void calculate_possible_moves(std::map<map_location,pathfind::paths>& possible_moves,
183 bool assume_full_movement=
false,
184 const terrain_filter* remove_destinations=
nullptr)
const = 0;
185 virtual void calculate_moves(
const unit_map& units,
186 std::map<map_location,pathfind::paths>& possible_moves,
move_map& srcdst,
187 move_map& dstsrc,
bool enemy,
bool assume_full_movement=
false,
188 const terrain_filter* remove_destinations=
nullptr,
189 bool see_all=
false)
const = 0;
191 virtual const game_info& get_info()
const = 0;
197 virtual std::map<map_location,defensive_position>& defensive_position_cache()
const = 0;
201 virtual double get_aggression()
const = 0;
203 virtual bool get_allow_ally_villages()
const = 0;
205 virtual const aspect_map& get_aspects()
const = 0;
209 virtual void add_facet(
const std::string &
id,
const config &cfg)
const = 0;
211 virtual void add_aspects(std::vector< aspect_ptr > &aspects ) = 0;
215 virtual const wfl::variant& get_attacks_as_variant()
const = 0;
217 virtual const terrain_filter& get_avoid()
const = 0;
219 virtual double get_caution()
const = 0;
221 virtual const move_map& get_dstsrc()
const = 0;
223 virtual const move_map& get_enemy_dstsrc()
const = 0;
225 virtual const moves_map& get_enemy_possible_moves()
const = 0;
227 virtual const move_map& get_enemy_srcdst()
const = 0;
234 virtual const std::vector<engine_ptr>& get_engines()
const = 0;
236 virtual std::vector<engine_ptr>& get_engines() = 0;
238 virtual std::string get_grouping()
const = 0;
240 virtual const std::vector<goal_ptr>& get_goals()
const = 0;
242 virtual std::vector<goal_ptr>& get_goals() = 0;
244 virtual double get_leader_aggression()
const = 0;
246 virtual config get_leader_goal()
const = 0;
248 virtual utils::variant<bool, std::vector<std::string>> get_leader_ignores_keep()
const = 0;
250 virtual double get_leader_value()
const = 0;
252 virtual utils::variant<bool, std::vector<std::string>> get_passive_leader()
const = 0;
254 virtual utils::variant<bool, std::vector<std::string>> get_passive_leader_shares_keep()
const = 0;
256 virtual const moves_map& get_possible_moves()
const = 0;
258 virtual double get_recruitment_diversity()
const = 0;
260 virtual const config get_recruitment_instructions()
const = 0;
262 virtual const std::vector<std::string> get_recruitment_more()
const = 0;
264 virtual const std::vector<std::string> get_recruitment_pattern()
const = 0;
266 virtual int get_recruitment_randomness()
const = 0;
268 virtual const config get_recruitment_save_gold()
const = 0;
270 virtual double get_retreat_enemy_weight()
const = 0;
272 virtual double get_retreat_factor()
const = 0;
274 virtual double get_scout_village_targeting()
const = 0;
276 virtual bool get_simple_targeting()
const = 0;
278 virtual const move_map& get_srcdst()
const = 0;
280 virtual bool get_support_villages()
const = 0;
282 virtual double get_village_value()
const = 0;
284 virtual int get_villages_per_scout()
const = 0;
288 virtual bool is_keep_ignoring_leader(
const std::string &
id)
const = 0;
290 virtual bool is_passive_leader(
const std::string &
id)
const = 0;
292 virtual bool is_passive_keep_sharing_leader(
const std::string &
id)
const = 0;
294 virtual bool is_dst_src_valid_lua()
const = 0;
296 virtual bool is_dst_src_enemy_valid_lua()
const = 0;
298 virtual bool is_src_dst_valid_lua()
const = 0;
300 virtual bool is_src_dst_enemy_valid_lua()
const = 0;
302 virtual void invalidate_defensive_position_cache()
const = 0;
304 virtual void invalidate_move_maps()
const = 0;
306 virtual void invalidate_keeps_cache()
const= 0;
308 virtual const std::set<map_location>& keeps()
const= 0;
310 virtual bool leader_can_reach_keep()
const = 0;
327 virtual void raise_user_interact()
const = 0;
329 virtual void recalculate_move_maps()
const = 0;
331 virtual void recalculate_move_maps_enemy()
const = 0;
333 virtual void set_src_dst_valid_lua() = 0;
334 virtual void set_src_dst_enemy_valid_lua() = 0;
335 virtual void set_dst_src_valid_lua() = 0;
336 virtual void set_dst_src_enemy_valid_lua() = 0;
344 virtual config to_readonly_context_config()
const = 0;
346 typedef std::map<std::pair<map_location,const unit_type *>,
347 std::pair<battle_context_unit_stats,battle_context_unit_stats>>
374 virtual team& current_team_w() = 0;
376 virtual void raise_gamestate_changed()
const = 0;
383 virtual config to_readwrite_context_config()
const = 0;
405 return target_->get_side();
410 return target_->set_side(side);
420 return target_->get_recursion_count();
425 return target_->to_side_context_config();
443 init_side_context_proxy(target);
454 return target_->on_readonly_context_create();
459 return target_->current_team();
464 target_->diagnostic(msg);
469 target_->log_message(msg);
474 return target_->check_attack_action(attacker_loc, defender_loc, attacker_weapon);
479 return target_->check_move_action(from, to, remove_movement, unreach_is_ok);
485 return target_->check_recall_action(
id, where, from);
491 return target_->check_recruit_action(unit_name, where, from);
496 return target_->check_stopunit_action(unit_location, remove_movement, remove_attacks);
501 return target_->check_synced_command_action(lua_code, location);
506 bool assume_full_movement=
false,
507 const terrain_filter* remove_destinations=
nullptr)
const override 509 target_->calculate_possible_moves(possible_moves, srcdst, dstsrc, enemy, assume_full_movement, remove_destinations);
513 std::map<map_location,pathfind::paths>& possible_moves,
move_map& srcdst,
514 move_map& dstsrc,
bool enemy,
bool assume_full_movement=
false,
515 const terrain_filter* remove_destinations=
nullptr,
516 bool see_all=
false)
const override 518 target_->calculate_moves(units, possible_moves, srcdst, dstsrc, enemy, assume_full_movement, remove_destinations, see_all);
523 return target_->get_info();
528 target_->raise_user_interact();
533 return target_->get_recursion_count();
540 return target_->best_defensive_position(unit,dstsrc,srcdst,enemy_dstsrc);
545 return target_->defensive_position_cache();
555 return target_->get_aggression();
560 return target_->get_allow_ally_villages();
565 return target_->get_aspects();
570 return target_->get_aspects();
573 virtual void add_aspects(std::vector< aspect_ptr > &aspects )
override 575 return target_->add_aspects(aspects);
580 target_->add_facet(
id,cfg);
585 return target_->get_attacks();
590 return target_->get_attacks_as_variant();
593 virtual const terrain_filter&
get_avoid()
const override 595 return target_->get_avoid();
600 return target_->get_caution();
605 return target_->get_dstsrc();
610 return target_->get_enemy_dstsrc();
615 return target_->get_enemy_possible_moves();
620 return target_->get_enemy_srcdst();
625 return target_->get_engine_by_cfg(cfg);
628 virtual const std::vector<engine_ptr>&
get_engines()
const override 630 return target_->get_engines();
635 return target_->get_engines();
640 return target_->get_grouping();
643 virtual const std::vector<goal_ptr>&
get_goals()
const override 645 return target_->get_goals();
650 return target_->get_goals();
655 return target_->get_leader_aggression();
660 return target_->get_leader_goal();
665 return target_->get_leader_ignores_keep();
670 return target_->get_leader_value();
675 return target_->get_passive_leader();
680 return target_->get_passive_leader_shares_keep();
685 return target_->get_possible_moves();
690 return target_->power_projection(loc,dstsrc);
695 return target_->get_recruitment_diversity();
700 return target_->get_recruitment_instructions();
705 return target_->get_recruitment_more();
710 return target_->get_recruitment_pattern();
715 return target_->get_recruitment_randomness();
720 return target_->get_recruitment_save_gold();
725 return target_->get_srcdst();
730 return target_->get_retreat_enemy_weight();
735 return target_->get_retreat_factor();
740 return target_->get_scout_village_targeting();
745 return target_->get_simple_targeting();
750 return target_->get_support_villages();
755 return target_->get_village_value();
760 return target_->get_villages_per_scout();
765 return target_->is_active(time_of_day, turns);
770 return target_->is_keep_ignoring_leader(
id);
775 return target_->is_passive_leader(
id);
780 return target_->is_passive_keep_sharing_leader(
id);
785 return target_->is_dst_src_valid_lua();
790 return target_->is_dst_src_enemy_valid_lua();
795 return target_->is_src_dst_valid_lua();
800 return target_->is_src_dst_enemy_valid_lua();
805 return target_->invalidate_defensive_position_cache();
810 target_->invalidate_move_maps();
815 return target_->invalidate_keeps_cache();
818 virtual const std::set<map_location>&
keeps()
const override 820 return target_->keeps();
825 return target_->leader_can_reach_keep();
830 return target_->nearest_keep(loc);
835 target_->recalculate_move_maps();
840 target_->recalculate_move_maps_enemy();
845 target_->set_dst_src_valid_lua();
850 target_->set_dst_src_enemy_valid_lua();
855 target_->set_src_dst_valid_lua();
860 target_->set_src_dst_enemy_valid_lua();
865 return target_->suitable_keep(leader_location, leader_paths);
870 return target_->to_readonly_context_config();
875 return target_->unit_stats_cache();
891 init_readonly_context_proxy(target);
902 return target_->execute_attack_action(attacker_loc,defender_loc,attacker_weapon);
907 return target_->execute_move_action(from, to, remove_movement, unreach_is_ok);
912 return target_->execute_recall_action(
id,where,from);
917 return target_->execute_recruit_action(unit_name,where,from);
922 return target_->execute_stopunit_action(unit_location,remove_movement,remove_attacks);
927 return target_->execute_synced_command_action(lua_code,location);
932 return target_->current_team_w();
937 target_->raise_gamestate_changed();
942 return target_->get_info_w();
947 return target_->get_recursion_count();
952 return target_->to_readwrite_context_config();
963 : side_(side), recursion_counter_(0)
984 virtual int get_recursion_count()
const override;
986 virtual config to_side_context_config()
const override;
1015 virtual void on_readonly_context_create()
override;
1018 virtual void handle_generic_event(
const std::string& event_name)
override;
1021 const team& current_team()
const override;
1024 void diagnostic(
const std::string&
msg)
override;
1027 void log_message(
const std::string& msg)
override;
1107 void calculate_possible_moves(std::map<map_location,pathfind::paths>& possible_moves,
1109 bool assume_full_movement=
false,
1110 const terrain_filter* remove_destinations=
nullptr)
const override;
1119 void calculate_moves(
const unit_map& units,
1120 std::map<map_location,pathfind::paths>& possible_moves,
move_map& srcdst,
1121 move_map& dstsrc,
bool enemy,
bool assume_full_movement=
false,
1122 const terrain_filter* remove_destinations=
nullptr,
1123 bool see_all=
false)
const override;
1125 virtual const game_info& get_info()
const override;
1133 void raise_user_interact()
const override;
1135 virtual int get_recursion_count()
const override;
1141 virtual std::map<map_location,defensive_position>& defensive_position_cache()
const override;
1145 virtual double get_aggression()
const override;
1147 virtual bool get_allow_ally_villages()
const override;
1149 virtual const aspect_map& get_aspects()
const override;
1155 virtual const wfl::variant& get_attacks_as_variant()
const override;
1157 virtual const terrain_filter& get_avoid()
const override;
1159 virtual double get_caution()
const override;
1161 virtual const move_map& get_dstsrc()
const override;
1163 virtual const move_map& get_enemy_dstsrc()
const override;
1165 virtual const moves_map& get_enemy_possible_moves()
const override;
1167 virtual const move_map& get_enemy_srcdst()
const override;
1171 virtual const std::vector<engine_ptr>& get_engines()
const override;
1173 virtual std::vector<engine_ptr>& get_engines()
override;
1175 virtual std::string get_grouping()
const override;
1177 virtual const std::vector<goal_ptr>& get_goals()
const override;
1179 virtual std::vector<goal_ptr>& get_goals()
override;
1181 virtual double get_leader_aggression()
const override;
1183 virtual config get_leader_goal()
const override;
1185 virtual utils::variant<bool, std::vector<std::string>> get_leader_ignores_keep()
const override;
1187 virtual double get_leader_value()
const override;
1189 virtual utils::variant<bool, std::vector<std::string>> get_passive_leader()
const override;
1191 virtual utils::variant<bool, std::vector<std::string>> get_passive_leader_shares_keep()
const override;
1193 virtual const moves_map& get_possible_moves()
const override;
1195 virtual double get_recruitment_diversity()
const override;
1197 virtual const config get_recruitment_instructions()
const override;
1199 virtual const std::vector<std::string> get_recruitment_more()
const override;
1201 virtual const std::vector<std::string> get_recruitment_pattern()
const override;
1203 virtual int get_recruitment_randomness()
const override;
1205 virtual const config get_recruitment_save_gold()
const override;
1207 virtual double get_retreat_enemy_weight()
const override;
1209 virtual double get_retreat_factor()
const override;
1211 virtual double get_scout_village_targeting()
const override;
1213 virtual bool get_simple_targeting()
const override;
1215 virtual const move_map& get_srcdst()
const override;
1217 virtual bool get_support_villages()
const override;
1219 virtual double get_village_value()
const override;
1221 virtual int get_villages_per_scout()
const override;
1225 virtual bool is_keep_ignoring_leader(
const std::string &
id)
const override;
1227 virtual bool is_passive_leader(
const std::string &
id)
const override;
1229 virtual bool is_passive_keep_sharing_leader(
const std::string &
id)
const override;
1231 virtual bool is_dst_src_valid_lua()
const override;
1233 virtual bool is_dst_src_enemy_valid_lua()
const override;
1235 virtual bool is_src_dst_valid_lua()
const override;
1237 virtual bool is_src_dst_enemy_valid_lua()
const override;
1239 virtual void invalidate_defensive_position_cache()
const override;
1241 virtual void invalidate_move_maps()
const override;
1243 virtual void invalidate_keeps_cache()
const override;
1245 virtual const std::set<map_location>& keeps()
const override;
1247 virtual bool leader_can_reach_keep()
const override;
1251 virtual double power_projection(
const map_location& loc,
const move_map& dstsrc)
const override;
1253 virtual void recalculate_move_maps()
const override;
1255 virtual void recalculate_move_maps_enemy()
const override;
1257 virtual void add_aspects(std::vector< aspect_ptr > &aspects)
override;
1259 virtual void add_facet(
const std::string &
id,
const config &cfg)
const override;
1263 virtual void set_dst_src_valid_lua()
override;
1265 virtual void set_dst_src_enemy_valid_lua()
override;
1267 virtual void set_src_dst_valid_lua()
override;
1269 virtual void set_src_dst_enemy_valid_lua()
override;
1273 virtual config to_readonly_context_config()
const override;
1278 template<
typename T>
1281 bool applies_to_leader(
const utils::variant<
bool, std::vector<std::string>> &aspect_value,
const std::string &
id)
const;
1392 virtual stopunit_result_ptr execute_stopunit_action(
const map_location& unit_location,
bool remove_movement =
true,
bool remove_attacks =
false)
override;
1403 virtual team& current_team_w()
override;
1406 void raise_gamestate_changed()
const override;
1412 : recursion_counter_(context.get_recursion_count())
1414 init_readonly_context_proxy(context);
1425 virtual game_info& get_info_w()
override;
1427 virtual int get_recursion_count()
const override;
1429 virtual config to_readwrite_context_config()
const override;
virtual void invalidate_move_maps() const override
typesafe_aspect_ptr< terrain_filter > avoid_
virtual void set_src_dst_valid_lua() override
moves_map possible_moves_
virtual side_number get_side() const override
Get the side number.
side_context_impl(side_number side, const config &)
virtual void raise_user_interact() const override
virtual std::string get_grouping() const override
virtual attack_result_ptr check_attack_action(const map_location &attacker_loc, const map_location &defender_loc, int attacker_weapon) override
static ai::readonly_context & get_readonly_context(lua_State *L)
virtual const move_map & get_enemy_srcdst() const override
virtual int get_villages_per_scout() const override
virtual int get_recursion_count() const override
Get the value of the recursion counter.
virtual side_context & get_side_context() override
unwrap
typesafe_aspect_ptr< bool > simple_targeting_
virtual void log_message(const std::string &msg) override
virtual const attacks_vector & get_attacks() const override
std::shared_ptr< stopunit_result > stopunit_result_ptr
virtual const map_location & nearest_keep(const map_location &loc) const override
This class represents a single unit of a specific type.
virtual bool is_active(const std::string &time_of_day, const std::string &turns) const override
virtual ~readwrite_context()
typesafe_aspect_ptr< config > leader_goal_
virtual const std::set< map_location > & keeps() const override
virtual const config get_recruitment_save_gold() const override
virtual stopunit_result_ptr check_stopunit_action(const map_location &unit_location, bool remove_movement=true, bool remove_attacks=false) override
virtual game_info & get_info_w() override
virtual config to_readwrite_context_config() const override
serialize this context to config
typesafe_aspect_ptr< double > caution_
virtual double get_leader_value() const override
virtual int get_recruitment_randomness() const override
virtual void recalculate_move_maps_enemy() const override
virtual double get_village_value() const override
unit_stats_cache_t unit_stats_cache_
virtual const move_map & get_srcdst() const override
std::shared_ptr< move_result > move_result_ptr
void clear(const std::string &key)
virtual recruit_result_ptr execute_recruit_action(const std::string &unit_name, const map_location &where=map_location::null_location(), const map_location &from=map_location::null_location()) override
readwrite_context_impl(readonly_context &context, const config &)
Constructor.
bool move_maps_enemy_valid_
typesafe_aspect_ptr< double > retreat_factor_
virtual const game_info & get_info() const override
std::vector< goal_ptr > goals_
static void msg(const char *act, debug_info &i, const char *to="", const char *result="")
virtual aspect_map & get_aspects() override
virtual ~side_context_proxy()
std::shared_ptr< recruit_result > recruit_result_ptr
void init_side_context_proxy(side_context &target)
virtual team & current_team_w() override
virtual double get_retreat_factor() const override
virtual void raise_gamestate_changed() const override
virtual bool leader_can_reach_keep() const override
readwrite_context * target_
virtual readonly_context & get_readonly_context() override
Unwrap - this class is not a proxy, so return *this :w
static config unit_name(const unit *u)
bool is_ok() const
Check if more recursion is allowed.
virtual void add_facet(const std::string &id, const config &cfg) const override
std::shared_ptr< attack_result > attack_result_ptr
typesafe_aspect_ptr< double > leader_value_
Definitions for the interface to Wesnoth Markup Language (WML).
virtual void on_readonly_context_create() override
std::map< map_location, defensive_position > defensive_position_cache_
virtual readwrite_context & get_readwrite_context() override
A single unit type that the player may recruit.
typesafe_aspect_ptr< int > villages_per_scout_
virtual recall_result_ptr execute_recall_action(const std::string &id, const map_location &where=map_location::null_location(), const map_location &from=map_location::null_location()) override
virtual const std::vector< std::string > get_recruitment_more() const override
virtual config to_side_context_config() const override
serialize this context to config
virtual unit_stats_cache_t & unit_stats_cache() const override
std::multimap< map_location, map_location > move_map
The standard way in which a map of possible moves is recorded.
typesafe_aspect_ptr< double > retreat_enemy_weight_
std::vector< attack_analysis > attacks_vector
std::map< map_location, pathfind::paths > moves_map
The standard way in which a map of possible movement routes to location is recorded.
virtual const unit_advancements_aspect & get_advancements() const override
virtual ~readonly_context()
static bool is_active(const widget *wgt)
const std::vector< std::string > get_advancements(const unit_map::const_iterator &unit) const
virtual std::vector< engine_ptr > & get_engines() override
Object which defines a time of day with associated bonuses, image, sounds etc.
virtual ~readonly_context_proxy()
virtual utils::variant< bool, std::vector< std::string > > get_passive_leader() const override
virtual const moves_map & get_enemy_possible_moves() const override
This class stores all the data for a single 'side' (in game nomenclature).
Belongs to a non-friendly side; normally visualised by not displaying an orb.
A small explanation about what's going on here: Each action has access to two game_info objects First...
std::shared_ptr< typesafe_aspect< T > > typesafe_aspect_ptr
std::shared_ptr< recall_result > recall_result_ptr
side_context()
empty constructor
struct utils::detail::formula_initer init
recursion_counter(int counter)
virtual void set_src_dst_enemy_valid_lua() override
typesafe_aspect_ptr< bool > allow_ally_villages_
virtual const aspect_map & get_aspects() const override
virtual readwrite_context & get_readwrite_context()=0
virtual void set_side(side_number side) override
Set the side number.
virtual recall_result_ptr check_recall_action(const std::string &id, const map_location &where=map_location::null_location(), const map_location &from=map_location::null_location()) override
const defensive_position & best_defensive_position(const map_location &unit, const move_map &dstsrc, const move_map &srcdst, const move_map &enemy_dstsrc) const override
virtual double get_leader_aggression() const override
virtual const std::vector< goal_ptr > & get_goals() const override
virtual void recalculate_move_maps() const override
virtual utils::variant< bool, std::vector< std::string > > get_leader_ignores_keep() const override
virtual double get_recruitment_diversity() const override
typesafe_aspect_ptr< std::vector< std::string > > recruitment_pattern_
Encapsulates the map of the game.
moves_map enemy_possible_moves_
readonly_context * target_
bool dst_src_enemy_valid_lua_
virtual ~readwrite_context_impl()
virtual bool is_passive_leader(const std::string &id) const override
virtual const move_map & get_enemy_dstsrc() const override
virtual std::vector< goal_ptr > & get_goals() override
virtual const std::vector< std::string > get_recruitment_pattern() const override
typesafe_aspect_ptr< double > scout_village_targeting_
Structure describing the statistics of a unit involved in the battle.
typesafe_aspect_ptr< config > recruitment_instructions_
Error used for any general game error, e.g.
virtual recruit_result_ptr check_recruit_action(const std::string &unit_name, const map_location &where=map_location::null_location(), const map_location &from=map_location::null_location()) override
std::set< map_location > keeps_
virtual side_context & get_side_context()=0
unwrap
recursion_counter recursion_counter_
virtual double get_retreat_enemy_weight() const override
std::shared_ptr< synced_command_result > synced_command_result_ptr
std::map< std::string, known_aspect_ptr > known_aspect_map
virtual ~side_context()
empty destructor
Encapsulates the map of the game.
virtual attack_result_ptr execute_attack_action(const map_location &attacker_loc, const map_location &defender_loc, int attacker_weapon) override
virtual void add_aspects(std::vector< aspect_ptr > &aspects) override
virtual side_context & get_side_context() override
unwrap
virtual void set_side(side_number side) override
Set the side number.
virtual const map_location & suitable_keep(const map_location &leader_location, const pathfind::paths &leader_paths) const override
get most suitable keep for leader - nearest free that can be reached in 1 turn, if none - return near...
std::vector< engine_ptr > engines_
AI Support Engines.
virtual const team & current_team() const override
typesafe_aspect_ptr< bool > support_villages_
Game information for the AI.
virtual engine_ptr get_engine_by_cfg(const config &cfg) override
get engine by cfg, creating it if it is not created yet but known
ai_context * ai_context_ptr
virtual synced_command_result_ptr execute_synced_command_action(const std::string &lua_code, const map_location &location=map_location::null_location()) override
recursion_counter recursion_counter_
typesafe_aspect_ptr< double > leader_aggression_
virtual stopunit_result_ptr execute_stopunit_action(const map_location &unit_location, bool remove_movement=true, bool remove_attacks=false) override
virtual double power_projection(const map_location &loc, const move_map &dstsrc) const override
Function which finds how much 'power' a side can attack a certain location with.
virtual bool is_src_dst_enemy_valid_lua() const override
typesafe_aspect_ptr< utils::variant< bool, std::vector< std::string > > > passive_leader_
virtual double get_scout_village_targeting() const override
virtual side_number get_side() const override
Get the side number.
virtual move_result_ptr check_move_action(const map_location &from, const map_location &to, bool remove_movement=true, bool unreach_is_ok=false) override
typesafe_aspect_ptr< attacks_vector > attacks_
virtual void set_dst_src_valid_lua() override
virtual bool is_passive_keep_sharing_leader(const std::string &id) const override
typesafe_aspect_ptr< unit_advancements_aspect > advancements_
virtual readwrite_context & get_readwrite_context() override
Unwrap - this class is not a proxy, so return *this.
typesafe_aspect_ptr< std::vector< std::string > > recruitment_more_
std::map< std::pair< map_location, const unit_type * >, std::pair< battle_context_unit_stats, battle_context_unit_stats > > unit_stats_cache_t
virtual config to_readonly_context_config() const override
serialize to config
typesafe_aspect_ptr< std::string > grouping_
virtual bool get_allow_ally_villages() const override
virtual ~side_context_impl()
virtual const move_map & get_dstsrc() const override
virtual bool is_dst_src_enemy_valid_lua() const override
virtual double get_aggression() const override
virtual const wfl::variant & get_attacks_as_variant() const override
std::map< std::string, aspect_ptr > aspect_map
recursion_counter recursion_counter_
virtual readonly_context & get_readonly_context() override
virtual void calculate_possible_moves(std::map< map_location, pathfind::paths > &possible_moves, move_map &srcdst, move_map &dstsrc, bool enemy, bool assume_full_movement=false, const terrain_filter *remove_destinations=nullptr) const override
virtual int get_recursion_count() const override
Get the value of the recursion counter.
virtual synced_command_result_ptr check_synced_command_action(const std::string &lua_code, const map_location &location=map_location::null_location()) override
typesafe_aspect_ptr< utils::variant< bool, std::vector< std::string > > > leader_ignores_keep_
virtual readonly_context & get_readonly_context()=0
virtual int get_recursion_count() const override
Get the value of the recursion counter.
virtual std::map< map_location, defensive_position > & defensive_position_cache() const override
known_aspect_map known_aspects_
virtual void set_dst_src_enemy_valid_lua() override
Object which contains all the possible locations a unit can move to, with associated best routes to t...
static const map_location & null_location()
virtual bool is_src_dst_valid_lua() const override
virtual const config get_recruitment_instructions() const override
Container associating units to locations.
virtual bool is_keep_ignoring_leader(const std::string &id) const override
int get_count() const
Get the current value of the recursion counter.
typesafe_aspect_ptr< int > recruitment_randomness_
virtual void calculate_moves(const unit_map &units, std::map< map_location, pathfind::paths > &possible_moves, move_map &srcdst, move_map &dstsrc, bool enemy, bool assume_full_movement=false, const terrain_filter *remove_destinations=nullptr, bool see_all=false) const override
MacOS doesn't support std::visit when targing MacOS < 10.14 (currently we target 10.11).
void init_readwrite_context_proxy(readwrite_context &target)
typesafe_aspect_ptr< double > recruitment_diversity_
virtual bool get_support_villages() const override
virtual void invalidate_keeps_cache() const override
virtual const terrain_filter & get_avoid() const override
virtual void invalidate_defensive_position_cache() const override
typesafe_aspect_ptr< double > aggression_
readwrite_context_proxy()
std::shared_ptr< engine > engine_ptr
A config object defines a single node in a WML file, with access to child nodes.
virtual move_result_ptr execute_move_action(const map_location &from, const map_location &to, bool remove_movement=true, bool unreach_is_ok=false) override
typesafe_aspect_ptr< utils::variant< bool, std::vector< std::string > > > passive_leader_shares_keep_
virtual bool is_dst_src_valid_lua() const override
virtual double get_caution() const override
virtual utils::variant< bool, std::vector< std::string > > get_passive_leader_shares_keep() const override
virtual const std::vector< engine_ptr > & get_engines() const override
typesafe_aspect_ptr< config > recruitment_save_gold_
virtual const moves_map & get_possible_moves() const override
typesafe_aspect_ptr< double > village_value_
virtual bool get_simple_targeting() const override
virtual config get_leader_goal() const override
virtual void diagnostic(const std::string &msg) override
void init_readonly_context_proxy(readonly_context &target)
bool src_dst_enemy_valid_lua_