Website Summary Files Commits Branches @commit @diff @stats
path: root / src / Web / PUSG.Web / Hubs / GameHub.cs
diff options
context:
space:
mode:
Commit1489a24d74985ef9e51fd9976fc580857062011c (patch)
Author
 ivaylo.zhelev <ivaylo.zhelev@solarwinds.com>
2021-02-28 14:22:18 +0200
Committer
 ivaylo.zhelev <ivaylo.zhelev@solarwinds.com>
2021-02-28 14:22:18 +0200
Filesd98fea7203c6dfabad2c692b1c9848e94fd69e76 /src/Web/PUSG.Web/Hubs/GameHub.cs
pusg-api-main.tar
pusg-api-main.tar.gz
pusg-api-main.zip
Parent5bd0777227894df6204cd8e52d19f019f296e910 (diff)
Added Event Service HEAD main
* Major Refactoring to Services (moved to correct namespace) * Fixed bug on Disconnect for HomeHub * Fixed bug with multiple notifications of end game (introduced new bug to fix later)
1 files changed, 18 insertions, 2 deletions
-rw-r--r--src/Web/PUSG.Web/Hubs/GameHub.cs20
diff --git a/src/Web/PUSG.Web/Hubs/GameHub.cs b/src/Web/PUSG.Web/Hubs/GameHub.cs
index d7c587f..1e0db0a 100644
--- a/src/Web/PUSG.Web/Hubs/GameHub.cs
+++ b/src/Web/PUSG.Web/Hubs/GameHub.cs
@@ -1,7 +1,8 @@
using Microsoft.AspNetCore.SignalR;
using PUSG.Web.Models;
-using PUSG.Web.Static;
+using PUSG.Web.Services;
using System;
+using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
@@ -9,11 +10,19 @@ namespace PUSG.Web.Hubs
{
public class GameHub : Hub
{
+ private const string ServerMessageUser = "PUSG";
+
+ private ISessionService sessionService;
+
private IGameService gameService;
- public GameHub(IGameService gameService)
+ private IHubContext<HomeHub> homeHubContext;
+
+ public GameHub(ISessionService sessionService, IGameService gameService, IHubContext<HomeHub> homeHubContext)
{
+ this.sessionService = sessionService;
this.gameService = gameService;
+ this.homeHubContext = homeHubContext;
}
public override async Task OnConnectedAsync()
@@ -127,11 +136,18 @@ namespace PUSG.Web.Hubs
string clientUsername = this.gameService.PlayerUsernames[id];
string otherClientUsername = this.gameService.PlayerUsernames[otherId];
+ List<string> clientSessionIds = this.sessionService.Users.Where(user => user.Value == clientUsername).Select(user => user.Key).ToList();
+
+ List<string> otherClientSessionIds = this.sessionService.Users.Where(user => user.Value == otherClientUsername).Select(user => user.Key).ToList();
+
+ List<string> totalExcludedIds = clientSessionIds.Concat(otherClientSessionIds).ToList();
+
string winningMessage =
this.gameService.PlayerColor[id] == gameSession.Winner
? $"{clientUsername} won against {otherClientUsername}!"
: $"{otherClientUsername} won against {clientUsername}!";
+ await this.homeHubContext.Clients.AllExcept(totalExcludedIds).SendAsync("ReceiveMessage", new[] { ServerMessageUser, winningMessage });
await this.Clients.Clients(id, otherId).SendAsync("GameEnd", new { Result = winningMessage });
}
else