Files
Fishing2/Assets/Scripts/Model/Utils/FishWeightToLength.cs
2025-08-29 09:11:08 +08:00

94 lines
2.5 KiB
C#

using System;
using UnityEngine;
namespace NBF
{
public class FishWeightToLength : MonoBehaviour
{
[Serializable]
public class FishWeightData
{
[SerializeField] private string FishName = "Nazwa rybki";
public FishSpecies species;
[Tooltip("X - waga ryby, Y - centymetry")]
public Vector2[] weightLenghtValues;
public AnimationCurve weightLengthCurve;
public void SetupCurvesWeight()
{
weightLengthCurve.keys = null;
for (int i = 0; i < weightLenghtValues.Length; i++)
{
weightLengthCurve.AddKey(weightLenghtValues[i].x, weightLenghtValues[i].y);
}
}
}
private static FishWeightToLength instance;
[SerializeField] [Tooltip("Uzywac tylko w edytorze")]
private bool isEditMode = true;
public FishWeightData[] fishWeightData;
[Tooltip("Testowanie poprawnosci konwersji waga/centymetry")] [SerializeField]
private FishSpecies TestSpecies;
[SerializeField] private float TestWeight;
[SerializeField] private float TestWynikCentymetry;
public static FishWeightToLength Instance => instance;
private void Awake()
{
DontDestroyOnLoad(this);
if (instance == null)
{
instance = this;
}
else if (instance != this)
{
Destroy(gameObject);
}
}
private void Start()
{
}
private void Update()
{
if (!isEditMode)
{
return;
}
for (int i = 0; i < fishWeightData.Length; i++)
{
fishWeightData[i].SetupCurvesWeight();
if (TestSpecies == fishWeightData[i].species)
{
TestWynikCentymetry = fishWeightData[i].weightLengthCurve.Evaluate(TestWeight);
}
}
}
public float ConvertWeightFishToLength(FishSpecies species, float weight)
{
for (int i = 0; i < fishWeightData.Length; i++)
{
if (fishWeightData[i].species == species)
{
fishWeightData[i].SetupCurvesWeight();
return fishWeightData[i].weightLengthCurve.Evaluate(weight);
}
}
return 0f;
}
}
}