private void fugaEspectador(int espectadores)
 {
     try {
         Alerta imagen = imagenFugaEspectador;
         if (imagen == null)
         {
             imagen           = new Alerta();
             imagen.urlImagen = Configuracion.parametro("imagen_fuga_espectador");
             int w = 300;
             int h = 200;
             imagen.ancho  = w;
             imagen.alto   = h;
             imagen.tiempo = 4100;
             //imagen.localizacion = new Point(((Width / 2) - (imagen.Width / 2)) + ((imagen.Width / 2)+20), 0);
             imagen.localizacion = new Point(panelMensajes.Width + 10 + w + 10, tamañoEscritorio.Height - h - 20);
             Controls.Add(imagen);
         }
         imagen.mostrar("VAYA!! ahora somos " + espectadores.ToString() + "");
     } catch (Exception ex) {
         System.Diagnostics.Trace.WriteLine(ex.Message);
     }
 }
        Alerta crearAlerta(string alias)
        {
            try {
                Alerta imagen = new Alerta();

                //imagen = new Alerta();
                imagen.urlImagen = Configuracion.parametro(alias + ".imagen");
                int w = int.Parse(Configuracion.parametro(alias + ".w", "400"));
                imagen.ancho = w;
                string hS = Configuracion.parametro(alias + ".h");
                string x  = Configuracion.parametro(alias + ".x");
                string y  = Configuracion.parametro(alias + ".y");
                int    h  = 0;
                if (hS != "")
                {
                    h = int.Parse(hS);
                }
                else
                {
                    h = (int)(((double)imagen.sizeImagen.Width / (double)imagen.sizeImagen.Height) * (double)w);;
                }
                imagen.alto   = h;
                imagen.tiempo = int.Parse(Configuracion.parametro(alias + ".tiempo", "6000"));

                /*imagen.localizacion = new Point(
                 * (x!=""?int.Parse(x):((Width / 2) - (imagen.Width / 2))),
                 * (y!=""?int.Parse(y):tamañoEscritorio.Height - 280 - imagen.Height));/**/
                imagen.fuente  = new Font("Roboto", 30);
                imagen.Padding = new Padding(imagen.Padding.Left, int.Parse(Configuracion.parametro(alias + ".padding.top", "50")), imagen.Padding.Right, imagen.Padding.Bottom);
                if (x != "")
                {
                    imagen.Left = int.Parse(x);
                    if (imagen.Left < 0)
                    {
                        imagen.Left = tamañoEscritorio.Width - imagen.Width - imagen.Padding.Right;
                    }
                    else
                    {
                        imagen.Left += imagen.Padding.Left;
                    }
                }
                else
                {
                    imagen.Left = tamañoEscritorio.Width - imagen.Width - imagen.Padding.Right;
                }
                if (y != "")
                {
                    imagen.Top = int.Parse(y);
                    if (imagen.Top < 0)
                    {
                        imagen.Top = tamañoEscritorio.Height - imagen.Height - imagen.Padding.Bottom;
                    }
                    else
                    {
                        imagen.Top += imagen.Padding.Top;
                    }
                }
                else
                {
                    imagen.Top = tamañoEscritorio.Height - imagen.Height - imagen.Padding.Bottom;
                }
                imagen.Top -= imagen.Margin.Bottom;
                return(imagen);
            } catch (Exception ex) {
                System.Diagnostics.Trace.WriteLine(ex.Message);
            }
            return(null);
        }
        //MySql.Data.MySqlClient.MySqlConnection conexion = null;

        public Principal(bool debug = false)
        {
            InitializeComponent();
            this.debug           = debug;
            this.TransparencyKey = Color.FromArgb(1, 1, 1);
            this.BackColor       = Color.FromArgb(1, 1, 1);

            /*if (conexion == null) {
             * conexion = new MySql.Data.MySqlClient.MySqlConnection("Database="+System.Configuration.ConfigurationManager.AppSettings["base_datos"] +";Data Source="+ System.Configuration.ConfigurationManager.AppSettings["servidor"] + ";User Id="+ System.Configuration.ConfigurationManager.AppSettings["usuario"]+ ";Password="******"clave"]);
             * //conexion.Open();
             * }/**/
            //chat.Discord.autenticacion();
            //chat.Discord.cogerMensajes("678195044817174532");
            //return;

            ultimaConexión   = DateTime.Now;
            tamañoEscritorio = Screen.PrimaryScreen.WorkingArea.Size;
            this.Height      = tamañoEscritorio.Height - 50;
            this.Top         = tamañoEscritorio.Height - this.Height - 10;
            this.Left        = 10;

            this.TopLevel = true;
            this.TopMost  = true;

            /*JSON json = new JSON();
             *
             * {
             *  "primero " :"1",
             * "segundo":2,
             * "tercero":[
             *    {
             *       "3.1":4
             *    },
             *    {
             *       "3.2":{
             *          "3.2.1":"final"
             *       }
             *     }
             * ]
             * }
             *
             * */
            //json.parse("{ \"primero \" :\"1\",\"segundo\":2,\"tercero\":[{\"3.1\":4},{\"3.2\":{\"3.2.1\":\"final\"}}]}");
            //json.getJson("http://laravel/prueba.json",new System.Collections.ArrayList());
            //MessageBox.Show(((Entidad)(json["tercero"][1]["3.2"]))["3.2.1"].ToString());

            /*string textoJSON = System.IO.File.ReadAllText("cheer.txt");
             * json.parse(textoJSON);
             * JSON json2 = new JSON();
             * json2.parse(json["data"]["message"].ToString());
             * //dynamic json2 = Newtonsoft.Json.Linq.JObject.Parse(textoJSON);
             * //nuevoSeguidor("Soy yo");
             * //nuevoSuscriptor("Nombre");
             * nuevoBit(json2["data"]["user_name"].ToString(), (double)((Entidad) json2["data"]["bits_used"]).valor);/**/
            /*nuevoMensaje("1 Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.", 0.7);
             * nuevoMensaje("2 Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard %15940% dummy text ever since the 1500s.Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.", 0.7);
             * nuevoMensaje("3 Lorem Ipsum is", 0.7);
             * nuevoMensaje("4 Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.", 0.7);
             * /**/
            //nuevoMensaje("2 Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard %15940% dummy text ever since the 1500s.Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.", 0.7);



            /*extensionTwitch.ExtensionTwitch extension = new extensionTwitch.ExtensionTwitch();
             * Controls.Add(extension);
             * extension.Top = 200;
             * extension.Left = 700;
             *
             * extension.Width = 600;
             * extension.Height = 100;
             * extension.Visible = true;
             * extension.onRaton += moverRatonExtensionTwitch;
             *
             * seguidores = chat.Twitch.seguidores(Configuracion.parametro("id_usuario"));
             *
             * return;/**/


            /*Datos usuarios = BD.consulta("select * from usuarios where userID is null");
             * for(int i = 0; i < usuarios.Length; i++) {
             * JSON user = chat.Twitch.infoUsuario(usuarios[i]["alias"].ToString());
             * if(user.hayClave("data") && user["data"].Length > 0) {
             *    BD.ejecutar("update usuarios set nombre='" + user["data"][0]["display_name"].ToString() + "', userID='" + user["data"][0]["id"].ToString() + "' where id=" + usuarios[i]["id"].ToString());
             * }
             * }*/


            //JSON tableroTrello = integraciones.Trello.cogerTablero("2Wu1jM2U");

            /*JSON tableroTrello = integraciones.Trello.cogerTableros("programcionextrema");
             * tableroTrello = integraciones.Trello.cogerTablero("2Wu1jM2U");
             * return;*/



            twitch = new chat.Twitch(Configuracion.parametro("oauth"), Configuracion.parametro("canal"));
            if (debug)
            {
                //MessageBox.Show("En modo depuracion");
            }
            twitch.onNuevaHora += nuevaHora;

            /*mostrarEspectadores = false;
             * mostrarSeguidores = false;
             * mostrarSuscriptores = false;/**/
            controlDirecto.Enabled  = false;
            controlDirecto2.Enabled = false;
            espectadores            = twitch.espectadores(Configuracion.parametro("id_usuario"));
            seguidores              = chat.Twitch.seguidores(Configuracion.parametro("id_usuario"));
            suscriptores            = chat.Twitch.suscriptores(Configuracion.parametro("id_usuario"));
            controlEspectador       = new controles.Espectadores(twitch.segundosEmision);
            controlDirecto.Enabled  = true;
            controlDirecto2.Enabled = true;
            Controls.Add(controlEspectador);
            controlEspectador.Visible      = true;
            controlEspectador.Top          = tamañoEscritorio.Height - controlEspectador.Height;
            controlEspectador.Left         = 1200;//650;
            controlEspectador.espectadores = espectadores;
            controlEspectador.MouseMove   += sobreControlEspectador;
            controlEspectador.MouseLeave  += fueraControlEspectador;
            controlEspectador.MouseDown   += pulsadoControlEspectador;
            controlEspectador.MouseUp     += soltadoControlEspectador;
            chat.Twitch.infoUsuario("prex_directo");
            chat.Twitch.infoCanal();
            twitch.conectar(!debug);
            twitch.conectarTopicos(!debug);/**/

            //Cogemos del registro la información de bienvenida
            mensajeBienvenida = (String)Microsoft.Win32.Registry.GetValue("HKEY_CURRENT_USER\\Software\\PrexDirecto\\Mensajeria", "Bienvenida", Principal.mensajeBienvenida);

            horaLimite.Text         = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString();
            panelHoraLimite.Left    = tamañoEscritorio.Width - panelHoraLimite.Width - 20;
            panelHoraLimite.Top     = tamañoEscritorio.Height - 325;
            panelHoraLimite.Visible = false;
            //nuevoEspectador();

            //nuevoSeguidor("dd");

            //chat.Twitch.infoBits();
            //chat.Twitch.infoExtensiones();

            /*controles.ListaTareas listaTareas = new controles.ListaTareas();
             * this.Controls.Add(listaTareas);
             * listaTareas.añadirTarea("Instalar Mono");
             * listaTareas.añadirTarea("Plantear un problema con Ionic");
             * listaTareas.Left = 1000;
             * listaTareas.Top = tamañoEscritorio.Height - listaTareas.Height;
             * listaTareas.Visible = true;/**/
            /*listaTareas.Resize = () => {
             * this.
             * }*/
        }
        private void controlDirecto_Tick(object sender, EventArgs e)
        {
            controlDirecto.Enabled = false;
            try {
                if (!twitch.estaConectado && !twitch.estaConectando)
                {
                    twitch.conectar(!debug);
                }
            }catch {
            }
            try {
                int controlEspectadores = twitch.espectadores(Configuracion.parametro("id_usuario"));

                int controlSuscriptores = chat.Twitch.suscriptores(Configuracion.parametro("id_usuario"));

                if (controlEspectadores != espectadores)
                {
                    if (controlEspectadores > espectadores)
                    {
                        if (mostrarEspectadores)
                        {
                            //nuevoEspectador(controlEspectadores);
                            controlEspectador.nuevo = true;
                            nuevoEspectador();
                        }
                        if (!debug)
                        {
                            nuevaConexión = true;
                        }
                    }
                    else
                    {
                        if (mostrarEspectadores)
                        {
                            controlEspectador.nuevo = false;
                            //fugaEspectador(controlEspectadores);
                        }
                    }
                }
                espectadores = controlEspectadores;
                controlEspectador.espectadores = espectadores;

                if (controlSuscriptores > suscriptores && (imagenNuevoSuscriptor == null || !imagenNuevoSuscriptor.Visible))
                {
                    if (mostrarSuscriptores)
                    {
                        nuevoSuscriptor(chat.Twitch.listaSuscriptores[chat.Twitch.listaSuscriptores.Count - suscriptores - 1].ToString());
                    }
                    suscriptores++;
                }
                else if (controlSuscriptores < suscriptores)
                {
                    suscriptores = controlSuscriptores;
                }
            } catch {
            }
            if (nuevaConexión && DateTime.Now.Subtract(ultimaConexión).TotalSeconds > ESPERA_ENTRE_CONEXIONES)
            {
                if (!debug)
                {
                    //twitch.mensaje = mensajeBienvenida;
                }
                nuevaConexión = false;
            }
            if (chat.Twitch.nuevosSeguidores.Count > 0)
            {
                if (mostrarSeguidores)
                {
                    string seguidor = chat.Twitch.nuevosSeguidores[0];
                    chat.Twitch.nuevosSeguidores.RemoveAt(0);
                    nuevoSeguidor(seguidor);
                }
            }
            nuevaHora();
            controlDirecto.Enabled = true;
        }