(svn r5483) -Fix: [YAPF] desync - for MP games invalidate YAPF cache on every tick to keep it exactly the same on server and clients (it doesn't fix the real source of the problem, but should solve it). Thanks TrueLight for hunting this bug.
authorKUDr
Tue, 11 Jul 2006 19:04:50 +0000
changeset 4130 fd86f49a1e96
parent 4129 4d211782892d
child 4131 b3e608d7a838
(svn r5483) -Fix: [YAPF] desync - for MP games invalidate YAPF cache on every tick to keep it exactly the same on server and clients (it doesn't fix the real source of the problem, but should solve it). Thanks TrueLight for hunting this bug.
vehicle.c
--- a/vehicle.c	Tue Jul 11 17:45:54 2006 +0000
+++ b/vehicle.c	Tue Jul 11 19:04:50 2006 +0000
@@ -29,6 +29,8 @@
 #include "industry_map.h"
 #include "station_map.h"
 #include "water_map.h"
+#include "network.h"
+#include "yapf/yapf.h"
 
 #define INVALID_COORD (-0x8000)
 #define GEN_HASH(x,y) (((x & 0x1F80)>>7) + ((y & 0xFC0)))
@@ -611,6 +613,14 @@
 {
 	Vehicle *v;
 
+#ifdef ENABLE_NETWORK
+	// hotfix for desync problem:
+	//  for MP games invalidate the YAPF cache every tick to keep it exactly the same on the server and all clients
+	if (_networking) {
+		YapfNotifyTrackLayoutChange(0, 0);
+	}
+#endif //ENABLE_NETWORK
+
 	_first_veh_in_depot_list = NULL;	// now we are sure it's initialized at the start of each tick
 
 	FOR_ALL_VEHICLES(v) {