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

108 lines
2.8 KiB
C#

using UnityEngine;
using UnityEngine.UI;
public class UICreateAquarium : MonoBehaviour
{
[SerializeField]
private InputField _nameInputField;
[SerializeField]
private Dropdown _waterTypeDropdown;
[SerializeField]
private Text _waterTypeHeader;
[SerializeField]
private Dropdown _enviroPresetDropdown;
[SerializeField]
private Text _enviroPresetHeader;
[SerializeField]
private GameObject _emptyWarning;
private AquariumController _aquarium;
private AquariumSettings _creatorSettings;
public void Show(AquariumController aquarium)
{
_aquarium = aquarium;
_creatorSettings = new AquariumSettings(aquarium.Settings);
if (string.IsNullOrEmpty(_creatorSettings.name))
{
_creatorSettings.name = aquarium.GetDefaultName();
}
if (_creatorSettings.waterType == AquariumWaterType.Undefined)
{
_creatorSettings.waterType = AquariumWaterType.Freshwater;
}
if (_creatorSettings.enviroPreset == -1)
{
_creatorSettings.enviroPreset = 0;
}
_nameInputField.text = _creatorSettings.name;
_waterTypeDropdown.ClearOptions();
_waterTypeDropdown.AddOptions(AquariumController.GetWaterOptions());
_waterTypeDropdown.value = (int)_creatorSettings.waterType;
InitEnviroDropdown();
_aquarium.OnNameChanged(_creatorSettings.name);
_aquarium.OnWaterChanged(_creatorSettings.waterType);
_aquarium.OnEnviroChanged(_creatorSettings.enviroPreset, _creatorSettings.waterType);
bool flag = aquarium.Settings.currentFishCount == 0;
_waterTypeDropdown.interactable = flag;
_enviroPresetDropdown.interactable = flag;
_emptyWarning.SetActive(!flag);
Color color = new Color(1f, 1f, 1f, 0.05f);
_waterTypeHeader.color = ((!flag) ? color : Color.white);
_enviroPresetHeader.color = ((!flag) ? color : Color.white);
base.gameObject.SetActive(true);
}
private void InitEnviroDropdown()
{
_enviroPresetDropdown.ClearOptions();
_enviroPresetDropdown.AddOptions(_aquarium.GetEnviroOptions(_creatorSettings.waterType));
_enviroPresetDropdown.value = _creatorSettings.enviroPreset;
}
public void Hide()
{
base.gameObject.SetActive(false);
}
public void OnCreate()
{
if (string.IsNullOrEmpty(_creatorSettings.name))
{
OnNameChanged(_aquarium.GetDefaultName());
}
_aquarium.OnCreateAquarium(_creatorSettings);
}
public void OnCancel()
{
_aquarium.OnCancelCreateAquarium();
}
public void OnNameChanged(string value)
{
_creatorSettings.name = value;
_aquarium.OnNameChanged(_creatorSettings.name);
}
public void OnWaterChanged(int value)
{
_creatorSettings.waterType = (AquariumWaterType)value;
_aquarium.OnWaterChanged(_creatorSettings.waterType);
InitEnviroDropdown();
OnEnviroChanged(_creatorSettings.enviroPreset);
}
public void OnEnviroChanged(int value)
{
_creatorSettings.enviroPreset = value;
_aquarium.OnEnviroChanged(_creatorSettings.enviroPreset, _creatorSettings.waterType);
}
}