Files
UltimateFishing/Assets/Scripts/Assembly-CSharp/TrophyFishHolder.cs
2026-02-21 16:45:37 +08:00

99 lines
2.6 KiB
C#

using BitStrap;
using UnityEngine;
public class TrophyFishHolder : vp_Interactable
{
[Header("Fish Holder")]
public GameObject plate;
public Transform fishMountPosition;
public Transform fishModel;
public Fish.Species spieces = Fish.Species.LAKE_TROUT;
public float plateScaleMultiplier = 1f;
public float plateColliderDepth;
[HideInInspector]
public TrophyRoomManager trophyRoomManager;
[HideInInspector]
public FishManager.FishDefinition fishDefinition;
[HideInInspector]
public Fish fishPrefab;
private new void Start()
{
Utilities.DisableAllScripts(fishModel.gameObject);
}
public override void UpdateSeeing(bool isSeeing)
{
if (isSeeingMe != isSeeing)
{
trophyRoomManager.trophyRoomGUI.ShowFishInfo((!isSeeing) ? null : fishDefinition);
base.UpdateSeeing(isSeeing);
}
}
public void Refresh()
{
trophyRoomManager = TrophyRoomManager.Instance;
fishDefinition = trophyRoomManager.globalSettings.fishManager.GetFishDefinition(spieces);
if (fishDefinition == null)
{
Debug.Log("TrophyFishHolder fishDefinition == null: " + spieces);
}
if (fishDefinition != null && fishDefinition.length > 0f)
{
fishMountPosition.localScale = new Vector3(fishDefinition.length, fishDefinition.length, fishDefinition.length);
}
else
{
base.gameObject.SetActive(trophyRoomManager.showAll);
}
RefreshPlateSize(fishDefinition);
}
public void Resize(bool maxLength)
{
trophyRoomManager = TrophyRoomManager.Instance;
fishDefinition = trophyRoomManager.globalSettings.fishManager.GetFishDefinition(spieces);
if (fishDefinition != null && fishDefinition.fishPrefab != null)
{
float num = ((!maxLength) ? fishDefinition.fishPrefab.LengthMinMax.x : fishDefinition.fishPrefab.LengthMinMax.y);
fishMountPosition.localScale = Vector3.one * num;
RefreshPlateSize(fishDefinition);
base.gameObject.SetActive(true);
}
}
public void RefreshPlateSize(FishManager.FishDefinition fishDefinition)
{
Vector3 localScale = plate.transform.localScale;
float num = fishMountPosition.localScale.x;
if (fishDefinition != null)
{
float num2 = Mathf.Lerp(fishDefinition.fishPrefab.LengthMinMax.x, fishDefinition.fishPrefab.LengthMinMax.y, 0.2f);
if (num < num2)
{
num = num2;
}
}
num *= plateScaleMultiplier;
localScale.x = (localScale.y = num);
plate.transform.localScale = localScale;
GetComponent<BoxCollider>().size = new Vector3(plate.transform.localScale.x * 0.7f, plate.transform.localScale.x * 0.4f, (!(plateColliderDepth > 0f)) ? 0.3f : plateColliderDepth);
}
[Button]
public void ChangeScale()
{
fishMountPosition.localScale = fishModel.localScale;
fishModel.localScale = Vector3.one;
}
}