/// <summary> /// Subscribe this function to an onready changed event to get info on new status and scene /// to act accordingly /// </summary> /// <param name="scene"></param> /// <param name="ready"></param> private void OnReadyStatusChanged(MultiplayerRacerScenes scene, bool ready) { if (scene != MultiplayerRacerScenes.GAME) { return; } PV.RPC("UpdateReadyStatus", RpcTarget.AllViaServer, InRoomManager.Instance.NumberInRoom, ready); }
/// <summary> /// Returns a UI script based on current scene /// </summary> /// <param name="scene"></param> /// <returns></returns> public MultiplayerRacerUI GetCanvasReference(MultiplayerRacerScenes scene) { switch (scene) { case MultiplayerRacerScenes.LOBBY: return(GameObject.FindGameObjectWithTag("Canvas")?.GetComponent <LobbyUI>()); case MultiplayerRacerScenes.GAME: return(GameObject.FindGameObjectWithTag("Canvas")?.GetComponent <GameUI>()); } return(null); }
private void OnSceneHasReset(MultiplayerRacerScenes scene) { if (scene != MultiplayerRacerScenes.GAME) { return; } //reset car spawns roadOn.ResetCarSpawns(); //re-setup car spawns getting our new car spawn and placing the car on it myCarSpawn = SetupCarSpawns(); myCar.transform.position = myCarSpawn.transform.position; }
/// <summary> /// should be called when the scene resets, resets rigidbody of car /// </summary> /// <param name="scene"></param> private void OnRacerReset(MultiplayerRacerScenes scene) { if (scene != MultiplayerRacerScenes.GAME) { return; } if (RB != null) { RB.velocity = Vector2.zero; RB.angularVelocity = 0; RB.rotation = 0; } canRace = false; }
private void AttachUI(MultiplayerRacerScenes scene) { switch (scene) { case MultiplayerRacerScenes.LOBBY: UI = GameObject.FindGameObjectWithTag("Canvas")?.GetComponent <LobbyUI>(); ((LobbyUI)UI).SetupConnectButton(OnConnectButtonClick); break; case MultiplayerRacerScenes.GAME: UI = GameObject.FindGameObjectWithTag("Canvas")?.GetComponent <GameUI>(); break; default: break; } }
private void MaxPlayersReadyCheck(MultiplayerRacerScenes scene) { switch (scene) { case MultiplayerRacerScenes.LOBBY: //we can only start if the maxium amount of players in the lobby are ready if (Master.PlayersReady != PhotonNetwork.CurrentRoom.MaxPlayers) { return; } break; case MultiplayerRacerScenes.GAME: //we can only start racing if all players in the games scene are ready if (Master.PlayersReady != Master.PlayersInGameScene) { return; } break; } //countdown can start PV.RPC("StartCountdown", RpcTarget.AllViaServer); }