Ejemplo n.º 1
0
    //When server/host is stopped
    //Perhaps when a delete room button is clicked? Which will result in kicking every one out of the room
    public override void OnStopServer()
    {
        OnServerStopped?.Invoke();

        RoomPlayers.Clear(); //Clear the list of existing players, ready for a new game
        GamePlayers.Clear();
    }
Ejemplo n.º 2
0
    public override void OnServerDisconnect(NetworkConnection conn)     // -------- Both LOBBY and GAME --------- (invoking some functions)
    {
        string currentSceneName = SceneManager.GetActiveScene().name;

        switch (currentSceneName)
        {
        case "Menu":
        {
            if (conn.identity != null)
            {
                var player = conn.identity.GetComponent <NetworkRoomPlayer>();
                RoomPlayers.Remove(player);

                NotifyPlayersOfReadyState();
            }

            base.OnServerDisconnect(conn);

            break;
        }

        case "Game_PVP":
        {
            OnServerWhenClientDisconnectedIngame?.Invoke();         // RpcClient function invoking (from spawn system)

            base.OnServerDisconnect(conn);

            break;
        }
        }
    }
Ejemplo n.º 3
0
    public override void OnStopServer()
    {
        //OnServerStopped?.Invoke();

        RoomPlayers.Clear();
        //GamePlayers.Clear();
    }
Ejemplo n.º 4
0
    public override void OnServerDisconnect(NetworkConnection conn)
    {
        // Quitar de las estructuras de datos.
        if (conn.identity != null)
        {
            print("OnServerDisconnect: conn.identity no es null");
            var player = conn.identity.GetComponent <RoomPlayer>();
            RoomPlayers.Remove(player);
        }

        if (tokenConnection.Exists(p => p.Value == conn))
        {
            print("OnServerDisconnect: Existe token asociado a la conexión");
            tokenConnection.Remove(tokenConnection.Find(p => p.Value == conn));
            if (modoServidor == ServidorPartida)
            {
                print("OnServerDisconnect: Estamos en server partida");
                serverPlayers--;
                if (serverPlayers < 0)
                {
                    serverPlayers = 0;
                }
                print("OnServerDisconnect: serverPlayers: " + serverPlayers + " --- MaxPlayers: " + maxPlayers);
                if (partidaFinalizada && serverPlayers <= 0) // partidaFinalizada implica que serverPlayers ha sido maxPlayers (buscar partidaFinalizada = true para comprobarlo)
                {
                    print("Empezamos ENDMATCH");
                    StartCoroutine(EndMatch());
                }
            }
        }


        base.OnServerDisconnect(conn);
    }
Ejemplo n.º 5
0
 public override void OnStopServer()
 {
     ServerStopped?.Invoke();
     RoomPlayers.Clear();
     GamePlayers.Clear();
     //base.OnStopServer();
 }
Ejemplo n.º 6
0
    public override void ServerChangeScene(string newSceneName)
    {
        if (SceneManager.GetActiveScene().path == lobbyScene && newSceneName.StartsWith("Scene"))
        {
            System.Random rnd     = new System.Random();
            var           players = RoomPlayers.OrderBy(x => rnd.Next()).Take(numScientists);
            foreach (var player in players)
            {
                player.IsScientist = true;
            }
            for (int i = RoomPlayers.Count - 1; i >= 0; i--)
            {
                var conn = RoomPlayers[i].connectionToClient;
                var gamePlayerInstance = Instantiate(gamePlayerPrefab);
                gamePlayerInstance.SetDisplayName(RoomPlayers[i].DisplayName);
                gamePlayerInstance.SetIsScientist(RoomPlayers[i].IsScientist);

                // NetworkServer.Destroy(conn.identity.gameObject);

                NetworkServer.ReplacePlayerForConnection(conn, gamePlayerInstance.gameObject);
            }
        }

        base.ServerChangeScene(newSceneName);
    }
Ejemplo n.º 7
0
    public override void OnStopServer()
    {
        //Serveri sammutetaan Huone tyhjennetään
        OnServerStopped?.Invoke();

        RoomPlayers.Clear();
        GamePlayers.Clear();
    }
Ejemplo n.º 8
0
    public override void OnStopServer()
    {
        OnServerStopped?.Invoke();

        RoomPlayers.Clear();
        GamePlayers.Clear();

        ServerChangeScene(menuScene);
    }
Ejemplo n.º 9
0
 public override void OnServerDisconnect(NetworkConnection conn)
 {
     if (conn.identity != null)
     {
         var player = conn.identity.GetComponent <NetworkRoomPlayerLobby>();
         RoomPlayers.Remove(player);
         NotifyPlayersOfReadyState();
     }
     base.OnServerDisconnect(conn);
 }
Ejemplo n.º 10
0
    public override void OnClientDisconnect(NetworkConnection conn)
    {
        if (conn.identity != null)
        {
            NetworkRoomPlayerLobby player = conn.identity.GetComponent <NetworkRoomPlayerLobby>();
            RoomPlayers.Remove(player);
        }

        base.OnClientDisconnect(conn);
        ClientDisconnected?.Invoke();
    }
Ejemplo n.º 11
0
 public override void OnServerDisconnect(NetworkConnection conn)
 {
     if (conn.identity != null)
     {
         //Haetaan poistuneen pelaajan RoomFuturace scripti
         var player = conn.identity.GetComponent <NetWorkRoomFuturace>();
         //Ja poistetaan pelaaja listasta (vain serveri)
         RoomPlayers.Remove(player);
         NotifyPlayersOfReadyState();
     }
     //Basessa tuhotaan oikeasti yhteys
     base.OnServerDisconnect(conn);
 }
Ejemplo n.º 12
0
    public override void OnServerDisconnect(NetworkConnection conn)
    {
        if (conn.identity != null)
        {
            Debug.Log("A client was disconnected from the server");
            var player = conn.identity.GetComponent <RoomPlayer>();

            RoomPlayers.Remove(player);

            NotifyPlayersOfReadyState();
        }

        base.OnServerDisconnect(conn);
    }
Ejemplo n.º 13
0
    public override void OnServerDisconnect(NetworkConnection conn)
    {
        //removes players when a disconnect occurs so they aren't affected by the world
        if (conn.identity != null)
        {
            NetworkRoomPlayer player = conn.identity.GetComponent <NetworkRoomPlayer>();

            RoomPlayers.Remove(player);

            NotifyPlayersOfReadyState();
        }

        base.OnServerDisconnect(conn);
    }
Ejemplo n.º 14
0
    //Called on SERVER when a client disconnects from server, automatically
    public override void OnServerDisconnect(NetworkConnection conn)
    {
        //Get room player script and remove from the list

        if (conn.identity != null)                                   //if the object has a network identity
        {
            var player = conn.identity.GetComponent <NetworkRoom>(); //Get network room script of disconnected player

            RoomPlayers.Remove(player);                              //Remove the player conn from the list of room players

            NotifyPlayersOfReadyState();                             //Update everyone of ready status
        }

        base.OnServerDisconnect(conn); //Destroys player for connection, disconnects client properly
        //Debug.Log("Removed player");
    }
    public void EndGame()
    {
        if ("Assets/Scenes/" + SceneManager.GetActiveScene().name + ".unity" == gameScene)
        {
            ServerChangeScene("EndScene");

            for (int i = 0; i < Players.Count; i++)
            {
                NetworkServer.Destroy(Players[i].gameObject);
                NetworkServer.DestroyPlayerForConnection(Players[i].connectionToClient);
            }
            RoomPlayers.Clear();
            GamePlayers.Clear();
            Players.Clear();
        }
    }
Ejemplo n.º 16
0
    public override void OnServerDisconnect(NetworkConnection conn)
    {
        Debug.Log("OnServerDisconnect");
        if (conn.identity != null)
        {
            var player = conn.identity.GetComponent <NetworkRoomPlayerLobby>();

            RoomPlayers.Remove(player);

            NotifyPlayersOfReadyState();
        }

        base.OnServerDisconnect(conn);
        ForceLeaveGame leave = new ForceLeaveGame();

        leave.GoBackToMenu(gameObject);
    }
Ejemplo n.º 17
0
    private void StartCombat()
    {
        rondaAJugar++;

        int        tam           = maxPlayers / 2;
        List <int> indicesRandom = new List <int>();

        System.Random rnd = new System.Random();

        for (int i = 0; i < tam; ++i)
        {
            int indice;
            do
            {
                indice = rnd.Next(0, maxPlayers);
            } while (indicesRandom.Contains(indice)); // Que no esté el número
            indicesRandom.Add(indice);
        }

        List <int> restoIndices = GetRemainingIndexes(indicesRandom, maxPlayers);

        string puerto     = puertoActual.ToString();
        string argumentos = puerto + " 1 " + (puertoInicial - 1).ToString(); // Lo de puerto inicial es para que el server de combate sepa a donde conectarse de vuelta

        argumentos += GetTokens(indicesRandom);
        IncrementPort();

        ExecuteCommand(GlobalVariables.combatServerScriptPath, argumentos);
        ChangePlayersToCombatServer(puerto, indicesRandom); // ChangePlayersToCombatServer(puerto, 0, tam);

        puerto      = puertoActual.ToString();
        argumentos  = puerto + " 1 " + (puertoInicial - 1).ToString();
        argumentos += GetTokens(restoIndices);
        IncrementPort();

        ExecuteCommand(GlobalVariables.combatServerScriptPath, argumentos);
        ChangePlayersToCombatServer(puerto, restoIndices);

        RoomPlayers.Clear();
        // tokenConnection.Clear();
        // serverPlayers = 0;

        // tokens no se tocan
        // tokenConnection sí ya que la conexión cambia cada vez que nos reconectamos
    }
Ejemplo n.º 18
0
    private void StartCombat(string[] players)
    {
        rondaAJugar++;

        string puerto     = puertoActual.ToString();
        string argumentos = puerto + " 1 " + (puertoInicial - 1).ToString() + " "; // Lo de puerto inicial es para que el server de combate sepa a donde conectarse de vuelta

        foreach (var tk in players)
        {
            argumentos += tk + " ";
        }
        IncrementPort();

        ExecuteCommand(GlobalVariables.combatServerScriptPath, argumentos);
        ChangePlayersToCombatServer(puerto, players);

        RoomPlayers.Clear();
        // tokenConnection.Clear();
        // serverPlayers = 0;
    }
Ejemplo n.º 19
0
    //Method called on Quit, disconnects all players
    public override void OnServerDisconnect(NetworkConnection conn)
    {
        if (conn.identity != null)
        {
            var player = conn.identity.GetComponent <NetworkBehaviour>();

            if (player is NetworkRoomPlayerDND roomPlayer)
            {
                RoomPlayers.Remove(roomPlayer);

                NotifyPlayersOfReadyState();
            }
            else if (player is NetworkGamePlayerDND gamePlayer)
            {
                GamePlayers.Remove(gamePlayer);
                StopHost();
            }
        }

        base.OnServerDisconnect(conn);
    }
Ejemplo n.º 20
0
    public override void OnServerDisconnect(NetworkConnection conn)
    {
        if (conn.identity != null)
        {
            var player = conn.identity.GetComponent <NetworkBehaviour>(); //Refrence to the player who disconnected

            if (player is NetworkRoomPlayer roomPlayer)
            {
                RoomPlayers.Remove(roomPlayer); //Removes disconnected player from list of current players

                NotifyPlayersOfReadyState();
            }

            else if (player is NetworkGamePlayer gamePlayer)
            {
                GamePlayers.Remove(gamePlayer);
            }
        }

        base.OnServerDisconnect(conn);
    }
Ejemplo n.º 21
0
    public override void OnServerAddPlayer(NetworkConnection conn)
    {
        if (modoServidor == ServidorPartida)
        {
            if (SceneManager.GetActiveScene().path == lobbyScene && rondaAJugar <= maxRondas)
            {
                RoomPlayer roomPlayerInstance = Instantiate(roomPlayerPrefab);
                if (indexColoresServidor < maxPlayers)
                {
                    PlayerColorMessage msg = new PlayerColorMessage();
                    msg.Color = coloresServidor[indexColoresServidor];
                    indexColoresServidor++;
                    conn.Send <PlayerColorMessage>(msg);
                }


                NetworkServer.AddPlayerForConnection(conn, roomPlayerInstance.gameObject); // Esto se encarga de spawnearlo en todos los clientes también
                RoomPlayers.Add(roomPlayerInstance);

                if ((numPlayers == maxPlayers && rondaAJugar < maxRondas) || (numPlayers == maxPlayers / 2 && rondaAJugar == maxRondas))
                {
                    NextRound();
                }
            }
        }
        else if (modoServidor == ServidorCombate)
        {
            if (SceneManager.GetActiveScene().path == lobbyScene)
            {
                RoomPlayer roomPlayerInstance = Instantiate(roomPlayerPrefab);
                NetworkServer.AddPlayerForConnection(conn, roomPlayerInstance.gameObject); // Esto se encarga de spawnearlo en todos los clientes también
                RoomPlayers.Add(roomPlayerInstance);

                if (numPlayers == maxPlayers)
                {
                    StartGame();
                }
            }
        }
    }
Ejemplo n.º 22
0
 public override void OnStopServer()
 {
     //removes all the players from the scene at the end of the game
     RoomPlayers.Clear();
 }
Ejemplo n.º 23
0
 //When server/host is stopped
 //Perhaps when a delete room button is clicked? Which will result in kicking every one out of the room
 public override void OnStopServer()
 {
     RoomPlayers.Clear(); //Clear the list of existing players, ready for a new game
 }
Ejemplo n.º 24
0
 public override void OnStopServer()
 {
     RoomPlayers.Clear();
     GamePlayers.Clear();
     base.OnStopServer();
 }
Ejemplo n.º 25
0
 public override void OnStopServer()
 {
     Debug.Log("Server Stopped");
     RoomPlayers.Clear();
 }
Ejemplo n.º 26
0
 public override void OnStopServer()
 {
     RoomPlayers.Clear();
 }
    public override void OnStopServer()
    {
        //base.OnStopServer();

        RoomPlayers.Clear();
    }
Ejemplo n.º 28
0
 public override void OnStopClient()
 {
     //Debug.Log("Custom Network Manager: Stopped client");
     SceneManager.LoadScene(0); //reload scene for client
     RoomPlayers.Clear();
 }
Ejemplo n.º 29
0
 public override void OnStopServer()                                 // ---------- LOBBY (i guess) -----------
 {
     RoomPlayers.Clear();
 }
Ejemplo n.º 30
0
 public override void OnStopHost()
 {
     RoomPlayers.Clear();
     //Debug.Log("Custom Network Manager: Stopped host");
     StopClient();
 }