Exemple #1
0
 /// <summary>
 /// Replica un mensaje recibido de una cuenta a las demas cuentas de las sala
 /// </summary>
 /// <param name="eventoEnJuego">EventoEnJuego</param>
 public void ReplicarMensajeACuentas(EventoEnJuego eventoEnJuego)
 {
     foreach (String DireccionIp in DireccionesIpDeCuentas.Values)
     {
         UdpSender EnviadorDePaquetesUDP = new UdpSender(DireccionIp, PUERTO_ENVIO_UDP_1, PUERTO_ENVIO_UDP_2);
         EnviadorDePaquetesUDP.EnviarPaquete(eventoEnJuego);
     }
 }
Exemple #2
0
 /// <summary>
 /// Envia un paquete Udp a los dos puertos y de la direccion ip
 /// </summary>
 /// <param name="eventoEnJuego">EventoEnJuego</param>
 public void EnviarPaquete(EventoEnJuego eventoEnJuego)
 {
     ClienteUDP = new UdpClient();
     if (eventoEnJuego != null)
     {
         byte[] datos = SerializarAArregloDeBytes(eventoEnJuego);
         ClienteUDP.Send(datos, datos.Length, IpEnviarPaquete1);
         ClienteUDP.Send(datos, datos.Length, IpEnviarPaquete2);
     }
 }
Exemple #3
0
        /// <summary>
        /// Envia un mensaje a las cuentas de la sala indicando que el juego esta por comenzar
        /// </summary>
        /// <param name="source">object</param>
        /// <param name="e">ElapsedEventArgs</param>
        private void EnviarMensajeInicioJuego(object source, ElapsedEventArgs e)
        {
            EventoEnJuego eventoEnJuego = new EventoEnJuego();

            eventoEnJuego.EventoEnJuegoIniciarPartida(Id);
            foreach (String direccionIp in DireccionesIpDeCuentas.Values)
            {
                UdpSender EnviadorDePaquetes = new UdpSender(direccionIp, PUERTO_ENVIO_UDP_1, PUERTO_ENVIO_UDP_2);
                EnviadorDePaquetes.EnviarPaquete(eventoEnJuego);
            }
        }
Exemple #4
0
 /// <summary>
 /// Busca la sala a la cual se le deben de reenviar los datos y se los reenvia
 /// </summary>
 /// <param name="eventoEnJuego">EventoEnJuego</param>
 public void ReplicarDatosRecibidosASala(EventoEnJuego eventoEnJuego)
 {
     foreach (Sala sala in SalasCreadas)
     {
         if (sala.Id == eventoEnJuego.IdSala)
         {
             sala.ReplicarMensajeACuentas(eventoEnJuego);
             break;
         }
     }
 }
Exemple #5
0
        /// <summary>
        /// Serializa un EventoEnJuego en un arreglo de bytes
        /// </summary>
        /// <param name="eventoEnJuego">EventoEnJuego</param>
        /// <returns>Arreglo de bytes del EventoEnJuegoSerializado</returns>
        private static byte[] SerializarAArregloDeBytes(EventoEnJuego eventoEnJuego)
        {
            if (eventoEnJuego != null)
            {
                BinaryFormatter FormateadorBinario = new BinaryFormatter();
                using (MemoryStream StreamDeMemoria = new MemoryStream())
                {
                    FormateadorBinario.Serialize(StreamDeMemoria, eventoEnJuego);
                    return(StreamDeMemoria.ToArray());
                }
            }

            return(null);
        }
        /// <summary>
        /// Deseariliza un arreglo de bytes en un EventoEnJuego
        /// </summary>
        /// <param name="byteArray">byte[]</param>
        /// <returns>El EventoEnJuego deserializado</returns>
        public static EventoEnJuego Deserializar(byte[] byteArray)
        {
            if (byteArray == null)
            {
                return(null);
            }
            BinaryFormatter FormateadorBinario = new BinaryFormatter();

            using (MemoryStream StreamDeMemoria = new MemoryStream())
            {
                StreamDeMemoria.Write(byteArray, 0, byteArray.Length);
                StreamDeMemoria.Seek(0, SeekOrigin.Begin);
                EventoEnJuego eventoEnJuego = (EventoEnJuego)FormateadorBinario.Deserialize(StreamDeMemoria);
                return(eventoEnJuego);
            }
        }
Exemple #7
0
        /// <summary>
        /// Recupera la cuenta la cual envio el EventoEnJuego
        /// </summary>
        /// <param name="eventoEnJuego">EventoEnJuego</param>
        /// <returns>La cuenta que envio el evento </returns>
        private CuentaModel RecuperarCuentaDelEvento(EventoEnJuego eventoEnJuego)
        {
            CuentaModel cuentaDelEvento = new CuentaModel();

            switch (eventoEnJuego.TipoDeEvento)
            {
            case EnumTipoDeEventoEnJuego.MovimientoJugador:
                cuentaDelEvento.NombreUsuario = eventoEnJuego.DatosDelMovimiento.Usuario;
                break;

            case EnumTipoDeEventoEnJuego.MuerteJugador:
                cuentaDelEvento.NombreUsuario = eventoEnJuego.DatosMuerteDeUnJugador.Usuario;
                break;
            }

            return(cuentaDelEvento);
        }
 /// <summary>
 /// Se encarga de escuhar en la red a la espera de paquetes UDP
 /// </summary>
 /// <param name="puerto">Int</param>
 public void RecibirDatos(object puerto)
 {
     ClienteUDP = new UdpClient((int)puerto);
     try
     {
         while (true)
         {
             IPEndPoint anyIP = new IPEndPoint(IPAddress.Any, 0);
             byte[]     data  = ClienteUDP.Receive(ref anyIP);
             if (data != null && data.Length > 0)
             {
                 EventoEnJuego eventoEnJuego = Deserializar(data);
                 EventoRecibido?.Invoke(eventoEnJuego);
             }
         }
     }
     catch (Exception err)
     {
         Debug.Write(err.Message);
     }
 }