diff options
| author | Michael VanOverbeek <[email protected]> | 2017-03-06 17:01:16 +0000 |
|---|---|---|
| committer | Michael VanOverbeek <[email protected]> | 2017-03-06 17:01:24 +0000 |
| commit | 9e30864a106a1a9b5dab0ffd6c333951d3c91dd2 (patch) | |
| tree | 9896b85dcb4f119d7eea8ace27471b760d6a952a /ShiftOS.Server | |
| parent | 909873af65113a5808e509741a3f37f849d425ca (diff) | |
| download | shiftos_thereturn-9e30864a106a1a9b5dab0ffd6c333951d3c91dd2.tar.gz shiftos_thereturn-9e30864a106a1a9b5dab0ffd6c333951d3c91dd2.tar.bz2 shiftos_thereturn-9e30864a106a1a9b5dab0ffd6c333951d3c91dd2.zip | |
improvements
Diffstat (limited to 'ShiftOS.Server')
| -rw-r--r-- | ShiftOS.Server/ChatBackend.cs | 43 | ||||
| -rw-r--r-- | ShiftOS.Server/Program.cs | 4 | ||||
| -rw-r--r-- | ShiftOS.Server/SaveManager.cs | 8 |
3 files changed, 53 insertions, 2 deletions
diff --git a/ShiftOS.Server/ChatBackend.cs b/ShiftOS.Server/ChatBackend.cs index ba1c48e..b9fbf25 100644 --- a/ShiftOS.Server/ChatBackend.cs +++ b/ShiftOS.Server/ChatBackend.cs @@ -103,7 +103,21 @@ namespace ShiftOS.Server } } }; - Reinitialized += () => + OnBroadcast += (msg) => + { + if (chatKilled == false) + { + var cMsg = new ChatMessage("sys", "mud", msg, chatID); + RelayMessageToAll(cMsg); + Log(chatID, msg); + //Get the Discord channel for this chat. + var dChan = client.GetChannel(Convert.ToUInt64(chat.DiscordChannelID)) as ISocketMessageChannel; + //Relay the message to Discord. + dChan.SendMessageAsync($"{msg}"); + //Relay it back to all MUD clients. + + } + }; Reinitialized += () => { client.DisconnectAsync(); @@ -122,11 +136,31 @@ namespace ShiftOS.Server Log(chatID, $"[{msg.Username}@{msg.SystemName}] {msg.Message}"); } }; + OnBroadcast += (msg) => + { + if (chatKilled == false) + { + var cMsg = new ChatMessage("sys", "mud", msg, chatID); + RelayMessageToAll(cMsg); + Log(chatID, msg); + } + }; Reinitialized += () => { chatKilled = true; }; } } } + internal static void RelayMessageToAll(ChatMessage msg) + { + server.DispatchAll(new NetObject("chat_msgreceived", new ServerMessage + { + Name = "chat_msgreceived", + GUID = "server", + Contents = JsonConvert.SerializeObject(msg) + })); + + } + internal static void RelayMessage(string guid, ChatMessage msg) { server.DispatchAllExcept(new Guid(guid), new NetObject("chat_msgreceived", new ServerMessage @@ -163,6 +197,13 @@ namespace ShiftOS.Server } + public static event Action<string> OnBroadcast; + + public static void Broadcast(string text) + { + OnBroadcast?.Invoke("[Broadcast] " + text); + } + [MudRequest("chat_getlog", typeof(ChatLogRequest))] public static void GetChatlog(string guid, ChatLogRequest req) { diff --git a/ShiftOS.Server/Program.cs b/ShiftOS.Server/Program.cs index 04d7b2e..3ef9715 100644 --- a/ShiftOS.Server/Program.cs +++ b/ShiftOS.Server/Program.cs @@ -185,6 +185,10 @@ namespace ShiftOS.Server Console.WriteLine("Save not found."); } } + else if(cmd.ToLower().StartsWith("broadcast ")) + { + ChatBackend.Broadcast(cmd.Remove(0, 10)); + } else if (cmd == "purge_all_bad_saves") { foreach(var f in Directory.GetFiles("saves")) diff --git a/ShiftOS.Server/SaveManager.cs b/ShiftOS.Server/SaveManager.cs index cef8b37..e986ecd 100644 --- a/ShiftOS.Server/SaveManager.cs +++ b/ShiftOS.Server/SaveManager.cs @@ -1,4 +1,4 @@ -/* +/* * MIT License * * Copyright (c) 2017 Michael VanOverbeek and ShiftOS devs @@ -73,6 +73,12 @@ namespace ShiftOS.Server if (save.Username == args["username"].ToString() && save.Password == args["password"].ToString()) { + if(save.ID == new Guid()) + { + save.ID = Guid.NewGuid(); + WriteEncFile(savefile, JsonConvert.SerializeObject(save)); + } + Program.server.DispatchTo(new Guid(guid), new NetObject("mud_savefile", new ServerMessage { |
