public override void OnShow(object msg) { base.OnShow(msg); MSAIBossProxy msab = GameFacade.Instance.RetrieveProxy(ProxyName.MSAIBossProxy) as MSAIBossProxy; m_AIUid = msab.GetCurrentAIUId(); StartUpdate(); UIManager.Instance.StartCoroutine(DelayToClose()); }
private void OnBuffAdd(KProtoBuf buf) { var msg = buf as S2C_ADD_BUFF_NOTIFY; SpacecraftEntity entity = m_GameplayProxy.GetEntityById <SpacecraftEntity>(msg.herID); if (entity != null) { AddBuffEvent buffEvent = new AddBuffEvent(); buffEvent.buff = new BuffVO(msg.wBuffID, msg.byOverLap, Time.time, msg.nTime / 1000.0f, msg.link_id, msg.is_master != 0); m_EntityManager.SendEventToEntity(msg.herID, ComponentEventName.BuffAdd, buffEvent); MSAIBossProxy mSAI = GameFacade.Instance.RetrieveProxy(ProxyName.MSAIBossProxy) as MSAIBossProxy; mSAI.CheckBuffPlaySound(msg.wBuffID, true); } }
private void OnBuffRemove(KProtoBuf buf) { var msg = buf as S2C_DEL_BUFF_NOTIFY; SpacecraftEntity entity = m_GameplayProxy.GetEntityById <SpacecraftEntity>(msg.herID); if (entity != null) { RemoveBuffEvent buffEvent = new RemoveBuffEvent(); buffEvent.buffID = msg.wBuffID; m_EntityManager.SendEventToEntity(msg.herID, ComponentEventName.BuffRemove, buffEvent); } MSAIBossProxy mSAI = GameFacade.Instance.RetrieveProxy(ProxyName.MSAIBossProxy) as MSAIBossProxy; mSAI.CheckBuffPlaySound(msg.wBuffID, false); }
public override void OnShow(object msg) { base.OnShow(msg); m_AnimatorController.OnAnimationEvent += OnAnimationEvent; ServerTimeUtil.Instance.OnTick += OnUpdate; MSAIBossProxy msab = GameFacade.Instance.RetrieveProxy(ProxyName.MSAIBossProxy) as MSAIBossProxy; if (msab != null && msab.GetPlayerIsInBattle()) { WwiseUtil.PlaySound((int)SoundID.LoadDown, false, null); // TODO msab.SetPlayerIsInBattle(false); } else { WwiseUtil.PlaySound((int)SoundID.LoadUp, false, null); } }
/// <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 }); }
/// <summary> /// 删除buf /// </summary> private static void DisposeDeleteBuf(DeleteBuf result) { BaseEntity entity = GameplayManager.Instance.GetEntityManager().GetEntityById <BaseEntity>(result.HeroId); if (entity == null) { return; } Leyoutech.Utility.DebugUtility.LogWarning("广播", string.Format("删除buf EntitId = {0}, BuffId = {1}", result.HeroId, result.BufId)); RemoveBuffEvent buffEvent = new RemoveBuffEvent(); buffEvent.buffID = result.BufId; entity.SendEvent(ComponentEventName.BuffRemove, buffEvent); MSAIBossProxy mSAI = GameFacade.Instance.RetrieveProxy(ProxyName.MSAIBossProxy) as MSAIBossProxy; mSAI.CheckBuffPlaySound(result.BufId, false); }
/// <summary> /// 添加buf /// </summary> private static void DisposeAddBuf(AddBuf result) { BaseEntity entity = GameplayManager.Instance.GetEntityManager().GetEntityById <BaseEntity>(result.HeroId); if (entity == null) { return; } Leyoutech.Utility.DebugUtility.LogWarning("广播", string.Format("添加buf EntitId = {0} , BuffId = {1}", result.HeroId, result.BufId)); AddBuffEvent buffEvent = new AddBuffEvent(); buffEvent.buff = new BuffVO(result.BufId, (int)result.Overlap, Time.time, result.Time / 1000.0f, result.LinkId, result.IsMaster); entity.SendEvent(ComponentEventName.BuffAdd, buffEvent); MSAIBossProxy mSAI = GameFacade.Instance.RetrieveProxy(ProxyName.MSAIBossProxy) as MSAIBossProxy; mSAI.CheckBuffPlaySound(result.BufId, true); }
/// <summary> /// 切换地图 /// </summary> /// <param name="buf">协议内容</param> private void OnSwitchMap(KProtoBuf buf) { S2C_SWITCH_MAP respond = buf as S2C_SWITCH_MAP; CfgEternityProxy cfgEternityProxy = GameFacade.Instance.RetrieveProxy(ProxyName.CfgEternityProxy) as CfgEternityProxy; if (cfgEternityProxy.GetCurrentMapData().ByteBuffer == null || cfgEternityProxy.GetCurrentMapId() != respond.mapID) { uint gamingMapId = respond.mapID; GameFacade.Instance.SendNotification(NotificationName.MSG_SWITCH_SCENE_START); cfgEternityProxy.SetCurrentMapData(gamingMapId); Vector3 worldPos = new Vector3(respond.posX, respond.posY, respond.posZ); ulong areaId = respond.area_id; GameMainMediator gameMainMediator = GameFacade.Instance.RetrieveMediator(UIPanel.GameMainMediator) as GameMainMediator; if (gameMainMediator == null) { gameMainMediator = new GameMainMediator(); GameFacade.Instance.RegisterMediator(gameMainMediator); gameMainMediator.SwtichMap(areaId, worldPos); } else { gameMainMediator.SwtichMap(areaId, worldPos); } // TODO. //切图直接清缓存 MSAIBossProxy aiproxy = GameFacade.Instance.RetrieveProxy(ProxyName.MSAIBossProxy) as MSAIBossProxy; aiproxy.CleanAllMonster(); MineDropItemManager.Instance.ClearAllInfo(); DropItemManager.Instance.ClearInfo(); } }
//private void OnCollisionEnter(Collision obj) //{ // OnSpacecraftSlidingEnd(); //} //private void OnCollisionStay(Collision obj) //{ //} //private void OnCollisionExit(Collision obj) //{ //} //private void OnRelive(IComponentEvent obj) //{ // m_DeadFxState = DeadState.None; // RealTimerUtil.Instance.Unregister(m_ShowDeadFxTimerId); //} private void OnDead(IComponentEvent obj) { DeadEvent deadEvent = obj as DeadEvent; if (!m_SpacecraftDeadProperty.IsDead()) { return; } m_DropInfoList = deadEvent.DropList; /// TODO.宝藏特殊处理 /// 服务器创建后立马死亡 //if (m_SpacecraftDeadProperty.IsNotHaveAva()) //{ // if (m_DropInfoList != null && m_DropInfoList.Count > 0) // { // DropItemManager.Instance.SetDropItemInfoByDeath(m_SpacecraftDeadProperty.UId(), m_DropInfoList); // } // return; //} /// npc死亡 if (m_SpacecraftDeadProperty.GetHeroType() != KHeroType.htPlayer) { Npc npcVO = m_SpacecraftDeadProperty.GetNPCTemplateVO(); if (npcVO.SoundDead > 0) { SendEvent(ComponentEventName.PlaySound, new PlaySound() { SoundID = (int)npcVO.SoundDead }); } /// 导演死检查音乐盒子 if (m_SpacecraftDeadProperty.GetHeroType() == KHeroType.htPlotMonster) { MSAIBossProxy msab = GameFacade.Instance.RetrieveProxy(ProxyName.MSAIBossProxy) as MSAIBossProxy; msab.DestroySoundBox(m_SpacecraftDeadProperty.UId()); } /// TODO.干扰器死亡 else if (m_SpacecraftDeadProperty.GetHeroType() == KHeroType.htDisturbor) { /// 自己的停掉 SpacecraftEntity ownerEntity = m_SpacecraftDeadProperty.GetOwner(); ownerEntity.SendEvent(ComponentEventName.PlaySound, new PlaySound() { SoundID = (int)WwiseMusic.Treasure_Disturbor_Sound5, Transform = ownerEntity.GetSkinTransform() }); TreasureHuntProxy treasure = GameFacade.Instance.RetrieveProxy(ProxyName.TreasureHuntProxy) as TreasureHuntProxy; treasure.DisturborSoundEffect(m_SpacecraftDeadProperty.GetOwner().m_EntityFatherOwnerID); } } m_SpacecraftDeadProperty.SetTarget(null, null); #region 待服务器在new_hero协议中添加复活状态逻辑后删除 if (m_SpacecraftDeadProperty.IsMain()) { m_GameplayProxy = GameFacade.Instance.RetrieveProxy(ProxyName.GameplayProxy) as GameplayProxy; if (m_SpacecraftDeadProperty.IsMain()) { CfgEternityProxy eternityProxy = GameFacade.Instance.RetrieveProxy(ProxyName.CfgEternityProxy) as CfgEternityProxy; m_GameplayProxy.SetDeadMapID(eternityProxy.GetCurrentMapData().GamingmapId); } } #endregion ShowRelivePanel(deadEvent); SpacecraftPresentation presentation = m_SpacecraftDeadProperty.GetPresentation(); if (presentation != null) { if (presentation.SpacecraftDeadType != SpacecraftPresentation.SpacecraftType.Warship) { OnDeviceDead(deadEvent); } } }