From 110438929c855aec8fe1a4cc0b01ccad7ee3807d Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 12 Feb 2017 10:51:53 -0500 Subject: More MUD refactoring (I'm almost done!) --- ShiftOS.Server/LegionManager.cs | 132 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 ShiftOS.Server/LegionManager.cs (limited to 'ShiftOS.Server/LegionManager.cs') diff --git a/ShiftOS.Server/LegionManager.cs b/ShiftOS.Server/LegionManager.cs new file mode 100644 index 0000000..9f2de5f --- /dev/null +++ b/ShiftOS.Server/LegionManager.cs @@ -0,0 +1,132 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.IO; +using Newtonsoft.Json; +using ShiftOS.Objects; +using static ShiftOS.Server.Program; +using NetSockets; + +namespace ShiftOS.Server +{ + public static class LegionManager + { + [MudRequest("legion_createnew")] + public static void CreateLegion(string guid, object contents) + { + List legions = new List(); + if (File.Exists("legions.json")) + legions = JsonConvert.DeserializeObject>(File.ReadAllText("legions.json")); + + var l = JsonConvert.DeserializeObject(contents as string); + bool legionExists = false; + + foreach (var legion in legions) + { + if (legion.ShortName == l.ShortName) + legionExists = true; + } + + if (legionExists == false) + { + legions.Add(l); + server.DispatchTo(new Guid(msg.GUID), new NetObject("test", new ServerMessage + { + Name = "legion_create_ok", + GUID = "server" + })); + + } + else + { + server.DispatchTo(new Guid(msg.GUID), new NetObject("test", new ServerMessage + { + Name = "legion_alreadyexists", + GUID = "server" + })); + } + + File.WriteAllText("legions.json", JsonConvert.SerializeObject(legions, Formatting.Indented)); + + } + + [MudRequest("legion_getall")] + public static void GetAllLegions(string guid, object contents) + { + List allLegions = new List(); + + if (File.Exists("legions.json")) + allLegions = JsonConvert.DeserializeObject>(File.ReadAllText("legions.json")); + + server.DispatchTo(new Guid(msg.GUID), new NetObject("alllegions", new ServerMessage + { + Name = "legion_all", + GUID = "server", + Contents = JsonConvert.SerializeObject(allLegions) + })); + + } + + [MudRequest("legion_get_users")] + public static void GetLegionUsers(string guid, object contents) + { + var lgn = JsonConvert.DeserializeObject(contents as string); + + List userIDs = new List(); + + foreach (var savfile in Directory.GetFiles("saves")) + { + try + { + var savefilecontents = JsonConvert.DeserializeObject(File.ReadAllText(savfile)); + if (savefilecontents.CurrentLegions.Contains(lgn.ShortName)) + { + userIDs.Add($"{savefilecontents.Username}@{savefilecontents.SystemName}"); + } + } + catch { } + } + + server.DispatchTo(new Guid(msg.GUID), new NetObject("userlist", new ServerMessage + { + Name = "legion_users_found", + GUID = "server", + Contents = JsonConvert.SerializeObject(userIDs) + })); + + } + + [MudRequest("user_get_legion")] + public static void GetUserLegion(string guid, object contents) + { + var userSave = JsonConvert.DeserializeObject(contents as string); + + if (File.Exists("legions.json")) + { + var legionList = JsonConvert.DeserializeObject>(File.ReadAllText("legions.json")); + foreach (var legion in legionList) + { + if (userSave.CurrentLegions.Contains(legion.ShortName)) + { + server.DispatchTo(new Guid(msg.GUID), new NetObject("reply", new ServerMessage + { + Name = "user_legion", + GUID = "server", + Contents = JsonConvert.SerializeObject(legion) + })); + return; + } + } + } + + server.DispatchTo(new Guid(msg.GUID), new NetObject("fuck", new ServerMessage + { + Name = "user_not_found_in_legion", + GUID = "server" + })); + + } + } +} -- cgit v1.2.3