From 573e9ea7bf386bda1b8092a91b85484bb0a0fd32 Mon Sep 17 00:00:00 2001 From: Michele Date: Mon, 16 Nov 2020 00:33:02 +0000 Subject: [PATCH] getting somewhere --- Sledgemapper.Api/Hubs/SledgemapperHub.cs | 38 +++++++++++++++++------ Sledgemapper.Api/sledgemapper.db | Bin 28672 -> 28672 bytes 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/Sledgemapper.Api/Hubs/SledgemapperHub.cs b/Sledgemapper.Api/Hubs/SledgemapperHub.cs index d60ce11..5fd8c99 100644 --- a/Sledgemapper.Api/Hubs/SledgemapperHub.cs +++ b/Sledgemapper.Api/Hubs/SledgemapperHub.cs @@ -30,6 +30,9 @@ namespace SignalRChat.Hubs _dbContext = dbContext; _datacontext = datacontext; } + + // other colors + // #cca300, #20f200, #004011, #00e6d6, #005c73, #0057d9, #d900ca, #660029, #d9003a // private static Dictionary _sessions = new Dictionary(); public List Colors = new List{"CC0000", "CC3300", @@ -151,13 +154,16 @@ namespace SignalRChat.Hubs var usersSession = _dbContext.SessionUsers.Where(m => m.SessionId == session.SessionId).Select(m => m.UserId).ToList(); var players = _datacontext. Users. - Where(m => usersSession.Contains(m.Id)). - Select(p => new Player + Where(m => usersSession.Contains(m.Id)).ToList(). + //Select((r, index) => new { Place = index, Name = r }) + Select((p, index) => new Player { Initials = p.Initials, UserId = userId, + Color = Colors[index], Position = new Tile { X = 0, Y = 0 } }).ToList(); + await _dbContext.SaveChangesAsync(); await Groups.AddToGroupAsync(Context.ConnectionId, sessionName); @@ -224,12 +230,26 @@ namespace SignalRChat.Hubs await base.OnConnectedAsync(); } - public override Task OnDisconnectedAsync(Exception exception) + public override async Task OnDisconnectedAsync(Exception exception) { - _connectedPlayers.TryRemove(Context.ConnectionId, out var userId); - return base.OnDisconnectedAsync(exception); - } + var userConnection = _dbContext.UserConnections.FirstOrDefault(m => m.ConnectionId == Context.ConnectionId); + if (userConnection != null) + { + _dbContext.UserConnections.Remove(userConnection); + } + var userSessions = _dbContext.SessionUsers.Where(m => m.UserId == userConnection.UserId).ToList(); + { + foreach (var userSession in userSessions) + { + var session = _dbContext.Sessions.FirstOrDefault(m => m.SessionId == userSession.SessionId); + await Clients.Group(session.SessionName).PlayerUpdate(null); //send remove player + _dbContext.Sessions.Remove(session); + } - ConcurrentDictionary _connectedPlayers = new ConcurrentDictionary(); - } -} \ No newline at end of file + } + await _dbContext.SaveChangesAsync(); + + await base.OnDisconnectedAsync(exception); + + } + } \ No newline at end of file diff --git a/Sledgemapper.Api/sledgemapper.db b/Sledgemapper.Api/sledgemapper.db index 98464097a004a2768f4ee314e11f6fbb2507126f..4f0b16e3294220c3f3916a0163d97d64c6c896a6 100644 GIT binary patch delta 411 zcmXw#ze@sP7{}lD?q2l{^68gU8Z8mjAm%UfrnuDVLQ}!hXc5vQTkc5jR9x~u2)cj6 zAqX0q9E2L8ww4rJL=ak{wq7Nt?*|_EJYT-89&YvU{fp1#Sj6lOR;p?xs%x5BG_G__ zu=>7@B{GK)BG5(f4I}u3cj!JW%s;{=PdK!~8*0@E3mio}!4M;`GY&G=Xn$?l0UZRt z@C8HY!w0;cp63tYONtDmVuS2GE5z+(HEu z5MdpVb3i>^=Z#z75HH3rj^kCS(9C6}y=+ESgNa(qsJr>e%^y=6=}4)V%Ey&#S(Mdq zv}x8olm8;4$4bhXDf^S&WLXO3&D{g}YEN?0R=jxRJ!zC{hk8aj4b;=|yq0PN8ke3) zRgtOX&ZBxv2GeYY6jSnF8;OWot6P=Aos+;Tf*%;u)*tXndp?0R)*ahn!n6NVaWe|C MGYT+v)-~Pq552c*>i_@% delta 131 zcmZp8z}WDBal;vXQDz}VW=+P>;?yGN{Jgx>