128 lines
3.3 KiB
C#
128 lines
3.3 KiB
C#
using UnityEngine;
|
|
using Vanguard.App;
|
|
using Vanguard.Auth;
|
|
using Vanguard.Meta;
|
|
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 readonly MetaService _metaService;
|
|
|
|
private LoginView _login;
|
|
private MetaView _metaView;
|
|
private OnboardingView _onboarding;
|
|
private CollectionView _collection;
|
|
private DecksView _decks;
|
|
|
|
public AppRootView(
|
|
AppConfig config,
|
|
AuthService auth,
|
|
PlayerState player,
|
|
MetaService metaService)
|
|
{
|
|
_config = config;
|
|
_auth = auth;
|
|
_player = player;
|
|
_metaService = metaService;
|
|
}
|
|
|
|
public void Initialize()
|
|
{
|
|
var canvas = UiKit.CreateCanvas("Vanguard Canvas");
|
|
|
|
_login = new LoginView(canvas.transform, _config, _auth, OnAuthenticated);
|
|
_metaView = new MetaView(
|
|
canvas.transform,
|
|
_auth,
|
|
_player,
|
|
OnLoggedOut,
|
|
ShowCollection,
|
|
ShowDecks,
|
|
ShowDecks,
|
|
ShowOnboarding);
|
|
_onboarding = new OnboardingView(
|
|
canvas.transform, _auth, _metaService, OnOnboarded, OnLoggedOut);
|
|
_collection = new CollectionView(
|
|
canvas.transform, _metaService, _player, ShowMeta);
|
|
_decks = new DecksView(
|
|
canvas.transform, _metaService, _player, ShowMeta);
|
|
|
|
ShowLogin("Проверяем сессию…");
|
|
}
|
|
|
|
public void ShowLogin(string status = null)
|
|
{
|
|
_metaView.Hide();
|
|
_onboarding.Hide();
|
|
_collection.Hide();
|
|
_decks.Hide();
|
|
_login.Show(status);
|
|
}
|
|
|
|
public void ShowAfterLogin()
|
|
{
|
|
if (_player.OnboardingCompleted)
|
|
ShowMeta();
|
|
else
|
|
ShowOnboarding();
|
|
}
|
|
|
|
public void ShowMeta()
|
|
{
|
|
_login.Hide();
|
|
_onboarding.Hide();
|
|
_collection.Hide();
|
|
_decks.Hide();
|
|
_metaView.Show();
|
|
}
|
|
|
|
public void ShowOnboarding()
|
|
{
|
|
_login.Hide();
|
|
_metaView.Hide();
|
|
_collection.Hide();
|
|
_decks.Hide();
|
|
_onboarding.Show();
|
|
}
|
|
|
|
public void ShowCollection()
|
|
{
|
|
_login.Hide();
|
|
_metaView.Hide();
|
|
_onboarding.Hide();
|
|
_decks.Hide();
|
|
_collection.Show();
|
|
}
|
|
|
|
public void ShowDecks()
|
|
{
|
|
_login.Hide();
|
|
_metaView.Hide();
|
|
_onboarding.Hide();
|
|
_collection.Hide();
|
|
_decks.Show();
|
|
}
|
|
|
|
private void OnAuthenticated()
|
|
{
|
|
ShowAfterLogin();
|
|
}
|
|
|
|
private void OnOnboarded()
|
|
{
|
|
ShowMeta();
|
|
}
|
|
|
|
private void OnLoggedOut()
|
|
{
|
|
ShowLogin("Сессия завершена. Войдите снова.");
|
|
}
|
|
}
|
|
}
|