Author: jtn
Date: Mon Feb 16 09:32:44 2015
New Revision: 28175

URL: http://svn.gna.org/viewcvs/freeciv?rev=28175&view=rev
Log:
Refresh city vision radius whenever a tech is researched, and once a
turn as backup.
This fixes delayed civ2civ3 Electricity vision bonus.

See gna bug #23254.

Modified:
    branches/S2_6/server/citytools.c
    branches/S2_6/server/citytools.h
    branches/S2_6/server/srv_main.c
    branches/S2_6/server/techtools.c

Modified: branches/S2_6/server/citytools.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/server/citytools.c?rev=28175&r1=28174&r2=28175&view=diff
==============================================================================
--- branches/S2_6/server/citytools.c    (original)
+++ branches/S2_6/server/citytools.c    Mon Feb 16 09:32:44 2015
@@ -2914,6 +2914,17 @@
   ASSERT_VISION(pcity->server.vision);
 }
 
+/****************************************************************************
+  Refresh the vision of all cities owned by a player, for empire-wide
+  effects.
+****************************************************************************/
+void refresh_player_cities_vision(struct player *pplayer)
+{
+  city_list_iterate(pplayer->cities, pcity) {
+    city_refresh_vision(pcity);
+  } city_list_iterate_end;
+}
+
 /**************************************************************************
   Updates the squared city radius. Returns if the radius is changed.
 **************************************************************************/

Modified: branches/S2_6/server/citytools.h
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/server/citytools.h?rev=28175&r1=28174&r2=28175&view=diff
==============================================================================
--- branches/S2_6/server/citytools.h    (original)
+++ branches/S2_6/server/citytools.h    Mon Feb 16 09:32:44 2015
@@ -95,6 +95,7 @@
 
 void city_landlocked_sell_coastal_improvements(struct tile *ptile);
 void city_refresh_vision(struct city *pcity);
+void refresh_player_cities_vision(struct player *pplayer);
 
 void sync_cities(void);
 

Modified: branches/S2_6/server/srv_main.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/server/srv_main.c?rev=28175&r1=28174&r2=28175&view=diff
==============================================================================
--- branches/S2_6/server/srv_main.c     (original)
+++ branches/S2_6/server/srv_main.c     Mon Feb 16 09:32:44 2015
@@ -1127,6 +1127,11 @@
     flush_packets();
   } phase_players_iterate_end;
 
+  /* Some player/global effect may have changed cities' vision range */
+  phase_players_iterate(pplayer) {
+    refresh_player_cities_vision(pplayer);
+  } phase_players_iterate_end;
+
   kill_dying_players();
 
   /* Unfreeze sending of cities. */

Modified: branches/S2_6/server/techtools.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/server/techtools.c?rev=28175&r1=28174&r2=28175&view=diff
==============================================================================
--- branches/S2_6/server/techtools.c    (original)
+++ branches/S2_6/server/techtools.c    Mon Feb 16 09:32:44 2015
@@ -436,6 +436,7 @@
     city_list_iterate(aplayer->cities, pcity) {
       /* Refresh the city data; this also updates the squared city radius. */
       city_refresh(pcity);
+      city_refresh_vision(pcity);
       send_city_info(aplayer, pcity);
     } city_list_iterate_end;
 


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

Reply via email to