Author: cazfi
Date: Sat May 20 00:05:49 2017
New Revision: 35664

URL: http://svn.gna.org/viewcvs/freeciv?rev=35664&view=rev
Log:
Add edit.change_terrain() to scripting API

Requested by J. M. Gorbach <gorb>

See hrm Feature #657140

Modified:
    trunk/server/scripting/Makefile.am
    trunk/server/scripting/api_server_edit.c
    trunk/server/scripting/api_server_edit.h
    trunk/server/scripting/tolua_server.pkg

Modified: trunk/server/scripting/Makefile.am
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/scripting/Makefile.am?rev=35664&r1=35663&r2=35664&view=diff
==============================================================================
--- trunk/server/scripting/Makefile.am  (original)
+++ trunk/server/scripting/Makefile.am  Sat May 20 00:05:49 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: trunk/server/scripting/api_server_edit.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/scripting/api_server_edit.c?rev=35664&r1=35663&r2=35664&view=diff
==============================================================================
--- trunk/server/scripting/api_server_edit.c    (original)
+++ trunk/server/scripting/api_server_edit.c    Sat May 20 00:05:49 2017
@@ -43,6 +43,9 @@
 
 /* server/scripting */
 #include "script_server.h"
+
+/* server/generator */
+#include "mapgen_utils.h"
 
 #include "api_server_edit.h"
 
@@ -228,6 +231,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: trunk/server/scripting/api_server_edit.h
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/scripting/api_server_edit.h?rev=35664&r1=35663&r2=35664&view=diff
==============================================================================
--- trunk/server/scripting/api_server_edit.h    (original)
+++ trunk/server/scripting/api_server_edit.h    Sat May 20 00:05:49 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: trunk/server/scripting/tolua_server.pkg
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/scripting/tolua_server.pkg?rev=35664&r1=35663&r2=35664&view=diff
==============================================================================
--- trunk/server/scripting/tolua_server.pkg     (original)
+++ trunk/server/scripting/tolua_server.pkg     Sat May 20 00:05:49 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

Reply via email to