More(village related) aspects exposed to lua(http://wiki.wesnoth.org/LuaAI)

This commit is contained in:
Dmitry Kovalenko 2011-06-07 10:38:44 +00:00
parent 65db78e77d
commit 5c7d4d64e5
3 changed files with 78 additions and 11 deletions

View file

@ -197,37 +197,52 @@ Gs^Fp , Gs^Fp , Wwf , Wwf , Mm , Rd
[aspect]
id=number_of_possible_recruits_to_force_recruit
engine=lua
value="0.34"
value=0.34
[/aspect]
[aspect]
id=passive_leader
engine=lua
value="true"
value=true
[/aspect]
[aspect]
id=passive_leader_shares_keep
engine=lua
code="return true"
code=return true
[/aspect]
[aspect]
id=scout_village_targeting
engine=lua
value="0.36"
value=0.36
[/aspect]
[aspect]
id=simple_targeting
engine=lua
value="true"
value=true
[/aspect]
[aspect]
id=recruitment_ignore_bad_combat
engine=lua
value="false"
value=false
[/aspect]
[aspect]
id=recruitment_ignore_bad_movement
id=village_value
engine=lua
value="true"
value=1.2
[/aspect]
[aspect]
id=support_villages
engine=lua
value=true
[/aspect]
[aspect]
id=villages_per_scout
engine=lua
value=2
[/aspect]
[aspect]
id=grouping
engine=lua
value="'defensive'"
[/aspect]
version=10710
[engine]
@ -275,6 +290,10 @@ function my_ai:do_moves()
wesnoth.message('Recruit. ignore bc: ' , tostring(ai.get_recruitment_ignore_bad_combat()))
wesnoth.message('Recruit. ignore bm: ' , tostring(ai.get_recruitment_ignore_bad_movement()))
wesnoth.message('nofprtfr: ' , ai.get_number_of_possible_recruits_to_force_recruit())
wesnoth.message('Grouping: ' .. ai.get_grouping())
wesnoth.message('Support villages: ' .. tostring(ai.get_support_villages()))
wesnoth.message('Village value: ' .. ai.get_village_value())
wesnoth.message('Villages per scout: ' .. ai.get_villages_per_scout())
my_leader = wesnoth.get_units({canrecruit = true, side = ai.side})[1]
x,y = ai.suitable_keep(my_leader)

View file

@ -262,6 +262,11 @@ static int cfun_ai_get_attack_depth(lua_State *L)
return 1;
}
//static int cfun_ai_get_avoid(lua_State *L)
//{
// return 1;
//}
static int cfun_ai_get_caution(lua_State *L)
{
double caution = get_readonly_context(L).get_caution();
@ -269,6 +274,13 @@ static int cfun_ai_get_caution(lua_State *L)
return 1;
}
static int cfun_ai_get_grouping(lua_State *L)
{
std::string grouping = get_readonly_context(L).get_grouping();
lua_pushstring(L, grouping.c_str());
return 1;
}
static int cfun_ai_get_leader_aggression(lua_State *L)
{
double leader_aggression = get_readonly_context(L).get_leader_aggression();
@ -332,6 +344,26 @@ static int cfun_ai_get_simple_targeting(lua_State *L)
return 1;
}
static int cfun_ai_get_support_villages(lua_State *L)
{
bool support_villages = get_readonly_context(L).get_support_villages();
lua_pushboolean(L, support_villages);
return 1;
}
static int cfun_ai_get_village_value(lua_State *L)
{
double village_value = get_readonly_context(L).get_village_value();
lua_pushnumber(L, village_value);
return 1;
}
static int cfun_ai_get_villages_per_scout(lua_State *L)
{
int villages_per_scout = get_readonly_context(L).get_villages_per_scout();
lua_pushnumber(L, villages_per_scout);
return 1;
}
lua_ai_context* lua_ai_context::create(lua_State *L, char const *code, ai::engine_lua *engine)
{
@ -355,15 +387,19 @@ lua_ai_context* lua_ai_context::create(lua_State *L, char const *code, ai::engin
{ "get_aggression", &cfun_ai_get_aggression },
{ "get_attack_depth", &cfun_ai_get_attack_depth }, // { "get_", &cfun_ai_get_}, little template # TODELETE
{ "get_caution", &cfun_ai_get_caution },
{ "get_grouping", &cfun_ai_get_grouping },
{ "get_leader_aggression", &cfun_ai_get_leader_aggression },
{ "get_leader_value", &cfun_ai_get_leader_value },
{ "get_number_of_possible_recruits_to_force_recruit", &cfun_ai_get_number_of_possible_recruits_to_force_recruit},
{ "get_passive_leader", &cfun_ai_get_passive_leader},
{ "get_passive_leader", &cfun_ai_get_passive_leader },
{ "get_passive_leader_shares_keep", &cfun_ai_get_passive_leader_shares_keep},
{ "get_recruitment_ignore_bad_combat", &cfun_ai_get_recruitment_ignore_bad_combat},
{ "get_recruitment_ignore_bad_movement", &cfun_ai_get_recruitment_ignore_bad_movement},
{ "get_scout_village_targeting", &cfun_ai_get_scout_village_targeting},
{ "get_simple_targeting", &cfun_ai_get_simple_targeting},
{ "get_scout_village_targeting", &cfun_ai_get_scout_village_targeting },
{ "get_simple_targeting", &cfun_ai_get_simple_targeting },
{ "get_support_villages", &cfun_ai_get_support_villages },
{ "get_village_value", &cfun_ai_get_village_value },
{ "get_villages_per_scout", &cfun_ai_get_villages_per_scout },
{ "move", &cfun_ai_execute_move_partial },
{ "move_full", &cfun_ai_execute_move_full },
{ "recall", &cfun_ai_execute_recall },

View file

@ -368,6 +368,9 @@ static register_lua_aspect_factory< lua_aspect<int> >
static register_lua_aspect_factory< lua_aspect<double> >
caution__lua_aspect_factory("caution*lua_aspect");
static register_lua_aspect_factory< lua_aspect<std::string> >
grouping__lua_aspect_factory("grouping*lua_aspect");
static register_lua_aspect_factory< lua_aspect<double> >
leader_aggression__lua_aspect_factory("leader_aggression*lua_aspect");
@ -395,6 +398,15 @@ static register_lua_aspect_factory< lua_aspect<double> >
static register_lua_aspect_factory< lua_aspect<bool> >
simple_targeting__lua_aspect_factory("simple_targeting*lua_aspect");
static register_lua_aspect_factory< lua_aspect<bool> >
support_villages__lua_aspect_factory("support_villages*lua_aspect");
static register_lua_aspect_factory< lua_aspect<double> >
village_value__lua_aspect_factory("village_value*lua_aspect");
static register_lua_aspect_factory< lua_aspect<int> >
villages_per_scout__lua_aspect_factory("villages_per_scout*lua_aspect");
void registry::init()
{
}