Blob Blame History Raw
--- 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);
 }