void Update()
    {
        float timer = 0.0f;

        while (eventQueue.Count > 0)
        {
            if (maxQueueProcessingTime > 0.0f)
            {
                if (timer > maxQueueProcessingTime)
                {
                    return;
                }
            }

            EventoBase eventMessage = eventQueue.Dequeue();
            if (!LanzarEvento(eventMessage))
            {
                Debug.Log("EVENTCONTROLLER --> " + eventMessage.nombreEvento);
            }

            if (maxQueueProcessingTime > 0.0f)
            {
                timer += Time.deltaTime;
            }
        }
    }
 private void AbrirMenuPrincipal(EventoBase e)
 {
     if (Personaje.PuedeMoverse)
     {
         ControladorEventos.Instancia.LanzarEvento(new EventoAbrirMenuPrincipal());
     }
 }
Exemple #3
0
    private void NPCDetectaJugador(EventoBase mensaje)
    {
        EventoPersonajeMirarDireccion e = (EventoPersonajeMirarDireccion)mensaje;

        siguienteDireccion = Herramientas.ObtenerDireccion(contenedorTransform.position, e.PosicionObjetivo);
        AsignarAnimacion();
        DetenerAnimacion();
    }
 public bool QueueMessage(EventoBase eventMessage)
 {
     if (!eventListenerList.ContainsKey(eventMessage.nombreEvento))
     {
         return(false);
     }
     eventQueue.Enqueue(eventMessage);
     return(true);
 }
 private void IniciarCombateContraEntrenador(EventoBase mensaje)
 {
     if (DatosCombate == null)
     {
         entrenador   = (EventoIniciarCombateContraEntrenador)mensaje;
         DatosCombate = new DatosCombate();
         botonEscapar.interactable = false;
         ControladorDatos.Instancia.AniadirCorrutinaACola(CombateCorrutina(TipoDeCombate.Entrenador));
     }
 }
 private void ComprobarFases(EventoBase mensaje)
 {
     for (int i = 0; i < fase.Count; i++)
     {
         if (fase[i].CumpleLasCondiciones())
         {
             fase[i].ActivarFase();
         }
     }
 }
 private void IniciarCombateContraPokemonSalvaje(EventoBase mensaje)
 {
     if (DatosCombate == null)
     {
         DatosCombate = new DatosCombate();
         botonEscapar.interactable = true;
         pokemonSalvaje            = (EventoIniciarCombatePokemonSalvaje)mensaje;
         ControladorDatos.Instancia.AniadirCorrutinaACola(CombateCorrutina(TipoDeCombate.PokemonSalvaje));
     }
 }
    private void Transportar(EventoBase mensaje)
    {
        EventoTeletransportarse e = (EventoTeletransportarse)mensaje;

        if (!estaTeletransportandose)
        {
            ControladorDatos.Instancia.ReproducirSonido(SonidoID.SonidoEntrarPuerta);
            ControladorDatos.Instancia.AniadirCorrutinaACola(MostrarPantallaDeCarga(e));
        }
    }
    private void MostrarConversacion(EventoBase e)
    {
        EventoMostrarMensajeConversacion evento = ((EventoMostrarMensajeConversacion)e);

        if (!string.IsNullOrEmpty(evento.Conversacion.texto))
        {
            ControladorDatos.Instancia.ReproducirSonido(SonidoID.SonidoHablarNPC);
            ControladorDatos.Instancia.AniadirCorrutinaACola(MostrarMensajeConversacion(evento));
        }
    }
Exemple #10
0
    private void NuevoEventoDeZona(EventoBase mensaje)
    {
        EventoNuevoLogroConseguido e = (EventoNuevoLogroConseguido)mensaje;

        for (int i = 0; i < eventoDeZona.Count; i++)
        {
            if (eventoDeZona[i] != null && eventoDeZona[i].logroDisparadorDelAcontecimiento == e.Logro)
            {
                eventoDeZona[i].EjecutarAccion();
                break;
            }
        }
    }
    private void MostrarVentanaConfirmacion(EventoBase mensaje)
    {
        EventoMostrarVentanaConfirmacion e = (EventoMostrarVentanaConfirmacion)mensaje;

        if (e.EncolarCorrutina)
        {
            ControladorDatos.Instancia.AniadirCorrutinaACola(MostrarVentanaConfirmacion(e));
        }
        else
        {
            StartCoroutine(MostrarVentanaConfirmacion(e));
        }
    }
Exemple #12
0
    private void TeletranportarCentroPokemon(EventoBase mensaje)
    {
        if (ultimaZonaVisitada == 0)
        {
            ultimaZonaVisitada = gameObject.GetInstanceID();
        }

        if (ultimaZonaVisitada == gameObject.GetInstanceID())
        {
            Vector2 direccion = Herramientas.ObtenerDireccion(centroPokemon.transform.position, centroPokemon.npc.transform.position);
            Personaje.TeletransportarPersonaje.CambiarPosicion(centroPokemon.transform.position, direccion);
            centroPokemon.npc.MostrarDialogo();
            ControladorDatos.Instancia.Datos.CentroPokemon();
        }
    }
Exemple #13
0
    private void AniadirNPC(EventoBase mensaje)
    {
        EventoAniadirNPCAlControlador e = (EventoAniadirNPCAlControlador)mensaje;
        bool yaExisteElNPC = false;

        for (int i = 0; i < npcs.Count; i++)
        {
            if (npcs[i].gameObject.GetInstanceID() == e.NPC.gameObject.GetInstanceID())
            {
                yaExisteElNPC = true;
                break;
            }
        }
        if (!yaExisteElNPC)
        {
            npcs.Add(e.NPC);
        }
    }
    public bool LanzarEvento(EventoBase eventMessage)
    {
        string eventMessageName = eventMessage.nombreEvento;

        if (!eventListenerList.ContainsKey(eventMessageName))
        {
            Debug.Log("EVENTCONTROLLER: Message \"" + eventMessageName + "\" has no listeners!");
            return(false); // no listeners for messae so ignore it
        }

        List <FuncionDelegado> listenerList = eventListenerList[eventMessageName];

        for (int i = 0; i < listenerList.Count; ++i)
        {
            listenerList[i](eventMessage);
        }

        return(true);
    }
Exemple #15
0
 private void ProximaAccionSeleccionada(EventoBase mensaje)
 {
     gameObject.SetActive(false);
 }
Exemple #16
0
 private void AbrirMenuPrincipal(EventoBase mensaje)
 {
     Personaje.UIAbierta    = true;
     Personaje.PuedeMoverse = false;
     menuPrincipal.gameObject.SetActive(true);
 }
    private void MostrarMensaje(EventoBase mensaje)
    {
        EventoMostrarMensaje evento = (EventoMostrarMensaje)mensaje;

        ControladorDatos.Instancia.AniadirCorrutinaACola(MostrarTextoCorrutina(evento.Mensaje, true));
    }
 private void Interactuar(EventoBase e)
 {
     personaje.Interactuar();
 }
 private void ProximaAccionSeleccionada(EventoBase mensaje)
 {
     proximaAccion = (EventoProximaAccionCombate)mensaje;
 }