/// <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()); } } }
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); }
/// <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); } } } }
/// <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); } } } }
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); }
/// <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); } } }