/// <summary> /// 摧毁指定的组件 /// </summary> /// <param name="instance">需要清除的Blood</param> public static void Destroy(GfxBlood instance) { if (Movie.GetSingleton <GfxBloodMovie>() == null) { return; } if (null == instance) { return; } int id = instance.ID; if (instance.movieNode.isValid) { UnUsedMovieNodeList.Enqueue(instance.movieNode); } if (GfxBloodMovie.Instance != null) { GfxBloodMovie.Instance.RemoveMovieAS3(instance.Instance); } instance.Clear(); if (m_BloodMap.ContainsKey(id)) { m_BloodMap[id] = null; m_BloodMap.Remove(id); } instance = null; }
/// <summary> /// 为血条分配一个位置,分配失败,则表示Movie已经满了。 /// </summary> /// <param name="t"></param> /// <returns></returns> private static bool AllocBloodPos(ENTITY_TYPE t, ref MovieNode btr) { if (m_entiySizeMap.ContainsKey(t)) { Vector2 BloodSize = m_entiySizeMap[t]; btr.isValid = false; if (UnUsedMovieNodeList.Count > 0) { MovieNode bt = UnUsedMovieNodeList.Dequeue(); btr.RowIndex = bt.RowIndex; btr.ColIndex = bt.ColIndex; btr.start.x = MovieCell_Width * bt.RowIndex; btr.start.y = MovieCell_Height * bt.ColIndex; btr.end.x = btr.start.x + BloodSize.x; btr.end.y = btr.start.y + BloodSize.y; btr.vSize = BloodSize; btr.isValid = true; } else { btr = new MovieNode(); btr.start.x = MovieCell_Width * CurrentRowIndex; btr.start.y = MovieCell_Height * CurrentColIndex; btr.end.x = btr.start.x + BloodSize.x; btr.end.y = btr.start.y + BloodSize.y; btr.vSize = BloodSize; btr.RowIndex = CurrentRowIndex; btr.ColIndex = CurrentColIndex; CurrentRowIndex++; if (CurrentRowIndex >= MaxRowCount) { CurrentColIndex++; if (CurrentColIndex >= MaxColCount) { return(false); } CurrentRowIndex = 0; } btr.isValid = true; } return(true); } return(false); }
/// <summary> /// 为头顶名分配一个位置,分配失败,则表示Movie已经满了。 /// </summary> /// <param name="btr"></param> /// <returns></returns> private static bool AllocTopNamePos(ref MovieNode btr) { btr.isValid = false; if (UnUsedMovieNodeList.Count > 0) { MovieNode bt = UnUsedMovieNodeList.Dequeue(); btr.RowIndex = bt.RowIndex; btr.ColIndex = bt.ColIndex; btr.start.x = MovieCell_Width * bt.RowIndex; btr.start.y = MovieCell_Height * bt.ColIndex; btr.end.x = btr.start.x + TopNameSize.x; btr.end.y = btr.start.y + TopNameSize.y; btr.vSize = TopNameSize; btr.isValid = true; } else { btr.start.x = MovieCell_Width * CurrentRowIndex; btr.start.y = MovieCell_Height * CurrentColIndex; btr.end.x = btr.start.x + TopNameSize.x; btr.end.y = btr.start.y + TopNameSize.y; btr.vSize = TopNameSize; btr.RowIndex = CurrentRowIndex; btr.ColIndex = CurrentColIndex; CurrentRowIndex++; if (CurrentRowIndex >= MaxRowCount) { CurrentColIndex++; if (CurrentColIndex >= MaxColCount) { return(false); } CurrentRowIndex = 0; } btr.isValid = true; } return(true); }
/// <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; }
/// <summary> /// 摧毁所有的组件 /// </summary> public static void DestroyALL() { if (Movie.GetSingleton <TopNameMovie>() == null) { return; } ClearCache(); if (null != m_TopNameMap) { foreach (KeyValuePair <int, TopName> var in m_TopNameMap) { if (TopNameMovie.Instance != null) { TopNameMovie.Instance.RemoveMovieAS3(var.Value.Instance); } var.Value.Clear(); } m_TopNameMap.Clear(); CurrentColIndex = 0; CurrentRowIndex = 0; UnUsedMovieNodeList.Clear(); } }