Author: ivanovic
Date: Sat Feb 7 15:48:01 2009
New Revision: 32642
URL: http://svn.gna.org/viewcvs/wesnoth?rev=32642&view=rev
Log:
patch from dragonking:
add a generic way to export a map as a variant object for formula AI
Modified:
trunk/src/callable_objects.cpp
trunk/src/callable_objects.hpp
trunk/src/unit.cpp
trunk/src/unit.hpp
Modified: trunk/src/callable_objects.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/callable_objects.cpp?rev=32642&r1=32641&r2=32642&view=diff
==============================================================================
--- trunk/src/callable_objects.cpp (original)
+++ trunk/src/callable_objects.cpp Sat Feb 7 15:48:01 2009
@@ -11,8 +11,18 @@
See the COPYING file for more details.
*/
-
#include "callable_objects.hpp"
+
+template <typename T, typename K>
+variant convert_map( const std::map<T, K>& input_map ) {
+ std::map<variant,variant> tmp;
+
+ for(typename std::map< T, K>::const_iterator i = input_map.begin(); i
!= input_map.end(); ++i) {
+ tmp[ variant(i->first) ] = variant( i->second );
+ }
+
+ return variant( &tmp );
+}
variant location_callable::get_value(const std::string& key) const
{
@@ -213,6 +223,10 @@
res.push_back( variant(*it) );
}
return variant( &res );
+ } else if(key == "states") {
+ const std::map<std::string, std::string>& states_map =
u_.get_states();
+
+ return convert_map( states_map );
} else if(key == "side") {
return variant(u_.side()-1);
} else if(key == "cost") {
@@ -249,6 +263,7 @@
inputs->push_back(game_logic::formula_input("total_movement",
FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("movement_left",
FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("side", FORMULA_READ_ONLY));
+ inputs->push_back(game_logic::formula_input("states",
FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("cost", FORMULA_READ_ONLY));
inputs->push_back(game_logic::formula_input("vars", FORMULA_READ_ONLY));
}
Modified: trunk/src/callable_objects.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/callable_objects.hpp?rev=32642&r1=32641&r2=32642&view=diff
==============================================================================
--- trunk/src/callable_objects.hpp (original)
+++ trunk/src/callable_objects.hpp Sat Feb 7 15:48:01 2009
@@ -58,6 +58,8 @@
{ return variant(); } \
} \
};
+
+template <typename T, typename K> variant convert_map( const std::map<T,K>&
map );
class terrain_callable : public game_logic::formula_callable {
public:
Modified: trunk/src/unit.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/unit.cpp?rev=32642&r1=32641&r2=32642&view=diff
==============================================================================
--- trunk/src/unit.cpp (original)
+++ trunk/src/unit.cpp Sat Feb 7 15:48:01 2009
@@ -958,6 +958,11 @@
if(hit_points_<1) {
hit_points_ = 1;
}
+}
+
+const std::map<std::string,std::string>& unit::get_states() const
+{
+ return states_;
}
std::string unit::get_state(const std::string& state) const
Modified: trunk/src/unit.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/unit.hpp?rev=32642&r1=32641&r2=32642&view=diff
==============================================================================
--- trunk/src/unit.hpp (original)
+++ trunk/src/unit.hpp Sat Feb 7 15:48:01 2009
@@ -164,6 +164,7 @@
bool resting() const { return resting_; }
void set_resting(bool rest) { resting_ = rest; }
+ const std::map<std::string,std::string>& get_states() const;
std::string get_state(const std::string& state) const;
void set_state(const std::string& state, const std::string& value);
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits