Skip to content

Commit

Permalink
Deployed formula_callable::add_input en-masse
Browse files Browse the repository at this point in the history
  • Loading branch information
Vultraz committed Mar 29, 2017
1 parent 9431ae3 commit 525a813
Show file tree
Hide file tree
Showing 13 changed files with 132 additions and 135 deletions.
37 changes: 18 additions & 19 deletions src/ai/default/attack.cpp
Expand Up @@ -379,26 +379,25 @@ variant attack_analysis::get_value(const std::string& key) const
}
}

void attack_analysis::get_inputs(std::vector<game_logic::formula_input>* inputs) const
void attack_analysis::get_inputs(game_logic::formula_input_vector* inputs) const
{
using namespace game_logic;
inputs->push_back(formula_input("target", FORMULA_READ_ONLY));
inputs->push_back(formula_input("movements", FORMULA_READ_ONLY));
inputs->push_back(formula_input("units", FORMULA_READ_ONLY));
inputs->push_back(formula_input("target_value", FORMULA_READ_ONLY));
inputs->push_back(formula_input("avg_losses", FORMULA_READ_ONLY));
inputs->push_back(formula_input("chance_to_kill", FORMULA_READ_ONLY));
inputs->push_back(formula_input("avg_damage_inflicted", FORMULA_READ_ONLY));
inputs->push_back(formula_input("target_starting_damage", FORMULA_READ_ONLY));
inputs->push_back(formula_input("avg_damage_taken", FORMULA_READ_ONLY));
inputs->push_back(formula_input("resources_used", FORMULA_READ_ONLY));
inputs->push_back(formula_input("terrain_quality", FORMULA_READ_ONLY));
inputs->push_back(formula_input("alternative_terrain_quality", FORMULA_READ_ONLY));
inputs->push_back(formula_input("vulnerability", FORMULA_READ_ONLY));
inputs->push_back(formula_input("support", FORMULA_READ_ONLY));
inputs->push_back(formula_input("leader_threat", FORMULA_READ_ONLY));
inputs->push_back(formula_input("uses_leader", FORMULA_READ_ONLY));
inputs->push_back(formula_input("is_surrounded", FORMULA_READ_ONLY));
add_input(inputs, "target");
add_input(inputs, "movements");
add_input(inputs, "units");
add_input(inputs, "target_value");
add_input(inputs, "avg_losses");
add_input(inputs, "chance_to_kill");
add_input(inputs, "avg_damage_inflicted");
add_input(inputs, "target_starting_damage");
add_input(inputs, "avg_damage_taken");
add_input(inputs, "resources_used");
add_input(inputs, "terrain_quality");
add_input(inputs, "alternative_terrain_quality");
add_input(inputs, "vulnerability");
add_input(inputs, "support");
add_input(inputs, "leader_threat");
add_input(inputs, "uses_leader");
add_input(inputs, "is_surrounded");
}

} //end of namespace ai
2 changes: 1 addition & 1 deletion src/ai/default/contexts.hpp
Expand Up @@ -86,7 +86,7 @@ class attack_analysis : public game_logic::formula_callable

double rating(double aggression, const readonly_context& ai_obj) const;
variant get_value(const std::string& key) const;
void get_inputs(std::vector<game_logic::formula_input>* inputs) const;
void get_inputs(game_logic::formula_input_vector* inputs) const;

bool attack_close(const map_location& loc) const;

Expand Down
55 changes: 27 additions & 28 deletions src/ai/formula/ai.cpp
Expand Up @@ -855,34 +855,33 @@ variant formula_ai::get_value(const std::string& key) const

void formula_ai::get_inputs(std::vector<formula_input>* inputs) const
{
using game_logic::FORMULA_READ_ONLY;
inputs->push_back(game_logic::formula_input("aggression", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("leader_aggression", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("caution", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("attacks", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("my_side", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("teams", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("turn", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("time_of_day", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("keeps", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("vars", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("allies", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("enemies", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("map", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("my_attacks", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("enemy_moves", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("my_leader", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("my_recruits", FORMULA_READ_ONLY));
//inputs->push_back(game_logic::formula_input("recall_list", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("recruits_of_side", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("units", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("units_of_side", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("my_units", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("enemy_units", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("villages", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("my_villages", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("villages_of_side", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("enemy_and_unowned_villages", FORMULA_READ_ONLY));
add_input(inputs, "aggression");
add_input(inputs, "leader_aggression");
add_input(inputs, "caution");
add_input(inputs, "attacks");
add_input(inputs, "my_side");
add_input(inputs, "teams");
add_input(inputs, "turn");
add_input(inputs, "time_of_day");
add_input(inputs, "keeps");
add_input(inputs, "vars");
add_input(inputs, "allies");
add_input(inputs, "enemies");
add_input(inputs, "map");
add_input(inputs, "my_attacks");
add_input(inputs, "enemy_moves");
add_input(inputs, "my_leader");
add_input(inputs, "my_recruits");
//add_input(inputs, "recall_list");
add_input(inputs, "recruits_of_side");
add_input(inputs, "units");
add_input(inputs, "units_of_side");
add_input(inputs, "my_units");
add_input(inputs, "enemy_units");
add_input(inputs, "villages");
add_input(inputs, "my_villages");
add_input(inputs, "villages_of_side");
add_input(inputs, "enemy_and_unowned_villages");
}

variant formula_ai::get_keeps() const
Expand Down
2 changes: 1 addition & 1 deletion src/ai/formula/ai.hpp
Expand Up @@ -159,7 +159,7 @@ class formula_ai : public readonly_context_proxy, public game_logic::formula_cal
void display_message(const std::string& msg) const;
variant execute_variant(const variant& var, ai_context &ai_, bool commandline=false);
virtual variant get_value(const std::string& key) const;
virtual void get_inputs(std::vector<game_logic::formula_input>* inputs) const;
virtual void get_inputs(game_logic::formula_input_vector* inputs) const;

mutable variant keeps_cache_;

Expand Down
69 changes: 34 additions & 35 deletions src/ai/formula/callable_objects.cpp
Expand Up @@ -41,10 +41,9 @@ variant move_map_callable::get_value(const std::string& key) const
}
}

void move_map_callable::get_inputs(std::vector<game_logic::formula_input>* inputs) const
void move_map_callable::get_inputs(formula_input_vector* inputs) const
{
using game_logic::FORMULA_READ_ONLY;
inputs->push_back(game_logic::formula_input("moves", FORMULA_READ_ONLY));
add_input(inputs, "moves");
}

int move_callable::do_compare(const formula_callable* callable) const
Expand Down Expand Up @@ -89,8 +88,8 @@ variant position_callable::get_value(const std::string& key) const {
}
}

void position_callable::get_inputs(std::vector<game_logic::formula_input>* inputs) const {
inputs->push_back(game_logic::formula_input("chance", game_logic::FORMULA_READ_ONLY));
void position_callable::get_inputs(formula_input_vector* inputs) const {
add_input(inputs, "chance");
}

variant outcome_callable::get_value(const std::string& key) const {
Expand All @@ -105,10 +104,10 @@ variant outcome_callable::get_value(const std::string& key) const {
}
}

void outcome_callable::get_inputs(std::vector<game_logic::formula_input>* inputs) const {
inputs->push_back(game_logic::formula_input("hitpoints_left", game_logic::FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("probability", game_logic::FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("possible_status", game_logic::FORMULA_READ_ONLY));
void outcome_callable::get_inputs(formula_input_vector* inputs) const {
add_input(inputs, "hitpoints_left");
add_input(inputs, "probability");
add_input(inputs, "possible_status");
}


Expand All @@ -134,10 +133,10 @@ variant attack_callable::get_value(const std::string& key) const {
}
}

void attack_callable::get_inputs(std::vector<game_logic::formula_input>* inputs) const {
inputs->push_back(game_logic::formula_input("attack_from", game_logic::FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("defender", game_logic::FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("move_from", game_logic::FORMULA_READ_ONLY));
void attack_callable::get_inputs(formula_input_vector* inputs) const {
add_input(inputs, "attack_from");
add_input(inputs, "defender");
add_input(inputs, "move_from");
}

int attack_callable::do_compare(const game_logic::formula_callable* callable)
Expand Down Expand Up @@ -190,8 +189,8 @@ variant attack_map_callable::get_value(const std::string& key) const {
}
}

void attack_map_callable::get_inputs(std::vector<game_logic::formula_input>* inputs) const {
inputs->push_back(game_logic::formula_input("attacks", game_logic::FORMULA_READ_ONLY));
void attack_map_callable::get_inputs(formula_input_vector* inputs) const {
add_input(inputs, "attacks");
}

/* add to vars all attacks on enemy units around <attack_position> tile. attacker_location is tile where unit is currently standing. It's moved to attack_position first and then performs attack.*/
Expand Down Expand Up @@ -227,9 +226,9 @@ variant recall_callable::get_value(const std::string& key) const {
return variant();
}

void recall_callable::get_inputs(std::vector<game_logic::formula_input>* inputs) const {
inputs->push_back(game_logic::formula_input("id", game_logic::FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("loc", game_logic::FORMULA_READ_ONLY));
void recall_callable::get_inputs(formula_input_vector* inputs) const {
add_input(inputs, "id");
add_input(inputs, "loc");
}


Expand All @@ -242,9 +241,9 @@ variant recruit_callable::get_value(const std::string& key) const {
return variant();
}

void recruit_callable::get_inputs(std::vector<game_logic::formula_input>* inputs) const {
inputs->push_back(game_logic::formula_input("unit_type", game_logic::FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("recruit_loc", game_logic::FORMULA_READ_ONLY));
void recruit_callable::get_inputs(formula_input_vector* inputs) const {
add_input(inputs, "unit_type");
add_input(inputs, "recruit_loc");
}


Expand All @@ -258,9 +257,9 @@ variant set_var_callable::get_value(const std::string& key) const {
return variant();
}

void set_var_callable::get_inputs(std::vector<game_logic::formula_input>* inputs) const {
inputs->push_back(game_logic::formula_input("key", game_logic::FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("value", game_logic::FORMULA_READ_ONLY));
void set_var_callable::get_inputs(formula_input_vector* inputs) const {
add_input(inputs, "key");
add_input(inputs, "value");
}


Expand All @@ -277,10 +276,10 @@ variant set_unit_var_callable::get_value(const std::string& key) const {
return variant();
}

void set_unit_var_callable::get_inputs(std::vector<game_logic::formula_input>* inputs) const {
inputs->push_back(game_logic::formula_input("loc", game_logic::FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("key", game_logic::FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("value", game_logic::FORMULA_READ_ONLY));
void set_unit_var_callable::get_inputs(formula_input_vector* inputs) const {
add_input(inputs, "loc");
add_input(inputs, "key");
add_input(inputs, "value");
}


Expand All @@ -294,9 +293,9 @@ variant safe_call_callable::get_value(const std::string& key) const {
return variant();
}

void safe_call_callable::get_inputs(std::vector<game_logic::formula_input>* inputs) const {
inputs->push_back(game_logic::formula_input("main", game_logic::FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("backup", game_logic::FORMULA_READ_ONLY));
void safe_call_callable::get_inputs(formula_input_vector* inputs) const {
add_input(inputs, "main");
add_input(inputs, "backup");
}


Expand All @@ -317,11 +316,11 @@ variant safe_call_result::get_value(const std::string& key) const {
return variant();
}

void safe_call_result::get_inputs(std::vector<game_logic::formula_input>* inputs) const {
inputs->push_back(game_logic::formula_input("status", game_logic::FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("object", game_logic::FORMULA_READ_ONLY));
void safe_call_result::get_inputs(formula_input_vector* inputs) const {
add_input(inputs, "status");
add_input(inputs, "object");
if( current_unit_location_ != map_location() )
inputs->push_back(game_logic::formula_input("current_loc", game_logic::FORMULA_READ_ONLY));
add_input(inputs, "current_loc");
}

}
34 changes: 17 additions & 17 deletions src/ai/formula/callable_objects.hpp
Expand Up @@ -39,7 +39,7 @@ class attack_map_callable : public formula_callable {

variant get_value(const std::string& key) const;

void get_inputs(std::vector<game_logic::formula_input>* inputs) const;
void get_inputs(formula_input_vector* inputs) const;

/* add to vars all attacks on enemy units around <attack_position> tile. attacker_location is tile where unit is currently standing. It's moved to attack_position first and then performs attack.*/
void collect_possible_attacks(std::vector<variant>& vars, map_location attacker_location, map_location attack_position) const;
Expand All @@ -50,7 +50,7 @@ class attack_callable : public formula_callable {
battle_context bc_;
variant get_value(const std::string& key) const;

void get_inputs(std::vector<game_logic::formula_input>* inputs) const;
void get_inputs(formula_input_vector* inputs) const;
public:
attack_callable(const map_location& move_from,
const map_location& src, const map_location& dst, int weapon);
Expand Down Expand Up @@ -79,9 +79,9 @@ class move_callable : public game_logic::formula_callable {
return variant();
}
}
void get_inputs(std::vector<game_logic::formula_input>* inputs) const {
inputs->push_back(game_logic::formula_input("src", game_logic::FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("dst", game_logic::FORMULA_READ_ONLY));
void get_inputs(formula_input_vector* inputs) const {
add_input(inputs, "src");
add_input(inputs, "dst");
}

int do_compare(const formula_callable* callable) const;
Expand All @@ -108,9 +108,9 @@ class move_partial_callable : public game_logic::formula_callable {
return variant();
}
}
void get_inputs(std::vector<game_logic::formula_input>* inputs) const {
inputs->push_back(game_logic::formula_input("src", game_logic::FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("dst", game_logic::FORMULA_READ_ONLY));
void get_inputs(formula_input_vector* inputs) const {
add_input(inputs, "src");
add_input(inputs, "dst");
}

int do_compare(const formula_callable* callable) const;
Expand All @@ -133,7 +133,7 @@ class recall_callable : public formula_callable {

variant get_value(const std::string& key) const;

void get_inputs(std::vector<game_logic::formula_input>* inputs) const;
void get_inputs(formula_input_vector* inputs) const;
public:
recall_callable(const map_location& loc, const std::string& id)
: loc_(loc), id_(id)
Expand All @@ -150,7 +150,7 @@ class recruit_callable : public formula_callable {

variant get_value(const std::string& key) const;

void get_inputs(std::vector<game_logic::formula_input>* inputs) const;
void get_inputs(formula_input_vector* inputs) const;
public:
recruit_callable(const map_location& loc, const std::string& type)
: loc_(loc), type_(type)
Expand All @@ -166,7 +166,7 @@ class set_var_callable : public formula_callable {
variant value_;
variant get_value(const std::string& key) const;

void get_inputs(std::vector<game_logic::formula_input>* inputs) const;
void get_inputs(formula_input_vector* inputs) const;
public:
set_var_callable(const std::string& key, const variant& value)
: key_(key), value_(value)
Expand All @@ -183,7 +183,7 @@ class set_unit_var_callable : public formula_callable {
map_location loc_;
variant get_value(const std::string& key) const;

void get_inputs(std::vector<game_logic::formula_input>* inputs) const;
void get_inputs(formula_input_vector* inputs) const;
public:
set_unit_var_callable(const std::string& key, const variant& value, const map_location& loc)
: key_(key), value_(value), loc_(loc)
Expand All @@ -207,7 +207,7 @@ class safe_call_callable : public formula_callable {
expression_ptr backup_formula_;
variant get_value(const std::string& key) const;

void get_inputs(std::vector<game_logic::formula_input>* inputs) const;
void get_inputs(formula_input_vector* inputs) const;
public:
safe_call_callable(const variant& main, const expression_ptr& backup)
: main_(main)
Expand All @@ -231,7 +231,7 @@ class safe_call_result : public formula_callable {

variant get_value(const std::string& key) const;

void get_inputs(std::vector<game_logic::formula_input>* inputs) const;
void get_inputs(formula_input_vector* inputs) const;

public:
safe_call_result(const formula_callable* callable, int status,
Expand All @@ -248,7 +248,7 @@ class move_map_callable : public game_logic::formula_callable {
const unit_map& units_;

variant get_value(const std::string& key) const;
void get_inputs(std::vector<game_logic::formula_input>* inputs) const;
void get_inputs(formula_input_vector* inputs) const;
public:
move_map_callable(const move_map& srcdst, const move_map& dstsrc, const unit_map& units)
: srcdst_(srcdst), dstsrc_(dstsrc), units_(units)
Expand All @@ -265,7 +265,7 @@ class position_callable : public formula_callable {
int chance_;
variant get_value(const std::string& key) const;

void get_inputs(std::vector<game_logic::formula_input>* inputs) const;
void get_inputs(formula_input_vector* inputs) const;
public:
position_callable(/*unit_map* units,*/ int chance) :
//units_(),
Expand Down Expand Up @@ -296,7 +296,7 @@ class outcome_callable : public formula_callable {
std::vector<variant> hitLeft_, prob_, status_;
variant get_value(const std::string& key) const;

void get_inputs(std::vector<game_logic::formula_input>* inputs) const;
void get_inputs(formula_input_vector* inputs) const;
public:
outcome_callable( const std::vector<variant>& hitLeft,
const std::vector<variant>& prob,
Expand Down

0 comments on commit 525a813

Please sign in to comment.