#include "Synchronizer.h" #include "Globals.h" #include "Player.h" #include "Input.h" #include "Network.h" #include "PacketHandler.h" #include "Ingame.h" u32 synchronizerLocalTurn; unsigned int synchronizerNextSeed; bool synchronizerRunning; int synchronizerCurrentTicks; bool synchronizerTurnReady(); void synchronizerNextTurn(); void synchronizerSendLocalInputs(); int synchronizerGetTurnIndex(u32 turn); void synchronizerInit(int seed, int initPlayerCount, int initPlayerLocalID) { synchronizerLocalTurn = 0; synchronizerNextSeed = seed; playerCount = initPlayerCount; playerLocalID = initPlayerLocalID; syncTickCount = 0; //reset player turn states (e.g. is turn data recieved), first turn needs to happen with no inputs for(int i=0; i send to server sendStartReadyPacket(playerLocalID); } void synchronizerSetPlayerReady(int playerID) { players[playerID].ready = true; } bool synchronizerAllReady() { for(int i=0; i1) { size_t size = writeInputPacket(networkWriteBuffer, &localInputs, playerLocalID, synchronizerLocalTurn); networkSend(networkWriteBuffer, size); } } void synchronizerOnInputPacket(u8 playerID, u32 turnNumber, void *data, size_t dataSize) { if(turnNumber>=synchronizerLocalTurn && turnNumber