VanguardReMaster/client/Assets/Vanguard/Runtime/UI/AppRootView.cs

58 lines
1.5 KiB
C#

using UnityEngine;
using Vanguard.App;
using Vanguard.Auth;
using Vanguard.State;
namespace Vanguard.UI
{
/// <summary>Владелец Canvas и переключения экранов.</summary>
public sealed class AppRootView
{
private readonly AppConfig _config;
private readonly AuthService _auth;
private readonly PlayerState _player;
private LoginView _login;
private MetaView _meta;
public AppRootView(AppConfig config, AuthService auth, PlayerState player)
{
_config = config;
_auth = auth;
_player = player;
}
public void Initialize()
{
var canvas = UiKit.CreateCanvas("Vanguard Canvas");
_login = new LoginView(canvas.transform, _config, _auth, OnAuthenticated);
_meta = new MetaView(canvas.transform, _auth, _player, OnLoggedOut);
ShowLogin("Проверяем сессию…");
}
public void ShowLogin(string status = null)
{
if (_meta != null)
_meta.Hide();
_login.Show(status);
}
public void ShowMeta()
{
_login.Hide();
_meta.Show();
}
private void OnAuthenticated()
{
ShowMeta();
}
private void OnLoggedOut()
{
ShowLogin("Сессия завершена. Войдите снова.");
}
}
}