Author: dragonking
Date: Sat Jul 26 18:55:01 2008
New Revision: 28221
URL: http://svn.gna.org/viewcvs/wesnoth?rev=28221&view=rev
Log:
Improved unit_callable and unit_type_callable classes
Modified:
trunk/src/callable_objects.cpp
Modified: trunk/src/callable_objects.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/callable_objects.cpp?rev=28221&r1=28220&r2=28221&view=diff
==============================================================================
--- trunk/src/callable_objects.cpp (original)
+++ trunk/src/callable_objects.cpp Sat Jul 26 18:55:01 2008
@@ -105,7 +105,6 @@
return variant(att_.num_attacks());
} else if(key == "special") {
std::string specials = att_.weapon_specials(true);
- std::cerr << specials << std::endl;
std::vector<variant> res;
if(specials == "")
@@ -166,25 +165,8 @@
} else if(key == "leader") {
return variant(u_.can_recruit());
} else if(key == "undead") {
- //undead is a trait, so we need to look if this unit has it
- std::string traits = u_.traits_description();
-
- if(traits == "")
- return variant(0);
-
- std::string::iterator tmp_it = traits.begin()-1;
- for( std::string::iterator it = traits.begin(); it !=
traits.end(); ++it)
- {
- if (*it == ',')
- {
- if( std::string(tmp_it+1, it) == "undead" )
- return variant(1);
- tmp_it = it;
- }
- }
- if(tmp_it != traits.end())
- if( std::string(tmp_it+1, traits.end()) == "undead" )
- return variant(1);
+ if ( u_.get_state("not_living") == "yes" )
+ return variant( 1 );
return variant( 0 );
} else if(key == "attacks") {
@@ -195,15 +177,14 @@
res.push_back(variant(new attack_type_callable(*i)));
return variant(&res);
} else if(key == "abilities") {
- // for now use unit_ability_tooltips() to get simply list of
abilities
- // but it is definiately good idea to find another way of
obtaining this list
- std::vector<std::string> abilities = u_.unit_ability_tooltips();
- std::vector<variant> res;
-
- for (std::vector<std::string>::iterator it = abilities.begin();
it != abilities.end(); it+=2)
+ std::vector<std::string> abilities = u_.get_ability_list();
+ std::vector<variant> res;
+
+ if (abilities.empty())
+ return variant( &res );
+
+ for (std::vector<std::string>::iterator it = abilities.begin();
it != abilities.end(); ++it)
{
- if(it+1 == abilities.end())
- return variant( &res );
res.push_back( variant(*it) );
}
return variant( &res );
@@ -222,25 +203,16 @@
} else if(key == "movement_left") {
return variant(u_.movement_left());
} else if(key == "traits") {
- std::string traits = u_.traits_description();
- //traits are comma-separated, now it is time to put them into
vector
- std::vector<variant> res;
-
- if(traits == "")
+ const std::vector<std::string> traits = u_.get_traits_list();
+ std::vector<variant> res;
+
+ if(traits.empty())
return variant( &res );
- std::string::iterator tmp_it = traits.begin()-1;
- for( std::string::iterator it = traits.begin(); it !=
traits.end(); ++it)
+ for (std::vector<std::string>::const_iterator it =
traits.begin(); it != traits.end(); ++it)
{
- if (*it == ',')
- {
- res.push_back( variant( std::string(tmp_it+1,
it) ));
- tmp_it = it;
- }
- }
- if(tmp_it != traits.end())
- res.push_back( variant( std::string(tmp_it+1,
traits.end() )));
-
+ res.push_back( variant(*it) );
+ }
return variant( &res );
} else if(key == "side") {
return variant(u_.side()-1);
@@ -291,15 +263,15 @@
} else if(key == "alignment") {
return variant(u_.alignment_id(u_.alignment()));
} else if(key == "abilities") {
- const std::vector<t_string>& abilities = u_.abilities();
+ std::vector<std::string> abilities = u_.get_ability_list();
std::vector<variant> res;
if (abilities.empty())
return variant( &res );
- for(std::vector<t_string>::const_iterator i =
abilities.begin(); i != abilities.end(); ++i)
+ for (std::vector<std::string>::iterator it = abilities.begin();
it != abilities.end(); ++it)
{
- res.push_back( variant( i->str() ));
+ res.push_back( variant(*it) );
}
return variant( &res );
} else if(key == "attacks") {
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits