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

181 lines
3.0 KiB
C#

using System;
using UnityEngine;
public class UIAquarium : MonoBehaviour
{
[SerializeField]
private UIAquariumInfo _aquariumInfo;
[SerializeField]
private UICreateAquarium _createAquarium;
[SerializeField]
private UIManageAquarium _manageAquarium;
[SerializeField]
private UIFishInspect _fishInspect;
[SerializeField]
private UIFishInspect _fishInspectVR;
[SerializeField]
private UIFader _fader;
private AquariumController _aquarium;
private UIFishInspect fishInspect
{
get
{
return (!VRManager.IsVROn()) ? _fishInspect : _fishInspectVR;
}
}
private void Start()
{
_manageAquarium.Initialize();
}
public void ShowInfo(AquariumController aquarium)
{
_aquariumInfo.Show(aquarium);
}
public void HideInfo()
{
_aquariumInfo.Hide();
}
public void Show(AquariumController aquarium)
{
_aquarium = aquarium;
if (aquarium.Settings.HasAnyFish())
{
_manageAquarium.Show(aquarium);
}
else
{
_createAquarium.Show(aquarium);
}
}
public void SetAquarium(AquariumController aquarium)
{
_aquarium = aquarium;
_manageAquarium.SetAquarium(aquarium);
}
public void ShowFaded(AquariumController aquarium, Action onFadeOut)
{
_aquarium = aquarium;
_fader.FadeOut(delegate
{
if (onFadeOut != null)
{
onFadeOut();
}
if (aquarium.Settings.HasAnyFish())
{
_manageAquarium.Show(aquarium);
}
else
{
_createAquarium.Show(aquarium);
}
_fader.FadeIn();
});
}
public void InspectFish(FishManager.FishKept fish)
{
_manageAquarium.Hide();
fishInspect.Show(_manageAquarium.GetFish(fish), _aquarium);
}
public void CloseInspectFish()
{
_manageAquarium.Show(_aquarium);
fishInspect.Hide();
}
public void InspectFishFaded(FishManager.FishKept fish, Action onFadeOut)
{
_fader.FadeOut(delegate
{
if (onFadeOut != null)
{
onFadeOut();
}
_manageAquarium.Hide();
fishInspect.Show(_manageAquarium.GetFish(fish), _aquarium);
_fader.FadeIn();
});
}
public void CloseInspectFishFaded(Action onFadeOut)
{
_fader.FadeOut(delegate
{
if (onFadeOut != null)
{
onFadeOut();
}
_manageAquarium.Show(_aquarium);
fishInspect.Hide();
_fader.FadeIn();
});
}
public void OnCreateAquarium()
{
_createAquarium.Hide();
_manageAquarium.Show(_aquarium);
}
public void OnRemakeAquarium()
{
_manageAquarium.Hide();
_createAquarium.Show(_aquarium);
}
public void Hide()
{
_createAquarium.Hide();
_manageAquarium.Hide();
}
public void HideFaded(Action onFadeOut)
{
_fader.FadeOut(delegate
{
if (onFadeOut != null)
{
onFadeOut();
}
_createAquarium.Hide();
_manageAquarium.Hide();
_fader.FadeIn();
});
}
public bool TryClose()
{
if (_createAquarium.isActiveAndEnabled)
{
_createAquarium.OnCancel();
return true;
}
if (_manageAquarium.isActiveAndEnabled)
{
_manageAquarium.OnClose();
return true;
}
if (fishInspect.isActiveAndEnabled)
{
fishInspect.OnClose();
return true;
}
return false;
}
}