<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

Reply via email to