Files
2026-02-21 16:45:37 +08:00

187 lines
6.6 KiB
C#

using System.Collections.Generic;
using UnityEngine;
public class VRQuickMenu : MonoBehaviour
{
[HideInInspector]
public FishingPlayer fishingPlayer;
[HideInInspector]
public GameController gameController;
public List<VRQuickMenuButton> vrQuickMenuButtons = new List<VRQuickMenuButton>();
private void Start()
{
}
private void OnEnable()
{
if (gameController == null)
{
gameController = GameController.Instance;
}
if (fishingPlayer == null)
{
fishingPlayer = gameController.fishingPlayer;
}
if ((bool)fishingPlayer)
{
GetComponent<Canvas>().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<VRQuickMenuButton>(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);
}
}
}