VanguardReMaster/client/Assets/Vanguard/Runtime/App/DeckBuilderSceneController.cs

59 lines
1.6 KiB
C#

using UnityEngine;
using Vanguard.Api.Contracts;
using Vanguard.Auth;
using Vanguard.Meta;
using Vanguard.State;
using Vanguard.UI;
namespace Vanguard.App
{
public sealed class DeckBuilderSceneController : SceneControllerBase
{
private DeckBuilderView _view;
private PlayerTopBar _topBar;
private void Start()
{
SceneEnvironment.Build(SceneTheme.DeckBuilder);
var canvas = CreateCanvas("DeckBuilder Canvas");
_view = new DeckBuilderView(
canvas.transform,
Resolve<MetaService>(),
Resolve<AuthService>(),
() => _ = Flow.LoadLobbyAsync(),
deck => _ = Flow.OpenLobbyWithQueueAsync(deck),
info => _ = Flow.LoadBattleAsync(info));
_topBar = new PlayerTopBar(
_view.Root,
Resolve<AppConfig>(),
Resolve<PlayerState>(),
() => _ = Flow.LoadLoginAsync(),
null,
null,
null,
() => _ = Flow.LoadLobbyAsync(),
overlayParent: canvas.transform);
_topBar.Root.SetAsFirstSibling();
var hotkeys = canvas.gameObject.AddComponent<HotkeysDriver>();
hotkeys.Cancel = () =>
{
if (_topBar.IsMenuOpen)
_topBar.CloseMenu();
else
_view.CloseTopmost();
};
_view.Show();
}
private void OnDestroy()
{
_view?.Hide();
_topBar?.Dispose();
}
}
}