Exemple #1
0
        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"]);
                    }
                }
            }
        }