using System.Collections.Generic; using UnityEngine; public class VRQuickMenu : MonoBehaviour { [HideInInspector] public FishingPlayer fishingPlayer; [HideInInspector] public GameController gameController; public List vrQuickMenuButtons = new List(); private void Start() { } private void OnEnable() { if (gameController == null) { gameController = GameController.Instance; } if (fishingPlayer == null) { fishingPlayer = gameController.fishingPlayer; } if ((bool)fishingPlayer) { GetComponent().worldCamera = fishingPlayer.ufpsCameraCamera; base.transform.parent = fishingPlayer.transform; base.transform.position = fishingPlayer.ufpsCamera.transform.position; base.transform.eulerAngles = new Vector3(base.transform.eulerAngles.x, fishingPlayer.ufpsCamera.transform.eulerAngles.y, base.transform.eulerAngles.z); base.transform.localScale = new Vector3(0.0016f, 0.0016f, 0.0015f); } if (vrQuickMenuButtons.Count == 0) { vrQuickMenuButtons = GetComponentsInChildren(true).ToDynList(); } for (int i = 0; i < vrQuickMenuButtons.Count; i++) { vrQuickMenuButtons[i].gameObject.SetActive(IsActionAvailable(vrQuickMenuButtons[i].quickMenuAction)); } } public void ButtonClicked(VRQuickMenuButton.QuickMenuAction quickMenuAction) { if (fishingPlayer == null) { fishingPlayer = gameController.fishingPlayer; } switch (quickMenuAction) { case VRQuickMenuButton.QuickMenuAction.FLASHLIGHT: fishingPlayer.ToggleFlashlight(); break; case VRQuickMenuButton.QuickMenuAction.HUNTER_VISION: fishingPlayer.TurnOnHunterVision(); break; case VRQuickMenuButton.QuickMenuAction.RECENTER: VRManager.Instance.Recenter(); break; case VRQuickMenuButton.QuickMenuAction.RECENTER_HUD: HUDManager.Instance.RecenterHUD(); break; case VRQuickMenuButton.QuickMenuAction.TIME_INC: gameController.ChangeHour(true); break; case VRQuickMenuButton.QuickMenuAction.TIME_DEC: gameController.ChangeHour(false); break; case VRQuickMenuButton.QuickMenuAction.EXIT_BOAT: if (fishingPlayer.boatSimulator != null && !gameController.oceanLevel && !fishingPlayer.currentHands.baitWasThrown && !fishingPlayer.IsSomethingOnBait()) { fishingPlayer.ExitBoatCoroutine(); } break; case VRQuickMenuButton.QuickMenuAction.BUG_REPORT: BugReporter.Instance.OnShowReportWidow(true); BugReporter.Instance.ReportBug(); break; case VRQuickMenuButton.QuickMenuAction.CHAT: fishingPlayer.EnterChat(true); HUDManager.Instance.hudMultiplayer.EnterInputMode(true); VRManager.Instance.ShowKeyboard(HUDManager.Instance.hudMultiplayer.chatInputField, Vector3.zero); break; case VRQuickMenuButton.QuickMenuAction.START_TOURNAMENT: MultiplayerManager.Instance.StartTournament(); break; case VRQuickMenuButton.QuickMenuAction.ROD_STAND: { float num = Vector3.Distance(fishingPlayer.transform.position, FishingHands.rodStand.transform.position); if (!FishingHands.rodStand.gameObject.activeSelf) { FishingHands.rodStand.PutStand(); gameController.hudManager.UpdateControls(); } else if (FishingHands.rodStand.gameObject.activeSelf && !FishingHands.rodStand.isBoatStand) { if (num > 3f) { gameController.hudManager.ShowMessage(Utilities.GetTranslation("HUD_MESSAGE/ROD_POD_FAR")); break; } if (FishingHands.rodStand.rodPlacesOccupied > 0) { gameController.hudManager.ShowMessage(Utilities.GetTranslation("HUD_MESSAGE/ROD_POD_NOT_EMPTY")); break; } FishingHands.rodStand.TakeStand(); gameController.hudManager.UpdateControls(); } break; } case VRQuickMenuButton.QuickMenuAction.MENU: HUDManager.Instance.PauseGame(true); break; case VRQuickMenuButton.QuickMenuAction.STOP_ICE_FISHING: fishingPlayer.fishingController.FinishIceFishing(); gameController.hudManager.ShowHudFishing(false); break; } } public bool IsActionAvailable(VRQuickMenuButton.QuickMenuAction quickMenuAction) { if (fishingPlayer == null || gameController == null) { return false; } switch (quickMenuAction) { case VRQuickMenuButton.QuickMenuAction.HUNTER_VISION: if (!fishingPlayer.isHunterVisionOn && fishingPlayer.currentState != FishingPlayer.PlayerState.WATCH_FISH && fishingPlayer.currentState != FishingPlayer.PlayerState.DEATH && !fishingPlayer.underwaterCamera.isTurnedOn && (!GlobalSettings.Instance || (bool)GlobalSettings.Instance.skillsManager.GetSkill(SkillsManager.SkillType.HUNTER_VISION_1).isUnlocked || (bool)GlobalSettings.Instance.skillsManager.GetSkill(SkillsManager.SkillType.HUNTER_VISION_2).isUnlocked || (bool)GlobalSettings.Instance.skillsManager.GetSkill(SkillsManager.SkillType.HUNTER_VISION_3).isUnlocked)) { return true; } return false; case VRQuickMenuButton.QuickMenuAction.RECENTER: return false; case VRQuickMenuButton.QuickMenuAction.RECENTER_HUD: return true; case VRQuickMenuButton.QuickMenuAction.TIME_INC: if ((bool)fishingPlayer.fish) { return false; } break; case VRQuickMenuButton.QuickMenuAction.TIME_DEC: if ((bool)fishingPlayer.fish) { return false; } break; case VRQuickMenuButton.QuickMenuAction.EXIT_BOAT: if (fishingPlayer.boatSimulator != null && !gameController.oceanLevel && !fishingPlayer.currentHands.baitWasThrown && !fishingPlayer.IsSomethingOnBait()) { break; } return false; case VRQuickMenuButton.QuickMenuAction.BUG_REPORT: return !GlobalSettings.Instance || GlobalSettings.Instance.currentPlatform != GlobalSettings.Platform.ARCADE; case VRQuickMenuButton.QuickMenuAction.CHAT: return gameController.isMultiplayer; case VRQuickMenuButton.QuickMenuAction.START_TOURNAMENT: return gameController.isMultiplayer && gameController.isTournament && PhotonNetwork.isMasterClient && !gameController.tournamentManager.tournamentStarted; case VRQuickMenuButton.QuickMenuAction.ROD_STAND: return (bool)FishingHands.rodStand && !FishingHands.rodStand.isBoatStand && fishingPlayer.currentState == FishingPlayer.PlayerState.FISHING && !fishingPlayer.underwaterCamera.isTurnedOn; case VRQuickMenuButton.QuickMenuAction.MENU: return false; case VRQuickMenuButton.QuickMenuAction.STOP_ICE_FISHING: return fishingPlayer.currentState == FishingPlayer.PlayerState.ICE_FISHING && !fishingPlayer.fish && fishingPlayer.currentHands.bait.gameObject.layer != LayerMask.NameToLayer("TransparentFX"); case VRQuickMenuButton.QuickMenuAction.STOP_FISHING: return false; } return true; } public void ShowAllButtons() { for (int i = 0; i < vrQuickMenuButtons.Count; i++) { vrQuickMenuButtons[i].gameObject.SetActive(true); } } }