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

118 lines
4.9 KiB
C#

using System;
using UnityEngine;
public static class AquariumUtilities
{
public static Transform RecursiveFindChild(Transform parent, string childName)
{
foreach (Transform item in parent)
{
if (item.name == childName)
{
return item;
}
Transform transform2 = RecursiveFindChild(item, childName);
if (transform2 != null)
{
return transform2;
}
}
return null;
}
public static void TestLoad()
{
string currentProfilePrefix = GlobalSettings.Instance.saveManager.GetCurrentProfilePrefix();
using (ES2Reader reader = ES2Reader.Create(currentProfilePrefix))
{
foreach (FishManager.FishDefinition fishDefinition in GlobalSettings.Instance.fishManager.fishDefinitions)
{
fishDefinition.weight = SaveManager.Read(reader, fishDefinition.species.ToString() + "_weight", 0f);
fishDefinition.length = SaveManager.Read(reader, fishDefinition.species.ToString() + "_length", 0f);
fishDefinition.fishery = SaveManager.Read(reader, fishDefinition.species.ToString() + "_fishery", string.Empty);
fishDefinition.caughtCount = SaveManager.Read(reader, fishDefinition.species.ToString() + "_caughtCount", 0);
fishDefinition.caughtWeightSum = SaveManager.Read(reader, fishDefinition.species.ToString() + "_caughtWeightSum", 0f);
if (fishDefinition.caughtCount > 0)
{
fishDefinition.weight = Mathf.Clamp(fishDefinition.weight, fishDefinition.fishPrefab.WeightMinMax.x, fishDefinition.fishPrefab.WeightMinMax.y);
fishDefinition.length = Mathf.Clamp(fishDefinition.length, fishDefinition.fishPrefab.LengthMinMax.x, fishDefinition.fishPrefab.LengthMinMax.y);
}
else
{
fishDefinition.weight = 0f;
fishDefinition.length = 0f;
}
}
GlobalSettings.Instance.fishManager.fishKeptCount = SaveManager.Read(reader, "fishKept_count", 0);
for (int i = 0; i < GlobalSettings.Instance.fishManager.fishKeptCount; i++)
{
float length = SaveManager.Read(reader, "fishKept_length_" + i, 0f);
float weight = SaveManager.Read(reader, "fishKept_weight_" + i, 0f);
Fish.Species species = (Fish.Species)SaveManager.Read(reader, "fishKept_species_" + i, 0);
string fishery = SaveManager.Read(reader, "fishKept_fishery_" + i, string.Empty);
int aquarium = SaveManager.Read(reader, "fishKept_aquarium_" + i, -1);
FishManager.FishKept item = new FishManager.FishKept(species, weight, length, fishery, aquarium);
GlobalSettings.Instance.fishManager.fishKeep.Add(item);
}
GlobalSettings.Instance.fishManager.aquariumsCount = SaveManager.Read(reader, "aquariums_count", 0);
for (int j = 0; j < GlobalSettings.Instance.fishManager.aquariumsCount; j++)
{
FishManager.AquariumData aquariumData = new FishManager.AquariumData();
aquariumData.id = SaveManager.Read(reader, "aquarium_id_" + j, -1);
aquariumData.name = SaveManager.Read(reader, "aquarium_name_" + j, string.Empty);
aquariumData.waterType = SaveManager.Read(reader, "aquarium_water_" + j, -1);
aquariumData.enviroPreset = SaveManager.Read(reader, "aquarium_enviro_" + j, -1);
FishManager.AquariumData item2 = aquariumData;
GlobalSettings.Instance.fishManager.aquariums.Add(item2);
}
}
}
public static void AddEachSpecie(int count, float sizeRatio)
{
bool flag = sizeRatio < 0f;
foreach (Fish.Species value in Enum.GetValues(typeof(Fish.Species)))
{
for (int i = 0; i < count; i++)
{
Fish.Species species2 = value;
FishManager.FishDefinition fishDefinition = GlobalSettings.Instance.fishManager.GetFishDefinition(species2);
if (fishDefinition != null)
{
if (flag)
{
sizeRatio = UnityEngine.Random.Range(0f, 1f);
}
float length = Mathf.Lerp(fishDefinition.fishPrefab.LengthMinMax.x, fishDefinition.fishPrefab.LengthMinMax.y, sizeRatio);
float weight = Mathf.Lerp(fishDefinition.fishPrefab.WeightMinMax.x, fishDefinition.fishPrefab.WeightMinMax.y, sizeRatio);
string fishery = "TestFishery";
int aquarium = -1;
GlobalSettings.Instance.fishManager.fishKeep.Add(new FishManager.FishKept(species2, weight, length, fishery, aquarium));
}
}
}
}
public static void RemoveAllFish()
{
GlobalSettings.Instance.fishManager.fishKeep.Clear();
}
public static void AddTestFish(int count)
{
for (int i = 0; i < count; i++)
{
Fish.Species species = (Fish.Species)UnityEngine.Random.Range(0, Enum.GetValues(typeof(Fish.Species)).Length);
FishManager.FishDefinition fishDefinition = GlobalSettings.Instance.fishManager.GetFishDefinition(species);
if (fishDefinition != null)
{
float length = UnityEngine.Random.Range(fishDefinition.fishPrefab.LengthMinMax.x, fishDefinition.fishPrefab.LengthMinMax.y);
float weight = UnityEngine.Random.Range(fishDefinition.fishPrefab.WeightMinMax.x, fishDefinition.fishPrefab.WeightMinMax.y);
string fishery = "TestFishery";
int aquarium = -1;
GlobalSettings.Instance.fishManager.fishKeep.Add(new FishManager.FishKept(species, weight, length, fishery, aquarium));
}
}
}
}