예제 #1
0
        public static void SortEntityList(MyEntitySortOrder selectedOrder, ref List <MyEntityListInfoItem> items, bool invertOrder)
        {
            switch (selectedOrder)
            {
            case MyEntitySortOrder.DisplayName:
                items.Sort(delegate(MyEntityListInfoItem a, MyEntityListInfoItem b) {
                    int num = string.Compare(a.DisplayName, b.DisplayName, StringComparison.CurrentCultureIgnoreCase);
                    return(!invertOrder ? num : -num);
                });
                return;

            case MyEntitySortOrder.BlockCount:
                items.Sort(delegate(MyEntityListInfoItem a, MyEntityListInfoItem b) {
                    int num = b.BlockCount.CompareTo(a.BlockCount);
                    return(!invertOrder ? num : -num);
                });
                return;

            case MyEntitySortOrder.Mass:
                items.Sort(delegate(MyEntityListInfoItem a, MyEntityListInfoItem b) {
                    if (a.Mass == b.Mass)
                    {
                        return(0);
                    }
                    int num = (a.Mass != 0f) ? ((b.Mass != 0f) ? b.Mass.CompareTo(a.Mass) : 1) : -1;
                    return(!invertOrder ? num : -num);
                });
                return;

            case MyEntitySortOrder.OwnerName:
                items.Sort(delegate(MyEntityListInfoItem a, MyEntityListInfoItem b) {
                    int num = string.Compare(a.OwnerName, b.OwnerName, StringComparison.CurrentCultureIgnoreCase);
                    return(!invertOrder ? num : -num);
                });
                return;

            case MyEntitySortOrder.DistanceFromCenter:
                items.Sort(delegate(MyEntityListInfoItem a, MyEntityListInfoItem b) {
                    int num = a.Position.LengthSquared().CompareTo(b.Position.LengthSquared());
                    return(!invertOrder ? num : -num);
                });
                return;

            case MyEntitySortOrder.Speed:
                items.Sort(delegate(MyEntityListInfoItem a, MyEntityListInfoItem b) {
                    int num = b.Speed.CompareTo(a.Speed);
                    return(!invertOrder ? num : -num);
                });
                return;

            case MyEntitySortOrder.DistanceFromPlayers:
                items.Sort(delegate(MyEntityListInfoItem a, MyEntityListInfoItem b) {
                    int num = b.DistanceFromPlayers.CompareTo(a.DistanceFromPlayers);
                    return(!invertOrder ? num : -num);
                });
                return;

            case MyEntitySortOrder.OwnerLastLogout:
                items.Sort(delegate(MyEntityListInfoItem a, MyEntityListInfoItem b) {
                    int num = b.OwnerLogoutTime.CompareTo(a.OwnerLogoutTime);
                    return(!invertOrder ? num : -num);
                });
                return;

            case MyEntitySortOrder.PCU:
                items.Sort(delegate(MyEntityListInfoItem a, MyEntityListInfoItem b) {
                    int num = b.PCU.CompareTo(a.PCU);
                    return(!invertOrder ? num : -num);
                });
                return;
            }
            throw new ArgumentOutOfRangeException();
        }
예제 #2
0
        public static StringBuilder GetFormattedDisplayName(MyEntitySortOrder selectedOrder, MyEntityListInfoItem item, bool isGrid)
        {
            StringBuilder output = new StringBuilder(item.DisplayName);

            switch (selectedOrder)
            {
            case MyEntitySortOrder.DisplayName:
                break;

            case MyEntitySortOrder.BlockCount:
                if (isGrid)
                {
                    output.Append(" | " + item.BlockCount);
                }
                break;

            case MyEntitySortOrder.Mass:
                output.Append(" | ");
                if (item.Mass == 0f)
                {
                    output.Append("-");
                }
                else
                {
                    MyValueFormatter.AppendWeightInBestUnit(item.Mass, output);
                }
                break;

            case MyEntitySortOrder.OwnerName:
                if (isGrid)
                {
                    output.Append(" | " + (string.IsNullOrEmpty(item.OwnerName) ? MyTexts.GetString(MySpaceTexts.BlockOwner_Nobody) : item.OwnerName));
                }
                break;

            case MyEntitySortOrder.DistanceFromCenter:
                output.Append(" | ");
                MyValueFormatter.AppendDistanceInBestUnit((float)item.Position.Length(), output);
                break;

            case MyEntitySortOrder.Speed:
                output.Append(" | " + item.Speed.ToString("0.### m/s"));
                break;

            case MyEntitySortOrder.DistanceFromPlayers:
                output.Append(" | ");
                MyValueFormatter.AppendDistanceInBestUnit(item.DistanceFromPlayers, output);
                break;

            case MyEntitySortOrder.OwnerLastLogout:
                if (isGrid)
                {
                    output.Append(" | " + (string.IsNullOrEmpty(item.OwnerName) ? MyTexts.GetString(MySpaceTexts.BlockOwner_Nobody) : item.OwnerName));
                    output.Append(": ");
                    MyValueFormatter.AppendTimeInBestUnit(item.OwnerLogoutTime, output);
                }
                break;

            case MyEntitySortOrder.PCU:
                if (isGrid)
                {
                    output.Append(" | " + item.PCU);
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            return(output);
        }