summaryrefslogtreecommitdiff
path: root/DSACore
diff options
context:
space:
mode:
authorTrueDoctor <d-kobert@web.de>2018-10-01 22:56:40 +0200
committerTrueDoctor <d-kobert@web.de>2018-10-01 22:56:40 +0200
commite7cac3a24b88a139eaf237a4342fa27c00bf2097 (patch)
treee77de5432ac25c975d0f357a3383f1e8951fe5d8 /DSACore
parentb7ef3c860375baea7b5db95940519ce0746b6ecc (diff)
created [online] and [login] groups to easyly adress specific groups of players, even though, they havent joined a group yet
Diffstat (limited to 'DSACore')
-rw-r--r--DSACore/Controllers/CommandsController.cs2
-rw-r--r--DSACore/Hubs/ChatHub.cs28
2 files changed, 22 insertions, 8 deletions
diff --git a/DSACore/Controllers/CommandsController.cs b/DSACore/Controllers/CommandsController.cs
index 1d40a43..5f27f63 100644
--- a/DSACore/Controllers/CommandsController.cs
+++ b/DSACore/Controllers/CommandsController.cs
@@ -33,7 +33,7 @@ namespace DSACore.Controllers
{
try
{
- return Commands.CommandHandler.ExecuteCommand(cmd);
+ return Commands.CommandHandler.ExecuteCommand(cmd).message;
}
catch (Exception e)
{
diff --git a/DSACore/Hubs/ChatHub.cs b/DSACore/Hubs/ChatHub.cs
index 027e4df..42e6d91 100644
--- a/DSACore/Hubs/ChatHub.cs
+++ b/DSACore/Hubs/ChatHub.cs
@@ -21,6 +21,8 @@ namespace DSACore.Hubs
static ChatHub()
{
DSAGroups = Database.GetGroups().Result;
+ DSAGroups.Add(new Group("login", ""));
+ DSAGroups.Add(new Group("online", ""));
//AddGroups();
}
@@ -40,7 +42,7 @@ namespace DSACore.Hubs
}
catch (InvalidOperationException e)
{
- //await Clients.Caller.SendCoreAsync("ReceiveMessage",
+ //await Clients.Caller.SendCoreAsync("RecieveMessage",
// new object[] { "Nutzer ist in keiner Gruppe. Erst joinen!" });
}
@@ -67,7 +69,7 @@ namespace DSACore.Hubs
{
case ResponseType.Caller:
case ResponseType.Error:
- await Clients.Caller.SendAsync("ReceiveMessage", ret.message);
+ await Clients.Caller.SendAsync("RecieveMessage", ret.message);
break;
case ResponseType.Broadcast:
await SendToGroup(ret.message);
@@ -88,12 +90,12 @@ namespace DSACore.Hubs
try
{
string group = getGroup(Context.ConnectionId).Name;
- return Clients.Group(group).SendCoreAsync("ReceiveMessage",
+ return Clients.Group(group).SendCoreAsync("RecieveMessage",
new object[] {getUser(Context.ConnectionId).Name, message});
}
catch (InvalidOperationException e)
{
- return Clients.Caller.SendCoreAsync("ReceiveMessage",
+ return Clients.Caller.SendCoreAsync("RecieveMessage",
new object[] { "Nutzer ist in keiner Gruppe. Erst joinen!" });
}
}
@@ -129,7 +131,7 @@ namespace DSACore.Hubs
DSAGroups.Add(new Group(group, password));
var Dgroup = new DSACore.Models.Database.Group { Name = group, Id = DSAGroups.Count - 1 };
//Database.AddGroup(Dgroup);
- await Clients.Caller.SendCoreAsync("ReceiveMessage", new[] { $"group {@group} sucessfully added" });
+ await Clients.Caller.SendCoreAsync("RecieveMessage", new[] { $"group {@group} sucessfully added" });
//throw new NotImplementedException("add database call to add groups");
}
@@ -149,10 +151,12 @@ namespace DSACore.Hubs
var gGroup = DSAGroups.First(x => x.Name.Equals(group));
if (!gGroup.Users.Exists(x => x.Name.Equals(user)))
{
+ await Groups.RemoveFromGroupAsync(Context.ConnectionId, "login");
await Groups.AddToGroupAsync(Context.ConnectionId, group);
gGroup.Users.Add(new User { ConnectionId = Context.ConnectionId, Name = user });
await SendToGroup("Ein neuer Nutzer hat die Gruppe betreten");
await Clients.Caller.SendAsync("LoginResponse", 0);
+ await Clients.Caller.SendAsync("PlayerStatusChanged", new[] {user, "online"});
}
else
{
@@ -162,7 +166,7 @@ namespace DSACore.Hubs
else
{
await Clients.Caller.SendAsync("LoginResponse", 2);
- //await Clients.Caller.SendAsync("ReceiveMessage", "Falsches Passwort!");
+ //await Clients.Caller.SendAsync("RecieveMessage", "Falsches Passwort!");
}
}
@@ -172,8 +176,16 @@ namespace DSACore.Hubs
return base.OnDisconnectedAsync(exception);
}
+ public override Task OnConnectedAsync()
+ {
+ Groups.AddToGroupAsync(Context.ConnectionId, "login").Wait();
+ Groups.AddToGroupAsync(Context.ConnectionId, "online").Wait();
+ return base.OnConnectedAsync();
+ }
+
public async Task Disconnect()
{
+ await Groups.RemoveFromGroupAsync(Context.ConnectionId, "online");
if (DSAGroups.Exists(x => x.Users.Exists(y => y.ConnectionId == Context.ConnectionId)))
{
try
@@ -182,7 +194,9 @@ namespace DSACore.Hubs
var user = getUser(Context.ConnectionId);
- await SendToGroup(user.Name + " disconnected from the Server");
+
+ await Clients.Caller.SendAsync("PlayerStatusChanged", new[] { user.Name, "offline" });
+ //await SendToGroup(user.Name + " disconnected from the Server");
group.Users.Remove(user);
await Groups.RemoveFromGroupAsync(Context.ConnectionId, group.Name);
}