@using Fluxor @using Koogle.Application.Games @using Koogle.Domain.Interfaces @using Koogle.Web.Store.GameState @using MudBlazor @inherits Fluxor.Blazor.Web.Components.FluxorComponent @inject IState GameState @inject GameDefinitionRegistry GameRegistry @if (!GameState.Value.IsGameActive) { Kein aktives Spiel. Starte ein neues Spiel, um die Tafel zu sehen. } else if (string.IsNullOrEmpty(GameState.Value.GameTypeName)) { Spieltyp nicht erkannt. } else { @* Header with game type info *@ @_gameDefinition?.DisplayName Tafel Aktiv @* Dynamic game board component *@ @if (_gameDefinition?.BoardComponentType != null) { } else { Keine Tafel-Komponente für diesen Spieltyp verfügbar. } } @code { private IGameDefinition? _gameDefinition; protected override void OnInitialized() { base.OnInitialized(); GameState.StateChanged += OnGameStateChanged; UpdateGameDefinition(); } private void OnGameStateChanged(object? sender, EventArgs e) { UpdateGameDefinition(); InvokeAsync(StateHasChanged); } private void UpdateGameDefinition() { var typeName = GameState.Value.GameTypeName; if (!string.IsNullOrEmpty(typeName)) { _gameDefinition = GameRegistry.Get(typeName); } else { _gameDefinition = null; } } public void Dispose() { GameState.StateChanged -= OnGameStateChanged; } }