86 lines
2.3 KiB
Plaintext
86 lines
2.3 KiB
Plaintext
@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> GameState
|
|
@inject GameDefinitionRegistry GameRegistry
|
|
|
|
<MudPaper Class="pa-4">
|
|
@if (!GameState.Value.IsGameActive)
|
|
{
|
|
<MudAlert Severity="Severity.Info">
|
|
Kein aktives Spiel. Starte ein neues Spiel, um die Tafel zu sehen.
|
|
</MudAlert>
|
|
}
|
|
else if (string.IsNullOrEmpty(GameState.Value.GameTypeName))
|
|
{
|
|
<MudAlert Severity="Severity.Warning">
|
|
Spieltyp nicht erkannt.
|
|
</MudAlert>
|
|
}
|
|
else
|
|
{
|
|
@* Header with game type info *@
|
|
<MudStack Row="true" AlignItems="AlignItems.Center" Justify="Justify.SpaceBetween" Class="mb-4">
|
|
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="2">
|
|
<MudIcon Icon="@Icons.Material.Filled.TableChart" />
|
|
<MudText Typo="Typo.h6">@_gameDefinition?.DisplayName Tafel</MudText>
|
|
</MudStack>
|
|
<MudChip T="string" Color="Color.Success" Size="Size.Small">
|
|
Aktiv
|
|
</MudChip>
|
|
</MudStack>
|
|
|
|
@* Dynamic game board component *@
|
|
@if (_gameDefinition?.BoardComponentType != null)
|
|
{
|
|
<DynamicComponent Type="@_gameDefinition.BoardComponentType" />
|
|
}
|
|
else
|
|
{
|
|
<MudAlert Severity="Severity.Warning">
|
|
Keine Tafel-Komponente für diesen Spieltyp verfügbar.
|
|
</MudAlert>
|
|
}
|
|
}
|
|
</MudPaper>
|
|
|
|
@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;
|
|
}
|
|
}
|