Author: nephro
Date: Tue Jun 7 11:29:03 2011
New Revision: 49785
URL: http://svn.gna.org/viewcvs/wesnoth?rev=49785&view=rev
Log:
More aspects exposed to Lua(http://wiki.wesnoth.org/LuaAI)
Modified:
trunk/data/ai/scenarios/scenario-lua-ai.cfg
trunk/src/ai/composite/aspect.hpp
trunk/src/ai/lua/core.cpp
trunk/src/ai/registry.cpp
Modified: trunk/data/ai/scenarios/scenario-lua-ai.cfg
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/data/ai/scenarios/scenario-lua-ai.cfg?rev=49785&r1=49784&r2=49785&view=diff
==============================================================================
--- trunk/data/ai/scenarios/scenario-lua-ai.cfg (original)
+++ trunk/data/ai/scenarios/scenario-lua-ai.cfg Tue Jun 7 11:29:03 2011
@@ -195,29 +195,39 @@
[ai]
[aspect]
- id=aggression
+ id=number_of_possible_recruits_to_force_recruit
engine=lua
value="0.34"
[/aspect]
[aspect]
- id=attack_depth
- engine=lua
- value="2"
- [/aspect]
- [aspect]
- id=caution
- engine=lua
- value="0.35"
- [/aspect]
- [aspect]
- id=leader_aggression
+ id=passive_leader
+ engine=lua
+ value="true"
+ [/aspect]
+ [aspect]
+ id=passive_leader_shares_keep
+ engine=lua
+ code="return true"
+ [/aspect]
+ [aspect]
+ id=scout_village_targeting
engine=lua
value="0.36"
[/aspect]
[aspect]
- id=leader_value
- engine=lua
- value="0.37"
+ id=simple_targeting
+ engine=lua
+ value="true"
+ [/aspect]
+ [aspect]
+ id=recruitment_ignore_bad_combat
+ engine=lua
+ value="false"
+ [/aspect]
+ [aspect]
+ id=recruitment_ignore_bad_movement
+ engine=lua
+ value="true"
[/aspect]
version=10710
[engine]
@@ -257,11 +267,14 @@
function my_ai:do_moves()
- wesnoth.message('Aggression: ' .. ai.get_aggression())
- wesnoth.message('Att. depth: ' .. ai.get_attack_depth())
- wesnoth.message('Caution: ' .. ai.get_caution())
- wesnoth.message('Leader aggression: ' .. ai.get_leader_aggression())
- wesnoth.message('Leader value: ' .. ai.get_leader_value())
+
+ wesnoth.message('Passive leader: ', tostring(ai.get_passive_leader()))
+ wesnoth.message('Passive leader shares keep: ',
tostring(ai.get_passive_leader_shares_keep()))
+ wesnoth.message('Simple targeting: ',
tostring(ai.get_simple_targeting()))
+ wesnoth.message('Scout village targ.: ' ,
ai.get_scout_village_targeting())
+ 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())
my_leader = wesnoth.get_units({canrecruit = true, side = ai.side})[1]
x,y = ai.suitable_keep(my_leader)
Modified: trunk/src/ai/composite/aspect.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/ai/composite/aspect.hpp?rev=49785&r1=49784&r2=49785&view=diff
==============================================================================
--- trunk/src/ai/composite/aspect.hpp (original)
+++ trunk/src/ai/composite/aspect.hpp Tue Jun 7 11:29:03 2011
@@ -405,7 +405,11 @@
std::string value;
if (cfg.has_attribute("value"))
{
- value = cfg["value"].str();
+ value = cfg["value"].str();
+ if (value == "yes") // @TODO for Nephro or Crab: get
rid of this workaround
+ {
+ value = "true";
+ }
value = "return (" + value + ")";
}
else if (cfg.has_attribute("code"))
Modified: trunk/src/ai/lua/core.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/ai/lua/core.cpp?rev=49785&r1=49784&r2=49785&view=diff
==============================================================================
--- trunk/src/ai/lua/core.cpp (original)
+++ trunk/src/ai/lua/core.cpp Tue Jun 7 11:29:03 2011
@@ -283,6 +283,56 @@
return 1;
}
+static int cfun_ai_get_passive_leader(lua_State *L)
+{
+ bool passive_leader = get_readonly_context(L).get_passive_leader();
+ lua_pushboolean(L, passive_leader);
+ return 1;
+}
+
+static int cfun_ai_get_passive_leader_shares_keep(lua_State *L)
+{
+ bool passive_leader_shares_keep =
get_readonly_context(L).get_passive_leader_shares_keep();
+ lua_pushboolean(L, passive_leader_shares_keep);
+ return 1;
+}
+
+static int cfun_ai_get_number_of_possible_recruits_to_force_recruit(lua_State
*L)
+{
+ double noprtfr =
get_readonly_context(L).get_number_of_possible_recruits_to_force_recruit(); //
@note: abbreviation
+ lua_pushnumber(L, noprtfr);
+ return 1;
+}
+
+static int cfun_ai_get_recruitment_ignore_bad_combat(lua_State *L)
+{
+ bool recruitment_ignore_bad_combat =
get_readonly_context(L).get_recruitment_ignore_bad_combat();
+ lua_pushboolean(L, recruitment_ignore_bad_combat);
+ return 1;
+}
+
+static int cfun_ai_get_recruitment_ignore_bad_movement(lua_State *L)
+{
+ bool recruitment_ignore_bad_movement =
get_readonly_context(L).get_recruitment_ignore_bad_movement();
+ lua_pushboolean(L, recruitment_ignore_bad_movement);
+ return 1;
+}
+
+static int cfun_ai_get_scout_village_targeting(lua_State *L)
+{
+ double scout_village_targeting =
get_readonly_context(L).get_scout_village_targeting();
+ lua_pushnumber(L, scout_village_targeting);
+ return 1;
+}
+
+static int cfun_ai_get_simple_targeting(lua_State *L)
+{
+ bool simple_targeting = get_readonly_context(L).get_simple_targeting();
+ lua_pushboolean(L, simple_targeting);
+ return 1;
+}
+
+
lua_ai_context* lua_ai_context::create(lua_State *L, char const *code,
ai::engine_lua *engine)
{
int res_ai = luaL_loadstring(L, code);//stack size is now 1 [ -1:
ai_context]
@@ -307,6 +357,13 @@
{ "get_caution", &cfun_ai_get_caution
},
{ "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_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},
{ "move", &cfun_ai_execute_move_partial
},
{ "move_full", &cfun_ai_execute_move_full
},
{ "recall", &cfun_ai_execute_recall
},
Modified: trunk/src/ai/registry.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/ai/registry.cpp?rev=49785&r1=49784&r2=49785&view=diff
==============================================================================
--- trunk/src/ai/registry.cpp (original)
+++ trunk/src/ai/registry.cpp Tue Jun 7 11:29:03 2011
@@ -364,15 +364,36 @@
static register_lua_aspect_factory< lua_aspect<int> >
attack_depth__lua_aspect_factory("attack_depth*lua_aspect");
-
+
static register_lua_aspect_factory< lua_aspect<double> >
caution__lua_aspect_factory("caution*lua_aspect");
-
+
static register_lua_aspect_factory< lua_aspect<double> >
leader_aggression__lua_aspect_factory("leader_aggression*lua_aspect");
-
+
static register_lua_aspect_factory< lua_aspect<double> >
leader_value__lua_aspect_factory("leader_value*lua_aspect");
+
+static register_lua_aspect_factory< lua_aspect<double> >
+
number_of_possible_recruits_to_force_recruit__lua_aspect_factory("number_of_possible_recruits_to_force_recruit*lua_aspect");
+
+static register_lua_aspect_factory< lua_aspect<bool> >
+ passive_leader__lua_aspect_factory("passive_leader*lua_aspect");
+
+static register_lua_aspect_factory< lua_aspect<bool> >
+
passive_leader_shares_keep__lua_aspect_factory("passive_leader_shares_keep*lua_aspect");
+
+static register_lua_aspect_factory< lua_aspect<bool> >
+
recruitment_ignore_bad_combat__lua_aspect_factory("recruitment_ignore_bad_combat*lua_aspect");
+
+static register_lua_aspect_factory< lua_aspect<bool> >
+
recruitment_ignore_bad_movement__lua_aspect_factory("recruitment_ignore_bad_movement*lua_aspect");
+
+static register_lua_aspect_factory< lua_aspect<double> >
+
scout_village_targeting__lua_aspect_factory("scout_village_targeting*lua_aspect");
+
+static register_lua_aspect_factory< lua_aspect<bool> >
+ simple_targeting__lua_aspect_factory("simple_targeting*lua_aspect");
void registry::init()
{
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits