<URL: http://bugs.freeciv.org/Ticket/Display.html?id=40645 >
2009/1/8 Marko Lindqvist: > > This patch adds functions city:has_building() and player:has_wonder() > to scripting API. - Better comments - ML
diff -Nurd -X.diff_ignore freeciv/server/scripting/api_methods.c freeciv/server/scripting/api_methods.c --- freeciv/server/scripting/api_methods.c 2008-10-27 04:13:34.000000000 +0200 +++ freeciv/server/scripting/api_methods.c 2009-01-09 22:39:34.000000000 +0200 @@ -226,3 +226,33 @@ { return terrain_name_translation(pterrain); } + +/************************************************************************** + Return TRUE iff city has building +**************************************************************************/ +bool api_methods_city_has_building(City *pcity, Building_Type *building) +{ + return city_has_building(pcity, building); +} + +/************************************************************************** + Return TRUE iff player has wonder +**************************************************************************/ +bool api_methods_player_has_wonder(Player *pplayer, Building_Type *building) +{ + int bidx = improvement_index(building); + + if (pplayer->small_wonders[bidx] > 0) { + return TRUE; + } + + if (game.info.great_wonders[bidx] > 0) { + struct city *pcity = game_find_city_by_number(game.info.great_wonders[bidx]); + + if (pcity && player_owns_city(pplayer, pcity)) { + return TRUE; + } + } + + return FALSE; +} diff -Nurd -X.diff_ignore freeciv/server/scripting/api_methods.h freeciv/server/scripting/api_methods.h --- freeciv/server/scripting/api_methods.h 2007-08-04 18:36:19.000000000 +0300 +++ freeciv/server/scripting/api_methods.h 2009-01-09 22:39:06.000000000 +0200 @@ -48,5 +48,8 @@ const char *api_methods_tech_type_name_translation(Tech_Type *ptech); const char *api_methods_terrain_rule_name(Terrain *pterrain); const char *api_methods_terrain_name_translation(Terrain *pterrain); -#endif +bool api_methods_city_has_building(City *pcity, Building_Type *building); +bool api_methods_player_has_wonder(Player *pplayer, Building_Type *building); + +#endif /* FC__API_METHODS_H */ diff -Nurd -X.diff_ignore freeciv/server/scripting/api.pkg freeciv/server/scripting/api.pkg --- freeciv/server/scripting/api.pkg 2009-01-08 22:45:27.000000000 +0200 +++ freeciv/server/scripting/api.pkg 2009-01-09 22:39:06.000000000 +0200 @@ -101,6 +101,8 @@ @ methods_player_num_cities (Player *pplayer); int api_methods_player_num_units @ methods_player_num_units (Player *pplayer); +bool api_methods_player_has_wonder + @ methods_player_has_wonder (Player *pplayer, Building_Type *building); /* Iteration */ void api_iterate_players @@ -170,6 +172,10 @@ const char *api_methods_terrain_name_translation @ methods_terrain_name_translation (Terrain *pterrain); +/* City */ +bool api_methods_city_has_building + @ methods_city_has_building(City *pcity, Building_Type *building); + $[ -- Player methods. function Player:is_human() @@ -184,6 +190,10 @@ return methods_player_num_units(self) end +function Player:has_wonder(building) + return methods_player_has_wonder(self, building) +end + -- Unit methods. function Unit:get_homecity() return find.city(self.owner, self.homecity) @@ -287,6 +297,11 @@ function Terrain:name_translation() return methods_terrain_name_translation(self) end + +-- City methods +function City:has_building(building) + return methods_city_has_building(self, building) +end $] /* Object find module. */
_______________________________________________ Freeciv-dev mailing list Freeciv-dev@gna.org https://mail.gna.org/listinfo/freeciv-dev