Example #1
0
    private void AcceptClient(JoinServerRequest request)
    {
        Server.Instance.joinedPlayers.Add(agent);
        agent.nickname = request.nickname;
        agent.playerId = Server.Instance.GetNextPlayerId();

        agent.connection.Send(JoinServerResponse.MakeAccept(agent.playerId));
    }
Example #2
0
    public void On(JoinServerResponse response)
    {
        Assert.IsTrue(isEntered);
        didReceiveResponse = true;

        if (response.isReject)
        {
            connectPanel.SetStatusbarText("<color=red>Rejected</color>. Reason: " + response.rejectionMessage);
            // Don't change state here, expect the DisconnectMessage from the server to do it for you.
            return;
        }

        connectPanel.SetStatusbarText("");
        agent.playerInfo.id = response.playerId;

        agent.fsm.ChangeState <ClientStateInLobby>();
    }
Example #3
0
    private bool RejectIfNeeded(JoinServerRequest request)
    {
        if (!request.GetIsValid())
        {
            agent.connection.Send(JoinServerResponse.MakeReject("Invalid JoinServerRequest"));
            agent.Kick();
            return(true);
        }

        Debug.Log("Valid client handshake received.");

        if (Server.Instance.joinedPlayers.Any(p => p.nickname == request.nickname))
        {
            agent.connection.Send(JoinServerResponse.MakeReject($"Username {request.nickname} is already taken"));
            agent.Kick();
            return(true);
        }

        return(false);
    }