63 lines
1.5 KiB
Plaintext
63 lines
1.5 KiB
Plaintext
@using Shogi.Contracts.Types;
|
|
@inject IShogiApi ShogiApi
|
|
@inject AccountState Account;
|
|
|
|
<section class="game-board" data-perspective="@Perspective">
|
|
@for (var rank = 9; rank > 0; rank--)
|
|
{
|
|
foreach (var file in Files)
|
|
{
|
|
var position = $"{file}{rank}";
|
|
var piece = session?.BoardState.Board[position];
|
|
<div class="tile" data-position="@(position)" style="grid-area: @(position)" @onclick="() => OnClickTile(piece, position)">
|
|
<GamePiece Piece="piece" Perspective="@Perspective" />
|
|
</div>
|
|
}
|
|
}
|
|
<div class="ruler vertical" style="grid-area: rank">
|
|
<span>9</span>
|
|
<span>8</span>
|
|
<span>7</span>
|
|
<span>6</span>
|
|
<span>5</span>
|
|
<span>4</span>
|
|
<span>3</span>
|
|
<span>2</span>
|
|
<span>1</span>
|
|
</div>
|
|
<div class="ruler" style="grid-area: file">
|
|
<span>A</span>
|
|
<span>B</span>
|
|
<span>C</span>
|
|
<span>D</span>
|
|
<span>E</span>
|
|
<span>F</span>
|
|
<span>G</span>
|
|
<span>H</span>
|
|
<span>I</span>
|
|
</div>
|
|
</section>
|
|
|
|
@code {
|
|
[Parameter]
|
|
public string? SessionName { get; set; }
|
|
static readonly string[] Files = new[] { "A", "B", "C", "D", "E", "F", "G", "H", "I" };
|
|
WhichPlayer Perspective => Account.User?.Id == session?.Player1 ? WhichPlayer.Player1 : WhichPlayer.Player2;
|
|
|
|
Session? session;
|
|
string? selectedPosition;
|
|
|
|
protected override async Task OnParametersSetAsync()
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(SessionName))
|
|
{
|
|
this.session = await ShogiApi.GetSession(SessionName);
|
|
}
|
|
}
|
|
|
|
void OnClickTile(Piece? piece, string position)
|
|
{
|
|
|
|
}
|
|
}
|