示例#1
0
        /// <summary>
        /// buff更新
        /// </summary>
        private void onBufferUpdateCall(GameEvent e)
        {
            BuffUpdatePackage buffEvent = (BuffUpdatePackage)e.data;
            ObjectCreature    creature  = buffEvent.creature;
            Impact            pImpact   = buffEvent.pImpact;
            bool isAdd = buffEvent.isAdd;

            //pImpact.GetImpactRow().m_conduce == 0
            if (!string.IsNullOrEmpty(pImpact.GetImpactRow().getBuffIconBig()))
            {
                // 光环
                // 更新到怒气条下
                EM_OBJECT_TYPE groupType = creature.GetGroupType();
                switch (groupType)
                {
                case EM_OBJECT_TYPE.EM_OBJECT_TYPE_HERO:
                {
                    if (isAdd)
                    {
                        mMenuPanel.onSelfAllBuffAdd(pImpact.GetImpactRow());
                    }
                    else
                    {
                        mMenuPanel.onSelfAllBuffRemove(pImpact.GetImpactRow());
                    }
                }
                break;

                case EM_OBJECT_TYPE.EM_OBJECT_TYPE_MONSTER:
                {
                    if (isAdd)
                    {
                        mMenuPanel.onEnemyAllBuffAdd(pImpact.GetImpactRow());
                    }
                    else
                    {
                        mMenuPanel.onEnemyAllBuffRemove(pImpact.GetImpactRow());
                    }
                }
                break;
                }
            }

            if (!string.IsNullOrEmpty(pImpact.GetImpactRow().getBuffIconSmall()))
            {
                // buff 单体
                // 更新到角色血条下
                if (isAdd)
                {
                    mBloodPanel.onSingleBuffAdd(creature.GetGuid(), pImpact.GetImpactRow());
                }
                else
                {
                    mBloodPanel.onSingleBuffRemove(creature.GetGuid(), pImpact.GetImpactRow());
                }
            }
        }
示例#2
0
        public bool CalcPassivitySpellTarget(ref FIGHTOBJECT_LIST targetlist)
        {
            SkillTemplate pRow = m_pSpellInfo.GetSpellRow();

            switch (m_pSpellInfo.GetTargetType())
            {
            case (int)EM_TARGET_TYPE.EM_TARGET_FRIEND:
            {
                int nID = -1;
                if (ObjectSelf.GetInstance().Teams.IsHeroInTeam(m_pHolder.GetGuid(), ref nID))
                {
                    for (int i = 0; i < GlobalMembers.MAX_TEAM_CELL_COUNT; ++i)
                    {
                        X_GUID     _guid = ObjectSelf.GetInstance().Teams.m_Matrix[nID, i];
                        ObjectCard obj   = ObjectSelf.GetInstance().HeroContainerBag.FindHero(_guid);
                        if (obj != null)
                        {
                            targetlist.Add((ObjectCreature)obj);
                        }
                    }
                }
            }
            break;

            case (int)EM_TARGET_TYPE.EM_TARGET_SELF:
            {
                targetlist.Add((ObjectCreature)m_pHolder);
            }
            break;

            default:
                break;
            }
            return(true);
        }
示例#3
0
        /// <summary>
        /// 血量变化
        /// </summary>
        private void onHpChangeCall(GameEvent e)
        {
            UI_HurtInfo info = (UI_HurtInfo)e.data;

            if (info != null)
            {
                ObjectCreature obj = info.pTarget;
                mBloodControl.UpdateBloodValue(obj.GetGuid(), (float)obj.GetHP() / obj.GetMaxHP());
                if (obj.GetHP() < 0)
                {
                    return;
                }
                if (obj.GetGroupType() == EM_OBJECT_TYPE.EM_OBJECT_TYPE_HERO)
                {
                    // hero
                    Transform trans = ((ObjectHero)obj).GetAnimation().EventControl.Pre_Head_T_EffectPoint;
                    if (info.nHurt > 0)
                    {
                        // 英雄加血
                        mNumberMgr.showNumber(System.Math.Abs(info.nHurt), HPNumberType.HP_HEAL, trans.position);
                    }
                    else
                    {
                        // 英雄掉血
                        mNumberMgr.showNumber(System.Math.Abs(info.nHurt), HPNumberType.HP_SELF_HURT, trans.position);
                    }
                }
                else if (obj.GetGroupType() == EM_OBJECT_TYPE.EM_OBJECT_TYPE_MONSTER)
                {
                    // monster
                    Transform trans = ((ObjectMonster)obj).GetAnimation().EventControl.Pre_Head_T_EffectPoint;
                    if (info.nHurt < 0)
                    {
                        //敌人掉血
                        if (info.bCritical)
                        {
                            // 暴击
                            mNumberMgr.showNumber(System.Math.Abs(info.nHurt), HPNumberType.HP_HEAVY, trans.position);
                        }
                        else
                        {
                            mNumberMgr.showNumber(System.Math.Abs(info.nHurt), HPNumberType.HP_ENEMY_HURT, trans.position);
                        }
                    }
                    else
                    {
                        // 敌人加血
                        mNumberMgr.showNumber(System.Math.Abs(info.nHurt), HPNumberType.HP_HEAL, trans.position);
                    }
                }
            }
        }
示例#4
0
    /// <summary>
    /// 指定一个静态特效立即失效。PS:必须通过持有人与特效名称查找
    /// </summary>
    /// <param name="pCaster"></param>
    /// <param name="_effectName"></param>
    public void DisableStaticEffect(ObjectCreature pCaster, string _effectName)
    {
        int nCount = m_EffectStaticList.Count;

        for (int i = 0; i < nCount; i++)
        {
            if (m_EffectStaticList[i].GetIsActivation() && m_EffectStaticList[i].GetEffectName().Equals(_effectName))
            {
                if (m_EffectStaticList[i].GetCasterObj().GetGuid().Equals(pCaster.GetGuid()))
                {
                    m_EffectStaticList[i].SetActivation(false);
                }
            }
        }
    }
示例#5
0
        public bool onSingleTargetFind(ObjectCreature obj)
        {
            EM_OBJECT_TYPE type = obj.GetGroupType();

            if ((mSkillTargetStruct.isForSelf && type == EM_OBJECT_TYPE.EM_OBJECT_TYPE_HERO) ||
                (!mSkillTargetStruct.isForSelf && type != EM_OBJECT_TYPE.EM_OBJECT_TYPE_HERO))
            {
                //不能选择自己 &&  选择的目标是自己
                if (!mSkillTargetStruct.isMyEff && obj.GetGuid().GUID_value == mSkillTargetStruct.mSelctRoleUID.GUID_value)
                {
                    return(false);
                }

                onRequestReleaseSkill(obj);
                return(true);
            }

            return(false);
        }
示例#6
0
    /// <summary>
    /// 死亡对象的特效从管理器中删除
    /// </summary>
    /// <param name="pDieObj"></param>
    public void OnRemoveDeadObjOfEffect(ObjectCreature pDieObj)
    {
        int nStaticCount = m_EffectStaticList.Count;

        for (int i = nStaticCount - 1; i >= 0; i--)
        {
            if (m_EffectStaticList[i].GetCasterObj() != null && m_EffectStaticList[i].GetCasterObj().GetGuid().Equals(pDieObj.GetGuid()))
            {
                GameObject obj = m_EffectStaticList[i].GetGameObject();
                Destroy(obj);
                obj = null;
                m_EffectStaticList.RemoveAt(i);
            }
        }

        int nSpellCount = m_EffectSpellList.Count;

        for (int i = nSpellCount - 1; i >= 0; i--)
        {
            if (m_EffectSpellList[i].GetCasterObj() != null && m_EffectSpellList[i].GetCasterObj().GetGuid().Equals(pDieObj.GetGuid()))
            {
                GameObject obj = m_EffectSpellList[i].GetGameObject();
                Destroy(obj);
                obj = null;
                m_EffectSpellList.RemoveAt(i);
            }
        }
    }