Author: cazfi
Date: Mon Dec 28 23:12:40 2015
New Revision: 31249

URL: http://svn.gna.org/viewcvs/freeciv?rev=31249&view=rev
Log:
Replaced separate resource_valid bit in the tile structure with simply not 
setting the extra
in the tile when it's not valid.

See patch #6727

Modified:
    trunk/common/map.c
    trunk/common/tile.c
    trunk/common/tile.h
    trunk/server/legacysave.c
    trunk/server/savegame2.c
    trunk/server/savegame3.c

Modified: trunk/common/map.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/map.c?rev=31249&r1=31248&r2=31249&view=diff
==============================================================================
--- trunk/common/map.c  (original)
+++ trunk/common/map.c  Mon Dec 28 23:12:40 2015
@@ -348,7 +348,6 @@
   ptile->continent = 0;
 
   BV_CLR_ALL(ptile->extras);
-  ptile->resource_valid = FALSE;
   ptile->resource = NULL;
   ptile->terrain  = T_UNKNOWN;
   ptile->units    = unit_list_new();

Modified: trunk/common/tile.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/tile.c?rev=31249&r1=31248&r2=31249&view=diff
==============================================================================
--- trunk/common/tile.c (original)
+++ trunk/common/tile.c Mon Dec 28 23:12:40 2015
@@ -140,12 +140,13 @@
                 tile_city(ptile)->id);
 
   ptile->terrain = pterrain;
-  if (NULL != pterrain
-      && NULL != ptile->resource
-      && terrain_has_resource(pterrain, ptile->resource)) {
-    ptile->resource_valid = TRUE;
-  } else {
-    ptile->resource_valid = FALSE;
+  if (ptile->resource != NULL) {
+    if (NULL != pterrain
+        && terrain_has_resource(pterrain, ptile->resource)) {
+      BV_SET(ptile->extras, extra_index(ptile->resource->self));
+    } else {
+      BV_CLR(ptile->extras, extra_index(ptile->resource->self));
+    }
   }
 }
 
@@ -362,18 +363,12 @@
     tile_remove_extra(ptile, ptile->resource->self);
   }
   if (presource != NULL) {
-    tile_add_extra(ptile, presource->self);
+    if (ptile->terrain && terrain_has_resource(ptile->terrain, presource)) {
+      tile_add_extra(ptile, presource->self);
+    }
   }
 
   ptile->resource = presource;
-
-  if (NULL != ptile->terrain
-      && NULL != presource
-      && terrain_has_resource(ptile->terrain, presource)) {
-    ptile->resource_valid = TRUE;
-  } else {
-    ptile->resource_valid = FALSE;
-  }
 }
 
 #ifndef tile_continent
@@ -966,8 +961,6 @@
       }
     } extra_type_iterate_end;
 
-    vtile->resource_valid = ptile->resource_valid;
-
     vtile->resource = ptile->resource;
     vtile->terrain = ptile->terrain;
     vtile->worked = ptile->worked;

Modified: trunk/common/tile.h
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/tile.h?rev=31249&r1=31248&r2=31249&view=diff
==============================================================================
--- trunk/common/tile.h (original)
+++ trunk/common/tile.h Mon Dec 28 23:12:40 2015
@@ -50,7 +50,6 @@
               * (index_to_native_pos()). */
   Continent_id continent;
   bv_extras extras;
-  bool resource_valid;
   struct resource_type *resource;       /* NULL for no resource */
   struct terrain *terrain;             /* NULL for unknown tiles */
   struct unit_list *units;
@@ -96,7 +95,10 @@
 #define tile_claimer(_tile) ((_tile)->claimer)
 
 #define tile_resource(_tile) ((_tile)->resource)
-#define tile_resource_is_valid(_tile) (_tile)->resource_valid
+static inline bool tile_resource_is_valid(const struct tile *ptile)
+{ return ptile->resource != NULL
+    && BV_ISSET(ptile->extras, ptile->resource->self->id);
+}
 /*const struct resource *tile_resource(const struct tile *ptile);*/
 void tile_set_resource(struct tile *ptile, struct resource_type *presource);
 

Modified: trunk/server/legacysave.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/legacysave.c?rev=31249&r1=31248&r2=31249&view=diff
==============================================================================
--- trunk/server/legacysave.c   (original)
+++ trunk/server/legacysave.c   Mon Dec 28 23:12:40 2015
@@ -976,13 +976,12 @@
 
   /* after the resources are loaded, indicate those currently valid */
   whole_map_iterate(ptile) {
-    if (NULL == ptile->resource
-     || NULL == ptile->terrain) {
+    if (NULL == ptile->resource) {
       continue;
     }
-    if (terrain_has_resource(ptile->terrain, ptile->resource)) {
-      /* cannot use set_special() for internal values */
-      ptile->resource_valid = TRUE;
+
+    if (ptile->terrain == NULL || !terrain_has_resource(ptile->terrain, 
ptile->resource)) {
+      BV_CLR(ptile->extras, extra_index(ptile->resource->self));
     }
   } whole_map_iterate_end;
 

Modified: trunk/server/savegame2.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/savegame2.c?rev=31249&r1=31248&r2=31249&view=diff
==============================================================================
--- trunk/server/savegame2.c    (original)
+++ trunk/server/savegame2.c    Mon Dec 28 23:12:40 2015
@@ -2015,13 +2015,12 @@
 
   /* After the resources are loaded, indicate those currently valid. */
   whole_map_iterate(ptile) {
-    if (NULL == ptile->resource || NULL == ptile->terrain) {
+    if (NULL == ptile->resource) {
       continue;
     }
 
-    if (terrain_has_resource(ptile->terrain, ptile->resource)) {
-      /* cannot use set_special() for internal values */
-      ptile->resource_valid = TRUE;
+    if (ptile->terrain == NULL || !terrain_has_resource(ptile->terrain, 
ptile->resource)) {
+      BV_CLR(ptile->extras, extra_index(ptile->resource->self));
     }
   } whole_map_iterate_end;
 

Modified: trunk/server/savegame3.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/savegame3.c?rev=31249&r1=31248&r2=31249&view=diff
==============================================================================
--- trunk/server/savegame3.c    (original)
+++ trunk/server/savegame3.c    Mon Dec 28 23:12:40 2015
@@ -2525,9 +2525,8 @@
         if (tile_has_extra(ptile, pres)) {
           tile_set_resource(ptile, pres->data.resource);
 
-          if (terrain_has_resource(ptile->terrain, ptile->resource)) {
-            /* cannot use set_special() for internal values */
-            ptile->resource_valid = TRUE;
+          if (!terrain_has_resource(ptile->terrain, ptile->resource)) {
+            BV_CLR(ptile->extras, extra_index(pres));
           }
         }
       } extra_type_by_cause_iterate_end;


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to