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); } }
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); }
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); } } }
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); } }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); } }
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); } } }
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); } }