SES-106 Added new mwthod and changed static fields in Hub to be able to share them in other classes #31
@ -1,7 +1,5 @@
|
|||||||
using Microsoft.AspNetCore.SignalR;
|
using Microsoft.AspNetCore.SignalR;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace SessionCompanion.Hubs
|
namespace SessionCompanion.Hubs
|
||||||
@ -9,17 +7,13 @@ namespace SessionCompanion.Hubs
|
|||||||
public class SessionHub : Hub
|
public class SessionHub : Hub
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Lista zalogowanych graczy i identyfikator wybranej postaci
|
/// Klasa zawierająca wszystkie dane potrzebne w SignalR odnośnie aktualnej sesji
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private static Dictionary<string, int> ConnectedCharacters = new Dictionary<string, int>();
|
private SessionHubData sessionHubData;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Status, czy GM został już zalogowany
|
|
||||||
/// </summary>
|
|
||||||
private static bool GameMasterConnected = new bool();
|
|
||||||
|
|
||||||
public SessionHub()
|
public SessionHub()
|
||||||
{
|
{
|
||||||
|
this.sessionHubData = new SessionHubData();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -31,16 +25,17 @@ namespace SessionCompanion.Hubs
|
|||||||
public override Task OnDisconnectedAsync(Exception exception)
|
public override Task OnDisconnectedAsync(Exception exception)
|
||||||
{
|
{
|
||||||
// if true then it is character, if false it is GM
|
// 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");
|
Groups.RemoveFromGroupAsync(Context.ConnectionId, "Players");
|
||||||
ConnectedCharacters.Remove(Context.ConnectionId);
|
this.sessionHubData.ConnectedCharacters_Prop.Remove(Context.ConnectionId);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Groups.RemoveFromGroupAsync(Context.ConnectionId, "GameMaster");
|
Groups.RemoveFromGroupAsync(Context.ConnectionId, "GameMaster");
|
||||||
GameMasterConnected = false;
|
this.sessionHubData.GameMasterConnected_Prop = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Clients.All.SendAsync("GoodBye", "Player has left the game");
|
Clients.All.SendAsync("GoodBye", "Player has left the game");
|
||||||
return base.OnDisconnectedAsync(exception);
|
return base.OnDisconnectedAsync(exception);
|
||||||
}
|
}
|
||||||
@ -54,10 +49,10 @@ namespace SessionCompanion.Hubs
|
|||||||
/// <returns>Zwraca true - jeśli udało się zalogować, false - jesli ktoś zalogował się już jako GM</returns>
|
/// <returns>Zwraca true - jeśli udało się zalogować, false - jesli ktoś zalogował się już jako GM</returns>
|
||||||
public bool GameMasterLogin()
|
public bool GameMasterLogin()
|
||||||
{
|
{
|
||||||
if (!GameMasterConnected)
|
if (!this.sessionHubData.GameMasterConnected_Prop)
|
||||||
{
|
{
|
||||||
Groups.AddToGroupAsync(Context.ConnectionId, "GameMaster");
|
Groups.AddToGroupAsync(Context.ConnectionId, "GameMaster");
|
||||||
GameMasterConnected = true;
|
this.sessionHubData.GameMasterConnected_Prop = true;
|
||||||
Clients.All.SendAsync("Welcome", "Welcome new Game Master");
|
Clients.All.SendAsync("Welcome", "Welcome new Game Master");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -77,7 +72,7 @@ namespace SessionCompanion.Hubs
|
|||||||
/// <returns>Wysyła wiadomość "Welcome" do wszystkich zalogowanych użytkoników</returns>
|
/// <returns>Wysyła wiadomość "Welcome" do wszystkich zalogowanych użytkoników</returns>
|
||||||
public Task PlayerCharacterLogin(int characterId)
|
public Task PlayerCharacterLogin(int characterId)
|
||||||
{
|
{
|
||||||
ConnectedCharacters.Add(Context.ConnectionId, characterId);
|
this.sessionHubData.ConnectedCharacters_Prop.Add(Context.ConnectionId, characterId);
|
||||||
Groups.AddToGroupAsync(Context.ConnectionId, "Players");
|
Groups.AddToGroupAsync(Context.ConnectionId, "Players");
|
||||||
|
|
||||||
return Clients.All.SendAsync("Welcome", "Welcome new Player");
|
return Clients.All.SendAsync("Welcome", "Welcome new Player");
|
||||||
|
52
SessionCompanion/SessionCompanion/Hubs/SessionHubData.cs
Normal file
52
SessionCompanion/SessionCompanion/Hubs/SessionHubData.cs
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Hubs
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Statyczna klasa przechowujaca informacje dotyczące SignalR dla SessionHub
|
||||||
|
/// </summary>
|
||||||
|
public class SessionHubData
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Lista zalogowanych graczy i identyfikator wybranej postaci
|
||||||
|
/// </summary>
|
||||||
|
public static Dictionary<string, int> ConnectedCharacters = new Dictionary<string, int>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Status, czy GM został już zalogowany
|
||||||
|
/// </summary>
|
||||||
|
public static bool GameMasterConnected;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Zwraca lub ustawia status zalogowania GM
|
||||||
|
/// </summary>
|
||||||
|
public bool GameMasterConnected_Prop
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return GameMasterConnected;
|
||||||
|
}
|
||||||
|
|
||||||
|
set
|
||||||
|
{
|
||||||
|
GameMasterConnected = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Zwraca lub ustawia listę zalogowanych graczy
|
||||||
|
/// </summary>
|
||||||
|
public Dictionary<string, int> ConnectedCharacters_Prop
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return ConnectedCharacters;
|
||||||
|
}
|
||||||
|
|
||||||
|
set
|
||||||
|
{
|
||||||
|
ConnectedCharacters = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user