diff --git a/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs b/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs
index e691525..f05ef4a 100644
--- a/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs
+++ b/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs
@@ -66,14 +66,14 @@ namespace SessionCompanion.Controllers
};
}
///
- /// Metoda zwraca listę postaci przypisanych do danego użytkownika
+ /// Metoda zwraca listę zalogowanych postaci
///
/// Lista zalogowanych postaci lub wiadomość błędu
[HttpGet("loggedCharacters")]
public async Task, ErrorResponse>> GetLoggedUsersCharacters()
{
var connectedCharacters = _sessionHubData.ConnectedCharacters_Prop;
- var characters = await _service.GetBasicCharactersData(connectedCharacters.Values.ToList());
+ var characters = await _service.GetBasicCharactersData(connectedCharacters.Keys.ToList());
return characters.ToList();
}
diff --git a/SessionCompanion/SessionCompanion/Hubs/SessionHub.cs b/SessionCompanion/SessionCompanion/Hubs/SessionHub.cs
index 4e59a32..39c02ee 100644
--- a/SessionCompanion/SessionCompanion/Hubs/SessionHub.cs
+++ b/SessionCompanion/SessionCompanion/Hubs/SessionHub.cs
@@ -1,5 +1,6 @@
using Microsoft.AspNetCore.SignalR;
using System;
+using System.Linq;
using System.Threading.Tasks;
namespace SessionCompanion.Hubs
@@ -25,10 +26,11 @@ namespace SessionCompanion.Hubs
public override Task OnDisconnectedAsync(Exception exception)
{
// if true then it is character, if false it is GM
- if (this.sessionHubData.ConnectedCharacters_Prop.ContainsKey(Context.ConnectionId))
+ if (this.sessionHubData.ConnectedCharacters_Prop.ContainsValue(Context.ConnectionId))
{
Groups.RemoveFromGroupAsync(Context.ConnectionId, "Players");
- this.sessionHubData.ConnectedCharacters_Prop.Remove(Context.ConnectionId);
+ int charactedId = this.sessionHubData.ConnectedCharacters_Prop.Where(e => e.Value.Equals(Context.ConnectionId)).First().Key;
+ this.sessionHubData.ConnectedCharacters_Prop.Remove(charactedId);
}
else
{
@@ -61,6 +63,29 @@ namespace SessionCompanion.Hubs
return false;
}
}
+
+ ///
+ /// Metoda wysyła wiadomość do konkretnego gracza [MessageFromGameMaster]
+ ///
+ /// Id postaci któa ma otrzymać wiadomość
+ /// Wiadomość do wysłania
+ public void SendMessageToPlayer(int characterId, string message)
+ {
+ string playerConnectionId = "";
+ if (this.sessionHubData.ConnectedCharacters_Prop.TryGetValue(characterId, out playerConnectionId))
+ {
+ Clients.Client(playerConnectionId).SendAsync("MessageFromGameMaster", message);
+ }
+ }
+
+ ///
+ /// Metoda wysyła wiadomość do wszystkich graczy [MessageFromGameMaster]
+ ///
+ /// Wiadomość do wysłania
+ public void SendMessageToAllPlayers(string message)
+ {
+ Clients.Group("Players").SendAsync("MessageFromGameMaster", message);
+ }
#endregion
#region Player
@@ -72,7 +97,7 @@ namespace SessionCompanion.Hubs
/// Wysyła wiadomość "Welcome" do wszystkich zalogowanych użytkoników
public Task PlayerCharacterLogin(int characterId)
{
- this.sessionHubData.ConnectedCharacters_Prop.Add(Context.ConnectionId, characterId);
+ this.sessionHubData.ConnectedCharacters_Prop.Add(characterId, Context.ConnectionId);
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
index c92bfaa..7efc6c4 100644
--- a/SessionCompanion/SessionCompanion/Hubs/SessionHubData.cs
+++ b/SessionCompanion/SessionCompanion/Hubs/SessionHubData.cs
@@ -10,7 +10,7 @@ namespace SessionCompanion.Hubs
///
/// Lista zalogowanych graczy i identyfikator wybranej postaci
///
- public static Dictionary ConnectedCharacters = new Dictionary();
+ public static Dictionary ConnectedCharacters = new Dictionary();
///
/// Status, czy GM został już zalogowany
@@ -36,7 +36,7 @@ namespace SessionCompanion.Hubs
///
/// Zwraca lub ustawia listę zalogowanych postaci
///
- public Dictionary ConnectedCharacters_Prop
+ public Dictionary ConnectedCharacters_Prop
{
get
{
diff --git a/SessionCompanion/SessionCompanion/SessionCompanion.xml b/SessionCompanion/SessionCompanion/SessionCompanion.xml
index b152a01..b96a03b 100644
--- a/SessionCompanion/SessionCompanion/SessionCompanion.xml
+++ b/SessionCompanion/SessionCompanion/SessionCompanion.xml
@@ -20,23 +20,16 @@
- Metoda zwraca listę postaci przypisanych do danego użytkownika
+ Metoda zwraca listę zalogowanych postaci
Lista zalogowanych postaci lub wiadomość błędu
Metoda zwraca wszystkie statystyki dla danej postaci
- Zwracane statystyki dla:
- Charisma
- Constitution
- Dexterity
- Intelligence
- Strength
- Wisdom
-
-
+ Id postaci
+ Listę wszystkich statystyk
@@ -79,6 +72,19 @@
Zwraca true - jeśli udało się zalogować, false - jesli ktoś zalogował się już jako GM
+
+
+ Metoda wysyła wiadomość do konkretnego gracza [MessageFromGameMaster]
+
+ Id postaci któa ma otrzymać wiadomość
+ Wiadomość do wysłania
+
+
+
+ Metoda wysyła wiadomość do wszystkich graczy [MessageFromGameMaster]
+
+ Wiadomość do wysłania
+
Logowanie do Huba dla Gracza