/// <summary> /// 实体死亡 /// </summary> /// <param name="entityID"></param> /// <param name="t"></param> public void OnEntityDead(int entityID, ENTITY_TYPE t) { if (entityID == CurrentSelectedID || entityID == EntityFactory.MainHeroID) { CurrentSelectedID = -1; ChangeBossBloodTarget(-1); } if (t == ENTITY_TYPE.TYPE_MONSTER) { if (m_BloodMap.ContainsKey(entityID)) { CacheBlood(m_BloodMap[entityID]); } if (BossBloodEntityTable.ContainsKey(entityID)) { BossBloodProityList.Remove(BossBloodEntityTable[entityID]); BossBloodEntityTable.Remove(entityID); } EntityLeaveBossBloodDistance(entityID); } if (t == ENTITY_TYPE.TYPE_PLAYER_ROLE) { SetDead(entityID, true); } }
public void DestroyALL() { ClearCache(); if (null != m_BloodMap) { foreach (KeyValuePair <int, UBlood> var in m_BloodMap) { UBlood ub = var.Value; if (ub != null) { var temp = ub.gameObject; ub.resNode.DestroyInstanceRes(ref temp); ub.Clear(); } } m_curIndexArry = new Vector2[3]; m_BloodMap.Clear(); } if (null != BossBlood) { var temp = BossBlood.gameObject; BossBlood.resNode.DestroyInstanceRes(ref temp); BossBlood.Clear(); BossBlood = null; CurrentBossBloodHostID = -1; } BossBloodEntityTable.Clear(); BossBloodProityList.Clear(); m_unUseCanvasNodeMap.Clear(); }
/// <summary> /// 实体死亡 /// </summary> /// <param name="entityID"></param> public static void OnEntityDead(int entityID, ENTITY_TYPE t) { if (Movie.GetSingleton <GfxBloodMovie>() == null) { return; } if (entityID == CurrentSelectedID || entityID == EntityFactory.MainHeroID) { CurrentSelectedID = -1; ChangeBossBloodTarget(-1); } //怪物 if (t == ENTITY_TYPE.TYPE_MONSTER) { if (m_BloodMap.ContainsKey(entityID)) { if (OptimitzedControlPlane.Instance.EnityCreateOptimize) { CacheBlood(m_BloodMap[entityID]); } else { Destroy(m_BloodMap[entityID]); } } if (BossBloodEntityTable.ContainsKey(entityID)) { BossBloodProityList.Remove(BossBloodEntityTable[entityID]); BossBloodEntityTable.Remove(entityID); } EntityLeaveBossBloodDistance(entityID); } //玩家 if (t == ENTITY_TYPE.TYPE_PLAYER_ROLE) { if (m_BloodMap.ContainsKey(entityID)) { //如果是主角,特殊处理一下 if (entityID == EntityFactory.MainHeroID) { bPlayerDead = true; m_BloodMap[entityID].SetPlayerVisible(false); } m_BloodMap[entityID].SetVisible(false); } } }
public void ChangeMask(EntityView ev, bool bUseInitMask = false) { if (ev != null) { //if (ev.Type == ENTITY_TYPE.TYPE_MONSTER) { int mas = 0; if (bUseInitMask) { mas = ev.InitMaskFlag; } else { mas = ev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MASK); if (!m_bFirstVisibleMask) { m_bFirstVisibleMask = true; return; } } if (IsHaveBossBlood(mas)) { if (!BossBloodEntityTable.ContainsKey(ev.ID)) { BossBloodEntityTable.Add(ev.ID, ev); BossBloodProityList.Add(ev); SortBossProityList(); } } if (mas != 0) { bool val = (mas & (int)ENTITY_MASKFLAG.MASKFLAG_HIDE_BLOOD) == (int)ENTITY_MASKFLAG.MASKFLAG_HIDE_BLOOD; SetVisible(ev.ID, !val); } else { SetVisible(ev.ID, true); } } } }
private static void SortBossBloodProityList() { if (BossBloodProityList.Count > 1) { BossBloodProityList.Sort((EntityView lef, EntityView rig) => { ////只看优先级 //return lef.BossBloodShowPriority.CompareTo(rig.BossBloodShowPriority); //先看优先级,然后再看距离 if (lef.BossBloodShowPriority == rig.BossBloodShowPriority) { return(lef.BossBloodShowDistance.CompareTo(rig.BossBloodShowDistance)); } return(lef.BossBloodShowPriority.CompareTo(rig.BossBloodShowPriority)); ////距离相当,则按照优先级排序 //if (lef.BossBloodShowDistance == rig.BossBloodShowDistance) //{ // if (lef.BossBloodShowPriority == rig.BossBloodShowPriority) // { // return 0; // } // if (lef.BossBloodShowPriority > rig.BossBloodShowPriority) // { // return 1; // } // if (lef.BossBloodShowPriority < rig.BossBloodShowPriority) // { // return -1; // } //} //return lef.BossBloodShowDistance.CompareTo(rig.BossBloodShowDistance); }); } }
/// <summary> /// 清除所有的组件 /// </summary> public static void DestroyALL() { if (Movie.GetSingleton <GfxBloodMovie>() == null) { return; } ClearCache(); if (null != m_BloodMap) { foreach (KeyValuePair <int, GfxBlood> var in m_BloodMap) { GfxBlood gba = var.Value; if (GfxBloodMovie.Instance != null) { GfxBloodMovie.Instance.RemoveMovieAS3(gba.Instance); } gba.Clear(); } CurrentColIndex = 0; CurrentRowIndex = 0; UnUsedMovieNodeList.Clear(); m_BloodMap.Clear(); } if (null != BossBlood) { if (GfxDynamicMovie.Instance != null) { GfxDynamicMovie.Instance.RemoveMovieAS3(BossBlood.Instance); } BossBlood.Clear(); BossBlood = null; CurrentBossBlodHostID = -1; } BossBloodEntityTable.Clear(); BossBloodProityList.Clear(); //GFxWarPauseMenu.BoolEvent -= ChangeBloodSetting; }