static void Play(Rockola r, Process p, string cancion) { p.StartInfo.Arguments = "\"" + r.Ruta + "\\" + cancion + "\""; p.StartInfo.CreateNoWindow = true; p.StartInfo.UseShellExecute = false; p.Start(); Console.Clear(); Menu2("Tocando: " + cancion, p); }
static string Retroceder(Rockola r, string a) { r.Nodo = r.Nodo.Previous; a = r.Nodo.Value; return(a); }
static string Adelante(Rockola r, string a) { r.Nodo = r.Nodo.Next; a = r.Nodo.Value; return(a); }
static void Main(string[] args) { ConsoleKeyInfo op, op1; int ta = 0; // tamaño para consola cuando liste string dir = @"C:\Program Files (x86)\Webteh\BSPlayer\bsplayer.exe"; // direccion donde esta el programa, dejar el @ string ruta = @"E:/musica"; // carpeta donde esta la musica, dejar el @ Process proceso = new Process(); proceso.StartInfo.FileName = (dir); Rockola rock = new Rockola(ruta);; DirectoryInfo di = new DirectoryInfo(ruta); //archivos en la ruta// permite trabajar con archivos de una direccion foreach (var fi in di.GetFiles()) // devuelve los archivos de direccion { if (fi.Extension.Contains(".mp")) //solo agrega si la extension es .mp { rock.AddMusic(fi.Name); //agregando a la lista ta++; } } string actual = rock.Nodo.Value.ToString(); Menu(); do { Console.Clear(); Console.SetWindowSize(60, 10); //tamaño de consola Console.SetBufferSize(60, 10); //tamaño del buffer Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("Canción Actual: " + actual.Remove(actual.IndexOf(".mp")).Replace("_", " ")); //cancion a reproducir Console.ForegroundColor = ConsoleColor.White; Console.Write("\nReproducir [Enter]\nListar [Espacio]\nAvanzar [Flecha -►]\nRetroceder [Flecha ◄-]\nReproduccion Continua [C]\nRandom [R]\n\nSalir [Esc]"); op = Console.ReadKey(); switch (op.Key) { case ConsoleKey.Enter: //reproduciendo { Play(rock, proceso, actual); break; } case ConsoleKey.Spacebar: //listando { ta = ta + 3; do { if (ta > 58) //si el tamaño de la lista es mayor { Console.SetWindowSize(60, 58); // el tamaño se reduce pero la lista queda completa Console.SetBufferSize(60, ta); // el tamaño del buffer permitira ver toda la lista solo con subir la barra } else { Console.SetWindowSize(60, ta); //sino solo tendra su tamaño de lista + 3 } Console.Clear(); Console.ForegroundColor = ConsoleColor.Cyan; foreach (string s in rock) //listando con el objeto { Console.WriteLine(s.Remove(s.IndexOf(".mp")).Replace("_", " ")); //remueve la extension .mp y los guiones por espacios, si esque lo tienen y presenta por pantalla } Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("\nPresione [Esc] para salir"); op1 = Console.ReadKey(); } while (op1.Key != ConsoleKey.Escape); break; } case ConsoleKey.RightArrow: //avanzando { try { actual = Adelante(rock, actual); break; } catch (Exception) { rock.Nodo = rock.Lista.First; //apunta al ultimo actual = rock.Nodo.Value; break; } } case ConsoleKey.LeftArrow: //retrocediendo { try { actual = Retroceder(rock, actual); break; } catch (Exception) { rock.Nodo = rock.Lista.Last; //apunta al primero actual = rock.Nodo.Value; break; } } case ConsoleKey.C: //continuo { try { rock.Nodo = rock.Lista.First; actual = rock.Nodo.Value; foreach (string c in rock) { Play(rock, proceso, actual); proceso.WaitForExit(); //espera a que el programa se cierre actual = Adelante(rock, actual); } break; } catch (Exception) { rock.Nodo = rock.Lista.First; // cuando se acabe, appuntara al primero actual = rock.Nodo.Value; break; } } case ConsoleKey.R: { Random r = new Random(); int n = r.Next(0, rock.Lista.Count - 1); actual = rock.Lista.ElementAt(n); Play(rock, proceso, actual); break; } case ConsoleKey.Escape: //salida { Console.Clear(); Console.SetWindowSize(37, 8); //tamaño de consola Console.SetBufferSize(37, 8); //tamaño del buffer Menu2("Aun queda más musica por escuchar :)", proceso); break; } } } while (op.Key != ConsoleKey.Escape); }