Support player names and online join flow
Move SignalR group join into GameManager and add support for player names and improved online join flow. - Moved Groups.AddToGroupAsync call out of GameHubSocket into GameManager (hubContext.Groups.AddToGroupAsync) so group membership is handled when adding players to a game. - GUI: added player name input to GameJoinMenu and updated JoinGameObject to include playerName and use string gameCode. - OnlineMode & LocalMode: constructors updated to instantiate games without passing settings; removed WaitingForOpponent state and cleaned up event bindings. - OnlineGame: rewrote to handle onGameCreated/onGameJoined/onGameStarted/onFieldUpdated/onGameEnded/onError, added joinGame validation (expects 6-digit code), join flow (connect + join), state updates, drop forwarding to player.drop(gameId, index) and place description updates. - LocalGame: constructor signature simplified to no-arg. These changes centralize group management, add player identification, validate join codes, and improve game state/event handling for online play.
This commit is contained in:
@@ -42,8 +42,6 @@ public class GameHubSocket(IGameManager gameManager) : Hub
|
||||
return;
|
||||
}
|
||||
|
||||
await Groups.AddToGroupAsync(Context.ConnectionId, result);
|
||||
|
||||
await Clients.Caller.SendAsync("GameJoined", new
|
||||
{
|
||||
GameId = result,
|
||||
|
||||
@@ -3,6 +3,7 @@ using API.Models.DataClasses;
|
||||
using API.Models.Game;
|
||||
using API.Repository.GameRepo;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace API.Services.GameManager;
|
||||
|
||||
@@ -27,6 +28,8 @@ public class GameManager(IGameRepository gameRepository, IHubContext<GameHubSock
|
||||
return null;
|
||||
}
|
||||
|
||||
await hubContext.Groups.AddToGroupAsync(player.ConnectionId, game.Id);
|
||||
|
||||
if (game.Players.Count == 2)
|
||||
{
|
||||
game.StartGame();
|
||||
|
||||
Reference in New Issue
Block a user