Exemple #1
0
    /// <summary>
    /// Creates a new Player and then returnes them.
    /// </summary>
    public T createPlayer <T>(Vector3 playerStartPos) where T : IPlayer
    {
        if (this.getPlayerCount() >= this.maxPlayers)
        {
            throw new Exception("Can not have more than " + this.maxPlayers + " players!");
        }

        T newPlayer = (T)GameObject.Instantiate(this.playerPrefab, playerStartPos, Quaternion.identity).GetComponent <IPlayer>();

        newPlayer.getTransform().position = playerStartPos;

        // Locate an id to use for the player.
        int freeID = -1;

        for (int i = 0; i < this.getMaxPlayers(); i++)
        {
            if (this.players[i] == null)
            {
                freeID = i;
                break;
            }
        }

        this.players[freeID] = newPlayer;

        if (this.splitScreen)
        {
            this.updateSplitScreenCameraSetup();
        }
        else
        {
            // Create the UI for the player.
            GameObject obj = GameObject.Instantiate(this.uiPrefab, this.uiLocations[freeID]);
            IPlayerUI  ui  = obj.GetComponent <IPlayerUI>();
            obj.transform.position = this.uiLocations[freeID].position;
            ui.setPlayer(newPlayer);

            this.playerUIs[freeID] = null;
        }

        return(newPlayer);
    }