108 lines
2.8 KiB
C#
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);
|
|
}
|
|
}
|