/// <summary> /// 英雄死亡 /// </summary> /// <param name="buf"></param> private void OnHeroDeath(KProtoBuf buf) { S2C_HERO_DEATH respond = buf as S2C_HERO_DEATH; //NetworkManager.Instance.GetDropItemController().GetDropItemManager().SetDropItemInfoByDeath(m_GameplayProxy, respond.heroID, respond.drop_list); //Debug.Log("OnHeroDeath heroID:" + respond.heroID); //ShipItemsProxy shipItemsProxy = GameFacade.Instance.RetrieveProxy(ProxyName.ShipItemsProxy) as ShipItemsProxy; //shipItemsProxy.RemoveShipItems(respond.heroID); MSAIBossProxy msab = GameFacade.Instance.RetrieveProxy(ProxyName.MSAIBossProxy) as MSAIBossProxy; //李贺新的战场AI召唤出来的小怪在某种状态下不播死亡爆炸特效 if (!msab.IsChangeDeadEff(respond.heroID)) { // TODO. List <DropInfo> myDropList = new List <DropInfo>(); foreach (var item in respond.drop_list) { var dInfo = new DropInfo(); dInfo.player_uid = item.player_uid; dInfo.chest_tid = item.chest_tid; dInfo.ship_tlv = item.ship_tlv; dInfo.quality = item.ship_tlv; myDropList.Add(dInfo); } m_EntityManager.SendEventToEntity(respond.heroID, ComponentEventName.Dead, new DeadEvent() { Uid = respond.heroID, DropList = myDropList }); } else { //m_EntityManager.SendEventToEntity(respond.heroID, ComponentEventName.SpacecraftStop, null); //msab.AddMonsterEffect(respond.heroID); } GameFacade.Instance.SendNotification(NotificationName.EntityDeath, new EntityDeathInfo() { heroID = respond.heroID, killerID = respond.KillerID }); }
public virtual void AddDeadMessage(S2C_HERO_DEATH respond) { msg_case.AddDeadMessage(respond); }
public void AddDeadMessage(S2C_HERO_DEATH respond) { death_msgs.Add(respond); }
public void OnHeroDeathOp(KProtoBuf buf, bool fristTime) { S2C_HERO_DEATH respond = buf as S2C_HERO_DEATH; SceneEntity targetHero = GetSceneObject(respond.heroID) as SceneEntity; SceneEntity killerHero = GetSceneObject(respond.KillerID) as SceneEntity; if (null == targetHero) { return; } if (targetHero == mainHero) { ReliveView.GetInstance().ShowView(); } targetHero.property.isDeaded = true; uint lastSkillId = targetHero.property.lastHitSkillId; KSkillDisplay skillDisplay = KConfigFileManager.GetInstance().GetSkillDisplay(lastSkillId, targetHero.property.tabID); if (fristTime && null != killerHero) { KActiveSkill activeSkill = KConfigFileManager.GetInstance().GetActiveSkill(lastSkillId, 1); if (null != activeSkill && activeSkill.ClientCache) { if (null != killerHero.ActiveAction) { killerHero.ActiveAction.AddDeadMessage(respond); return; } } else if (null != killerHero && skillDisplay.HitDelayTimeScale > 0.00001f) { float distance = Vector3.Distance(killerHero.Position, targetHero.Position); float _time = distance * skillDisplay.HitDelayTimeScale; DelayCallManager.instance.CallFunction(OnHeroDeathParam, _time, buf, false); return; } } if (null != targetHero) { if (targetHero.property.activeAction.isFlying) { if (skillDisplay.DeadType != KSkillDisplay.DEAD_TYPE.PHYSICS) { targetHero.property.isDeadTemp = true; return; } } targetHero.DispatchEvent(ControllerCommand.FinishImmediate); targetHero.DispatchEvent(ControllerCommand.CLEAR_BUFF); targetHero.Action.ToDead(killerHero); targetHero.property.isDeadTemp = true; if (null != killerHero) { if (killerHero.gameObject.GetComponent <AttackSlow>() == null) { if (null == skillDisplay || skillDisplay.DieAttackSlowTime <= 0) { return; } killerHero.DispatchEvent( ControllerCommand.SLOW, killerHero.AnimCmp.GetLastLogicAnimName(), skillDisplay.DieAttackSlowTime, skillDisplay.DieAttackSpeed); } } } }