aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.Server/ShopBackend.cs
diff options
context:
space:
mode:
authorMichael <[email protected]>2017-02-12 10:51:53 -0500
committerMichael <[email protected]>2017-02-12 10:51:53 -0500
commit110438929c855aec8fe1a4cc0b01ccad7ee3807d (patch)
treeaf23414c9a456fccdfb476937160e7ab4254c1d0 /ShiftOS.Server/ShopBackend.cs
parent88e84f74e1c352b5e24b088ba31cff9eb39964fb (diff)
downloadshiftos_thereturn-110438929c855aec8fe1a4cc0b01ccad7ee3807d.tar.gz
shiftos_thereturn-110438929c855aec8fe1a4cc0b01ccad7ee3807d.tar.bz2
shiftos_thereturn-110438929c855aec8fe1a4cc0b01ccad7ee3807d.zip
More MUD refactoring (I'm almost done!)
Diffstat (limited to 'ShiftOS.Server/ShopBackend.cs')
-rw-r--r--ShiftOS.Server/ShopBackend.cs158
1 files changed, 158 insertions, 0 deletions
diff --git a/ShiftOS.Server/ShopBackend.cs b/ShiftOS.Server/ShopBackend.cs
new file mode 100644
index 0000000..b59da39
--- /dev/null
+++ b/ShiftOS.Server/ShopBackend.cs
@@ -0,0 +1,158 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Newtonsoft.Json;
+using ShiftOS.Objects;
+using System.IO;
+using static ShiftOS.Server.Program;
+
+namespace ShiftOS.Server
+{
+ public static class ShopBackend
+ {
+ [MudRequest("update_shop_by_user")]
+ public static void UpdateShopByUser(string guid, object contents)
+ {
+ var args = contents as Dictionary<string, object>;
+ List<Shop> shopList = new List<Shop>();
+ if (File.Exists("shops.json"))
+ shopList = JsonConvert.DeserializeObject<List<Shop>>(File.ReadAllText("shops.json"));
+
+ var username = args["username"] as string;
+ var updateShop = JsonConvert.DeserializeObject<Shop>(msg.Contents);
+
+ for (int i = 0; i < shopList.Count; i++)
+ {
+ if (shopList[i].Owner == username)
+ {
+ shopList[i] = updateShop;
+ }
+ }
+
+ File.WriteAllText("shops.json", JsonConvert.SerializeObject(shopList, Formatting.Indented));
+
+ Program.ClientDispatcher.DispatchTo("shop_added", guid, "");
+ }
+
+ [MudRequest("create_shop")]
+ public static void CreateShop(string guid, object contents)
+ {
+ var args = contents as Dictionary<string, object>;
+ List<Shop> shopFile = new List<Shop>();
+ if (File.Exists("shops.json"))
+ shopFile = JsonConvert.DeserializeObject<List<Shop>>(File.ReadAllText("shops.json"));
+
+ var newShop = JsonConvert.DeserializeObject<Shop>(msg.Contents);
+
+ foreach (var shop in shopFile)
+ {
+ if (shop.Name == newShop.Name)
+ {
+ Program.ClientDispatcher.DispatchTo("shop_taken", guid, "");
+ return;
+ }
+ }
+
+ shopFile.Add(newShop);
+ File.WriteAllText("shops.json", JsonConvert.SerializeObject(shopFile, Formatting.Indented));
+
+
+ Program.ClientDispatcher.DispatchTo("shop_added", guid, "");
+
+ }
+
+ [MudRequest("user_shop_check")]
+ public static void UserShopCheck(string guid, object contents)
+ {
+ var args = contents as Dictionary<string, object>;
+ List<Shop> allshops = new List<Shop>();
+ if (File.Exists("shops.json"))
+ allshops = JsonConvert.DeserializeObject<List<Shop>>(File.ReadAllText("shops.json"));
+
+ int res = 0;
+
+ foreach (var shop in allshops)
+ {
+ if (shop.Owner == args["username"] as string)
+ {
+ res = 1;
+ }
+ }
+
+ Program.ClientDispatcher.DispatchTo("user_shop_check_result", guid, res.ToString());
+ }
+
+ [MudRequest("shop_getitems")]
+ public static void GetShopItems(string guid, object contents)
+ {
+ var args = contents as Dictionary<string, object>;
+ var shopName = args["shopname"] as string;
+ Shop tempShop = null;
+ foreach (var item in JsonConvert.DeserializeObject<List<Shop>>(File.ReadAllText("shops.json")))
+ {
+ if (item.Name == shopName)
+ {
+ tempShop = item;
+ }
+ }
+
+ if (tempShop != null)
+ foreach (var item in tempShop.Items)
+ {
+ Program.ClientDispatcher.DispatchTo("shop_additem", guid, new
+ {
+ shop = shopName,
+ itemdata = Program.Compress(Program.Compress(JsonConvert.SerializeObject(item)))
+ });
+ }
+
+ }
+
+ [MudRequest("shop_getall")]
+ public static void GetAllShops(string guid, object contents)
+ {
+ var args = contents as Dictionary<string, object>;
+ List<Shop> shops = new List<Shop>();
+ if (File.Exists("shops.json"))
+ shops = JsonConvert.DeserializeObject<List<Shop>>(File.ReadAllText("shops.json"));
+ //Purge all items in all shops temporarily.
+ //This is to save on network bandwidth as it will take a long time to send everyone's shops down if we don't purge the stock.
+ //And with high bandwidth usage, we may end up DOSing our clients when too many people upload too many things.
+ //Furthermore, this'll make the MUD Control Centre seem faster...
+ for (int i = 0; i < shops.Count; i++)
+ {
+ shops[i].Items = new List<ShopItem>();
+ }
+ Program.ClientDispatcher.DispatchTo("shop_all", guid, shops);
+ }
+
+ [MudRequest("user_get_shop")]
+ public static void GetShop(string guid, object contents)
+ {
+ string shopOwner = contents as string;
+ if (File.Exists("shops.json"))
+ foreach (var shop in JsonConvert.DeserializeObject<List<Shop>>(File.ReadAllText("shops.json")))
+ {
+ if (shop.Owner == shopOwner)
+ {
+ server.DispatchTo(new Guid(msg.GUID), new NetObject("ruecuodaL", new ServerMessage
+ {
+ Name = "user_shop",
+ GUID = "server",
+ Contents = JsonConvert.SerializeObject(shop)
+ }));
+ return;
+ }
+ }
+
+ server.DispatchTo(new Guid(msg.GUID), new NetObject("ruecuodaL", new ServerMessage
+ {
+ Name = "user_noshop",
+ GUID = "server",
+ }));
+
+ }
+ }
+}