Exemplo n.º 1
0
 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
         });
     }
 }
Exemplo n.º 2
0
        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;
            }
        }