public override void OnJoinedRoom()
        {
            Vector2 pos;

            Debug.Log(" You entered a room = " + PhotonNetwork.CurrentRoom.Name);
            Debug.Log("You Joined a room YourName is " + PhotonNetwork.LocalPlayer.NickName + " PlayersInRoom " + PhotonNetwork.CurrentRoom.PlayerCount);
            if (PhotonNetwork.CurrentRoom.PlayerCount == 1)
            {
                pos = new Vector2(15, 0);
            }
            else
            {
                pos = new Vector2(-15, 0);
            }
            PlayerSpawnData spawn = new PlayerSpawnData();

            spawn.playerID       = PhotonNetwork.LocalPlayer.UserId;
            spawn.playerPosition = pos;
            spawn.char1Health    = 100f;
            spawn.char2Health    = 100f;
            spawn.char3Health    = 100f;
            spawn.playerName     = PhotonNetwork.LocalPlayer.NickName;
            communicationManager.SavePlayerSpawnData(spawn);
            if (PhotonNetwork.CurrentRoom.PlayerCount == 2)
            {
                communicationManager.NotifyGameStarted();
            }
        }
    private PlayerSpawnData setPlayerSpawn(NetworkIdentity netId, int index)
    {
        PlayerSpawnData playerSpawnData = new PlayerSpawnData();

        playerSpawnData.networkIdentity = netId;
        if (index == 0 || index == 1)
        {
            playerSpawnData.team = 1;
        }
        else if (index == 2 || index == 3)
        {
            playerSpawnData.team = 2;
        }
        else
        {
            Debug.LogError("invalid index for team assigning");
        }

        if (index % 2 == 0)
        {
            playerSpawnData.playerType = PlayerType.human;
        }
        else if (index % 2 == 1)
        {
            playerSpawnData.playerType = PlayerType.ghost;
        }
        else
        {
            Debug.LogError("invalid index for player spawn");
        }

        return(playerSpawnData);
    }
Beispiel #3
0
    void SpawnPlayer(PlayerSpawnData playerSpawnData)
    {
        GameObject   go     = Instantiate(PlayerPrefab);
        ClientPlayer player = go.GetComponent <ClientPlayer>();

        player.Initialize(playerSpawnData.Id, playerSpawnData.Name);
        players.Add(playerSpawnData.Id, player);
    }
Beispiel #4
0
    private void InitializeWeaponData(PlayerSpawnData data)
    {
        var modules = _weaponData.GetData(data.Id);

        if (modules != null)
        {
            data.WeaponModuleIds.AddRange(modules);
        }
    }
    private List <PlayerSpawnData> PrepareSpawnPositions()
    {
        List <PlayerSpawnData> spawnPosisionsList = new List <PlayerSpawnData>();

        if (_globalHostPlayerManager.ConnectedPlayers.Count >= 1)
        {
            var spawnData = new PlayerSpawnData
            {
                Id              = _globalHostPlayerManager.ConnectedPlayers[0].ID,
                X               = 0.5f,
                Y               = 0.5f,
                ItemIds         = new List <short>(),
                WeaponModuleIds = new List <short>()
            };
            spawnPosisionsList.Add(spawnData);
        }
        if (_globalHostPlayerManager.ConnectedPlayers.Count >= 2)
        {
            var spawnData = new PlayerSpawnData
            {
                Id              = _globalHostPlayerManager.ConnectedPlayers[1].ID,
                X               = -0.5f,
                Y               = 0.5f,
                ItemIds         = new List <short>(),
                WeaponModuleIds = new List <short>()
            };
            spawnPosisionsList.Add(spawnData);
        }
        if (_globalHostPlayerManager.ConnectedPlayers.Count >= 3)
        {
            var spawnData = new PlayerSpawnData
            {
                Id              = _globalHostPlayerManager.ConnectedPlayers[2].ID,
                X               = 0.5f,
                Y               = -0.5f,
                ItemIds         = new List <short>(),
                WeaponModuleIds = new List <short>()
            };
            spawnPosisionsList.Add(spawnData);
        }
        if (_globalHostPlayerManager.ConnectedPlayers.Count >= 4)
        {
            var spawnData = new PlayerSpawnData
            {
                Id              = _globalHostPlayerManager.ConnectedPlayers[3].ID,
                X               = -0.5f,
                Y               = -0.5f,
                ItemIds         = new List <short>(),
                WeaponModuleIds = new List <short>()
            };
            spawnPosisionsList.Add(spawnData);
        }

        OnDataPrepared?.Invoke(spawnPosisionsList);

        return(spawnPosisionsList);
    }
    public PlayerSpawnData[] GetAllSpawnData()
    {
        var r = new PlayerSpawnData[serverPlayers.Count];

        for (int i = 0; i < serverPlayers.Count; i++)
        {
            r[i] = serverPlayers[i].GetSpawnData();
        }

        return(r);
    }
 public void SavePlayerSpawnData(PlayerSpawnData spawnData)
 {
     spData             = spawnData;
     spData.playerName  = spawnData.playerName;
     spData.char1Health = spawnData.char1Health;
     spData.char2Health = spawnData.char2Health;
     spData.char3Health = spawnData.char3Health;
     //Debug.Log(spawnData.char1Health);
     multiplayerService.SetLocalPlayerID(PhotonNetwork.LocalPlayer.UserId);
     multiplayerService.SetCommunicationManager(this);
 }
Beispiel #8
0
    private void InitializeInventoryData(PlayerSpawnData data)
    {
        var items = _invData.GetData(data.Id);

        if (items != null)
        {
            for (int i = 0; i < items.Count; i++)
            {
                data.ItemIds.Add(items[i].itemId);
            }
        }
    }
        void PlayerSpawnEventProscess(EventData photonEvent)
        {
            PlayerSpawnData spawnData = new PlayerSpawnData();

            object[] data = (object[])photonEvent.CustomData;
            spawnData.playerPosition = (Vector2)data[1];
            spawnData.playerID       = (string)data[0];
            spawnData.char1Health    = (float)data[2];
            spawnData.char2Health    = (float)data[3];
            spawnData.char3Health    = (float)data[4];
            Debug.Log("Spawn Recieved from: " + (string)data[0]);
            roomManager.AddPlayerToRoom(spawnData.playerID);
            multiplayerService.SpawnPlayer(spawnData);
        }
        public void NotifyAllAboutPlayerSpawn(PlayerSpawnData spawnData)
        {
            //PLAYERSPAWNEVENT
            //Debug.Log(spawnData.char1Health);
            object[]          content           = new object[] { spawnData.playerID, spawnData.playerPosition, spawnData.char1Health, spawnData.char2Health, spawnData.char3Health };
            RaiseEventOptions raiseEventOptions = new RaiseEventOptions {
                Receivers = ReceiverGroup.All
            };
            SendOptions sendOptions = new SendOptions {
                Reliability = true
            };

            PhotonNetwork.RaiseEvent(PLAYERSPAWNEVENT, content, raiseEventOptions, sendOptions);
            Debug.Log("Sending SpawnPositions");
        }
Beispiel #11
0
        public override void StartState()
        {
            base.StartState();

            UIMaster.Instance.UpdateMultiButtonState(UIMultiButton.MultiButtonState.Inactive);

            foreach (MapSquare square in Object.FindObjectsOfType <MapSquare>())
            {
                if (square.playerSpawn)
                {
                    spawnSquares.Add(square);
                    interactableSquares.Add(square);
                    square.interactable = MapSquare.Interactable.ActiveChoice;
                }
            }
            spawn = new PlayerSpawnData();
        }
    private void spawnPlayer(PlayerSpawnData playerSpawnData)
    {
        GameObject playerPrefab;

        switch (playerSpawnData.playerType)
        {
        case PlayerType.human:
            playerPrefab = humanPrefab;
            break;

        case PlayerType.ghost:
            playerPrefab = ghostPrefab;
            break;

        default:
            playerPrefab = null;
            Debug.LogError("Invalid PlayerType to be spawned.");
            break;
        }

        Vector3    spawnPosition;
        Quaternion spawnRotation;

        if (playerSpawnData.team == 1)
        {
            spawnPosition = team1SpawnTransform.position;
            spawnRotation = team1SpawnTransform.rotation;
        }
        else
        {
            spawnPosition = team2SpawnTransform.position;
            spawnRotation = team2SpawnTransform.rotation;
        }

        GameObject playerObject = Instantiate(playerPrefab, spawnPosition, spawnRotation);

        playerObject.GetComponent <PlayerNetworkManager>().teamNumber = teamNumber; //set client team number
        NetworkServer.Spawn(playerObject);
        if (NetworkServer.ReplacePlayerForConnection(playerSpawnData.networkIdentity.connectionToClient, playerObject))
        {
            NetworkServer.Destroy(playerSpawnData.networkIdentity.gameObject);
        }
    }
Beispiel #13
0
    public void SpawnPlayers(PlayerSpawnData[] _psd)
    {
        if (_psd == null || _psd.Length == 0)
        {
            return;
        }

        for (int i = 0; i < _psd.Length; i++)
        {
            PlayerSpawnData spawnData = _psd[i];
            GameObject      playerObj = Instantiate(playerPrefab);

            PlayerController playerController = playerObj.GetComponent <PlayerController>();
            playerObj.transform.position = spawnPositions[i % spawnPositions.Length].position;
            playerController.color       = spawnData.color;

            JoystickController joyCon = playerObj.AddComponent <JoystickController>();

            playerObjs[i] = playerObj;
        }
    }
Beispiel #14
0
    public void Initialize(Vector3 position, ClientConnection clientConnection)
    {
        ClientConnection        = clientConnection;
        Room                    = clientConnection.Room;
        Client                  = clientConnection.Client;
        ClientConnection.Player = this;
        Room.ServerPlayers.Add(this);

        Room.UpdateDatas  = new PlayerUpdateData[Room.ServerPlayers.Count];
        CurrentUpdateData = new PlayerUpdateData(Client.ID, 0, Vector3.zero, Quaternion.identity);
        InputTick         = Room.ServerTick;
        Health            = 100;

        PlayerSpawnData[] datas = new PlayerSpawnData[Room.ServerPlayers.Count];
        for (int i = 0; i < Room.ServerPlayers.Count; i++)
        {
            ServerPlayer p = Room.ServerPlayers[i];
            datas[i] = p.GetPlayerSpawnData();
        }
        using (Message m = Message.Create((ushort)Tags.GameStartDataResponse, new GameStartData(datas, Room.ServerTick)))
        {
            Client.SendMessage(m, SendMode.Reliable);
        }
    }
Beispiel #15
0
 public void SpawnPlayer(PlayerSpawnData playerSpawnData)
 {
     Debug.Log(playerSpawnData.char1Health);
     playerService.PlayerConnected(playerSpawnData);
     //cameraService.OnGameStart();
 }
 public override void Deserialize(NetworkReader reader)
 {
     SpawnData = FromByteArray <PlayerSpawnData>(reader.ReadBytesAndSize());
 }
Beispiel #17
0
        public override void UpdateState()
        {
            base.UpdateState();

            if (!stateFinished)
            {
                // If current player has a character spawned, move to next or finish spawn phase
                if (GameMaster.Instance.currentPlayer.character != null)
                {
                    if (AllPlayersSpawned())
                    {
                        UIMaster.Instance.UpdateMultiButtonState(UIMultiButton.MultiButtonState.Ready);
                        return;
                    }

                    // Not all players are spawned, move to the next
                    GameMaster.Instance.currentPlayer = GameMaster.Instance.players[GameMaster.Instance.players.IndexOf(GameMaster.Instance.currentPlayer) + 1];
                    spawnSquares.Remove(GameMaster.Instance.currentPlayer.character.mapSquare);
                    foreach (MapSquare square in spawnSquares)
                    {
                        interactableSquares.Add(square);
                        square.interactable = MapSquare.Interactable.ActiveChoice;
                    }
                    spawn = new PlayerSpawnData();
                }

                // If we have an interacted square, check first if it was a position or rotation. Get the data, then update the interactable squares
                // NOTE: This is a huge mess and warrants a larger cleanup
                if (GameMaster.Instance.interactedSquare != null)
                {
                    if (spawn.spawnPosition == null)
                    {
                        spawn.spawnPosition = GameMaster.Instance.interactedSquare;

                        foreach (MapSquare square in interactableSquares)
                        {
                            square.interactable = MapSquare.Interactable.Passive;
                        }

                        interactableSquares.Clear();

                        interactableSquares.Add(spawn.spawnPosition.GetNeighbour(Tools.Direction.East));
                        interactableSquares.Add(spawn.spawnPosition.GetNeighbour(Tools.Direction.West));
                        interactableSquares.Add(spawn.spawnPosition.GetNeighbour(Tools.Direction.North));
                        interactableSquares.Add(spawn.spawnPosition.GetNeighbour(Tools.Direction.South));

                        foreach (MapSquare square in interactableSquares)
                        {
                            square.interactable = MapSquare.Interactable.ActiveChoice;
                        }
                    }
                    else if (spawn.spawnFacing == null)
                    {
                        spawn.spawnFacing = GameMaster.Instance.interactedSquare;
                        GameMaster.Instance.currentPlayer.SpawnChampion(spawn.spawnPosition, spawn.spawnPosition.GetNeighbourDirection(spawn.spawnFacing));

                        foreach (MapSquare square in interactableSquares)
                        {
                            square.interactable = MapSquare.Interactable.Passive;
                        }

                        interactableSquares.Clear();
                    }
                    GameMaster.Instance.interactedSquare = null;
                }
            }
        }