public void init()
    {
        if (dMon != null)
        {
            return;
        }

        dMon = new Dictionary <int, SXML>();
        List <SXML> l = XMLMgr.instance.GetSXMLList("monsters.monsters");

        foreach (SXML xml in l)
        {
            dMon[xml.getInt("id")] = xml;
        }

        if (dMonEff != null)
        {
            return;
        }

        dMonEff = new Dictionary <string, MonEffData>();
        List <SXML> xmleff = XMLMgr.instance.GetSXMLList("effect.eff");

        foreach (SXML xml in xmleff)
        {
            MonEffData one = new MonEffData();
            one.id       = xml.getString("id");
            one.romote   = xml.getInt("romote") == 1;
            one.Lockpos  = xml.getInt("romote") == 2;
            one.file     = xml.getString("file");
            one.y        = xml.getFloat("y");
            one.f        = xml.getFloat("f");
            one.sound    = xml.getString("sound");
            one.rotation = xml.getFloat("rotation");
            if (xml.getFloat("speed") == -1)
            {
                one.speed = 1;
            }
            else
            {
                one.speed = xml.getFloat("speed");
            }
            dMonEff[one.id] = one;
        }
    }
Beispiel #2
0
    public void init()
    {
        bool flag = this.dMon != null;

        if (!flag)
        {
            this.dMon = new Dictionary <int, SXML>();
            List <SXML> sXMLList = XMLMgr.instance.GetSXMLList("monsters.monsters", "");
            foreach (SXML current in sXMLList)
            {
                this.dMon[current.getInt("id")] = current;
            }
            bool flag2 = this.dMonEff != null;
            if (!flag2)
            {
                this.dMonEff = new Dictionary <string, MonEffData>();
                List <SXML> sXMLList2 = XMLMgr.instance.GetSXMLList("effect.eff", "");
                foreach (SXML current2 in sXMLList2)
                {
                    MonEffData monEffData = default(MonEffData);
                    monEffData.id       = current2.getString("id");
                    monEffData.romote   = (current2.getInt("romote") == 1);
                    monEffData.Lockpos  = (current2.getInt("romote") == 2);
                    monEffData.file     = current2.getString("file");
                    monEffData.y        = current2.getFloat("y");
                    monEffData.f        = current2.getFloat("f");
                    monEffData.sound    = current2.getString("sound");
                    monEffData.rotation = current2.getFloat("rotation");
                    bool flag3 = current2.getFloat("speed") == -1f;
                    if (flag3)
                    {
                        monEffData.speed = 1f;
                    }
                    else
                    {
                        monEffData.speed = current2.getFloat("speed");
                    }
                    this.dMonEff[monEffData.id] = monEffData;
                }
            }
        }
    }
    public void onSFX_EFF(string id)
    {
        bool flag = !MonsterMgr._inst.dMonEff.ContainsKey(id);

        if (!flag)
        {
            MonEffData monEffData = MonsterMgr._inst.dMonEff[id];
            Quaternion rotation   = base.transform.rotation;
            Quaternion rotation2  = Quaternion.Euler(0f, monEffData.rotation, 0f);
            Vector3    position   = base.transform.position + rotation2 * base.transform.forward * monEffData.f;
            position.y += monEffData.y;
            bool romote = monEffData.romote;
            if (romote)
            {
                bool flag2 = this.m_monRole.m_LockRole != null && this.m_monRole.m_LockRole.m_curModel != null;
                if (flag2)
                {
                    this.m_monRole.TurnToRole(this.m_monRole.m_LockRole, false);
                    GameObject original = Resources.Load <GameObject>(monEffData.file);
                    GameObject bult     = UnityEngine.Object.Instantiate(original, position, rotation) as GameObject;
                    bult.transform.SetParent(U3DAPI.FX_POOL_TF, false);
                    Transform real_track = bult.transform.FindChild("t");
                    bool      flag3      = real_track != null;
                    if (flag3)
                    {
                        bool flag4 = real_track.GetComponent <Animator>() != null;
                        if (flag4)
                        {
                            real_track.GetComponent <Animator>().enabled = false;
                        }
                        real_track.gameObject.layer = EnumLayer.LM_BT_FIGHT;
                        float   num       = Vector3.Distance(base.transform.position, this.m_monRole.m_LockRole.m_curModel.position);
                        Vector3 position2 = this.m_monRole.m_LockRole.m_curModel.position;
                        position2.y += this.m_monRole.m_LockRole.headOffset.y * 3f / 4f;
                        Tweener t = bult.transform.DOLocalMove(position2, num * 0.03f / monEffData.speed, false);
                        t.SetUpdate(true);
                        switch (UnityEngine.Random.Range(0, 4))
                        {
                        case 1:
                            t.SetEase(Ease.InQuad);
                            break;

                        case 2:
                            t.SetEase(Ease.InCirc);
                            break;

                        case 3:
                            t.SetEase(Ease.InCubic);
                            break;

                        case 4:
                            t.SetEase(Ease.InExpo);
                            break;
                        }
                        t.OnComplete(delegate
                        {
                            bool flag6 = bult.transform != null && bult.transform.FindChild("t") != null;
                            if (flag6)
                            {
                                Transform transform = real_track.FindChild("f");
                                bool flag7          = transform != null;
                                if (flag7)
                                {
                                    transform.GetComponent <Animator>().SetTrigger(EnumAni.ANI_T_FXDEAD);
                                }
                                UnityEngine.Object.Destroy(bult, 2f);
                            }
                        });
                    }
                }
            }
            else
            {
                bool lockpos = monEffData.Lockpos;
                if (lockpos)
                {
                    SceneFXMgr.Instantiate(monEffData.file, this.m_monRole.m_LockRole.m_curModel.position, rotation, 4f);
                }
                else
                {
                    SceneFXMgr.Instantiate(monEffData.file, position, rotation, 4f);
                }
            }
            bool flag5 = monEffData.sound != "null";
            if (flag5)
            {
                MediaClient.instance.PlaySoundUrl("audio/eff/" + monEffData.sound, false, null);
            }
        }
    }
Beispiel #4
0
    public void onSFX_EFF(string id)
    {
        if (!MonsterMgr._inst.dMonEff.ContainsKey(id))
        {
            return;
        }
        MonEffData one = MonsterMgr._inst.dMonEff[id];

        Quaternion rotation = transform.rotation;

        Quaternion add_rotation = Quaternion.Euler(0, one.rotation, 0);

        Vector3 pos = transform.position + add_rotation * transform.forward * one.f;

        pos.y += one.y;

        if (one.romote)
        {//子弹类型
         //技能eff展示子弹类型 (定点,必中)
            if (m_monRole.m_LockRole != null && m_monRole.m_LockRole.m_curModel != null)
            {
                m_monRole.TurnToRole(m_monRole.m_LockRole, false);
                GameObject bult_go = GAMEAPI.ABFight_LoadPrefab(one.file);

                GameObject bult = GameObject.Instantiate(bult_go, pos, rotation) as GameObject;
                Destroy(bult, desTime);
                bult.transform.SetParent(U3DAPI.FX_POOL_TF, false);

                Transform real_track = bult.transform.FindChild("t");
                if (real_track != null)
                {
                    if (real_track.GetComponent <Animator>() != null)
                    {
                        real_track.GetComponent <Animator>().enabled = false;
                    }
                    real_track.gameObject.layer = EnumLayer.LM_BT_FIGHT;

                    float   dis     = Vector3.Distance(transform.position, m_monRole.m_LockRole.m_curModel.position);
                    Vector3 end_pos = m_monRole.m_LockRole.m_curModel.position;
                    end_pos.y += m_monRole.m_LockRole.headOffset.y * 3 / 4;

                    Tweener tween1 = bult.transform.DOLocalMove(end_pos, dis * 0.03f / one.speed);
                    tween1.SetUpdate(true);
                    int rang = UnityEngine.Random.Range(0, 4);
                    switch (rang)
                    {
                    case 1:
                        tween1.SetEase(Ease.InQuad);
                        break;

                    case 2:
                        tween1.SetEase(Ease.InCirc);
                        break;

                    case 3:
                        tween1.SetEase(Ease.InCubic);
                        break;

                    case 4:
                        tween1.SetEase(Ease.InExpo);
                        break;
                    }
                    tween1.OnComplete(delegate()
                    {
                        if (bult.transform != null && bult.transform.FindChild("t") != null)
                        {
                            Transform real_fx = real_track.FindChild("f");
                            if (real_fx != null)
                            {
                                real_fx.GetComponent <Animator>().SetTrigger(EnumAni.ANI_T_FXDEAD);
                            }
                            GameObject.Destroy(bult, 2f);
                        }
                    });
                }
            }
        }
        else if (one.Lockpos)
        {//目标位置特效
            if (m_monRole.ismapfx && m_monRole.fxvec != Vector3.zero)
            {
                GameObject pre  = GAMEAPI.ABFight_LoadPrefab(one.file);
                GameObject bult = GameObject.Instantiate(pre, m_monRole.fxvec, rotation) as GameObject;
                bult.transform.SetParent(U3DAPI.FX_POOL_TF, false);
                int     ss     = 0;
                Tweener tween1 = DOTween.To(() => ss, (float s) => {
                }, (float)0, 10f);
                tween1.OnComplete(delegate() {
                    if (bult.GetComponent <Animator>() != null)
                    {
                        bult.GetComponent <Animator>().enabled = false;
                        //bult.transform.FindChild("loop").gameObject.SetActive(false);
                        //bult.transform.FindChild("end").gameObject.SetActive(true);
                    }
                    GameObject.Destroy(bult, 4f);
                });
                // SceneFXMgr.Instantiate(one.file, m_monRole.fxvec, rotation, 4f);
                m_monRole.ismapfx = false;
            }
            else
            {
                SceneFXMgr.Instantiate(one.file, m_monRole.m_LockRole.m_curModel.position, rotation, 4f);
            }
        }
        else
        {
            SceneFXMgr.Instantiate(one.file, pos, rotation, 4f);
        }

        if (one.sound != "null")
        {
            MediaClient.instance.PlaySoundUrl("audio_eff_" + one.sound, false, null);
        }
    }