Author: cazfi Date: Sat May 20 00:05:54 2017 New Revision: 35665 URL: http://svn.gna.org/viewcvs/freeciv?rev=35665&view=rev Log: Add edit.change_terrain() to scripting API
Requested by J. M. Gorbach <gorb> See hrm Feature #657140 Modified: branches/S3_0/server/scripting/Makefile.am branches/S3_0/server/scripting/api_server_edit.c branches/S3_0/server/scripting/api_server_edit.h branches/S3_0/server/scripting/tolua_server.pkg Modified: branches/S3_0/server/scripting/Makefile.am URL: http://svn.gna.org/viewcvs/freeciv/branches/S3_0/server/scripting/Makefile.am?rev=35665&r1=35664&r2=35665&view=diff ============================================================================== --- branches/S3_0/server/scripting/Makefile.am (original) +++ branches/S3_0/server/scripting/Makefile.am Sat May 20 00:05:54 2017 @@ -10,6 +10,7 @@ -I$(top_srcdir)/common/networking \ -I$(top_srcdir)/common/scriptcore \ -I$(top_srcdir)/server \ + -I$(top_srcdir)/server/generator \ -I$(top_srcdir)/ai \ -I$(top_srcdir)/dependencies/tinycthread \ $(FCDB_MYSQL_CFLAGS) $(FCDB_POSTGRES_CFLAGS) $(FCDB_SQLITE_CFLAGS) \ Modified: branches/S3_0/server/scripting/api_server_edit.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S3_0/server/scripting/api_server_edit.c?rev=35665&r1=35664&r2=35665&view=diff ============================================================================== --- branches/S3_0/server/scripting/api_server_edit.c (original) +++ branches/S3_0/server/scripting/api_server_edit.c Sat May 20 00:05:54 2017 @@ -42,6 +42,9 @@ /* server/scripting */ #include "script_server.h" + +/* server/generator */ +#include "mapgen_utils.h" #include "api_server_edit.h" @@ -227,6 +230,36 @@ } /***************************************************************************** + Change terrain on tile +*****************************************************************************/ +bool api_edit_change_terrain(lua_State *L, Tile *ptile, Terrain *pterr) +{ + struct terrain *old_terrain; + + LUASCRIPT_CHECK_STATE(L, FALSE); + LUASCRIPT_CHECK_ARG_NIL(L, ptile, 2, Tile, FALSE); + LUASCRIPT_CHECK_ARG_NIL(L, pterr, 3, Terrain, FALSE); + + old_terrain = tile_terrain(ptile); + + if (old_terrain == pterr + || (terrain_has_flag(pterr, TER_NO_CITIES) && tile_city(ptile) != NULL)) { + return FALSE; + } + + tile_change_terrain(ptile, pterr); + fix_tile_on_terrain_change(ptile, old_terrain, FALSE); + if (need_to_reassign_continents(old_terrain, pterr)) { + assign_continent_numbers(); + send_all_known_tiles(NULL); + } + + update_tile_knowledge(ptile); + + return TRUE; +} + +/***************************************************************************** Create a new city. *****************************************************************************/ void api_edit_create_city(lua_State *L, Player *pplayer, Tile *ptile, Modified: branches/S3_0/server/scripting/api_server_edit.h URL: http://svn.gna.org/viewcvs/freeciv/branches/S3_0/server/scripting/api_server_edit.h?rev=35665&r1=35664&r2=35665&view=diff ============================================================================== --- branches/S3_0/server/scripting/api_server_edit.h (original) +++ branches/S3_0/server/scripting/api_server_edit.h Sat May 20 00:05:54 2017 @@ -42,6 +42,8 @@ void api_edit_unit_kill(lua_State *L, Unit *punit, const char *reason, Player *killer); +bool api_edit_change_terrain(lua_State *L, Tile *ptile, Terrain *pterr); + void api_edit_create_city(lua_State *L, Player *pplayer, Tile *ptile, const char *name); Player *api_edit_create_player(lua_State *L, const char *username, Modified: branches/S3_0/server/scripting/tolua_server.pkg URL: http://svn.gna.org/viewcvs/freeciv/branches/S3_0/server/scripting/tolua_server.pkg?rev=35665&r1=35664&r2=35665&view=diff ============================================================================== --- branches/S3_0/server/scripting/tolua_server.pkg (original) +++ branches/S3_0/server/scripting/tolua_server.pkg Sat May 20 00:05:54 2017 @@ -120,6 +120,8 @@ void api_edit_unit_kill @ unit_kill(lua_State *L, Unit *self, const char *reason, Player *killer); + bool api_edit_change_terrain + @ change_terrain(lua_State *L, Tile *ptile, Terrain *pterr); void api_edit_create_city @ create_city (lua_State *L, Player *pplayer, Tile *ptile, const char *name); @@ -360,6 +362,10 @@ edit.remove_extra(self, name) end +function Tile:change_terrain(terrain) + edit.change_terrain(self, terrain) +end + function Tile:unleash_barbarians() return edit.unleash_barbarians(self) end _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits