Beispiel #1
0
 void ReleaseBuff(BuffKey index)
 {
     //TraceUtil.Log( "Remove Buff UID" +  index.UID + "   index:" + index.Index);
     if (m_buffEffectList[index]._effect != null)
     {
         m_buffEffectList[index]._effect.GetComponent <BuffEffectController>().SelfRelease();
     }
     m_buffEffectList.Remove(index);
 }
Beispiel #2
0
    //void FireBuff(SMsgActionWorldObjectAddBuff_SC evt)
    //{

    //    //Transform target = PlayerManager.Instance.FindPlayer(evt.SMsgActionSCHead.uidEntity).transform;

    //    if (m_buffEffectList.ContainsKey(evt.dwIndex))
    //    {
    //        ReleaseBuff(evt.dwIndex);
    //    }

    //    if (!m_handled)
    //    {
    //        m_handled = true;
    //        LaunchBuff(evt);
    //    }
    //}

    public void LaunchBuff(SMsgActionWorldObjectAddBuff_SC evt)
    {
        TypeID      entityType;
        EntityModel entityTarget = EntityController.Instance.GetEntityModel(evt.SMsgActionSCHead.uidEntity, out entityType);

        if (entityTarget == null || entityTarget.GO == null)
        {
            return;
        }

        GameObject effectPrefab = BattleConfigManager.Instance.BuffConfigList[evt.dwBuffId]._buffEffectPrefab;

        if (null != effectPrefab)
        {
            Transform buffTarget = null;

            if (BattleConfigManager.Instance.BuffConfigList[evt.dwBuffId]._buffEffMount != "0")
            {
                entityTarget.GO.transform.RecursiveFindObject(BattleConfigManager.Instance.BuffConfigList[evt.dwBuffId]._buffEffMount, out buffTarget);
                if (buffTarget == null)
                {
                    TraceUtil.Log(SystemModel.Common, TraceLevel.Error, "[buffTarget == null]");
                    buffTarget = entityTarget.GO.transform;
                }
            }
            else
            {
                buffTarget = entityTarget.GO.transform;
            }

            //add by lee : add sound
            if (BattleConfigManager.Instance.BuffConfigList[evt.dwBuffId]._buffSound != "0")
            {
                SoundManager.Instance.PlaySoundEffect(BattleConfigManager.Instance.BuffConfigList[evt.dwBuffId]._buffSound);
            }

            GameObject effectObj = GameObjectPool.Instance.AcquireLocal(effectPrefab, buffTarget.position, buffTarget.rotation);
            effectObj.transform.parent = buffTarget;
            effectObj.GetComponent <BuffEffectController>().Emit();
            BuffEffectBase buffEffect = new BuffEffectBase();
            buffEffect._effect = effectObj;
            buffEffect._buffID = evt.dwBuffId;

            BuffKey key = new BuffKey();
            key.UID   = evt.SMsgActionSCHead.uidEntity;
            key.Index = evt.dwIndex;
            m_buffEffectList.Add(key, buffEffect);
        }

        //PlaySoundEffect(evt.Param);
    }
Beispiel #3
0
    //public void BuffStart(SMsgActionWorldObjectAddBuff_SC evt)
    //{

    //    if (!m_evtList.ContainsKey(evt.dwBuffId))
    //    {
    //        m_evtList.Add(evt.dwBuffId, evt);
    //        this.m_handled = false;
    //        FireBuff(evt);
    //    }
    //    else if (m_evtList[evt.dwBuffId].dwLevel < evt.dwLevel)
    //    {
    //        m_evtList.Remove(evt.dwBuffId);
    //        m_buffEffectList[evt.dwIndex]._effect.GetComponent<BuffEffectController>().SelfRelease();
    //        m_evtList.Add(evt.dwBuffId, evt);
    //        this.m_handled = false;
    //        FireBuff(evt);
    //    }
    //}

    /// <summary>
    /// 删除Buff动画和特效
    /// </summary>
    /// <param name="index"></param>
    public void Remove(SMsgActionWorldObjectRemoveBuff_SC removeItem)
    {
        BuffKey key = new BuffKey();

        key.UID   = removeItem.SMsgActionSCHead.uidEntity;
        key.Index = removeItem.DwIndex;

        if (m_buffEffectList.ContainsKey(key))
        {
            //m_evtList.Remove(m_buffEffectList[index]._buffID);
            ReleaseBuff(key);
        }
        //m_handled = false;
    }