示例#1
0
 public void cambiando_Al_Servidor_Juego(string ip, int puerto)
 {
     if (fase_socket != EstadoSocket.NINGUNO)
     {
         if (conexion != null)
         {
             conexion.get_Desconectar_Socket();
         }
         conexion      = new ClienteGame(IPAddress.Parse(ip), puerto, this);
         Estado_Socket = EstadoSocket.CAMBIANDO_A_JUEGO;
     }
 }
示例#2
0
        public async Task get_Iniciar_Accion(ClienteGame cliente, string paquete)
        {
            string[]  separador = paquete.Substring(2).Split(';');
            int       id_accion = int.Parse(separador[1]);
            Cuenta    cuenta    = cliente.cuenta;
            Personaje personaje = cuenta.personaje;

            if (id_accion > 0)//Error: GA;0
            {
                int        id_jugador = int.Parse(separador[2]);
                Luchadores luchador   = null;

                switch (id_accion)
                {
                case 1:
                    Mapa  mapa          = personaje.mapa;
                    short celda_destino = Hash.get_Celda_Id_Desde_hash(separador[3].Substring(separador[3].Length - 2));
                    byte  tipo_gkk_movimiento;

                    if (!cuenta.esta_luchando())
                    {
                        if (id_jugador == personaje.id && celda_destino > 0 && personaje.celda.id != celda_destino)
                        {
                            tipo_gkk_movimiento = byte.Parse(separador[0]);

                            Celda celda = mapa.celdas[celda_destino];
                            await personaje.manejador.movimientos.evento_Movimiento_Finalizado(celda, tipo_gkk_movimiento, true);
                        }
                        else if (mapa.get_Personajes().ContainsKey(id_jugador))
                        {
                            mapa.get_Personajes()[id_jugador].celda = mapa.celdas[celda_destino];

                            if (GlobalConf.mostrar_mensajes_debug)
                            {
                                cuenta.logger.log_informacion("DEBUG", "Detectado movimiento de un personaje a la casilla: " + celda_destino);
                            }
                        }
                        else if (mapa.get_Monstruos().ContainsKey(id_jugador))
                        {
                            mapa.get_Monstruos()[id_jugador].celda = mapa.celdas[celda_destino];

                            if (GlobalConf.mostrar_mensajes_debug)
                            {
                                cuenta.logger.log_informacion("DEBUG", "Detectado movimiento de un grupo de monstruo a la casilla: " + celda_destino);
                            }
                        }
                    }
                    else
                    {
                        tipo_gkk_movimiento = byte.Parse(separador[0]);

                        luchador = cuenta.pelea.get_Luchador_Por_Id(id_jugador);
                        if (luchador != null)
                        {
                            luchador.celda_id = celda_destino;
                        }

                        await Task.Delay(300 *personaje.celda.get_Distancia_Entre_Dos_Casillas(celda_destino));

                        cuenta.conexion.enviar_Paquete("GKK" + tipo_gkk_movimiento);
                    }
                    break;

                case 2:     //Cargando el mapa
                    await Task.Delay(200);

                    break;

                case 102:
                    if (cuenta.esta_luchando())
                    {
                        luchador = cuenta.pelea.get_Luchador_Por_Id(id_jugador);
                        byte pa_utilizados = byte.Parse(separador[3].Split(',')[1].Substring(1));

                        if (luchador != null)
                        {
                            luchador.pa -= pa_utilizados;
                        }
                    }
                    break;

                case 103:
                    if (cuenta.esta_luchando())
                    {
                        int id_muerto = int.Parse(separador[3]);

                        luchador = cuenta.pelea.get_Luchador_Por_Id(id_muerto);
                        if (luchador != null)
                        {
                            luchador.esta_vivo = false;
                        }
                    }
                    break;

                case 129:     //movimiento en pelea con exito
                    if (cuenta.esta_luchando())
                    {
                        luchador = cuenta.pelea.get_Luchador_Por_Id(id_jugador);
                        byte pm_utilizados = byte.Parse(separador[3].Split(',')[1].Substring(1));

                        if (luchador != null)
                        {
                            luchador.pm -= pm_utilizados;
                        }

                        if (id_jugador == personaje.id)
                        {
                            cuenta.pelea.get_Movimiento_Exito();
                        }
                    }
                    break;

                case 302:
                case 300:     //hechizo lanzado con exito
                    if (id_jugador == cuenta.personaje.id)
                    {
                        cuenta.pelea.get_Hechizo_Lanzado();
                    }
                    break;

                case 501:
                    int   tiempo_recoleccion   = int.Parse(separador[3].Split(',')[1]);
                    short celda_id             = short.Parse(separador[3].Split(',')[0]);
                    byte  tipo_gkk_recoleccion = byte.Parse(separador[0]);

                    await personaje.manejador.recoleccion.evento_Recoleccion_Iniciada(id_jugador, tiempo_recoleccion, celda_id, tipo_gkk_recoleccion);

                    break;

                case 900:
                    cuenta.conexion.enviar_Paquete("GA902" + id_jugador);
                    cuenta.logger.log_informacion("INFORMACIÓN", "Desafio del personaje id: " + id_jugador + " cancelado");
                    break;
                }
            }
            else
            {
                await personaje.manejador.movimientos.evento_Movimiento_Finalizado(null, 0, false);
            }
        }
示例#3
0
 public void get_Inicio_Accion(ClienteGame cliente, string paquete)
 {
 }