diff --git a/SessionCompanion/SessionCompanion/Hubs/SessionHub.cs b/SessionCompanion/SessionCompanion/Hubs/SessionHub.cs
index f237634..d6c6573 100644
--- a/SessionCompanion/SessionCompanion/Hubs/SessionHub.cs
+++ b/SessionCompanion/SessionCompanion/Hubs/SessionHub.cs
@@ -1,19 +1,33 @@
-using System;
+using Microsoft.AspNetCore.SignalR;
+using System;
using System.Collections.Generic;
+using System.Linq;
using System.Threading.Tasks;
-using Microsoft.AspNetCore.SignalR;
-
namespace SessionCompanion.Hubs
{
public class SessionHub : Hub
{
+ ///
+ /// Lista zalogowanych graczy i identyfikator wybranej postaci
+ ///
private static Dictionary ConnectedCharacters = new Dictionary();
+ ///
+ /// Status, czy GM został już zalogowany
+ ///
+ private static bool GameMasterConnected = new bool();
+
public SessionHub()
{
}
+ ///
+ /// Metoda nadpisuje istniejącą metodę wywoływaną na utratę połączenia.
+ /// Ma ona za zadanie usunąć odłączonego gracza z listy zalogowanych.
+ /// Pozostałe ekrany zostają powiadomione wiadomością "GoodBye"
+ ///
+ /// Błąd/przyczyna odłączenia
public override Task OnDisconnectedAsync(Exception exception)
{
// if true then it is character, if false it is GM
@@ -25,22 +39,42 @@ namespace SessionCompanion.Hubs
else
{
Groups.RemoveFromGroupAsync(Context.ConnectionId, "GameMaster");
+ GameMasterConnected = false;
}
-
Clients.All.SendAsync("GoodBye", "Player has left the game");
return base.OnDisconnectedAsync(exception);
}
#region GameMaster
- public Task GameMasterLogin()
- {
- Groups.AddToGroupAsync(Context.ConnectionId, "GameMaster");
- return Clients.All.SendAsync("Welcome", "Welcome new Game Master");
+ ///
+ /// Logowanie do Huba dla GM
+ /// Wysyła wiadomość "Welcome" do wszystkich zalogowanych użytkoników
+ ///
+ /// Zwraca true - jeśli udało się zalogować, false - jesli ktoś zalogował się już jako GM
+ public bool GameMasterLogin()
+ {
+ if (!GameMasterConnected)
+ {
+ Groups.AddToGroupAsync(Context.ConnectionId, "GameMaster");
+ GameMasterConnected = true;
+ Clients.All.SendAsync("Welcome", "Welcome new Game Master");
+ return true;
+ }
+ else
+ {
+ return false;
+ }
}
#endregion
#region Player
+
+ ///
+ /// Logowanie do Huba dla Gracza
+ ///
+ /// Identyfikator zalogowanego bohatera
+ /// Wysyła wiadomość "Welcome" do wszystkich zalogowanych użytkoników
public Task PlayerCharacterLogin(int characterId)
{
ConnectedCharacters.Add(Context.ConnectionId, characterId);