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