private void OnEoTReceived(int connection, EndOfTurnStateMessage msg) { if (eotReadyCheck.PlayerNotifiedReady(connection, true, msg)) { EndOfTurnState hostEoT = eotReadyCheck.GetHostData <EndOfTurnStateMessage>().state; EndOfTurnState clientEoT = eotReadyCheck.GetClientData <EndOfTurnStateMessage>().state; eotReadyCheck.Clear(); ServerEndOfTurnState serverResponse = ServerEndOfTurnState.Error; if (hostEoT == EndOfTurnState.Error || clientEoT == EndOfTurnState.Error) { serverResponse = ServerEndOfTurnState.Error; } else if (hostEoT == EndOfTurnState.Forfeit && clientEoT == EndOfTurnState.Forfeit) { serverResponse = ServerEndOfTurnState.Tie; } else if (hostEoT == EndOfTurnState.Forfeit) { serverResponse = ServerEndOfTurnState.ClientWin; } else if (clientEoT == EndOfTurnState.Forfeit) { serverResponse = ServerEndOfTurnState.HostWin; } else if (hostEoT == EndOfTurnState.Undecided && clientEoT == EndOfTurnState.Undecided) { serverResponse = ServerEndOfTurnState.Undecided; } else if (hostEoT == EndOfTurnState.Tie && clientEoT == EndOfTurnState.Tie) { serverResponse = ServerEndOfTurnState.Tie; } else if (hostEoT == EndOfTurnState.Win && clientEoT == EndOfTurnState.Loss) { serverResponse = ServerEndOfTurnState.HostWin; } else if (hostEoT == EndOfTurnState.Loss && clientEoT == EndOfTurnState.Win) { serverResponse = ServerEndOfTurnState.ClientWin; } else { serverResponse = ServerEndOfTurnState.Mismatch; } NetworkTracker.ServerSendEoT(new ServerEndOfTurnStateMessage() { state = serverResponse }); } }
private void OnReceivedEndOfTurnState(ServerEndOfTurnState serverState) { board.TurnState = TurnState.Choosing; turnStateChange.Send(); BalugaDebug.Log("Server end of turn reply: " + serverState); if (serverState == ServerEndOfTurnState.Undecided) { startTurnCommand.Send(true); } else { GameEndType endType; switch (serverState) { case ServerEndOfTurnState.HostWin: endType = localInfo.IsHost ? GameEndType.Win : GameEndType.Loss; break; case ServerEndOfTurnState.ClientWin: endType = localInfo.IsHost ? GameEndType.Loss : GameEndType.Win; break; case ServerEndOfTurnState.Tie: endType = GameEndType.Tie; break; default: endType = GameEndType.Error; break; } BalugaDebug.Log("End of game type: " + endType); gameOverMessage.Send(endType); matchState.State = (int)MatchState.End; } }