namespace Holo.Managers { using Holo; using Ion.Storage; using System; using System.Data; using System.Text; public static class soundMachineManager { public static int calculateSongLength(string Data) { int songLength = 0; try { string[] Track = Data.Split(new char[] { ':' }); for (int i = 1; i < 8; i += 3) { int trackLength = 0; string[] Samples = Track[i].Split(new char[] { ';' }); for (int j = 0; j < Samples.Length; j++) { trackLength += int.Parse(Samples[j].Substring(Samples[j].IndexOf(",") + 1)); } if (trackLength > songLength) { songLength = trackLength; } } return songLength; } catch { return -1; } } public static string getHandSoundsets(int userID) { DataColumn dCol; using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { dCol = dbClient.getColumn("SELECT soundmachine_soundset FROM furniture WHERE ownerid = '" + userID + "' AND roomid = '0' AND soundmachine_soundset > 0"); } StringBuilder Soundsets = new StringBuilder(Encoding.encodeVL64(dCol.Table.Rows.Count)); foreach (DataRow dRow in dCol.Table.Rows) { Soundsets.Append(Encoding.encodeVL64(Convert.ToInt32(dRow["soundmachine_soundset"]))); } return Soundsets.ToString(); } public static string getMachinePlaylist(int machineID) { DataColumn dCol; DatabaseClient dbClient; using (dbClient = Eucalypt.dbManager.GetClient()) { dCol = dbClient.getColumn("SELECT songid FROM soundmachine_playlists WHERE machineid = '" + machineID + "' ORDER BY pos ASC"); } StringBuilder Playlist = new StringBuilder("H" + Encoding.encodeVL64(dCol.Table.Rows.Count)); foreach (DataRow dRow in dCol.Table.Rows) { string Title; string Creator; using (dbClient = Eucalypt.dbManager.GetClient()) { Title = dbClient.getString("SELECT title FROM soundmachine_songs WHERE id = '" + dRow[0].ToString() + "'"); Creator = dbClient.getString("SELECT name FROM users WHERE id = '" + dbClient.getString("SELECT userid FROM soundmachine_songs WHERE id = '" + dRow[0].ToString() + "'") + "'"); } Playlist.Append(string.Concat(new object[] { Encoding.encodeVL64(Convert.ToInt32(dRow[0])), Encoding.encodeVL64(Convert.ToInt32(dRow[0]) + 1), Title, Convert.ToChar(2), Creator, Convert.ToChar(2) })); } return Playlist.ToString(); } public static string getMachineSongList(int machineID) { DataTable dTable; using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { dTable = dbClient.getTable("SELECT id,length,title,burnt FROM soundmachine_songs WHERE machineid = '" + machineID + "' ORDER BY id ASC"); } StringBuilder Songs = new StringBuilder(Encoding.encodeVL64(dTable.Rows.Count)); foreach (DataRow dRow in dTable.Rows) { Songs.Append(string.Concat(new object[] { Encoding.encodeVL64(Convert.ToInt32(dRow["id"])), Encoding.encodeVL64(Convert.ToInt32(dRow["length"])), Convert.ToString(dRow["title"]), Convert.ToChar(2) })); if (Convert.ToString(dRow["burnt"]) == "1") { Songs.Append("I"); } else { Songs.Append("H"); } } return Songs.ToString(); } public static string getSong(int songID) { DataRow dRow; using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { dRow = dbClient.getRow("SELECT title,data FROM soundmachine_songs WHERE id = '" + songID + "'"); } object[] songObject = dRow.ItemArray; string[] songData = new string[songObject.Length]; for (int i = 0; i < songObject.Length; i++) { songData[i] = songObject[i].ToString(); } if (songData.Length > 0) { return string.Concat(new object[] { Encoding.encodeVL64(songID), songData[0], Convert.ToChar(2), songData[1], Convert.ToChar(2) }); } return "holo.cast.soundmachine.song.unknown"; } } }