--- server/maphand.h (révision 17882)
+++ server/maphand.h (copie de travail)
@@ -64,9 +64,9 @@
void map_show_circle(struct player *pplayer,
struct tile *ptile, int radius_sq);
void map_refog_circle(struct player *pplayer, struct tile *ptile,
- int old_radius_sq, int new_radius_sq,
- bool can_reveal_tiles,
- enum vision_layer vlayer);
+ int old_main_radius_sq, int new_main_radius_sq,
+ int old_invis_radius_sq, int new_invis_radius_sq,
+ bool can_reveal_tiles);
void map_show_all(struct player *pplayer);
bool map_is_known_and_seen(const struct tile *ptile, struct player *pplayer,
@@ -113,8 +113,8 @@
void fix_tile_on_terrain_change(struct tile *ptile,
bool extend_rivers);
-void vision_change_sight(struct vision *vision, enum vision_layer vlayer,
- int radius_sq);
+void vision_change_sight(struct vision *vision, int radius_main_sq,
+ int radius_invis_sq);
void vision_clear_sight(struct vision *vision);
void change_playertile_site(struct player_tile *ptile,
Index: server/unittools.c
===================================================================
--- server/unittools.c (révision 17882)
+++ server/unittools.c (copie de travail)
@@ -625,16 +625,17 @@
} else {
struct player *owner = tile_owner(ptile);
- if (pbase->vision_main_sq >= 0 && owner) {
- /* Base provides vision, but no borders. */
- map_refog_circle(owner, ptile, pbase->vision_main_sq, -1,
- game.info.vision_reveal_tiles, V_MAIN);
+ if (NULL != owner
+ && (0 <= pbase->vision_main_sq)
+ && (0 <= pbase->vision_invis_sq)) {
+ /* Base provides vision, but no borders. */
+ map_refog_circle(owner, ptile,
+ 0 <= pbase->vision_main_sq
+ ? pbase->vision_main_sq : -1, -1,
+ 0 <= pbase->vision_invis_sq
+ ? pbase->vision_invis_sq : -1, -1,
+ game.info.vision_reveal_tiles);
}
- if (pbase->vision_invis_sq >= 0 && owner) {
- /* Base provides vision, but no borders. */
- map_refog_circle(owner, ptile, pbase->vision_invis_sq, -1,
- game.info.vision_reveal_tiles, V_INVIS);
- }
}
tile_remove_base(ptile, pbase);
}
@@ -2860,10 +2861,9 @@
struct vision *new_vision = vision_new(unit_owner(pcargo), pdesttile);
pcargo->server.vision = new_vision;
- vision_layer_iterate(v) {
- vision_change_sight(new_vision, v,
- get_unit_vision_at(pcargo, pdesttile, v));
- } vision_layer_iterate_end;
+ vision_change_sight(new_vision,
+ get_unit_vision_at(pcargo, pdesttile, V_MAIN),
+ get_unit_vision_at(pcargo, pdesttile, V_INVIS));
ASSERT_VISION(new_vision);
@@ -2899,10 +2899,9 @@
if (unit_lives) {
new_vision = vision_new(unit_owner(punit), pdesttile);
punit->server.vision = new_vision;
- vision_layer_iterate(v) {
- vision_change_sight(new_vision, v,
- get_unit_vision_at(punit, pdesttile, v));
- } vision_layer_iterate_end;
+ vision_change_sight(new_vision,
+ get_unit_vision_at(punit, pdesttile, V_MAIN),
+ get_unit_vision_at(punit, pdesttile, V_INVIS));
ASSERT_VISION(new_vision);
@@ -3428,12 +3427,9 @@
{
struct vision *uvision = punit->server.vision;
- vision_layer_iterate(v) {
- /* This requires two calls to get_unit_vision_at...it could be
- * optimized. */
- vision_change_sight(uvision, v,
- get_unit_vision_at(punit, punit->tile, v));
- } vision_layer_iterate_end;
+ vision_change_sight(uvision,
+ get_unit_vision_at(punit, punit->tile, V_MAIN),
+ get_unit_vision_at(punit, punit->tile, V_INVIS));
ASSERT_VISION(uvision);
}