Ejemplo n.º 1
0
    public void Setup()
    {
        if (isDebug)
        {
            PlayerList pList = Instantiate(playerListPrefab).GetComponent <PlayerList>();
            pList.AddPlayer(new Player(new ControlScheme(1, true), 1));
            pList.AddPlayer(new Player(new ControlScheme(2, true), 2));
        }

        for (int i = 0; i < PlayerList.Obj.numPlayers; i++)
        {
            GameObject player = Instantiate(PlayerPrefabs[i]);
            GameObject camera = Instantiate(playerCameraPrefab);
            if (i > 0)
            {
                Destroy(camera.GetComponent <AudioListener>());
            }

            player.transform.position = spawnPoints [i].transform.position;
            PlayerController pCtrl  = player.GetComponent <PlayerController> ();
            GameObject       canvas = Instantiate(playerCanvasPrefab);

            pCtrl.Setup(PlayerList.Obj.playerList [i], camera.GetComponent <PlayerCameraController> (), canvas.GetComponent <PlayerCanvasController> ());

            playerControllerList.Add(pCtrl);
        }
        GameController.Obj.SetPlayers(PlayerList.Obj.playerList);
        SetCameras();
        MultiplayerManager.Obj = this;
    }
Ejemplo n.º 2
0
 public void NewGame()
 {
     if (!GameInitiated)
     {
         GameInitiated = true;
         CurrentPlayer = gameObject.AddComponent <Player>();
         int index = 0;
         PlayingAgainstAI = false;
         endPos           = new Vector3();
         animator         = gameObject.GetComponent <Animator>();
         gameObject.GetComponent <Cards>().InitCards();
         random = new System.Random();
         PlayerList.AddPlayer("Player 1");
         PlayerList.AddPlayer("Player 2");
         foreach (var player in PlayerList.GetPlayers())
         {
             player.PlayerIndex = index;
             index++;
         }
         playerPanel_1.SetupPanel(PlayerList.GetPlayers()[0]);
         playerPanel_2.SetupPanel(PlayerList.GetPlayers()[1]);
         Setup();
         index = 0;
     }
     else
     {
         StopAllCoroutines();
         winnerText.text = "Resets the game";
         StartCoroutine(ResetGame());
     }
 }
Ejemplo n.º 3
0
    public void Start()
    {
        transform.SetParent(NetworkManager.singleton.transform);
        PlayerList = NetworkManager.singleton.transform.GetComponent <PlayerList>();
        playerID   = PlayerList.Players.Count;
        PlayerList.AddPlayer(this);

        if (isLocalPlayer)
        {
            LocalPlayer      = this;
            gameObject.name += "(LOCAL)";
        }

        for (int i = 0; i < DataManager.ResourcesData.dataArray.Length; i++)
        {
            resourcesAmountForTrade.Add(0);
            resourcesCostForTrade.Add(0);
        }

        AssignSemiRandomizedClimateType();

        if (isLocalPlayer)
        {
            CityView.City.OnGameSceneWasLoaded += SendUpdatePollutionPerYear;
            CityView.BuildingsHandler.OnBuildingListChanged += SendUpdatePollutionPerYear;
        }
    }
    public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId)
    {
        base.OnServerAddPlayer(conn, playerControllerId);

        var newPlayer = conn.playerControllers[0].gameObject;

        PlayerList.AddPlayer(newPlayer.gameObject.GetComponent <Player>());
    }
Ejemplo n.º 5
0
 // Use this for initialization
 void Start()
 {
     if (isServer)
     {
         transform.name = "Player " + GetComponent <NetworkIdentity>().netId.ToString();
         pl             = GameObject.Find("PlayerList").GetComponent <PlayerList>();
         pl.AddPlayer("Player " + GetComponent <NetworkIdentity>().netId.ToString(), gameObject);
     }
 }
Ejemplo n.º 6
0
    public PlayerController SpawnPlayer(
        RavenNest.Models.Player playerDefinition,
        Player streamUser       = null,
        StreamRaidInfo raidInfo = null)
    {
        if (!chunkManager)
        {
            Debug.LogError("No chunk manager available!");
            return(null);
        }

        var starter = chunkManager.GetStarterChunk();

        if (starter == null)
        {
            Debug.LogError("No starter chunk available!");
            return(null);
        }

        var spawnPoint = starter.GetPlayerSpawnPoint();
        //var startIsland = playerDefinition?.State?.Island;
        //var island = Islands.Find(startIsland);
        //if (island != null)
        //{
        //    spawnPoint = island.SpawnPosition;
        //}

        var vector3 = Random.insideUnitSphere * 1f;
        var player  = playerManager.Spawn(spawnPoint + vector3, playerDefinition, streamUser, raidInfo);

        if (!player)
        {
            Debug.LogError("Can't spawn player, player is already playing.");
            return(null);
        }

        playerList.AddPlayer(player);
        PlayerJoined(player);

        if (player && gameCamera && gameCamera.AllowJoinObserve)
        {
            gameCamera.ObservePlayer(player);
        }

        if (dropEventManager.IsActive)
        {
            player.BeginItemDropEvent();
        }

        return(player);
    }
Ejemplo n.º 7
0
    void Start()
    {
        _playerList    = PlayerList.Singleton();
        _networkPlayer = GetComponent <NetworkPlayer>();

        _playerList.AddPlayer(_networkPlayer);

        if (isLocalPlayer)
        {
            LocalSetup();
        }
        else
        {
            RemoteSetup();
        }

        if (isServer)
        {
            _playerSlotter = PlayerSlotter.Singleton();
            _playerSlotter.AddPlayer(_networkPlayer);
        }
    }
Ejemplo n.º 8
0
    public PlayerController SpawnPlayer(
        RavenNest.Models.Player playerDef,
        Player streamUser       = null,
        StreamRaidInfo raidInfo = null)
    {
        if (!chunkManager)
        {
            Debug.LogError("No chunk manager available!");
            return(null);
        }

        var starter = chunkManager.GetStarterChunk();

        if (starter == null)
        {
            Debug.LogError("No starter chunk available!");
            return(null);
        }

        var spawnPoint = starter.GetPlayerSpawnPoint();
        var vector3    = Random.insideUnitSphere * 1f;
        var player     = playerManager.Spawn(spawnPoint + vector3, playerDef, streamUser, raidInfo);

        if (!player)
        {
            Debug.LogError("Can't spawn player, player is already playing.");
        }

        playerList.AddPlayer(player);

        PlayerJoined(player);

        if (player && gameCamera && gameCamera.AllowJoinObserve)
        {
            gameCamera.ObservePlayer(player);
        }

        return(player);
    }
Ejemplo n.º 9
0
        /// <summary>
        /// Add a single player to the list of players that should make use of the here defined override values.
        /// When adding multiple players use <see cref="AffectPlayers"/> instead.
        /// Methods can be expensive when call with a lot of players! Avoid using in Update in every frame!
        /// </summary>
        /// <param name="playerToAffect"></param>
        /// <returns>true if the player was added/was already added before</returns>
        public bool AddPlayer(VRCPlayerApi playerToAffect)
        {
            if (!HasStarted)
            {
                Start();
            }

            if (!udonDebug.Assert(playerList, "playerList invalid", this))
            {
                return(false);
            }

            if (!udonDebug.Assert(Utilities.IsValid(playerToAffect), "Player to affect invalid", this))
            {
                return(false);
            }

            if (!udonDebug.Assert(playerList.AddPlayer(playerToAffect), "player already affected", this))
            {
                return(false);
            }

            if (!IsActiveAndEnabled())
            {
                Debug.LogWarning($"Override {gameObject.name} is not enabled for {playerToAffect.displayName}");
                return(true);
            }

            if (!udonDebug.Assert(Utilities.IsValid(betterPlayerAudio), "betterPlayerAudio invalid", this))
            {
                return(false);
            }

            var success = true;

            if (!betterPlayerAudio.OverridePlayerSettings(this, playerToAffect))
            {
                if (playerList.players != null)
                {
                    var listContainedInvalidPlayer = playerList.players.Length > playerList.DiscardInvalid();
                    if (listContainedInvalidPlayer)
                    {
                        Debug.LogWarning("Player list contained invalid player (has left the world)");
                    }

                    success = listContainedInvalidPlayer;
                }
                else
                {
                    Debug.LogWarning(
                        $"Player {playerToAffect.displayName} already affected by {gameObject.name} (caused by ownership race)");
                    success = false;
                }
            }

            if (playerToAffect.isLocal)
            {
                // ActivateReverb();
                Notify(localPlayerAddedListeners, localPlayerAddedEvent);
            }

            return(success);
        }
Ejemplo n.º 10
0
        void Awake()
        {
            if (!(_playerList && _leaveBtn && _challengePlayerCanvas && _abortChallengeBtn && _respondToChallengeCanvas && _acceptChallengeBtn && _declineChallengeBtn))
            {
                Destroy(gameObject);
                return;
            }

            if (Game.Client == null)
            {
                Game.LoadMainMenu();
                return;
            }

            _leaveBtn.Click += Leave;
            _playerList.PlayerChallenged += player => Dispatcher.Instance.Enqueue(() => ChallengePlayer(player));
            _abortChallengeBtn.Click     += () => Dispatcher.Instance.Enqueue(AbortChallenge);
            _acceptChallengeBtn.Click    += () => Dispatcher.Instance.Enqueue(AcceptChallenge);
            _declineChallengeBtn.Click   += () => Dispatcher.Instance.Enqueue(DeclineChallenge);

            Game.Client.PlayerAdded      += player => Dispatcher.Instance.Enqueue(() => _playerList.AddPlayer(player));
            Game.Client.PlayerRemoved    += player => Dispatcher.Instance.Enqueue(() => _playerList.RemovePlayer(player));
            Game.Client.PlayerChallenged += challenge => Dispatcher.Instance.Enqueue(() => OnPlayerChallenged(challenge));
        }
Ejemplo n.º 11
0
    /// <summary>
    /// Reads incoming messages from the server and reacts accordingly
    /// </summary>
    /// <param name="data">Message that was received from server</param>
    private void OnIncomingData(string data)
    {
        // Splits message into tokens
        string[] tokens = data.Split('~');

        switch (tokens[0])
        {
        case "SPONG":
            receivedPingReply = true;
            break;

        case "SMOV":
            OthelloBoard.Instance.MakeMove(int.Parse(tokens[1]), int.Parse(tokens[2]), OthelloBoard.Instance.isWhiteTurn);
            break;

        case "SADDP":

            GameObject playerListObject = GameObject.Find("PlayerList");

            if (playerListObject != null)
            {
                PlayerList playerList = GameObject.Find("PlayerList").GetComponent <PlayerList>();
                playerList.AddPlayer(tokens[1], PlayerListItem.PlayerState.kReady);
            }

            GameManager.Instance.players.Add(tokens[1], PlayerListItem.PlayerState.kReady);
            break;

        case "SDELP":

            playerListObject = GameObject.Find("PlayerList");


            if (playerListObject != null)
            {
                PlayerList playerList = GameObject.Find("PlayerList").GetComponent <PlayerList>();
                playerList.DeletePlayer(tokens[1]);
            }

            GameManager.Instance.players.Remove(tokens[1]);
            break;

        case "SUPS":
            if (tokens[2] == "READY")
            {
                GameManager.Instance.players[tokens[1]] = PlayerListItem.PlayerState.kReady;
                playerListObject = GameObject.Find("PlayerList");

                if (playerListObject != null)
                {
                    PlayerList playerList = GameObject.Find("PlayerList").GetComponent <PlayerList>();
                    playerList.UpdatePlayer(tokens[1], PlayerListItem.PlayerState.kReady);
                }
            }
            else
            {
                GameManager.Instance.players[tokens[1]] = PlayerListItem.PlayerState.kBusy;

                playerListObject = GameObject.Find("PlayerList");

                if (playerListObject != null)
                {
                    PlayerList playerList = GameObject.Find("PlayerList").GetComponent <PlayerList>();
                    playerList.UpdatePlayer(tokens[1], PlayerListItem.PlayerState.kBusy);
                }
            }
            break;


        case "SREQ":
            Lobby lobby = GameObject.Find("Lobby").GetComponent <Lobby>();
            lobby.OpenPopupWindow(tokens[1]);
            break;

        case "SREQC":
            lobby = GameObject.Find("Lobby").GetComponent <Lobby>();
            lobby.closeWaitForOtherPlayer();
            lobby.closeRequestWindow();
            break;

        case "SRECOV":
            GameManager.Instance.RecoverGame(tokens[1], tokens[2] == "1", tokens[3] == "1");
            break;


        case "SSTARTG":
            GameManager.Instance.StartGame();
            break;

        case "SGAMEC":
            GameManager.Instance.EndGame();
            break;

        case "SGAMEI":
            OthelloBoard board = GameObject.Find("Board").GetComponent <OthelloBoard>();
            board.Alert(tokens[1]);
            break;

        default:
            break;
        }
    }