public static string AddNewRoom(string name, string key) { int id = 1; string path = HttpContext.Current.Server.MapPath("~/") + "rooms.xml"; List <RoomMembership> rooms; XmlSerializer serializer = new XmlSerializer(typeof(List <RoomMembership>)); if (File.Exists(path)) { using (FileStream stream = File.OpenRead(path)) { rooms = (List <RoomMembership>)serializer.Deserialize(stream); } } else { rooms = new List <RoomMembership>(); } if (rooms.Count() > 0) { id = rooms.Max(cr => cr.RoomID) + 1; } if (!rooms.Exists(cr => cr.RoomName == name)) { RoomMembership r = new RoomMembership { RoomID = id, RoomName = name, RoomKey = key, RoomPlayers = new List <int>() }; r.RoomPlayers.Add((int)HttpContext.Current.Session["PlayerID"]); HttpContext.Current.Session["RoomID"] = id; rooms.Add(r); using (FileStream stream = File.OpenWrite(path)) { serializer.Serialize(stream, rooms); } return("RoomCreated"); } else { return("Room Name is already in use."); } }
public static string JoinRoom(string key) { int id = 0; string path = HttpContext.Current.Server.MapPath("~/") + "rooms.xml"; List <RoomMembership> rooms; XmlSerializer serializer = new XmlSerializer(typeof(List <RoomMembership>)); if (File.Exists(path)) { using (FileStream stream = File.OpenRead(path)) { rooms = (List <RoomMembership>)serializer.Deserialize(stream); } } else { rooms = new List <RoomMembership>(); } if (rooms.Exists(cr => cr.RoomKey == key)) { RoomMembership r = rooms.Where(cr => cr.RoomKey == key).FirstOrDefault(); r.RoomPlayers.Add((int)HttpContext.Current.Session["PlayerID"]); HttpContext.Current.Session["RoomID"] = r.RoomID; using (FileStream stream = File.OpenWrite(path)) { serializer.Serialize(stream, rooms); } return("RoomJoined"); } else { return("Invalid Room Key."); } }
public static void LeaveRoom() { int id = 0; string path = HttpContext.Current.Server.MapPath("~/") + "rooms.xml"; List <RoomMembership> rooms; XmlSerializer serializer = new XmlSerializer(typeof(List <RoomMembership>)); if (File.Exists(path)) { using (FileStream stream = File.OpenRead(path)) { rooms = (List <RoomMembership>)serializer.Deserialize(stream); } } else { rooms = new List <RoomMembership>(); } if (rooms.Exists(cr => cr.RoomID == (int)HttpContext.Current.Session["RoomID"])) { RoomMembership r = rooms.Where(cr => cr.RoomID == (int)HttpContext.Current.Session["RoomID"]).FirstOrDefault(); r.RoomPlayers.Remove((int)HttpContext.Current.Session["PlayerID"]); if (r.RoomPlayers.Count == 0) { rooms.Remove(r); } HttpContext.Current.Session.Remove("RoomID"); using (FileStream stream = File.OpenWrite(path)) { serializer.Serialize(stream, rooms); } } }