Author: pepeto
Date: Fri Oct 24 18:33:11 2014
New Revision: 26848

URL: http://svn.gna.org/viewcvs/freeciv?rev=26848&view=rev
Log:
Give the visibility of units of a player when contracting an alliance with him
(e.g. transported units or units in cities).

Reported by Marko Lindqvist <cazfi>

See gna bug #20726

Modified:
    trunk/server/diplhand.c
    trunk/server/unittools.c
    trunk/server/unittools.h

Modified: trunk/server/diplhand.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/diplhand.c?rev=26848&r1=26847&r2=26848&view=diff
==============================================================================
--- trunk/server/diplhand.c     (original)
+++ trunk/server/diplhand.c     Fri Oct 24 18:33:11 2014
@@ -584,6 +584,8 @@
         notify_player(pdest, NULL, E_TREATY_ALLIANCE, ftc_server,
                       _("You agree on an alliance with %s."),
                       player_name(pgiver));
+        give_allied_visibility(pgiver, pdest);
+        give_allied_visibility(pdest, pgiver);
 
         worker_refresh_required = TRUE;
        break;

Modified: trunk/server/unittools.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/unittools.c?rev=26848&r1=26847&r2=26848&view=diff
==============================================================================
--- trunk/server/unittools.c    (original)
+++ trunk/server/unittools.c    Fri Oct 24 18:33:11 2014
@@ -1303,6 +1303,20 @@
       send_city_info(pplayer, pcity);
     }
   } city_list_iterate_end;
+}
+
+/****************************************************************************
+  Refresh units visibility of 'aplayer' for 'pplayer' after alliance have
+  been contracted.
+****************************************************************************/
+void give_allied_visibility(struct player *pplayer,
+                            struct player *aplayer)
+{
+  unit_list_iterate(aplayer->units, punit) {
+    if (can_player_see_unit(pplayer, punit)) {
+      send_unit_info(pplayer->connections, punit);
+    }
+  } unit_list_iterate_end;
 }
 
 /**************************************************************************

Modified: trunk/server/unittools.h
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/unittools.h?rev=26848&r1=26847&r2=26848&view=diff
==============================================================================
--- trunk/server/unittools.h    (original)
+++ trunk/server/unittools.h    Fri Oct 24 18:33:11 2014
@@ -100,6 +100,7 @@
 void resolve_unit_stacks(struct player *pplayer, struct player *aplayer,
                          bool verbose);
 void remove_allied_visibility(struct player* pplayer, struct player* aplayer);
+void give_allied_visibility(struct player *pplayer, struct player *aplayer);
 int get_unit_vision_at(struct unit *punit, struct tile *ptile,
                       enum vision_layer vlayer);
 void unit_refresh_vision(struct unit *punit);


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

Reply via email to