/// <summary> /// Fills the specified row. /// </summary> /// <param name="row">The row.</param> internal void Fill(DataRow row) { try { Id = (uint) row["id"]; Name = (string) row["caption"]; PassWord = (string) row["password"]; Description = (string) row["description"]; Type = (string) row["roomtype"]; Owner = string.Empty; OwnerId = (uint) row["owner"]; RoomChat = new ConcurrentStack<Chatlog>(); WordFilter = new List<string>(); using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor()) { queryReactor.SetQuery("SELECT username FROM users WHERE id = @userId"); queryReactor.AddParameter("userId", OwnerId); Owner = queryReactor.GetString(); queryReactor.SetQuery($"SELECT user_id, message, timestamp FROM users_chatlogs WHERE room_id = '{Id}' ORDER BY timestamp ASC LIMIT 150"); DataTable table = queryReactor.GetTable(); foreach (DataRow dataRow in table.Rows) RoomChat.Push(new Chatlog((uint) dataRow[0], (string) dataRow[1], Yupi.UnixToDateTime(int.Parse(dataRow[2].ToString())), false)); queryReactor.SetQuery($"SELECT word FROM rooms_wordfilter WHERE room_id = '{Id}'"); DataTable tableFilter = queryReactor.GetTable(); foreach (DataRow dataRow in tableFilter.Rows) WordFilter.Add(dataRow["word"].ToString()); } string roomState = row["state"].ToString().ToLower(); switch (roomState) { case "locked": State = 1; break; case "password": State = 2; break; default: State = 0; break; } ModelName = (string) row["model_name"]; WallPaper = (string) row["wallpaper"]; Floor = (string) row["floor"]; LandScape = (string) row["landscape"]; CcTs = (string) row["public_ccts"]; int.TryParse(row["trade_state"].ToString(), out TradeState); int.TryParse(row["category"].ToString(), out Category); int.TryParse(row["walls_height"].ToString(), out WallHeight); int.TryParse(row["score"].ToString(), out Score); int.TryParse(row["floorthick"].ToString(), out FloorThickness); int.TryParse(row["wallthick"].ToString(), out WallThickness); int.TryParse(row["chat_type"].ToString(), out ChatType); int.TryParse(row["game_id"].ToString(), out GameId); int.TryParse(row["mute_settings"].ToString(), out WhoCanMute); int.TryParse(row["kick_settings"].ToString(), out WhoCanKick); int.TryParse(row["ban_settings"].ToString(), out WhoCanBan); uint.TryParse(row["users_now"].ToString(), out UsersNow); uint.TryParse(row["users_max"].ToString(), out UsersMax); uint.TryParse(row["group_id"].ToString(), out GroupId); uint.TryParse(row["chat_balloon"].ToString(), out ChatBalloon); uint.TryParse(row["chat_speed"].ToString(), out ChatSpeed); uint.TryParse(row["chat_max_distance"].ToString(), out ChatMaxDistance); uint.TryParse(row["chat_flood_protection"].ToString(), out ChatFloodProtection); AllowPets = Yupi.EnumToBool(row["allow_pets"].ToString()); AllowPetsEating = Yupi.EnumToBool(row["allow_pets_eat"].ToString()); AllowWalkThrough = Yupi.EnumToBool(row["allow_walkthrough"].ToString()); HideWall = Yupi.EnumToBool(row["hidewall"].ToString()); AllowRightsOverride = false; Group = Yupi.GetGame().GetGroupManager().GetGroup(GroupId); Event = Yupi.GetGame().GetRoomEvents().GetEvent(Id); _model = Yupi.GetGame().GetRoomManager().GetModel(ModelName, Id); CompetitionStatus = 0; Tags = new List<string>(); if (row.IsNull("tags") || string.IsNullOrEmpty(row["tags"].ToString())) return; foreach (string item in row["tags"].ToString().Split(',')) Tags.Add(item); } catch (Exception ex) { ServerLogManager.LogException(ex, "Yupi.Game.Rooms.RoomData.Fill"); } }
/// <summary> /// Updates the event. /// </summary> /// <param name="Event">The event.</param> internal void UpdateEvent(RoomEvent Event) { using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor()) { queryReactor.SetQuery(string.Concat("REPLACE INTO rooms_events VALUES (", Event.RoomId, ", @name, @desc, ", Event.Time, ")")); queryReactor.AddParameter("name", Event.Name); queryReactor.AddParameter("desc", Event.Description); queryReactor.RunQuery(); } SerializeEventInfo(Event.RoomId); }
/// <summary> /// Fills the null. /// </summary> /// <param name="id">The identifier.</param> internal void FillNull(uint id) { Id = id; Name = "Unknown Room"; Description = "-"; Type = "private"; Owner = "-"; Category = 0; UsersNow = 0; UsersMax = 0; ModelName = "NO_MODEL"; CcTs = string.Empty; Score = 0; Tags = new List<string>(); AllowPets = true; AllowPetsEating = false; AllowWalkThrough = true; HideWall = false; PassWord = string.Empty; WallPaper = "0.0"; Floor = "0.0"; LandScape = "0.0"; WallThickness = 0; FloorThickness = 0; Group = null; AllowRightsOverride = false; Event = null; GameId = 0; WhoCanBan = 0; WhoCanKick = 0; WhoCanMute = 0; TradeState = 2; State = 0; RoomChat = new ConcurrentStack<Chatlog>(); WordFilter = new List<string>(); WallHeight = -1; _model = Yupi.GetGame().GetRoomManager().GetModel(ModelName, Id); CompetitionStatus = 0; }
/// <summary> /// Fills the specified row. /// </summary> /// <param name="row">The row.</param> internal void Fill(DataRow row) { try { Id = (uint)row["id"]; Name = (string)row["caption"]; PassWord = (string)row["password"]; Description = (string)row["description"]; Type = (string)row["roomtype"]; Owner = string.Empty; OwnerId = (uint)row["owner"]; RoomChat = new ConcurrentStack <Chatlog>(); WordFilter = new List <string>(); using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor()) { queryReactor.SetQuery("SELECT username FROM users WHERE id = @userId"); queryReactor.AddParameter("userId", OwnerId); Owner = queryReactor.GetString(); queryReactor.SetQuery($"SELECT user_id, message, timestamp FROM users_chatlogs WHERE room_id = '{Id}' ORDER BY timestamp ASC LIMIT 150"); DataTable table = queryReactor.GetTable(); if (table != null) { foreach (DataRow dataRow in table.Rows) { RoomChat.Push(new Chatlog((uint)dataRow[0], (string)dataRow[1], Yupi.UnixToDateTime(int.Parse(dataRow[2].ToString())), false)); } } queryReactor.SetQuery($"SELECT word FROM rooms_wordfilter WHERE room_id = '{Id}'"); DataTable tableFilter = queryReactor.GetTable(); if (tableFilter != null) { foreach (DataRow dataRow in tableFilter.Rows) { WordFilter.Add(dataRow["word"].ToString()); } } } string roomState = row["state"].ToString().ToLower(); switch (roomState) { case "locked": State = 1; break; case "password": State = 2; break; default: State = 0; break; } ModelName = (string)row["model_name"]; WallPaper = (string)row["wallpaper"]; Floor = (string)row["floor"]; LandScape = (string)row["landscape"]; CcTs = (string)row["public_ccts"]; int.TryParse(row["trade_state"].ToString(), out TradeState); int.TryParse(row["category"].ToString(), out Category); int.TryParse(row["walls_height"].ToString(), out WallHeight); int.TryParse(row["score"].ToString(), out Score); int.TryParse(row["floorthick"].ToString(), out FloorThickness); int.TryParse(row["wallthick"].ToString(), out WallThickness); int.TryParse(row["chat_type"].ToString(), out ChatType); int.TryParse(row["game_id"].ToString(), out GameId); int.TryParse(row["mute_settings"].ToString(), out WhoCanMute); int.TryParse(row["kick_settings"].ToString(), out WhoCanKick); int.TryParse(row["ban_settings"].ToString(), out WhoCanBan); uint.TryParse(row["users_now"].ToString(), out UsersNow); uint.TryParse(row["users_max"].ToString(), out UsersMax); uint.TryParse(row["group_id"].ToString(), out GroupId); uint.TryParse(row["chat_balloon"].ToString(), out ChatBalloon); uint.TryParse(row["chat_speed"].ToString(), out ChatSpeed); uint.TryParse(row["chat_max_distance"].ToString(), out ChatMaxDistance); uint.TryParse(row["chat_flood_protection"].ToString(), out ChatFloodProtection); AllowPets = Yupi.EnumToBool(row["allow_pets"].ToString()); AllowPetsEating = Yupi.EnumToBool(row["allow_pets_eat"].ToString()); AllowWalkThrough = Yupi.EnumToBool(row["allow_walkthrough"].ToString()); HideWall = Yupi.EnumToBool(row["hidewall"].ToString()); AllowRightsOverride = false; Group = Yupi.GetGame().GetGroupManager().GetGroup(GroupId); Event = Yupi.GetGame().GetRoomEvents().GetEvent(Id); _model = Yupi.GetGame().GetRoomManager().GetModel(ModelName, Id); CompetitionStatus = 0; Tags = new List <string>(); if (row.IsNull("tags") || string.IsNullOrEmpty(row["tags"].ToString())) { return; } foreach (string item in row["tags"].ToString().Split(',')) { Tags.Add(item); } } catch (Exception ex) { YupiLogManager.LogException(ex, "Registered Room Serialization Exception.", "Yupi.Rooms"); } }