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