Example #1
0
        /// <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()));
        }
Example #2
0
        /// <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;
        }
Example #3
0
        /// <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);
            }
        }