Ejemplo n.º 1
0
    public void InitializeLobby()
    {
        Debug.Log("Initializing the lobby");
        // Initializing the Lobby Details
        // Only the master client can choose the Judge to
        _IsReady = false;
        _LobbyDetails.InitializeLobbyConnectionDetails(PhotonNetworkManager.Instance.MaximumNumberOfPlayersInARoom);

        if (PhotonNetwork.IsMasterClient)
        {
            int[]             indices      = _LobbyDetails.Initialize();
            RaiseEventOptions eventOptions = new RaiseEventOptions {
                Receivers = ReceiverGroup.All, CachingOption = EventCaching.AddToRoomCache
            };
            SendOptions sendOptions = new SendOptions {
                Reliability = true
            };
            Byterizer byterizer = new Byterizer();
            byterizer.Push(indices[0]);
            byterizer.Push(indices[1]);
            byte[] data = byterizer.GetBuffer();

            PhotonNetwork.RaiseEvent((byte)LobbyNetworkedEvents.CHOOSE_JUDGE_AND_DISH, data, eventOptions, sendOptions);
        }
    }
Ejemplo n.º 2
0
    private void OnRequestedSpawnPoint(byte[] data)
    {
        // Only the master client can provide spawn points
        if (!PhotonNetwork.IsMasterClient)
        {
            return;
        }

        Byterizer byterizer = new Byterizer();

        byterizer.LoadDeep(data);

        GridPosition gridPosition = GetFreeSpawnPoint();

        byterizer.Push(gridPosition.X);
        byterizer.Push(gridPosition.Z);

        data = byterizer.GetBuffer();

        // Raising Net Event
        RaiseEventOptions eventOptions = new RaiseEventOptions {
            Receivers = ReceiverGroup.Others, CachingOption = EventCaching.AddToRoomCache
        };
        SendOptions sendOptions = new SendOptions {
            Reliability = true
        };

        PhotonNetwork.RaiseEvent((byte)NetworkedGameEvents.SEND_SPAWN_POINT, data, eventOptions, sendOptions);
    }
Ejemplo n.º 3
0
    private void OnNetworkEvent(EventData eventData)
    {
        byte eventCode = eventData.Code;

        if (eventCode == (byte)NetworkedGameEvents.PICKED_UP_INGREDIENT)
        {
            Byterizer byterizer = new Byterizer();
            byterizer.LoadDeep((byte[])eventData.CustomData);

            int ingredientViewID = byterizer.PopInt32();
            int heroViewID       = byterizer.PopInt32();

            if (heroViewID != GetComponent <PhotonView>().ViewID)
            {
                return;
            }

            PhotonView       ingredientView   = PhotonView.Find(ingredientViewID);
            IngredientMinion ingredientMinion = ingredientView.GetComponent <IngredientMinion>();
            if (ingredientMinion != null)
            {
                PickUpIngredient(ingredientMinion);
            }
        }
    }
Ejemplo n.º 4
0
    private void OnNetworkEvent(EventData photonNetworkEvent)
    {
        byte eventCode = photonNetworkEvent.Code;

        if (eventCode == (byte)LobbyNetworkedEvents.PLAYER_READIED_UP)
        {
            Byterizer byterizer = new Byterizer();
            byterizer.LoadDeep((byte[])photonNetworkEvent.CustomData);
            int indexOfChosenHero = byterizer.PopInt32();
            OnPlayerReadiedUp(false, indexOfChosenHero);
        }

        else if (eventCode == (byte)LobbyNetworkedEvents.PLAYER_NOT_READY)
        {
            OnPlayerNotReady(false);
        }

        else if (eventCode == (byte)LobbyNetworkedEvents.CHOOSE_JUDGE_AND_DISH)
        {
            // The master client is the first one to be initialized so it need not initialize again
            if (PhotonNetwork.IsMasterClient)
            {
                return;
            }

            Byterizer byterizer = new Byterizer();
            byterizer.LoadDeep((byte[])photonNetworkEvent.CustomData);

            int judgeIndex = byterizer.PopInt32();
            int dishIndex  = byterizer.PopInt32();

            _LobbyDetails.Reset();
            _LobbyDetails.Initialize(judgeIndex, dishIndex);
        }
    }
Ejemplo n.º 5
0
    private void OnStartedCombatTimer(object timeData)
    {
        float     time      = (float)timeData;
        Byterizer byterizer = new Byterizer();

        byterizer.Push(time);
        byte[] data = byterizer.GetBuffer();
        PhotonNetwork.RaiseEvent((byte)NetworkedGameEvents.ON_START_COMBAT_TIMER, data, _RaiseEventOptions, _SendOptions);
    }
Ejemplo n.º 6
0
    private void OnCombatOptionSelected(object combatOptions)
    {
        int[] combatData = (int[])combatOptions;

        Byterizer byterizer = new Byterizer();

        byterizer.Push(combatData[0]);
        byterizer.Push((byte)combatData[1]);

        byte[] data = byterizer.GetBuffer();

        // Raising Net Event (No data required in this case)
        PhotonNetwork.RaiseEvent((byte)NetworkedGameEvents.ON_SELECTED_COMBAT_OPTION, data, _RaiseEventOptions, _SendOptions);
    }
Ejemplo n.º 7
0
    private void RequestSpawnPoint()
    {
        Byterizer byterizer = new Byterizer();

        byterizer.Push(PhotonNetwork.LocalPlayer.UserId);
        byte[] data = byterizer.GetBuffer();

        // Raising Net Event
        RaiseEventOptions eventOptions = new RaiseEventOptions {
            Receivers = ReceiverGroup.Others, CachingOption = EventCaching.AddToRoomCache
        };
        SendOptions sendOptions = new SendOptions {
            Reliability = true
        };

        PhotonNetwork.RaiseEvent((byte)NetworkedGameEvents.REQUEST_SPAWN_POINT, data, eventOptions, sendOptions);
    }
Ejemplo n.º 8
0
    protected override void OnSelectedIngredient(object selectedIngredient)
    {
        base.OnSelectedIngredient(selectedIngredient);

        IngredientMinion ingredient = (IngredientMinion)selectedIngredient;
        var ingredientView          = ingredient.GetComponent <PhotonView>();

        // Preparing payload
        Byterizer byterizer = new Byterizer();

        byterizer.Push(_PhotonView.ViewID);
        byterizer.Push(ingredientView.ViewID);
        byte[] data = byterizer.GetBuffer();

        // Raising Net Event
        PhotonNetwork.RaiseEvent((byte)NetworkedGameEvents.ON_SELECTED_INGREDIENT, data, _RaiseEventOptions, _SendOptions);
    }
Ejemplo n.º 9
0
    private void OnRecievedSpawnPoint(byte[] data)
    {
        Byterizer byterizer = new Byterizer();

        byterizer.LoadDeep(data);

        // Checking if this spawn point is met for this player
        string playerID = byterizer.PopString();

        if (playerID != PhotonNetwork.LocalPlayer.UserId)
        {
            return;
        }

        GridPosition chosenHeroSpawn = new GridPosition(byterizer.PopByte(), byterizer.PopByte());

        SpawnHero(chosenHeroSpawn);
    }
Ejemplo n.º 10
0
    protected override void OnSelectedNode(ANode node)
    {
        base.OnSelectedNode(node);

        var nodeView = node.GetComponent <PhotonView>();

        if (nodeView == null)
        {
            return;
        }

        // Preparing payload
        Byterizer byterizer = new Byterizer();

        byterizer.Push(_PhotonView.ViewID);
        byterizer.Push(nodeView.ViewID);
        byte[] data = byterizer.GetBuffer();

        // Raising Net Event
        PhotonNetwork.RaiseEvent((byte)NetworkedGameEvents.ON_SELECTED_NODE, data, _RaiseEventOptions, _SendOptions);
    }
Ejemplo n.º 11
0
    private void OnShowCombatResults(object results)
    {
        // Only the master client sends the flag to show reults
        if (!PhotonNetwork.IsMasterClient)
        {
            return;
        }

        // Telling the other clients to show the results
        int[] combatData = (int[])results;

        Byterizer byterizer = new Byterizer();

        byterizer.Push(combatData[0]);
        byterizer.Push((byte)combatData[1]);
        byterizer.Push(combatData[2]);

        byte[] data = byterizer.GetBuffer();

        // Raising Net Event
        PhotonNetwork.RaiseEvent((byte)NetworkedGameEvents.ON_COMBAT_SEQUENCE_RESULT, data, _RaiseEventOptions, _SendOptions);
    }
Ejemplo n.º 12
0
    public void ReadyUp(int indexOfHeroData)
    {
        if (!_IsReady && PhotonNetwork.InRoom)
        {
            Debug.Log("Readying up...");

            // Configuring the event
            RaiseEventOptions eventOptions = new RaiseEventOptions {
                Receivers = ReceiverGroup.Others, CachingOption = EventCaching.AddToRoomCache
            };
            SendOptions sendOptions = new SendOptions {
                Reliability = true
            };
            Byterizer byterizer = new Byterizer();
            byterizer.Push(indexOfHeroData);
            byte[] data = byterizer.GetBuffer();
            PhotonNetwork.RaiseEvent((byte)LobbyNetworkedEvents.PLAYER_READIED_UP, data, eventOptions, sendOptions);
            _IsReady = true;

            OnPlayerReadiedUp(true, indexOfHeroData);
        }
    }
Ejemplo n.º 13
0
    private void OnTriggerEnter(Collider other)
    {
        // Checking for hero collisions only in the master client
        if (PhotonNetwork.IsMasterClient && !IsInCombat)
        {
            // Checking if the heroes collided
            HeroController hero = other.GetComponent <HeroController>();

            if (hero != null)
            {
                IsInCombat = true;
                _CombatData.HeroesCollidedEvent.Invoke(null);
                return;
            }

            // Ignoring picking up of ingredients if they have entered a combat scenario
            IngredientMinion ingredient = other.GetComponent <IngredientMinion>();
            if (ingredient != null)
            {
                PickUpIngredient(ingredient);

                PhotonView ingredientView = ingredient.GetComponent <PhotonView>();
                Byterizer  byterizer      = new Byterizer();
                byterizer.Push(ingredientView.ViewID);
                byterizer.Push(GetComponent <PhotonView>().ViewID);
                byte[] data = byterizer.GetBuffer();

                // Initializing Network variables
                RaiseEventOptions raiseEventOptions = new RaiseEventOptions {
                    Receivers = ReceiverGroup.Others
                };
                SendOptions sendOptions = new SendOptions {
                    Reliability = true
                };
                PhotonNetwork.RaiseEvent((byte)NetworkedGameEvents.PICKED_UP_INGREDIENT, data, raiseEventOptions, sendOptions);
            }
        }
    }
Ejemplo n.º 14
0
    private void OnNetworkEvent(EventData eventData)
    {
        byte eventCode = eventData.Code;

        // On Node Selected
        if (eventCode == (byte)NetworkedGameEvents.ON_SELECTED_NODE)
        {
            // Extracting data
            byte[]    data      = (byte[])eventData.CustomData;
            Byterizer byterizer = new Byterizer();
            byterizer.LoadDeep(data);

            int playerControllerViewID = byterizer.PopInt32();

            // Checking if the event is for this player controller
            if (_PhotonView.ViewID != playerControllerViewID)
            {
                // Event not meant for this player controller
                return;
            }

            // Loading the left over data
            int   nodeViewID = byterizer.PopInt32();
            ANode node       = PhotonView.Find(nodeViewID).GetComponent <ANode>();

            OnSelectedNode(node);
        }

        // On Ingredient selected
        else if (eventCode == (byte)NetworkedGameEvents.ON_SELECTED_INGREDIENT)
        {
            // Extracting data
            byte[]    data      = (byte[])eventData.CustomData;
            Byterizer byterizer = new Byterizer();
            byterizer.LoadDeep(data);

            int playerControllerViewID = byterizer.PopInt32();

            // Checking if the event is for this player controller
            if (_PhotonView.ViewID != playerControllerViewID)
            {
                // Event not meant for this player controller
                return;
            }

            // Loading the left over data
            int ingredientViewID        = byterizer.PopInt32();
            IngredientMinion ingredient = PhotonView.Find(ingredientViewID).GetComponent <IngredientMinion>();
            OnSelectedIngredient(ingredient);
        }

        // On heroes collided
        else if (eventCode == (byte)NetworkedGameEvents.ON_HEROES_COLLIDED_EVENT)
        {
            if (PhotonNetwork.IsMasterClient)
            {
                return;
            }
            _CombatData.HeroesCollidedEvent.Invoke(null);
        }

        else if (eventCode == (byte)NetworkedGameEvents.ON_COMBAT_SEQUENCE_RESTARTED)
        {
            if (PhotonNetwork.IsMasterClient)
            {
                return;
            }
            _CombatData.CombatSequenceRestartedEvent.Invoke(null);
        }

        else if (eventCode == (byte)NetworkedGameEvents.ON_START_COMBAT_TIMER)
        {
            if (PhotonNetwork.IsMasterClient)
            {
                return;
            }

            // Extracting data
            byte[]    data      = (byte[])eventData.CustomData;
            Byterizer byterizer = new Byterizer();
            byterizer.LoadDeep(data);

            float time = byterizer.PopFloat();

            _CombatData.CombatTimerStartedEvent.Invoke(time);
        }

        // On combat option chosen
        else if (eventCode == (byte)NetworkedGameEvents.ON_SELECTED_COMBAT_OPTION)
        {
            /*  Combat validation only takes place in master client so the others need not be
             *  updated when someone choses. Its enough if they see the results */
            if (!PhotonNetwork.IsMasterClient)
            {
                return;
            }

            byte[]    data      = (byte[])eventData.CustomData;
            Byterizer byterizer = new Byterizer();
            byterizer.LoadDeep(data);

            int   playerViewID = byterizer.PopInt32();
            byte  chosenOption = (byte)byterizer.PopByte();
            int[] combatData   = { playerViewID, chosenOption };

            _CombatData.CombatOptionChosenEvent.Invoke(combatData);
        }

        // On show combat results event
        else if (eventCode == (byte)NetworkedGameEvents.ON_COMBAT_SEQUENCE_RESULT)
        {
            // This event is already triggered in the master client so it needs to be triggered only on other clients
            if (PhotonNetwork.IsMasterClient)
            {
                return;
            }

            byte[]    data      = (byte[])eventData.CustomData;
            Byterizer byterizer = new Byterizer();
            byterizer.LoadDeep(data);

            int playerViewID = byterizer.PopInt32();

            byte  chosenOption = (byte)byterizer.PopByte();
            int   winnerID     = byterizer.PopInt32();
            int[] combatData   = { playerViewID, chosenOption, winnerID };
            _CombatData.ShowCombatResultsEvent.Invoke(combatData);
        }

        // On combat sequence ended event
        else if (eventCode == (byte)NetworkedGameEvents.ON_COMBAT_SEQUENCE_ENDED)
        {
            if (PhotonNetwork.IsMasterClient)
            {
                return;
            }

            _CombatData.CombatSequenceCompletedEvent.Invoke((int)eventData.CustomData);
        }
    }