Add aspects for new recruitment CA.
The aspects are: - recruitment_diversity - recruitment_instructions - recruitment_more - recruitment_randomness - recruitment_save_gold All aspects will only work with the new recruitment CA (not committed yet). See http://wiki.wesnoth.org/AI_Recruitment
This commit is contained in:
parent
fb4361d666
commit
4959db0952
6 changed files with 213 additions and 11 deletions
|
@ -77,9 +77,41 @@
|
|||
[/value]
|
||||
[/default]
|
||||
[/aspect]
|
||||
{DEFAULT_ASPECT_VALUE recruitment_diversity 1.0}
|
||||
{DEFAULT_ASPECT_VALUE recruitment_ignore_bad_combat no}
|
||||
{DEFAULT_ASPECT_VALUE recruitment_ignore_bad_movement no}
|
||||
[aspect]
|
||||
id=recruitment_instructions
|
||||
engine=cpp
|
||||
name=composite_aspect
|
||||
[default]
|
||||
engine=cpp
|
||||
name=standard_aspect
|
||||
[value]
|
||||
[recruit]
|
||||
importance=0
|
||||
[/recruit]
|
||||
[/value]
|
||||
[/default]
|
||||
[/aspect]
|
||||
{DEFAULT_ASPECT_EMPTY recruitment_more}
|
||||
{DEFAULT_ASPECT_EMPTY recruitment_pattern}
|
||||
{DEFAULT_ASPECT_VALUE recruitment_randomness 15}
|
||||
[aspect]
|
||||
id=recruitment_save_gold
|
||||
engine=cpp
|
||||
name=composite_aspect
|
||||
[default]
|
||||
engine=cpp
|
||||
name=standard_aspect
|
||||
[value]
|
||||
active=yes
|
||||
begin=1.0
|
||||
end=0.7
|
||||
spend_all_gold=-1
|
||||
[/value]
|
||||
[/default]
|
||||
[/aspect]
|
||||
{DEFAULT_ASPECT_VALUE scout_village_targeting 3}
|
||||
{DEFAULT_ASPECT_VALUE simple_targeting no}
|
||||
{DEFAULT_ASPECT_VALUE support_villages no}
|
||||
|
|
|
@ -76,9 +76,14 @@ void configuration::init(const config &game_config)
|
|||
well_known_aspects.push_back(well_known_aspect("passive_leader"));
|
||||
well_known_aspects.push_back(well_known_aspect("passive_leader_shares_keep"));
|
||||
well_known_aspects.push_back(well_known_aspect("recruitment"));
|
||||
well_known_aspects.push_back(well_known_aspect("recruitment_diversity"));
|
||||
well_known_aspects.push_back(well_known_aspect("recruitment_ignore_bad_combat"));
|
||||
well_known_aspects.push_back(well_known_aspect("recruitment_ignore_bad_movement"));
|
||||
well_known_aspects.push_back(well_known_aspect("recruitment_instructions"));
|
||||
well_known_aspects.push_back(well_known_aspect("recruitment_more"));
|
||||
well_known_aspects.push_back(well_known_aspect("recruitment_pattern"));
|
||||
well_known_aspects.push_back(well_known_aspect("recruitment_randomness"));
|
||||
well_known_aspects.push_back(well_known_aspect("recruitment_save_gold"));
|
||||
well_known_aspects.push_back(well_known_aspect("scout_village_targeting"));
|
||||
well_known_aspects.push_back(well_known_aspect("simple_targeting"));
|
||||
well_known_aspects.push_back(well_known_aspect("support_villages"));
|
||||
|
|
|
@ -183,9 +183,14 @@ readonly_context_impl::readonly_context_impl(side_context &context, const config
|
|||
passive_leader_shares_keep_(),
|
||||
possible_moves_(),
|
||||
recruitment_(),
|
||||
recruitment_diversity_(),
|
||||
recruitment_ignore_bad_combat_(),
|
||||
recruitment_ignore_bad_movement_(),
|
||||
recruitment_instructions_(),
|
||||
recruitment_more_(),
|
||||
recruitment_pattern_(),
|
||||
recruitment_randomness_(),
|
||||
recruitment_save_gold_(),
|
||||
recursion_counter_(context.get_recursion_count()),
|
||||
scout_village_targeting_(),
|
||||
simple_targeting_(),
|
||||
|
@ -213,9 +218,14 @@ readonly_context_impl::readonly_context_impl(side_context &context, const config
|
|||
add_known_aspect("passive_leader",passive_leader_);
|
||||
add_known_aspect("passive_leader_shares_keep",passive_leader_shares_keep_);
|
||||
add_known_aspect("recruitment",recruitment_);
|
||||
add_known_aspect("recruitment_diversity",recruitment_diversity_);
|
||||
add_known_aspect("recruitment_ignore_bad_combat",recruitment_ignore_bad_combat_);
|
||||
add_known_aspect("recruitment_ignore_bad_movement",recruitment_ignore_bad_movement_);
|
||||
add_known_aspect("recruitment_instructions",recruitment_instructions_);
|
||||
add_known_aspect("recruitment_more",recruitment_more_);
|
||||
add_known_aspect("recruitment_pattern",recruitment_pattern_);
|
||||
add_known_aspect("recruitment_randomness",recruitment_randomness_);
|
||||
add_known_aspect("recruitment_save_gold",recruitment_save_gold_);
|
||||
add_known_aspect("scout_village_targeting",scout_village_targeting_);
|
||||
add_known_aspect("simple_targeting",simple_targeting_);
|
||||
add_known_aspect("support_villages",support_villages_);
|
||||
|
@ -777,6 +787,15 @@ stage_ptr readonly_context_impl::get_recruitment(ai_context &context) const
|
|||
}
|
||||
|
||||
|
||||
double readonly_context_impl::get_recruitment_diversity() const
|
||||
{
|
||||
if (recruitment_diversity_) {
|
||||
return recruitment_diversity_->get();
|
||||
}
|
||||
return 0.;
|
||||
}
|
||||
|
||||
|
||||
bool readonly_context_impl::get_recruitment_ignore_bad_combat() const
|
||||
{
|
||||
if (recruitment_ignore_bad_combat_) {
|
||||
|
@ -795,6 +814,24 @@ bool readonly_context_impl::get_recruitment_ignore_bad_movement() const
|
|||
}
|
||||
|
||||
|
||||
const config readonly_context_impl::get_recruitment_instructions() const
|
||||
{
|
||||
if (recruitment_instructions_) {
|
||||
return recruitment_instructions_->get();
|
||||
}
|
||||
return config();
|
||||
}
|
||||
|
||||
|
||||
const std::vector<std::string> readonly_context_impl::get_recruitment_more() const
|
||||
{
|
||||
if (recruitment_more_) {
|
||||
return recruitment_more_->get();
|
||||
}
|
||||
return std::vector<std::string>();
|
||||
}
|
||||
|
||||
|
||||
const std::vector<std::string> readonly_context_impl::get_recruitment_pattern() const
|
||||
{
|
||||
if (recruitment_pattern_) {
|
||||
|
@ -804,6 +841,24 @@ const std::vector<std::string> readonly_context_impl::get_recruitment_pattern()
|
|||
}
|
||||
|
||||
|
||||
int readonly_context_impl::get_recruitment_randomness() const
|
||||
{
|
||||
if (recruitment_randomness_) {
|
||||
return recruitment_randomness_->get();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
const config readonly_context_impl::get_recruitment_save_gold() const
|
||||
{
|
||||
if (recruitment_save_gold_) {
|
||||
return recruitment_save_gold_->get();
|
||||
}
|
||||
return config();
|
||||
}
|
||||
|
||||
|
||||
double readonly_context_impl::get_scout_village_targeting() const
|
||||
{
|
||||
if (scout_village_targeting_) {
|
||||
|
|
|
@ -303,15 +303,30 @@ public:
|
|||
virtual stage_ptr get_recruitment(ai_context &context) const = 0;
|
||||
|
||||
|
||||
virtual double get_recruitment_diversity() const = 0;
|
||||
|
||||
|
||||
virtual bool get_recruitment_ignore_bad_combat() const = 0;
|
||||
|
||||
|
||||
virtual bool get_recruitment_ignore_bad_movement() const = 0;
|
||||
|
||||
|
||||
virtual const config get_recruitment_instructions() const = 0;
|
||||
|
||||
|
||||
virtual const std::vector<std::string> get_recruitment_more() const = 0;
|
||||
|
||||
|
||||
virtual const std::vector<std::string> get_recruitment_pattern() const = 0;
|
||||
|
||||
|
||||
virtual int get_recruitment_randomness() const = 0;
|
||||
|
||||
|
||||
virtual const config get_recruitment_save_gold() const = 0;
|
||||
|
||||
|
||||
virtual double get_scout_village_targeting() const = 0;
|
||||
|
||||
|
||||
|
@ -807,6 +822,12 @@ public:
|
|||
}
|
||||
|
||||
|
||||
virtual double get_recruitment_diversity() const
|
||||
{
|
||||
return target_->get_recruitment_diversity();
|
||||
}
|
||||
|
||||
|
||||
virtual bool get_recruitment_ignore_bad_combat() const
|
||||
{
|
||||
return target_->get_recruitment_ignore_bad_combat();
|
||||
|
@ -819,12 +840,36 @@ public:
|
|||
}
|
||||
|
||||
|
||||
virtual const config get_recruitment_instructions() const
|
||||
{
|
||||
return target_->get_recruitment_instructions();
|
||||
}
|
||||
|
||||
|
||||
virtual const std::vector<std::string> get_recruitment_more() const
|
||||
{
|
||||
return target_->get_recruitment_more();
|
||||
}
|
||||
|
||||
|
||||
virtual const std::vector<std::string> get_recruitment_pattern() const
|
||||
{
|
||||
return target_->get_recruitment_pattern();
|
||||
}
|
||||
|
||||
|
||||
virtual int get_recruitment_randomness() const
|
||||
{
|
||||
return target_->get_recruitment_randomness();
|
||||
}
|
||||
|
||||
|
||||
virtual const config get_recruitment_save_gold() const
|
||||
{
|
||||
return target_->get_recruitment_save_gold();
|
||||
}
|
||||
|
||||
|
||||
virtual const move_map& get_srcdst() const
|
||||
{
|
||||
return target_->get_srcdst();
|
||||
|
@ -1362,15 +1407,30 @@ public:
|
|||
virtual stage_ptr get_recruitment(ai_context &context) const;
|
||||
|
||||
|
||||
virtual double get_recruitment_diversity() const;
|
||||
|
||||
|
||||
virtual bool get_recruitment_ignore_bad_combat() const;
|
||||
|
||||
|
||||
virtual bool get_recruitment_ignore_bad_movement() const;
|
||||
|
||||
|
||||
virtual const config get_recruitment_instructions() const;
|
||||
|
||||
|
||||
virtual const std::vector<std::string> get_recruitment_more() const;
|
||||
|
||||
|
||||
virtual const std::vector<std::string> get_recruitment_pattern() const;
|
||||
|
||||
|
||||
virtual int get_recruitment_randomness() const;
|
||||
|
||||
|
||||
virtual const config get_recruitment_save_gold() const;
|
||||
|
||||
|
||||
virtual double get_scout_village_targeting() const;
|
||||
|
||||
|
||||
|
@ -1493,9 +1553,14 @@ private:
|
|||
aspect_type<bool>::typesafe_ptr passive_leader_shares_keep_;
|
||||
mutable moves_map possible_moves_;
|
||||
aspect_type< ministage >::typesafe_ptr recruitment_;
|
||||
aspect_type< double >::typesafe_ptr recruitment_diversity_;
|
||||
aspect_type< bool >::typesafe_ptr recruitment_ignore_bad_combat_;
|
||||
aspect_type< bool >::typesafe_ptr recruitment_ignore_bad_movement_;
|
||||
aspect_type< config >::typesafe_ptr recruitment_instructions_;
|
||||
aspect_type< std::vector<std::string> >::typesafe_ptr recruitment_more_;
|
||||
aspect_type< std::vector<std::string> >::typesafe_ptr recruitment_pattern_;
|
||||
aspect_type< int >::typesafe_ptr recruitment_randomness_;
|
||||
aspect_type< config >::typesafe_ptr recruitment_save_gold_;
|
||||
recursion_counter recursion_counter_;
|
||||
aspect_type< double >::typesafe_ptr scout_village_targeting_;
|
||||
aspect_type< bool >::typesafe_ptr simple_targeting_;
|
||||
|
|
|
@ -245,16 +245,16 @@ const std::string holder::get_ai_overview()
|
|||
s << "number_of_possible_recruits_to_force_recruit: " << this->ai_->get_number_of_possible_recruits_to_force_recruit() << std::endl;
|
||||
s << "passive_leader: " << this->ai_->get_passive_leader() << std::endl;
|
||||
s << "passive_leader_shares_keep: " << this->ai_->get_passive_leader_shares_keep() << std::endl;
|
||||
s << "recruitment_diversity: " << this->ai_->get_recruitment_diversity() << std::endl;
|
||||
s << "recruitment_ignore_bad_combat: " << this->ai_->get_recruitment_ignore_bad_combat() << std::endl;
|
||||
s << "recruitment_ignore_bad_movement: " << this->ai_->get_recruitment_ignore_bad_movement() << std::endl;
|
||||
// s << "recruitment_pattern: ";
|
||||
// for(std::vector<std::string>::const_iterator i = this->ai_->get_recruitment_pattern().begin(); i != this->ai_->get_recruitment_pattern().end(); ++i) {
|
||||
// if(i != this->ai_->get_recruitment_pattern().begin())
|
||||
// s << ",";
|
||||
//
|
||||
// s << *i;
|
||||
// }
|
||||
// s << std::endl;
|
||||
s << "recruitment_instructions: " << std::endl << "----config begin----" << std::endl;
|
||||
s << this->ai_->get_recruitment_instructions() << "-----config end-----" << std::endl;
|
||||
s << "recruitment_more: " << utils::join(this->ai_->get_recruitment_more()) << std::endl;
|
||||
s << "recruitment_pattern: " << utils::join(this->ai_->get_recruitment_pattern()) << std::endl;
|
||||
s << "recruitment_randomness: " << this->ai_->get_recruitment_randomness() << std::endl;
|
||||
s << "recruitment_save_gold: " << std::endl << "----config begin----" << std::endl;
|
||||
s << this->ai_->get_recruitment_save_gold() << "-----config end-----" << std::endl;
|
||||
s << "scout_village_targeting: " << this->ai_->get_scout_village_targeting() << std::endl;
|
||||
s << "simple_targeting: " << this->ai_->get_simple_targeting() << std::endl;
|
||||
s << "support_villages: " << this->ai_->get_support_villages() << std::endl;
|
||||
|
|
|
@ -269,7 +269,10 @@ static register_aspect_factory< composite_aspect<bool> >
|
|||
passive_leader_shares_keep__composite_aspect_factory("passive_leader_shares_keep*composite_aspect");
|
||||
|
||||
static register_aspect_factory< composite_aspect<ministage> >
|
||||
recruitment__composite_aspect_factory("recruitment*composite_aspect");
|
||||
recruitment__composite_aspect_factory("recruitment*composite_aspect");
|
||||
|
||||
static register_aspect_factory< composite_aspect<double> >
|
||||
recruitment_diversity__composite_aspect_factory("recruitment_diversity*composite_aspect");
|
||||
|
||||
static register_aspect_factory< composite_aspect<bool> >
|
||||
recruitment_ignore_bad_combat__composite_aspect_factory("recruitment_ignore_bad_combat*composite_aspect");
|
||||
|
@ -277,9 +280,21 @@ static register_aspect_factory< composite_aspect<bool> >
|
|||
static register_aspect_factory< composite_aspect<bool> >
|
||||
recruitment_ignore_bad_movement__composite_aspect_factory("recruitment_ignore_bad_movement*composite_aspect");
|
||||
|
||||
static register_aspect_factory< composite_aspect<config> >
|
||||
recruitment_instructions__composite_aspect_factory("recruitment_instructions*composite_aspect");
|
||||
|
||||
static register_aspect_factory< composite_aspect< std::vector<std::string> > >
|
||||
recruitment_more__composite_aspect_factory("recruitment_more*composite_aspect");
|
||||
|
||||
static register_aspect_factory< composite_aspect< std::vector<std::string> > >
|
||||
recruitment_pattern__composite_aspect_factory("recruitment_pattern*composite_aspect");
|
||||
|
||||
static register_aspect_factory< composite_aspect<int> >
|
||||
recruitment_randomness__composite_aspect_factory("recruitment_randomness*composite_aspect");
|
||||
|
||||
static register_aspect_factory< composite_aspect<config> >
|
||||
recruitment_save_gold__composite_aspect_factory("recruitment_save_gold*composite_aspect");
|
||||
|
||||
static register_aspect_factory< composite_aspect<double> >
|
||||
scout_village_targeting__composite_aspect_factory("scout_village_targeting*composite_aspect");
|
||||
|
||||
|
@ -340,7 +355,10 @@ static register_aspect_factory< standard_aspect<bool> >
|
|||
passive_leader_shares_keep__standard_aspect_factory("passive_leader_shares_keep*standard_aspect");
|
||||
|
||||
static register_aspect_factory< standard_aspect<ministage> >
|
||||
recruitment__standard_aspect_factory("recruitment*standard_aspect");
|
||||
recruitment__standard_aspect_factory("recruitment*standard_aspect");
|
||||
|
||||
static register_aspect_factory< standard_aspect<double> >
|
||||
recruitment_diversity__standard_aspect_factory("recruitment_diversity*standard_aspect");
|
||||
|
||||
static register_aspect_factory< standard_aspect<bool> >
|
||||
recruitment_ignore_bad_combat__standard_aspect_factory("recruitment_ignore_bad_combat*standard_aspect");
|
||||
|
@ -348,9 +366,21 @@ static register_aspect_factory< standard_aspect<bool> >
|
|||
static register_aspect_factory< standard_aspect<bool> >
|
||||
recruitment_ignore_bad_movement__standard_aspect_factory("recruitment_ignore_bad_movement*standard_aspect");
|
||||
|
||||
static register_aspect_factory< standard_aspect<config> >
|
||||
recruitment_instructions__standard_aspect_factory("recruitment_instructions*standard_aspect");
|
||||
|
||||
static register_aspect_factory< standard_aspect< std::vector<std::string> > >
|
||||
recruitment_more__standard_aspect_factory("recruitment_more*standard_aspect");
|
||||
|
||||
static register_aspect_factory< standard_aspect< std::vector<std::string> > >
|
||||
recruitment_pattern__standard_aspect_factory("recruitment_pattern*standard_aspect");
|
||||
|
||||
static register_aspect_factory< standard_aspect<int> >
|
||||
recruitment_randomness__standard_aspect_factory("recruitment_randomness*standard_aspect");
|
||||
|
||||
static register_aspect_factory< standard_aspect<config> >
|
||||
recruitment_save_gold__standard_aspect_factory("recruitment_save_gold*standard_aspect");
|
||||
|
||||
static register_aspect_factory< standard_aspect<double> >
|
||||
scout_village_targeting__standard_aspect_factory("scout_village_targeting*standard_aspect");
|
||||
|
||||
|
@ -415,7 +445,10 @@ static register_aspect_factory< standard_aspect<bool> >
|
|||
passive_leader_shares_keep__standard_aspect_factory2("passive_leader_shares_keep*");
|
||||
|
||||
static register_aspect_factory< standard_aspect<ministage> >
|
||||
recruitment__standard_aspect_factory2("recruitment*");
|
||||
recruitment__standard_aspect_factory2("recruitment*");
|
||||
|
||||
static register_aspect_factory< standard_aspect<double> >
|
||||
recruitment_diversity__standard_aspect_factory2("recruitment_diversity*");
|
||||
|
||||
static register_aspect_factory< standard_aspect<bool> >
|
||||
recruitment_ignore_bad_combat__standard_aspect_factory2("recruitment_ignore_bad_combat*");
|
||||
|
@ -423,9 +456,21 @@ static register_aspect_factory< standard_aspect<bool> >
|
|||
static register_aspect_factory< standard_aspect<bool> >
|
||||
recruitment_ignore_bad_movement__standard_aspect_factory2("recruitment_ignore_bad_movement*");
|
||||
|
||||
static register_aspect_factory< standard_aspect<config> >
|
||||
recruitment_instructions__standard_aspect_factory2("recruitment_instructions*");
|
||||
|
||||
static register_aspect_factory< standard_aspect< std::vector<std::string> > >
|
||||
recruitment_more__standard_aspect_factory2("recruitment_more*");
|
||||
|
||||
static register_aspect_factory< standard_aspect< std::vector<std::string> > >
|
||||
recruitment_pattern__standard_aspect_factory2("recruitment_pattern*");
|
||||
|
||||
static register_aspect_factory< standard_aspect<int> >
|
||||
recruitment_randomness__standard_aspect_factory2("recruitment_randomness*");
|
||||
|
||||
static register_aspect_factory< standard_aspect<config> >
|
||||
recruitment_save_gold__standard_aspect_factory2("recruitment_save_gold*");
|
||||
|
||||
static register_aspect_factory< standard_aspect<double> >
|
||||
scout_village_targeting__standard_aspect_factory2("scout_village_targeting*");
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue