コード例 #1
0
        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.");
            }
        }
コード例 #2
0
        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.");
            }
        }
コード例 #3
0
        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);
                }
            }
        }