133 lines
4.1 KiB
C#
133 lines
4.1 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|