using BitStrap; using UnityEngine; using UnityEngine.UI; public class BaitIndicator : MonoBehaviour { public Transform target; public Camera camera; public RectTransform pointerParent; public MeshRenderer underwaterBackground; public Text depthValue; public Text distanceValue; public Image line; public float lineScaleFactor = 1f; public EnergyBar tensionEnergyBar; [ReadOnly] public FishingPlayer fishingPlayer; [ReadOnly] public float distanceToPlayer; public float scaleFactor = 1f; public float scaleFactorVR = 0.24f; public float vrUnderwaterScaleFactor = 1.5f; private HUDFishing hudFishing; private void Start() { } public void Initialize() { if (GameController.Instance.iceLevel) { base.gameObject.SetActive(false); return; } if (VRManager.IsVROn()) { scaleFactor = scaleFactorVR; } hudFishing = HUDManager.Instance.hudFishing; if ((bool)GameController.Instance.fishingPlayer && (bool)GameController.Instance.fishingPlayer.currentHands) { fishingPlayer = GameController.Instance.fishingPlayer; base.transform.parent = GameController.Instance.transform; } } private void LateUpdate() { if (fishingPlayer == null) { Initialize(); } else if ((bool)fishingPlayer.currentHands.bait && fishingPlayer.currentHands.bait.isOnWater && !fishingPlayer.currentHands.fishingRod.isOnRodStand && fishingPlayer.currentState == FishingPlayer.PlayerState.FISHING) { if (fishingPlayer.HasFishOnCurrentRod()) { target = fishingPlayer.fish.transform; } else { target = fishingPlayer.currentHands.bait.transform; } pointerParent.gameObject.SetActive(true); hudFishing.ShowTensionSlider(true); if (fishingPlayer.underwaterCamera.isTurnedOn) { base.transform.position = new Vector3(target.position.x, target.position.y + (fishingPlayer.HasFishOnCurrentRod() ? 0.3f : ((!fishingPlayer.currentHands.fishingFloat) ? 0.15f : 0.1f)), target.position.z); distanceToPlayer = Vector3.Distance(base.transform.position, fishingPlayer.baitIndicatorCamera.transform.position); base.transform.localScale = Vector3.one * scaleFactor * distanceToPlayer; if (fishingPlayer.HasFishOnCurrentRod()) { base.transform.localScale = Vector3.one * scaleFactor * fishingPlayer.underwaterCamera.currentDistanceAway * 1.75f; } else { base.transform.localScale = Vector3.one * scaleFactor * 0.6f; } if (VRManager.IsVROn()) { base.transform.localScale *= vrUnderwaterScaleFactor; } } else { bool flag = (bool)fishingPlayer.currentHands.fishingFloat && (!fishingPlayer.HasFishOnCurrentRod() || !fishingPlayer.fish.isJerked); base.transform.position = new Vector3(target.position.x, Mathf.Clamp(target.position.y, (!flag) ? 0.5f : (fishingPlayer.currentHands.fishingFloat.length / 20f + 0.2f), 666f), target.position.z); distanceToPlayer = Vector3.Distance(base.transform.position, fishingPlayer.baitIndicatorCamera.transform.position); base.transform.localScale = Vector3.one * scaleFactor * distanceToPlayer; } if (VRManager.IsVROn()) { if (fishingPlayer.underwaterCamera.isTurnedOn) { base.transform.LookAt(base.transform.position + fishingPlayer.underwaterCamera.transform.rotation * Vector3.forward, fishingPlayer.underwaterCamera.transform.rotation * Vector3.up); } else { base.transform.LookAt(base.transform.position + fishingPlayer.ufpsCamera.transform.rotation * Vector3.forward, fishingPlayer.ufpsCamera.transform.rotation * Vector3.up); } base.transform.eulerAngles = new Vector3(base.transform.eulerAngles.x, base.transform.eulerAngles.y, 0f); } else { base.transform.LookAt(base.transform.position + fishingPlayer.baitIndicatorCamera.transform.rotation * Vector3.forward, fishingPlayer.baitIndicatorCamera.transform.rotation * Vector3.up); if (VRManager.IsVROn()) { base.transform.eulerAngles = new Vector3(base.transform.eulerAngles.x, base.transform.eulerAngles.y, 0f); } } } else { base.transform.position = new Vector3(0f, -9999f, 0f); hudFishing.ShowTensionSlider(false); } } }