--- a/hedgewars/uCommandHandlers.pas Mon May 14 22:14:17 2012 +0200
+++ b/hedgewars/uCommandHandlers.pas Tue May 22 09:18:46 2012 +0200
@@ -412,12 +412,30 @@
end;
procedure chNextTurn(var s: shortstring);
+var checksum: Longword;
+ gi: PGear;
begin
s:= s; // avoid compiler hint
+
TryDo(AllInactive, '/nextturn called when not all gears are inactive', true);
+ checksum:= GameTicks;
+ gi := GearsList;
+ while gi <> nil do
+ begin
+ with gi^ do checksum:= checksum xor X.round xor X.frac xor dX.round xor dX.frac xor Y.round xor Y.frac xor dY.round xor dY.frac;
+ gi := gi^.NextGear
+ end;
+
if not CurrentTeam^.ExtDriven then
- SendIPC(_S'N');
+ begin
+ s[0]:= #5;
+ s[1]:= 'N';
+ SDLNet_Write32(checksum, @s[2]);
+ SendIPC(s)
+ end
+ else
+ TryDo(checksum = lastTurnChecksum, 'Desync detected', true);
AddFileLog('Doing SwitchHedgehog: time '+inttostr(GameTicks));
end;