protected bool AtualizaUsoDesseItem(DoJogo particula)
    {
        switch (Estado)
        {
        case EstadoDeUsoDeItem.animandoBraco:
            if (!AnimaB.AnimaTroca(true))
            {
                Estado = EstadoDeUsoDeItem.aplicandoItem;
                Manager.Mov.Animador.ResetaTroca();
                AuxiliarDeInstancia.InstancieEDestrua(particula, CriatureAlvoDoItem.transform.position, 1);
            }
            break;

        case EstadoDeUsoDeItem.aplicandoItem:
            TempoDecorrido += Time.deltaTime;
            if (TempoDecorrido > TEMPO_DE_ANIMA_CURA_1)
            {
                Recuperacao();

                GameController.g.HudM.AtualizaHudHeroi(CriatureAlvoDoItem.MeuCriatureBase);
                Estado = EstadoDeUsoDeItem.finalizaUsaItem;
                return(false);
            }
            break;

        case EstadoDeUsoDeItem.finalizaUsaItem:
            return(false);

        //break;
        case EstadoDeUsoDeItem.nulo:
            Debug.Log("alcançou estado nulo para " + ID.ToString());
            break;
        }
        return(true);
    }
    protected void instanciaEletricidade(GameObject G, Vector3 paraOnde, float tempoMax = 10)
    {
        GolpePersonagem golpeP = GolpePersonagem.RetornaGolpePersonagem(G, Nome);

        if (golpeP.TempoDeInstancia > 0)
        {
            carac.posInicial = Emissor.UseOEmissor(G, Nome);
        }

        GameObject KY  = AuxiliarDeInstancia.InstancieEDestrua(DoJogo.raioEletrico, carac.posInicial, DirDeREpulsao, TempoDeDestroy);
        Transform  KXY = KY.transform.GetChild(0);

        MonoBehaviour.Destroy(KXY.gameObject, 4.9f);

        KXY.parent        = G.transform.Find(golpeP.Colisor.osso).transform;
        KXY.localPosition = Vector3.zero;
        projeteis.Add(KY.transform);
        MbProjetilEletrico proj = KY.transform.GetChild(2).gameObject.AddComponent <MbProjetilEletrico>();

        proj.transform.position += golpeP.DistanciaEmissora * G.transform.forward + golpeP.AcimaDoChao * Vector3.up;
        proj.KXY                = KXY;
        proj.criatureAlvo       = acaoDeGolpeRegenerate.procureUmBomAlvo(G, 350);
        proj.forcaInicial       = paraOnde.normalized;
        proj.velocidadeProjetil = 9;
        proj.tempoMax           = tempoMax;
        proj.noImpacto          = carac.noImpacto.ToString();
        proj.dono               = G;
        proj.esseGolpe          = this;
        addView = true;
    }
Exemplo n.º 3
0
    protected virtual bool AtualizaUsoDoPergaminho()
    {
        switch (Estado)
        {
        case EstadoDeUsoDeItem.selecaoDeItem:
            GameController.g.HudM.Menu_Basico.MudarOpcao();
            if (GameController.g.CommandR.DisparaCancel())
            {
                ActionManager.ModificarAcao(GameController.g.transform, null);
                GameController.g.HudM.Painel.EsconderMensagem();
                GameController.g.HudM.Menu_Basico.FinalizarHud();
                Estado = EstadoDeUsoDeItem.finalizaUsaItem;
            }
            else
            if (GameController.g.CommandR.DisparaAcao())
            {
                OpcaoEscolhida(GameController.g.HudM.Menu_Basico.OpcaoEscolhida);
            }
            break;

        case EstadoDeUsoDeItem.animandoBraco:
            if (!AnimaB.AnimaTroca(true))
            {
                Estado = EstadoDeUsoDeItem.aplicandoItem;
                Manager.Mov.Animador.ResetaTroca();
                AuxiliarDeInstancia.InstancieEDestrua(Particula,
                                                      GameController.g.Manager.CriatureAtivo.transform.position, 1);

                AplicaEfeito(GameController.g.Manager.Dados.CriaturesAtivos[opcaoEscolhida]);
            }
            break;

        case EstadoDeUsoDeItem.aplicandoItem:
            TempoDecorrido += Time.deltaTime;
            if (TempoDecorrido > TEMPO_DE_ANIMA_PARTICULAS)
            {
                AplicaEfeito(GameController.g.Manager.Dados.CriaturesAtivos[opcaoEscolhida]);
            }
            break;

        case EstadoDeUsoDeItem.finalizaUsaItem:
            return(false);
        }
        return(true);
    }
Exemplo n.º 4
0
    public static void AplicaProjetil(GameObject G, IGolpeBase ativa, CaracteristicasDeProjetil carac)
    {
        GolpePersonagem golpeP = GolpePersonagem.RetornaGolpePersonagem(G, ativa.Nome);

        if (golpeP.TempoDeInstancia > 0)
        {
            carac.posInicial = Emissor.UseOEmissor(G, ativa.Nome);
        }

        GameObject KY = AuxiliarDeInstancia.InstancieEDestrua(ativa.Nome, carac.posInicial, ativa.DirDeREpulsao, ativa.TempoDeDestroy);

        ColisorDeDanoBase proj = null;

        switch (carac.tipo)
        {
        case TipoDoProjetil.rigido:
            proj = KY.AddComponent <ColisorDeDanoRigido>();
            break;

        case TipoDoProjetil.basico:
            proj = KY.AddComponent <ColisorDeDano>();
            break;

        case TipoDoProjetil.statusExpansivel:
            proj = KY.AddComponent <ColisorDeStatusExpansivel>();
            break;

        case TipoDoProjetil.direcional:
            ColisorDeDanoDirecional projD = KY.AddComponent <ColisorDeDanoDirecional>();
            projD.alvo = (G.name == "CriatureAtivo")
                    ? ((GameController.g.InimigoAtivo != null)? GameController.g.InimigoAtivo.gameObject: null)
                    : GameController.g.Manager.CriatureAtivo.gameObject;
            proj = projD;
            break;
        }

        proj.velocidadeProjetil = ativa.VelocidadeDeGolpe;
        proj.noImpacto          = carac.noImpacto.ToString();
        proj.dono      = G;
        proj.esseGolpe = ativa;
    }
Exemplo n.º 5
0
    protected virtual void OpcaoEscolhida(int escolha)
    {
        if (Consumivel)
        {
            RetirarUmItem(GameController.g.Manager, this, 1);
        }

        GameController.g.HudM.Menu_Basico.FinalizarHud();
        GameController.g.HudM.Painel.EsconderMensagem();
        opcaoEscolhida = escolha;

        if (escolha == 0)
        {
            InicializacaoComum(GameController.g.Manager.gameObject, GameController.g.Manager.CriatureAtivo.transform);
            Estado = EstadoDeUsoDeItem.animandoBraco;
        }
        else
        {
            TempoDecorrido = 0;
            AuxiliarDeInstancia.InstancieEDestrua(Particula,
                                                  GameController.g.Manager.transform.position, 1);
            Estado = EstadoDeUsoDeItem.aplicandoItem;
        }
    }
Exemplo n.º 6
0
    public override void UpdateGolpe(GameObject G)
    {
        tempoDecorrido += Time.deltaTime;
        if (!addView)
        {
            GolpePersonagem golpeP = GolpePersonagem.RetornaGolpePersonagem(G, Nome);
            if (golpeP.TempoDeInstancia > 0)
            {
                posInicial = Emissor.UseOEmissor(G, Nome);
            }
            AuxiliarDeInstancia.InstancieEDestrua(Nome, posInicial, DirDeREpulsao, TempoDeDestroy);
            addView = true;
        }

        hit = new RaycastHit();

        Vector3 ort = Vector3.Cross(DirDeREpulsao, Vector3.up).normalized;

        float deslocadorInicial = tempoDecorrido > 1 ? tempoDecorrido : 1;
        float deslocadorFinal   = tempoDecorrido < 0.7f ? tempoDecorrido : 0.7f;

        if (tempoDecorrido < TempoDeDestroy)
        {
            Debug.DrawLine(posInicial + 25 * (deslocadorInicial - 1) * DirDeREpulsao, posInicial + DirDeREpulsao * 25 * deslocadorFinal, Color.red);
            Debug.DrawLine(
                posInicial + 25 * (deslocadorInicial - 1) * DirDeREpulsao + 0.25f * Vector3.up,
                posInicial + 0.25f * Vector3.up + DirDeREpulsao * 25 * deslocadorFinal,
                Color.red);
            Debug.DrawLine(
                posInicial + 25 * (deslocadorInicial - 1) * DirDeREpulsao - 0.25f * Vector3.up,
                posInicial - 0.25f * Vector3.up + DirDeREpulsao * 25 * deslocadorFinal,
                Color.red);
            Debug.DrawLine(
                posInicial + 25 * (deslocadorInicial - 1) * DirDeREpulsao - 0.25f * ort,
                posInicial - 0.25f * ort + DirDeREpulsao * 25 * deslocadorFinal,
                Color.red);


            if (Physics.Linecast(posInicial + 25 * (deslocadorInicial - 1) * DirDeREpulsao, posInicial + DirDeREpulsao * 25 * tempoDecorrido, out hit)
                ||
                Physics.Linecast(
                    posInicial + 25 * (deslocadorInicial - 1) * DirDeREpulsao - 0.25f * Vector3.up,
                    posInicial - 0.25f * Vector3.up + DirDeREpulsao * 25 * tempoDecorrido,
                    out hit)
                ||
                Physics.Linecast(
                    posInicial + 25 * (deslocadorInicial - 1) * DirDeREpulsao - 0.25f * ort,
                    posInicial - 0.25f * ort + DirDeREpulsao * 25 * tempoDecorrido,
                    out hit)
                ||
                Physics.Linecast(
                    posInicial + 25 * (deslocadorInicial - 1) * DirDeREpulsao + 0.25f * ort,
                    posInicial + 0.25f * ort + DirDeREpulsao * 25 * tempoDecorrido,
                    out hit)

                )
            {
                if (impactos % 10 == 0)
                {
                    GameObject Golpe   = GameController.g.El.retorna(DoJogo.impactoDeAgua);
                    Object     impacto = MonoBehaviour.Instantiate(Golpe, hit.point, Quaternion.identity);
                    MonoBehaviour.Destroy(impacto, 0.5f);

                    if (impactos == 0)
                    {
                        Dano.VerificaDano(hit.transform.gameObject, G, this);
                    }
                }
                impactos++;
            }
        }
    }