public void LoadItems() { DataTable items = null; using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient()) { items = dbClient.ReadDataTable("SELECT id, user_id, base_item, extra_data, x, y, z, rot, wall_pos FROM items WHERE room_id = '" + this.Room.ID + "' ORDER BY room_id DESC"); } Dictionary <uint, RoomItem> requestData = new Dictionary <uint, RoomItem>(); if (items != null) { foreach (DataRow dataRow in items.Rows) { string wallPos = (string)dataRow["wall_pos"]; RoomItem roomItem = RoomItem.GetRoomItem((uint)dataRow["Id"], this.Room.ID, (uint)dataRow["user_id"], (uint)dataRow["base_item"], (string)dataRow["extra_data"], (int)dataRow["x"], (int)dataRow["y"], (double)dataRow["z"], (int)dataRow["rot"], (string.IsNullOrEmpty(wallPos) ? null : new WallCoordinate(wallPos)), this.Room); this.AddItem(null, roomItem, false); if (roomItem.GetBaseItem().InteractionType.ToLower().StartsWith("wf_") || roomItem.GetBaseItem().InteractionType.ToLower() == "fbgate" || roomItem.GetBaseItem().InteractionType.ToLower() == "firework" || roomItem.GetBaseItem().InteractionType.ToLower() == "jukebox" || roomItem.GetBaseItem().InteractionType.ToLower() == "photo") { requestData.Add(roomItem.ID, roomItem); } } } if (requestData != null && requestData.Count > 0) { DataTable data = null; using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient()) { data = dbClient.ReadDataTable("SELECT * FROM items_data WHERE item_id IN(" + string.Join(",", requestData.Keys) + ") LIMIT " + requestData.Count); } if (data != null && data.Rows.Count > 0) { foreach (DataRow dataRow in data.Rows) { requestData[(uint)dataRow["item_id"]].LoadItemData((string)dataRow["data"]); } } } }