diff --git a/SessionCompanion/SessionCompanion/Hubs/SessionHub.cs b/SessionCompanion/SessionCompanion/Hubs/SessionHub.cs index d6c6573..4e59a32 100644 --- a/SessionCompanion/SessionCompanion/Hubs/SessionHub.cs +++ b/SessionCompanion/SessionCompanion/Hubs/SessionHub.cs @@ -1,7 +1,5 @@ using Microsoft.AspNetCore.SignalR; using System; -using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; namespace SessionCompanion.Hubs @@ -9,17 +7,13 @@ namespace SessionCompanion.Hubs public class SessionHub : Hub { /// - /// Lista zalogowanych graczy i identyfikator wybranej postaci + /// Klasa zawierająca wszystkie dane potrzebne w SignalR odnośnie aktualnej sesji /// - private static Dictionary ConnectedCharacters = new Dictionary(); - - /// - /// Status, czy GM został już zalogowany - /// - private static bool GameMasterConnected = new bool(); + private SessionHubData sessionHubData; public SessionHub() { + this.sessionHubData = new SessionHubData(); } /// @@ -31,16 +25,17 @@ namespace SessionCompanion.Hubs public override Task OnDisconnectedAsync(Exception exception) { // if true then it is character, if false it is GM - if (ConnectedCharacters.ContainsKey(Context.ConnectionId)) + if (this.sessionHubData.ConnectedCharacters_Prop.ContainsKey(Context.ConnectionId)) { Groups.RemoveFromGroupAsync(Context.ConnectionId, "Players"); - ConnectedCharacters.Remove(Context.ConnectionId); + this.sessionHubData.ConnectedCharacters_Prop.Remove(Context.ConnectionId); } else { Groups.RemoveFromGroupAsync(Context.ConnectionId, "GameMaster"); - GameMasterConnected = false; + this.sessionHubData.GameMasterConnected_Prop = false; } + Clients.All.SendAsync("GoodBye", "Player has left the game"); return base.OnDisconnectedAsync(exception); } @@ -54,10 +49,10 @@ namespace SessionCompanion.Hubs /// Zwraca true - jeśli udało się zalogować, false - jesli ktoś zalogował się już jako GM public bool GameMasterLogin() { - if (!GameMasterConnected) + if (!this.sessionHubData.GameMasterConnected_Prop) { Groups.AddToGroupAsync(Context.ConnectionId, "GameMaster"); - GameMasterConnected = true; + this.sessionHubData.GameMasterConnected_Prop = true; Clients.All.SendAsync("Welcome", "Welcome new Game Master"); return true; } @@ -77,7 +72,7 @@ namespace SessionCompanion.Hubs /// Wysyła wiadomość "Welcome" do wszystkich zalogowanych użytkoników public Task PlayerCharacterLogin(int characterId) { - ConnectedCharacters.Add(Context.ConnectionId, characterId); + this.sessionHubData.ConnectedCharacters_Prop.Add(Context.ConnectionId, characterId); Groups.AddToGroupAsync(Context.ConnectionId, "Players"); return Clients.All.SendAsync("Welcome", "Welcome new Player"); diff --git a/SessionCompanion/SessionCompanion/Hubs/SessionHubData.cs b/SessionCompanion/SessionCompanion/Hubs/SessionHubData.cs new file mode 100644 index 0000000..d370d20 --- /dev/null +++ b/SessionCompanion/SessionCompanion/Hubs/SessionHubData.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; + +namespace SessionCompanion.Hubs +{ + /// + /// Statyczna klasa przechowujaca informacje dotyczące SignalR dla SessionHub + /// + public class SessionHubData + { + /// + /// Lista zalogowanych graczy i identyfikator wybranej postaci + /// + public static Dictionary ConnectedCharacters = new Dictionary(); + + /// + /// Status, czy GM został już zalogowany + /// + public static bool GameMasterConnected; + + /// + /// Zwraca lub ustawia status zalogowania GM + /// + public bool GameMasterConnected_Prop + { + get + { + return GameMasterConnected; + } + + set + { + GameMasterConnected = value; + } + } + + /// + /// Zwraca lub ustawia listę zalogowanych graczy + /// + public Dictionary ConnectedCharacters_Prop + { + get + { + return ConnectedCharacters; + } + + set + { + ConnectedCharacters = value; + } + } + } +}