Skip to content

Commit d343818

Browse files
committed
Prepared the GamePageViewModel for game-type selection in the UI
1 parent 42340a3 commit d343818

1 file changed

Lines changed: 13 additions & 4 deletions

File tree

src/Codebreaker.ViewModels/Pages/GamePageViewModel.cs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,27 @@ public partial class GamePageViewModel(IGamesClient gamesClient, IInfoBarService
2020
[NotifyCanExecuteChangedFor(nameof(StartGameCommand))]
2121
private string _username = string.Empty;
2222

23+
[ObservableProperty]
24+
private GameType _selectedGameType = GameType.Game6x4;
25+
26+
public IEnumerable<GameType> GameTypes { get; } = [
27+
GameType.Game6x4,
28+
GameType.Game6x4Mini,
29+
GameType.Game8x5,
30+
GameType.Game5x5x4
31+
];
32+
2333
private bool CanStartGame() => Username is not null && Username.Length > 2;
2434

2535
[RelayCommand(CanExecute = nameof(CanStartGame))]
2636
private async Task StartGameAsync(CancellationToken cancellationToken)
2737
{
2838
IsLoading = true;
29-
var usedGameMode = GameType.Game6x4;
3039

3140
try
3241
{
33-
var response = await gamesClient.StartGameAsync(usedGameMode, Username);
34-
Game = new Game(response.Id, usedGameMode, Username, DateTime.Now, response.NumberCodes, response.MaxMoves, response.FieldValues);
42+
var response = await gamesClient.StartGameAsync(SelectedGameType, Username);
43+
Game = new Game(response.Id, SelectedGameType, Username, DateTime.Now, response.NumberCodes, response.MaxMoves, response.FieldValues);
3544
}
3645
catch (InvalidOperationException)
3746
{
@@ -83,7 +92,7 @@ private async Task MakeMoveAsync(CancellationToken cancellationToken)
8392
IsLoading = true;
8493
try
8594
{
86-
var response = await gamesClient.SetMoveAsync(Game.Id, Game.PlayerName, GameType.Game6x4, Game.Moves.Count + 1, serializedFields);
95+
var response = await gamesClient.SetMoveAsync(Game.Id, Game.PlayerName, Game.GameType, Game.Moves.Count + 1, serializedFields);
8796

8897
// It is necessary to copy the fields to avoid every move having the same reference to the same fields
8998
var copiedFields = SelectedFields.Select(f => new Field(f.Color, f.Shape)).ToArray();

0 commit comments

Comments
 (0)