Exemple #1
0
        internal void RemovePlaylistItem()
        {
            if (Session == null || Session.GetHabbo() == null || Session.GetHabbo().CurrentRoom == null)
            {
                return;
            }

            Room currentRoom = Session.GetHabbo().CurrentRoom;

            if (!currentRoom.CheckRights(Session, true) || !currentRoom.GotMusicController())
            {
                return;
            }

            RoomMusicController musicController = currentRoom.GetRoomMusicController();

            SongItem item = musicController.RemoveDisk(Request.ReadInt32());

            if (item == null)
            {
                return;
            }

            item.RemoveFromDatabase();
            Session.GetHabbo().GetInventoryComponent().AddNewItem(item.itemID, item.baseItem.ItemId, new StringData(item.songID.ToString()), 0, true, true);
            Session.GetHabbo().GetInventoryComponent().UpdateItems(false);

            Session.SendMessage(JukeboxComposer.SerializeSongInventory(Session.GetHabbo().GetInventoryComponent().songDisks));
            Session.SendMessage(JukeboxComposer.Compose(musicController.PlaylistCapacity, musicController.Playlist.Values.ToList()));
        }
Exemple #2
0
        public async Task <IActionResult> PutSongItem([FromRoute] int id, [FromBody] SongItem songItem)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != songItem.Id)
            {
                return(BadRequest());
            }

            _context.Entry(songItem).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!SongItemExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Exemple #3
0
        /// <summary>
        /// Removes the playlist item.
        /// </summary>
        internal void RemovePlaylistItem()
        {
            if (this.Session == null || this.Session.GetHabbo() == null || this.Session.GetHabbo().CurrentRoom == null)
            {
                return;
            }
            Room currentRoom = this.Session.GetHabbo().CurrentRoom;

            if (!currentRoom.GotMusicController())
            {
                return;
            }
            RoomMusicController roomMusicController = currentRoom.GetRoomMusicController();
            SongItem            songItem            = roomMusicController.RemoveDisk(this.Request.GetInteger());

            if (songItem == null)
            {
                return;
            }
            songItem.RemoveFromDatabase();
            this.Session.GetHabbo().GetInventoryComponent().AddNewItem(songItem.ItemId, songItem.BaseItem.ItemId, songItem.ExtraData, 0u, false, true, 0, 0, songItem.SongCode);
            this.Session.GetHabbo().GetInventoryComponent().UpdateItems(false);
            using (IQueryAdapter queryReactor = global::Plus.Plus.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.RunFastQuery(string.Format("UPDATE items_rooms SET user_id='{0}' WHERE id='{1}' LIMIT 1;", Session.GetHabbo().Id, songItem.ItemId));
            }
            this.Session.SendMessage(JukeboxComposer.SerializeSongInventory(this.Session.GetHabbo().GetInventoryComponent().SongDisks));
            this.Session.SendMessage(JukeboxComposer.Compose(roomMusicController.PlaylistCapacity, roomMusicController.Playlist.Values.ToList <SongInstance>()));
        }
Exemple #4
0
        private static SongItem?FindPlayingSong(bool next, int currentSongId, int playlistId, params int[] masteryIDs)
        {
            SongTable         songTable = new SongTable();
            PlaylistSongTable psTable   = new PlaylistSongTable();
            SongItem?         songFound = null;

            string comparator = next ? ">" : "<";
            string minMax     = next ? "MIN" : "MAX";

            string[] formattedCols = songTable.GetAllColumns().Select(x => "st." + x).ToArray();
            string   query         = $"SELECT {minMax}(ps1.{psTable.PosInPlaylist})," +
                                     $" {string.Join(", ", formattedCols)}" +
                                     $" FROM {psTable.TableName} ps1 INNER JOIN {songTable.TableName} st" +
                                     $" ON ps1.{psTable.SongId} = st.{songTable.Id}" +
                                     $" WHERE ps1.{psTable.PlaylistId} = @playlistId";

            if (masteryIDs.Any())
            {
                string[] masteryParams = new string[masteryIDs.Length];
                for (int i = 0; i < masteryIDs.Length; i++)
                {
                    masteryParams[i] = "@masteryId" + i;
                }
                query += $" AND st.{songTable.MasteryId} IN (" + string.Join(", ", masteryParams) + ")";
            }
            query += $" AND ps1.{psTable.PosInPlaylist} {comparator} (" +
                     $" SELECT ps2.{psTable.PosInPlaylist} FROM {psTable.TableName} ps2 WHERE ps2.{psTable.SongId} = @currentSongId" +
                     $" AND ps2.{psTable.PlaylistId} = @playlistId)";

            using (var con = CreateConnection())
            {
                SqliteCommand cmd = con.CreateCommand();

                cmd.CommandText = query;
                cmd.Parameters.AddWithValue("playlistId", playlistId);
                for (int i = 0; i < masteryIDs.Length; i++)
                {
                    cmd.Parameters.AddWithValue("masteryId" + i, masteryIDs[i]);
                }
                cmd.Parameters.AddWithValue("currentSongId", currentSongId);

                con.Open();
                SqliteDataReader dataReader = cmd.ExecuteReader();
                if (dataReader.Read() && !dataReader.IsDBNull(0))
                {
                    songFound = new SongItem(dataReader);
                }
                else
                {
                    string info = "No {next} song found for songId {songId}, playlistId {playlistId} and masteryIDs {masteryIDs}";
                    Log.Information(info, next? "next" : "previous", currentSongId, playlistId, masteryIDs);
                }
                if (dataReader.Read())
                {
                    string info = "More than one {next} song found for songId {songId}, playlistId {playlistId} and masteryIDs {masteryIDs}";
                    Log.Error(info, next ? "next" : "previous", currentSongId, playlistId, masteryIDs);
                }
            }
            return(songFound);
        }
Exemple #5
0
 public void Handle(GameClient Session, ClientMessage Event)
 {
     if (((Session != null) && (Session.GetHabbo() != null)) && (Session.GetHabbo().CurrentRoom != null))
     {
         Room currentRoom = Session.GetHabbo().CurrentRoom;
         if (currentRoom.CheckRights(Session, true))
         {
             RoomMusicController roomMusicController = currentRoom.GetRoomMusicController();
             if (roomMusicController.PlaylistSize < roomMusicController.PlaylistCapacity)
             {
                 int      num  = Event.PopWiredInt32();
                 UserItem item = Session.GetHabbo().GetInventoryComponent().GetItemById((uint)num);
                 if ((item != null) && (item.method_1().InteractionType == "musicdisc"))
                 {
                     SongItem diskItem = new SongItem(item);
                     if (roomMusicController.AddDisk(diskItem) >= 0)
                     {
                         //diskItem.SaveToDatabase((int)currentRoom.Id); // <-- old
                         diskItem.SaveToDatabase((int)roomMusicController.LinkedItemId); // <-- new
                         Session.GetHabbo().GetInventoryComponent().method_12((uint)num, 0u, true);
                         Session.GetHabbo().GetInventoryComponent().method_9(true);
                         Session.SendMessage(JukeboxDiscksComposer.Compose(roomMusicController.PlaylistCapacity, roomMusicController.Playlist.Values.ToList <SongInstance>()));
                     }
                 }
             }
         }
     }
 }
Exemple #6
0
        public int AddDisk(SongItem DiskItem)
        {
            int songID = DiskItem.songID;

            if (songID == 0)
            {
                return(-1);
            }
            SongData song = SongManager.GetSong(songID);

            if (song == null)
            {
                return(-1);
            }
            if (this.mLoadedDisks.ContainsKey(DiskItem.itemID))
            {
                return(-1);
            }
            this.mLoadedDisks.Add(DiskItem.itemID, DiskItem);
            int count = this.mPlaylist.Count;

            lock (this.mPlaylist)
            {
                this.mPlaylist.Add(count, new SongInstance(DiskItem, song));
            }
            return(count);
        }
Exemple #7
0
        public void LoadMusic()
        {
            if (GetRoomMusicManager().LinkedItem != null)
            {
                using (IQueryAdapter dbClient = RavenEnvironment.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.SetQuery("SELECT room_items_songs.songid,items.* FROM room_items_songs LEFT JOIN items ON items.id = room_items_songs.itemid WHERE room_items_songs.jukeboxid = " + GetRoomMusicManager().LinkedItem.Id);
                    DataTable dTable = dbClient.getTable();

                    foreach (DataRow dRow in dTable.Rows)
                    {
                        int songID = (int)dRow["songid"];
                        int itemID = Convert.ToInt32(dRow["id"]);
                        int baseID = Convert.ToInt32(dRow["base_item"]);

                        SongItem item = new SongItem(itemID, songID, baseID);
                        GetRoomMusicManager().AddDisk(item);
                    }
                }
                if (GetRoomMusicManager().PlaylistSize > 0 && GetRoomMusicManager().LinkedItem.ExtraData != "0")
                {
                    GetRoomMusicManager().Start();
                }
            }
        }
Exemple #8
0
        public async Task <ActionResult <SongItem> > PostSongItem(SongItem songItem)
        {
            _context.SongItems.Add(songItem);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetSongItem", new { id = songItem.id }, songItem));
        }
Exemple #9
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);
        }
Exemple #10
0
        protected override string GetDownloadUrl(SongItem songInfo)
        {
            try
            {
                JObject dlurlobj = JObject.Parse(Fetch(API_PROTOCOL, API_HOST, API_PATH + ServiceName + $"/song?id={songInfo.SongId}"));

                if (dlurlobj["code"].ToString() == "200")
                {
                    if (dlurlobj["result"] is JObject)
                    {
                        dlurlobj = (JObject)dlurlobj["result"];
                    }
                    else
                    {
                        dlurlobj = JObject.Parse(dlurlobj["result"].Value <string>());
                    }
                    return(dlurlobj["url"].ToString());
                }
                else
                {
                    Log($"歌曲 {songInfo.SongName} 因为版权不能下载");
                    return(null);
                }
            }
            catch (Exception ex)
            {
                Log($"歌曲 {songInfo.SongName} 疑似版权不能下载(ex:{ex.Message})");
                return(null);
            }
        }
Exemple #11
0
        internal void LoadMusic()
        {
            DataTable table;

            using (IQueryAdapter queryreactor = CyberEnvironment.GetDatabaseManager().getQueryReactor())
            {
                queryreactor.setQuery("SELECT items_rooms_songs.songid,items.id,items.base_item FROM items_rooms_songs LEFT JOIN items ON items.id = items_rooms_songs.itemid WHERE items_rooms_songs.roomid = " + this.RoomId);
                table = queryreactor.getTable();
            }

            if (table != null)
            {
                foreach (DataRow dataRow in table.Rows)
                {
                    uint   songID    = (uint)dataRow[0];
                    uint   num       = Convert.ToUInt32(dataRow[1]);
                    int    baseItem  = Convert.ToInt32(dataRow[2]);
                    string songCode  = "";
                    string extraData = "";
                    using (IQueryAdapter queryreactor2 = CyberEnvironment.GetDatabaseManager().getQueryReactor())
                    {
                        queryreactor2.setQuery("SELECT extra_data,songcode FROM items 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, baseItem, extraData, songCode);
                    this.GetRoomMusicController().AddDisk(diskItem);
                }
            }
        }
Exemple #12
0
        public void AddItem(string name, string artist, string album, ImageSource imag, string imagname, string source, int sign)
        {
            SongItem tem = new Song.SongItem(name, artist, album, imag, imagname, source, sign);

            selectedItem = tem;
            items.Add(tem);
        }
Exemple #13
0
        public async Task <ActionResult <SongItem> > PostSongItem(SongItem item)
        {
            _context.SongItems.Add(item);
            await _context.SaveChangesAsync();

            return(CreatedAtAction(nameof(GetSongItem), new { id = item.Id }, item));
        }
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            Room Instance = Session.GetHabbo().CurrentRoom;

            if (Instance == null || Instance.GetRoomMusicManager().PlaylistSize >= MusicManager.PlaylistCapacity)
            {
                return;
            }

            int Itemid = Packet.PopInt();

            Item DiskItem = Session.GetHabbo().GetInventoryComponent().GetItem(Itemid);

            if (DiskItem == null || DiskItem.GetBaseItem().InteractionType != InteractionType.MUSIC_DISC)
            {
                return;
            }

            SongItem SongItem = new SongItem(DiskItem);

            if (Instance.GetRoomMusicManager().AddDisk(SongItem) >= 0)
            {
                SongItem.SaveToDatabase(Instance.RoomId);
                Session.GetHabbo().GetInventoryComponent().RemoveItem(DiskItem.Id);

                List <SongInstance> list = Instance.GetRoomMusicManager().Playlist.Values.ToList();

                Session.SendMessage(new GetJukeboxPlaylistsComposer(MusicManager.PlaylistCapacity, list));
                Session.SendMessage(new GetJukeboxDisksComposer(Session.GetHabbo().GetInventoryComponent().songDisks));

                list.Clear();
                list = null;
            }
        }
        public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage message,
                                           Yupi.Protocol.IRouter router)
        {
            if (session.Room == null ||
                !session.Room.Data.HasOwnerRights(session.Info))
            {
                return;
            }

            int itemId = message.GetInteger();

            SongItem item = session.Info.Inventory.GetFloorItem(itemId) as SongItem;

            if (item == null)
            {
                return;
            }

            SongMachineComponent songMachine = session.Room.Data.SongMachine;

            if (songMachine.TryAdd(item))
            {
                session.Info.Inventory.FloorItems.Remove(item);
                router.GetComposer <RemoveInventoryObjectMessageComposer>().Compose(session, item.Id);

                ItemRepository.Save(item);
            }

            router.GetComposer <JukeboxPlaylistMessageComposer>().Compose(session, songMachine);
        }
Exemple #16
0
        /// <summary>
        /// Removes the playlist item.
        /// </summary>
        internal void RemovePlaylistItem()
        {
            if (Session?.GetHabbo() == null || Session.GetHabbo().CurrentRoom == null)
            {
                return;
            }

            Room currentRoom = Session.GetHabbo().CurrentRoom;

            if (!currentRoom.GotMusicController())
            {
                return;
            }

            SoundMachineManager roomMusicController = currentRoom.GetRoomMusicController();

            SongItem songItem = roomMusicController.RemoveDisk(Request.GetInteger());

            if (songItem == null)
            {
                return;
            }

            songItem.RemoveFromDatabase();

            Session.GetHabbo().GetInventoryComponent().AddNewItem(songItem.ItemId, songItem.BaseItem.Name, songItem.ExtraData, 0u, false, true, 0, 0, songItem.SongCode);
            Session.GetHabbo().GetInventoryComponent().UpdateItems(false);

            using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
                queryReactor.RunFastQuery($"UPDATE items_rooms SET user_id='{Session.GetHabbo().Id}' WHERE id='{songItem.ItemId}' LIMIT 1;");

            Session.SendMessage(SoundMachineComposer.SerializeSongInventory(Session.GetHabbo().GetInventoryComponent().SongDisks));
            Session.SendMessage(SoundMachineComposer.Compose(roomMusicController.PlaylistCapacity, roomMusicController.Playlist.Values.ToList()));
        }
 protected override string GetDownloadUrl(SongItem songItem)
 {
     try
     {
         long             songId = songItem.SongId;
         DownloadSongInfo ds     = MainConfig.Instance.LoginSession.LoginStatus ?
                                   _GetDownloadSongInfo(MainConfig.Instance.LoginSession, songId, MainConfig.Instance.Quality) :
                                   _GetDownloadSongInfo(songId, MainConfig.Instance.Quality);
         if (ds != null)
         {
             return(ds.Url);
         }
         else
         {
             Log($"获取下载链接失败了喵(服务器未返回下载链接)");
         }
     }
     catch (WebException e)
     {
         Log($"获取下载链接失败了喵:{e.Message}\r\n这是由于网络原因导致获取失败, 如果多次出现, 请检查你的网络连接喵。");
     }
     catch (Exception e)
     {
         Log($"获取下载链接失败了喵:{e.Message}");
     }
     return(null); // 返回null, 点歌姬会自动移除掉当前歌曲
 }
Exemple #18
0
        public override void HandleMessage(Yupi.Model.Domain.Habbo session, Yupi.Protocol.Buffers.ClientMessage message,
                                           Yupi.Protocol.IRouter router)
        {
            if (session.Room == null)
            {
                return;
            }

            int itemId = message.GetInteger();

            SongMachineComponent songMachine = session.Room.Data.SongMachine;

            SongItem item = songMachine.Find(itemId);

            if (item == null)
            {
                return;
            }

            songMachine.Remove(item);
            session.Info.Inventory.FloorItems.Add(item);
            ItemRepository.Save(item);

            SongItem[] items = session.Info.Inventory.FloorItems.OfType <SongItem>().ToArray();

            router.GetComposer <UpdateInventoryMessageComposer>().Compose(session);
            router.GetComposer <SongsLibraryMessageComposer>().Compose(session, items);
            router.GetComposer <JukeboxPlaylistMessageComposer>().Compose(session, songMachine);
        }
Exemple #19
0
 public static void UpdateSong(SongItem song)
 {
     using (SqliteConnection con = CreateConnection())
     {
         con.Open();
         UpdateRow(con, new SongTable(), song);
     }
 }
Exemple #20
0
 private void ConfigureVerses(SongItem song)
 {
     verseCheckList.Items.Clear();
     for (int index = 1; index <= song.VerseCount; index++)
     {
         verseCheckList.Items.Add(index, index == 1);
     }
 }
 public AddNewSongWindow()
 {
     this.Owner       = Application.Current.MainWindow;
     Song             = new SongItem();
     this.WindowStyle = WindowStyle.ToolWindow;
     this.ResizeMode  = ResizeMode.NoResize;
     InitializeComponent();
     ResetSongInformations();
 }
        private void ChangeStylesTemplate(ListView listView, SongItem itemToChangeTo)
        {
            //Change item
            SongItemTemplateSelector.CurrentSongItem = itemToChangeTo;

            //Refresh list collection
            var collection = listView.DataContext as SearchedSongsViewModel;

            collection?.SongsListView.Refresh();
        }
Exemple #23
0
        //we suppose the song doesn't already exist!
        //Adds the song and then adds at the end of the playlists
        public static void AddSong(SongItem song)
        {
            SongTable songTable = new SongTable();

            using (var con = CreateConnection())
            {
                con.Open();
                InsertRow(con, songTable, song);
            }
            AddPlaylistSongLink(1, song.Id);
        }
Exemple #24
0
        public static void SetSongMastery(SongItem song, MasteryItem mastery)
        {
            song.MasteryId = mastery.Id;
            SongTable table = new SongTable();

            using (SqliteConnection con = CreateConnection())
            {
                con.Open();
                UpdateRow(con, table, song);
            }
        }
Exemple #25
0
        public async Task <IActionResult> PutSongItem(long id, SongItem item)
        {
            if (id != item.Id)
            {
                return(BadRequest());
            }

            _context.Entry(item).State = EntityState.Modified;
            await _context.SaveChangesAsync();

            return(NoContent());
        }
Exemple #26
0
 protected override string GetDownloadUrl(SongItem songItem)
 {
     try
     {
         return(Fetch(API_PROTOCOL, "antiserver.kuwo.cn", API_PATH + $"/anti.s?uesless=/resource/&format=mp3&rid=MUSIC_{songItem.SongId}&response=url&type=convert_url"));
     }
     catch (Exception ex)
     {
         Log($"歌曲不能下载:{songItem.SongName}(ex:{ex.Message})");
         return(null);
     }
 }
        /// <summary>
        /// Sends message to background informing app has resumed
        /// Subscribe to MediaPlayer events
        /// </summary>
        public void ForegroundApp_Resuming(object sender, object e)
        {
            ApplicationSettingsHelper.SaveSettingsValue(AppConstants.AppState, AppConstants.ForegroundAppActive);
            SongItem song;

            try
            {
                song = Library.Current.NowPlayingList.ElementAt(CurrentSongIndex);
            }
            catch (IndexOutOfRangeException ex)
            {
                //DiagnosticHelper.TrackTrace("NPViewModel Resuming" + Environment.NewLine + Library.Current.NowPlayingList.Count + " " + CurrentSongIndex + Environment.NewLine + ex.Message, Microsoft.HockeyApp.SeverityLevel.Error);
                song = new SongItem();
            }

            CurrentNr = CurrentSongIndex + 1;
            songId    = song.SongId;
            SetCover(song.Path);
            Artist = song.Artist;
            Album  = song.Album;
            Title  = song.Title;
            fromDB = true;
            Rating = song.Rating;

            if (IsMyBackgroundTaskRunning)
            {
                AddMediaPlayerEventHandlers();

                StartTimer();

                TimeSpan t        = BackgroundMediaPlayer.Current.NaturalDuration;
                double   absvalue = (int)Math.Round(t.TotalSeconds - 0.5, MidpointRounding.AwayFromZero);
                ProgressBarMaxValue = absvalue;
                EndTime             = BackgroundMediaPlayer.Current.NaturalDuration;
                PlaybackRate        = BackgroundMediaPlayer.Current.PlaybackRate * 100.0;

                SendMessage(AppConstants.AppResumed, DateTime.Now.ToString());

                if (BackgroundMediaPlayer.Current.CurrentState == MediaPlayerState.Playing)
                {
                    PlayButtonContent = "\uE17e\uE103";//pause
                }
                else
                {
                    PlayButtonContent = "\uE17e\uE102";//play
                }
            }
            else
            {
                PlaybackRate      = 100.0;
                PlayButtonContent = "\uE17e\uE102";//play
            }
        }
Exemple #28
0
 protected override string GetDownloadUrl(SongItem songItem)
 {
     try
     {
         return($"https://music.163.com/song/media/outer/url?id={songItem.SongId}.mp3");
     }
     catch (Exception ex)
     {
         Log($"歌曲不能下载:{songItem.SongName}(ex:{ex.Message})");
         return(null);
     }
 }
Exemple #29
0
        protected override string GetDownloadUrl(SongItem songInfo)
        {
            var download_dir = fetcher.getSongInfo(songInfo.SongId);

            if (download_dir == null)
            {
                Log($"虾米:无法获取\"{songInfo.SongName}\"({songInfo.SongId})的下载地址");
                return(null);
            }

            return(download_dir.Item3);
        }
Exemple #30
0
 public virtual bool TryAdd(SongItem item)
 {
     if (SongItems.Count < Capacity)
     {
         SongItems.Add(item);
         return(true);
     }
     else
     {
         return(false);
     }
 }
Exemple #31
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;

            var 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 queryReactor = Azure.GetDatabaseManager().GetQueryReactor())
                queryReactor.RunFastQuery($"UPDATE items_rooms SET user_id='0' WHERE id={num} LIMIT 1");

            Session.SendMessage(SoundMachineComposer.Compose(roomMusicController.PlaylistCapacity, roomMusicController.Playlist.Values.ToList()));
        }
 public int AddDisk(SongItem DiskItem)
 {
     int songID = DiskItem.songID;
     if (songID == 0)
     {
         return -1;
     }
     SongData song = SongManager.GetSong(songID);
     if (song == null)
     {
         return -1;
     }
     if (this.mLoadedDisks.ContainsKey(DiskItem.itemID))
     {
         return -1;
     }
     this.mLoadedDisks.Add(DiskItem.itemID, DiskItem);
     int count = this.mPlaylist.Count;
     lock (this.mPlaylist)
     {
         this.mPlaylist.Add(count, new SongInstance(DiskItem, song));
     }
     return count;
 }
 public SongInstance(SongItem Item, SongData SongData)
 {
     this.mDiskItem = Item;
     this.mSongData = SongData;
 }
        /// <summary>
        ///     Adds the disk.
        /// </summary>
        /// <param name="diskItem">The disk item.</param>
        /// <returns>System.Int32.</returns>
        public int AddDisk(SongItem diskItem)
        {
            var songId = diskItem.SongId;

            if (songId == 0u)
                return -1;

            var 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);

            var count = _mPlaylist.Count;

            lock (_mPlaylist)
                _mPlaylist.Add(count, new SongInstance(diskItem, song));

            return count;
        }
Exemple #35
0
        /// <summary>
        ///     Loads the music.
        /// </summary>
        internal void LoadMusic()
        {
            DataTable table;

            using (var queryReactor = Azure.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.SetQuery($"SELECT items_songs.songid,items_rooms.id,items_rooms.base_item 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)
            {
                var songId = (uint) dataRow[0];
                var num = Convert.ToUInt32(dataRow[1]);
                var baseItem = Convert.ToInt32(dataRow[2]);
                var songCode = string.Empty;
                var extraData = string.Empty;

                using (var queryreactor2 = Azure.GetDatabaseManager().GetQueryReactor())
                {
                    queryreactor2.SetQuery($"SELECT extra_data,songcode FROM items_rooms WHERE id = {num}");
                    var row = queryreactor2.GetRow();

                    if (row != null)
                    {
                        extraData = (string) row["extra_data"];
                        songCode = (string) row["songcode"];
                    }
                }

                var diskItem = new SongItem(num, songId, baseItem, extraData, songCode);

                GetRoomMusicController().AddDisk(diskItem);
            }
        }
Exemple #36
0
        internal void LoadMusic()
        {
            DataTable table;
            DataTable table2;
            using (DatabaseClient @class = Essential.GetDatabase().GetClient())
            {
                table = @class.ReadDataTable("SELECT * FROM items_rooms_songs WHERE roomid = '" + Id + "'"); // <-- old
                table2 = @class.ReadDataTable("SELECT * FROM items_jukebox_songs WHERE jukeboxid = '" + this.GetRoomMusicController().LinkedItemId + "'"); // <-- new
            }

            foreach (DataRow row in table.Rows)
            {
                int songID = (int)row["songid"];
                uint num2 = (uint)row["itemid"];
                int baseItem = (int)row["baseitem"];
                SongItem diskItem = new SongItem((int)num2, songID, baseItem);
                diskItem.RemoveFromDatabase();
                diskItem.SaveToDatabase(this.GetRoomMusicController().LinkedItemId);
                this.GetRoomMusicController().AddDisk(diskItem);
            }

            foreach (DataRow row in table2.Rows)
            {
                int songID = (int)row["songid"];
                uint num2 = (uint)row["itemid"];
                int baseItem = (int)row["baseitem"];
                SongItem diskItem = new SongItem((int)num2, songID, baseItem);
                this.GetRoomMusicController().AddDisk(diskItem);
            }
        }
Exemple #37
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SongInstance"/> class.
 /// </summary>
 /// <param name="item">The item.</param>
 /// <param name="songData">The song data.</param>
 public SongInstance(SongItem item, SongData songData)
 {
     DiskItem = item;
     SongData = songData;
 }