/// <summary> /// Adds the playlist item. /// </summary> internal void AddPlaylistItem() { if (Session?.GetHabbo() == null || Session.GetHabbo().CurrentRoom == null) return; Room currentRoom = Session.GetHabbo().CurrentRoom; if (!currentRoom.CheckRights(Session, true)) return; SoundMachineManager roomMusicController = currentRoom.GetRoomMusicController(); if (roomMusicController.PlaylistSize >= roomMusicController.PlaylistCapacity) return; uint num = Request.GetUInteger(); UserItem item = Session.GetHabbo().GetInventoryComponent().GetItem(num); if (item == null || item.BaseItem.InteractionType != Interaction.MusicDisc) return; SongItem songItem = new SongItem(item); int num2 = roomMusicController.AddDisk(songItem); if (num2 < 0) return; songItem.SaveToDatabase(currentRoom.RoomId); Session.GetHabbo().GetInventoryComponent().RemoveItem(num, true); using (IQueryAdapter commitableQueryReactor = Yupi.GetDatabaseManager().GetQueryReactor()) commitableQueryReactor.RunFastQuery($"UPDATE items_rooms SET user_id='0' WHERE id={num} LIMIT 1"); Session.SendMessage(SoundMachineComposer.Compose(roomMusicController.PlaylistCapacity, roomMusicController.Playlist.Values.ToList())); }
/// <summary> /// Adds the disk. /// </summary> /// <param name="diskItem">The disk item.</param> /// <returns>System.Int32.</returns> public int AddDisk(SongItem diskItem) { uint songId = diskItem.SongId; if (songId == 0u) return -1; SongData song = SoundMachineSongManager.GetSong(songId); if (song == null) return -1; lock (_mLoadedDisks) if (_mLoadedDisks.ContainsKey(diskItem.ItemId)) return -1; lock (_mLoadedDisks) _mLoadedDisks.Add(diskItem.ItemId, diskItem); int count = _mPlaylist.Count; lock (_mPlaylist) _mPlaylist.Add(count, new SongInstance(diskItem, song)); return count; }
/// <summary> /// Loads the music. /// </summary> internal void LoadMusic() { DataTable table; using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor()) { queryReactor.SetQuery( $"SELECT items_songs.songid,items_rooms.id,items_rooms.item_name FROM items_songs LEFT JOIN items_rooms ON items_rooms.id = items_songs.itemid WHERE items_songs.roomid = {RoomId}"); table = queryReactor.GetTable(); } if (table == null) return; foreach (DataRow dataRow in table.Rows) { uint songId = (uint) dataRow["songid"]; uint num = Convert.ToUInt32(dataRow["id"]); string baseName = dataRow["item_name"].ToString(); string songCode = string.Empty; string extraData = string.Empty; using (IQueryAdapter queryreactor2 = Yupi.GetDatabaseManager().GetQueryReactor()) { queryreactor2.SetQuery($"SELECT extra_data,songcode FROM items_rooms WHERE id = {num}"); DataRow row = queryreactor2.GetRow(); if (row != null) { extraData = (string) row["extra_data"]; songCode = (string) row["songcode"]; } } SongItem diskItem = new SongItem(num, songId, baseName, extraData, songCode); GetRoomMusicController().AddDisk(diskItem); } }