Files
2026-02-21 16:45:37 +08:00

99 lines
2.6 KiB
C#

using System.Collections;
using UnityEngine;
using UnityEngine.UI;
public class UIAquariumInfo : MonoBehaviour
{
[SerializeField]
private GameObject _aquariumNamePanel;
[SerializeField]
private Text _aquariumName;
[SerializeField]
private Text _inputText;
[SerializeField]
private Text _inspectInputText;
[SerializeField]
private AspectRatioFitter _aspectRatioFitter;
[SerializeField]
private float _halfWindowAspectRatio;
[SerializeField]
private float _fullWindowAspectRatio;
[SerializeField]
private Text _fishCountText;
[SerializeField]
private CanvasGroup _canvasGroup;
[SerializeField]
private float _fadeOutDelay = 5f;
[SerializeField]
private float _fadeOutDuration = 2f;
private AquariumController _aquarium;
private Coroutine _fadingOutCoroutine;
private void Start()
{
_inputText.text = string.Format("{0} - {1}", UtilitiesInput.GetActionKeyName("THROW_NEAR"), Utilities.GetTranslation("GUI/AQUARIUM/MANAGE_AQUARIUM"));
_inspectInputText.text = string.Format("{0} - {1}", UtilitiesInput.GetActionKeyName("BOAT_ENTER"), Utilities.GetTranslation("GUI/AQUARIUM/INSPECT"));
}
public void Show(AquariumController aquarium)
{
_aquarium = aquarium;
_aquariumName.text = ((!string.IsNullOrEmpty(aquarium.Settings.name)) ? aquarium.Settings.name : aquarium.GetDefaultName());
_fishCountText.text = string.Format("{0}/{1}", aquarium.Settings.currentFishCount, aquarium.Settings.fishLimitCount);
_aquariumNamePanel.gameObject.SetActive(aquarium.Settings.waterType != AquariumWaterType.Undefined);
_inspectInputText.gameObject.SetActive(!VRManager.IsVROn() && _aquarium.Settings.HasAnyFish());
if ((bool)_aspectRatioFitter)
{
_aspectRatioFitter.aspectRatio = ((!_aquarium.Settings.HasAnyFish()) ? _halfWindowAspectRatio : _fullWindowAspectRatio);
}
base.gameObject.SetActive(true);
if (!VRManager.IsVROn())
{
_canvasGroup.alpha = 1f;
_fadingOutCoroutine = StartCoroutine(FadingOutCorotuine());
}
}
public void Hide()
{
if (_fadingOutCoroutine != null)
{
StopCoroutine(_fadingOutCoroutine);
}
base.gameObject.SetActive(false);
}
public void OnManageAquarium()
{
Hide();
_aquarium.ShowAquariumGUI();
}
public IEnumerator FadingOutCorotuine()
{
yield return new WaitForSeconds(_fadeOutDelay);
float timePassed = 0f;
while (timePassed < _fadeOutDuration)
{
float factor = timePassed / _fadeOutDuration;
_canvasGroup.alpha = Mathf.Lerp(1f, 0f, factor);
timePassed += Mathf.Min(Time.deltaTime, _fadeOutDuration - timePassed);
yield return null;
}
_canvasGroup.alpha = 0f;
_fadingOutCoroutine = null;
}
}