Ejemplo n.º 1
0
        /// <summary>
        /// Sorts any array
        /// </summary>
        public void Sort(MapSectionSortType sortType)
        {
            int sortValue = (int)sortType;

            if ((sortValue & 0x0001) == 0x0001)
            {
                Array.Sort(StillUnits, 0, stillCount, RadiusComparer.Default);

                for (int i = 0; i < StillUnits.Length; i++)
                {
                    //if (i == 0)
                    //    Debug.Assert(AgingUnits[i] != null);

                    if (StillUnits[i] == null)
                    {
                        stillCount = i;
                        break;
                    }
                }
            }

            if ((sortValue & 0x0010) == 0x0010)
            {
                Array.Sort(AgingUnits, 0, agingCount, AgeComparer.Default);

                for (int i = 0; i < AgingUnits.Length; i++)
                {
                    //if (i == 0)
                    //    Debug.Assert(AgingUnits[i] != null);

                    if (AgingUnits[i] == null)
                    {
                        agingCount = i;
                        break;
                    }
                }
            }

            if ((sortValue & 0x0100) == 0x0100)
            {
                Array.Sort(PlayerUnits, 0, playerCount, AgeComparer.Default);

                for (int i = 0; i < PlayerUnits.Length; i++)
                {
                    //if (i == 0)
                    //    Debug.Assert(AgingUnits[i] != null);

                    if (PlayerUnits[i] == null)
                    {
                        playerCount = i;
                        break;
                    }
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="mapUnit"></param>
        internal bool Remove(MapUnit mapUnit)
        {
            MapSectionSortType sortType = MapSectionSortType.None;

            if (mapUnit.Mobility == Mobility.Still &&
                mapUnit.Kind != UnitKind.Explosion)
            {
                int index;
                if (arrayContains(StillUnits, mapUnit, out index))
                {
                    StillUnits[index] = null;

                    sortType |= MapSectionSortType.StillUnits;
                }
            }

            if (mapUnit.IsAging)
            {
                int index;
                if (arrayContains(AgingUnits, mapUnit, out index))
                {
                    AgingUnits[index] = null;

                    sortType |= MapSectionSortType.AgingUnits;
                }
            }

            if (mapUnit.Kind == UnitKind.PlayerShip || // Check first cause most used
                mapUnit.Kind == UnitKind.PlayerBase ||
                mapUnit.Kind == UnitKind.PlayerDrone ||
                mapUnit.Kind == UnitKind.PlayerPlatform ||
                mapUnit.Kind == UnitKind.PlayerProbe)
            {
                int index;
                if (arrayContains(PlayerUnits, mapUnit, out index))
                {
                    PlayerUnits[index] = null;

                    sortType |= MapSectionSortType.PlayerUnits;
                }
            }

            if (sortType != MapSectionSortType.None)
            {
                Sort(sortType);
                return(true);
            }

            return(false);
        }