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); } }