public Principal() { InitializeComponent(); this.Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath); Actualizador.Actualizacion.ActualizacionDisponible += new Actualizador.Actualizacion.DelegadoActualizacionDisponible(Actualizacion_ActualizacionDisponible); Actualizador.Actualizacion.ComprobarActualizacion(InformacionPrograma.VersionActual, false, InformacionPrograma.UrlActualizacion); if (InformacionPrograma.Mono == false) { interfazToolStripMenuItem.Visible = true; office2007ToolStripMenuItem.PerformClick(); } else { interfazToolStripMenuItem.Visible = false; splitContainer1.BackColor = Color.FromArgb(159, 190, 230); } //Imagenes this.iniciarNuevaPartidaToolStripMenuItem.Image = Programa.ObtenerImagenIncrustada("package_games_board"); this.toolStripButton2.Image = Programa.ObtenerImagenIncrustada("package_games_board"); this.toolStripButton6.Image = Programa.ObtenerImagenIncrustada("Clanbomber"); this.toolStripButton5.Image = Programa.ObtenerImagenIncrustada("Search"); this.toolStripButton4.Image = Programa.ObtenerImagenIncrustada("Administrative_Tool"); this.toolStripButton7.Image = Programa.ObtenerImagenIncrustada("softwareD"); this.toolStripButton3.Image = Programa.ObtenerImagenIncrustada("calculadora"); this.toolStripButton1.Image = Programa.ObtenerImagenIncrustada("rendimiento"); if (InformacionPrograma.Mono) { this.Text += " Mono Version"; } }
/// <summary> /// Datos recibidos por cualquier cliente /// </summary> void ComandoRecibido(ushort comando, string[] parametros, string cadena, ClienteTCP clienteTcp) { if (comando == 3) //Ping { return; } if (Clientes.ContainsKey(clienteTcp)) { try { string[] nombres = Enum.GetNames(typeof(ConsoleColor)); Console.ForegroundColor = (ConsoleColor) Enum.Parse(typeof(ConsoleColor), nombres[Clientes[clienteTcp].GetHashCode() % (nombres.Length - 1)]); if (Console.ForegroundColor == ConsoleColor.Black) { Console.ForegroundColor = ConsoleColor.White; } if (EsAdministrador(clienteTcp)) { Console.WriteLine(Clientes[clienteTcp].Nombre + "(*): " + cadena); } else { Console.WriteLine(Clientes[clienteTcp].Nombre + ": " + cadena); } Console.ResetColor(); } catch { } } else { Console.WriteLine("Cliente: " + cadena); } try { switch (comando) { case 10: //Cliente conectado if (AceptarNuevosJugadores == false) { EnviarComando(102, "Partida ya iniciada", clienteTcp); return; } if (Programa.CompararVersiones(InformacionPrograma.VersionActual, parametros[1]) > 0) { //Version cliente antigua EnviarComando(103, "Versión antigua", clienteTcp); return; } Cliente jugador = new Cliente(parametros[2], null, int.Parse(parametros[0])); jugador.Color = Color.FromArgb(int.Parse(parametros[3])); jugador.ClienteTcp = clienteTcp; foreach (System.Collections.Generic.KeyValuePair <ClienteTCP, Cliente> elemento in Clientes) { if (string.Compare(elemento.Value.Nombre, jugador.Nombre, true) == 0) //Nombre repetido { EnviarComando(100, "Nombre repetido", clienteTcp); return; } if (elemento.Value.Color.ToArgb() == jugador.Color.ToArgb()) //Color repetido { EnviarComando(101, "Color repetido", clienteTcp); return; } } if (Clientes.Count == 0) //Primer conectado, es el admin { jugador.AdministradorServidor = true; EnviarComando(13, "Eres administrador", clienteTcp); } Clientes.Add(clienteTcp, jugador); //Todo correcto EnviarComando(12, "Login correcto", clienteTcp); ActualizarParametrosPartida(); break; case 11: //Desconectado if (Clientes.ContainsKey(clienteTcp)) { if (Clientes.Count == 1) //Ultimo jugador desconectado { Console.WriteLine("------>Ultimo jugador desconectado, cerrando servidor"); Programa.EstadoEspera.Set(); } try { foreach (Planeta planeta in Mapa.Planetas) { if (planeta.Dueño == Clientes[clienteTcp]) { planeta.Dueño = null; } } } catch { } DifundirMensaje(72, string.Format("El jugador '{0}' ha sido retirado de la partida.", Clientes[clienteTcp].Nombre)); if (borrarFinTurno == null) { borrarFinTurno = new List <Cliente>(); } borrarFinTurno.Add(Clientes[clienteTcp]); if (jugadorActual != null && jugadorActual == Clientes[clienteTcp]) { //Acabar turno EsperandoFinTurno.Set(); } } break; case 300: //Informacion del mapa if (EsAdministrador(clienteTcp)) { if (Mapa == null) { Mapa = new Mapa(); } Mapa.ModoGrafico = false; Mapa.Semilla = int.Parse(parametros[0]); Mapa.Neutrales = int.Parse(parametros[1]); Mapa.Inicializar(Mapa.Semilla, new List <Cliente>(ObtenerJugadores()), Mapa.Neutrales); ActualizarParametrosPartida(); } break; case 301: //Iniciar partida if (EsAdministrador(clienteTcp) && Clientes.Count > 1) { Console.WriteLine("------>Partida iniciada"); IniciarPartida(); } break; case 302: //Salir if (EsAdministrador(clienteTcp)) { Console.WriteLine("------>Cerrar el servidor"); Programa.EstadoEspera.Set(); } break; case 303: //Segundos limite if (EsAdministrador(clienteTcp)) { SegundosLimiteTurno = int.Parse(parametros[0]); } break; case 304: //Expulsar jugador if (EsAdministrador(clienteTcp)) { foreach (System.Collections.Generic.KeyValuePair <ClienteTCP, Cliente> elemento in Clientes) { if (string.Compare(elemento.Value.Nombre, parametros[0], true) == 0) { Clientes.Remove(elemento.Key); ActualizarParametrosPartida(); EnviarComando(11, "Adios", elemento.Key); elemento.Key.Desconectar(); if (elemento.Value.AdministradorServidor) //Buscar nuevo admin { foreach ( System.Collections.Generic.KeyValuePair <ClienteTCP, Cliente> cliente in Clientes) { cliente.Value.AdministradorServidor = true; EnviarComando(13, "Eres administrador", cliente.Key); break; } } break; } } ActualizarParametrosPartida(); } break; case 400: //Chat de administrador if (EsAdministrador(clienteTcp)) { DifundirMensaje(401, string.Format("El administrador envia el siguiente mensaje: '{0}'", parametros[0])); } break; case 402: //Chat entre jugadores foreach (System.Collections.Generic.KeyValuePair <ClienteTCP, Cliente> elemento in Clientes) { if (elemento.Value.Nombre == parametros[0]) { elemento.Key.EnviarComando(402, string.Format("El jugador '{0}' envia el mensaje \"'{1}'\" a '{2}'", Clientes[clienteTcp], parametros[1], parametros[0])); break; } } break; } } catch (Exception e) { Console.WriteLine("Error: " + e.ToString()); } }
private void espacioToolStripMenuItem_Click(object sender, EventArgs e) { mapa.ImagenFondo = Programa.ObtenerImagenIncrustada("fondoespacio"); }