Author: dragonking
Date: Sun Jun 29 15:10:52 2008
New Revision: 27590
URL: http://svn.gna.org/viewcvs/wesnoth?rev=27590&view=rev
Log:
New formula language ai object members: allies, enemies, units_by_side
Modified:
trunk/src/ai.cpp
Modified: trunk/src/ai.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/ai.cpp?rev=27590&r1=27589&r2=27590&view=diff
==============================================================================
--- trunk/src/ai.cpp (original)
+++ trunk/src/ai.cpp Sun Jun 29 15:10:52 2008
@@ -2236,11 +2236,39 @@
{
if(key == "turn") {
return variant(get_info().state.turn());
+ } else if(key == "allies") {
+ std::vector<variant> vars;
+ for( int i = 0; i < info_.teams.size(); ++i) {
+ if ( !info_.teams[info_.team_num-1].is_enemy( i+1 ) )
+ vars.push_back(variant( i ));
+ }
+ return variant(&vars);
+ } else if(key == "enemies") {
+ std::vector<variant> vars;
+ for( int i = 0; i < info_.teams.size(); ++i) {
+ if ( info_.teams[info_.team_num-1].is_enemy( i+1 ) )
+ vars.push_back(variant( i ));
+ }
+ return variant(&vars);
} else if(key == "units") {
std::vector<variant> vars;
for(unit_map::const_iterator i = info_.units.begin(); i !=
info_.units.end(); ++i) {
vars.push_back(variant(new unit_callable(*i)));
}
+ return variant(&vars);
+ } else if(key == "units_by_team") {
+ std::vector<variant> vars;
+ std::vector< std::vector< variant> > tmp;
+ for( int i = 0; i<info_.teams.size(); ++i)
+ {
+ std::vector<variant> v;
+ tmp.push_back( v );
+ }
+ for(unit_map::const_iterator i = info_.units.begin(); i !=
info_.units.end(); ++i) {
+ tmp[ i->second.side()-1 ].push_back( variant(new
unit_callable(*i)) );
+ }
+ for( int i = 0; i<tmp.size(); ++i)
+ vars.push_back( variant( &tmp[i] ));
return variant(&vars);
} else if(key == "my_units") {
std::vector<variant> vars;
@@ -2280,7 +2308,10 @@
{
using game_logic::FORMULA_READ_ONLY;
inputs->push_back(game_logic::formula_input("turn", 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("units",
FORMULA_READ_ONLY));
+ inputs->push_back(game_logic::formula_input("units_by_team",
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));
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits