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

Reply via email to