private void MoveToTop(GameComponent item, GameComponentCollection itemList) { int layer = itemList.IndexOf(item); int MaxLayer = itemList.Count - 1; if (layer > MaxLayer) { Console.WriteLine("错误:指定层级不存在于itemList当中!"); return; } GameComponent srcItem = itemList[layer]; for (int i = layer + 1; i <= itemList.Count - 1; i++) { itemList[i - 1] = itemList[i]; } itemList[MaxLayer] = srcItem; //SetTypeList(itemList); }
private void MoveToUpperLayer(GameComponent item, GameComponentCollection itemList) { int layer = itemList.IndexOf(item); int MaxLayer = itemList.Count - 1; if (layer == MaxLayer) { Console.WriteLine("信息:该Item已经处于顶层"); return; } // 寻找最近一个覆盖它的Item GameComponent curItem = itemList[layer]; Transform curTrans = curItem.Children.QueryComponent<Transform>(); if ( curTrans == null) return; Rectangle curRect = curTrans.GetOrthoBox(); GameComponent upperItem = null; int upLayer = -1; for (int i = layer + 1; i <= MaxLayer; i++) { GameComponent compItem = itemList[i]; Transform compTrans = compItem.Children.QueryComponent<Transform>(); if (compItem == null) continue; Rectangle compRect = compTrans.GetOrthoBox(); if (curRect.Intersects(compRect)) { upperItem = compItem; upLayer = i; break; } } if (upperItem == null) { Console.WriteLine("信息:该Item未被任Item覆盖"); return; } // 移动 MoveTo(layer, upLayer, itemList); //SetTypeList(itemList); }
private void MoveToLowerLayer(GameComponent item, GameComponentCollection itemList) { int layer = itemList.IndexOf(item); if (layer == 0) { Console.WriteLine("信息:该Item已经处于底层"); return; } // 寻找最近一个被覆盖的Item GameComponent curItem = itemList[layer]; Transform curTrans = curItem.Children.QueryComponent<Transform>(); if (curTrans == null) return; Rectangle curRect = curTrans.GetOrthoBox(); GameComponent lowerItem = null; int lowerLayer = -1; for (int i = layer - 1; i >= 0; i--) { GameComponent compItem = itemList[i]; Transform compTrans = item.Children.QueryComponent<Transform>(); if (compItem == null) continue; Rectangle compRect = compTrans.GetOrthoBox(); if (curRect.Intersects(compRect)) { lowerItem = compItem; lowerLayer = i; break; } } if (lowerItem == null) { Console.WriteLine("信息:该Item未覆盖任何其他Item"); return; } // 移动 MoveTo(layer, lowerLayer, itemList); //SetTypeList(itemList); }