Esempio n. 1
0
        public static string GetSortFieldValue(FlattenedTroopRosterElement element, CustomSortOrder customOrder, MBBindingList <PartyCharacterVM> partyVmUnits)
        {
            switch (customOrder)
            {
            case CustomSortOrder.TierAsc:
            case CustomSortOrder.TierDesc:
                return(element.Troop.Tier.ToString());

            case CustomSortOrder.CultureAsc:
            case CustomSortOrder.CultureDesc:
                return(element.Troop.Culture.Name.ToString());

            case CustomSortOrder.MountedAsc:
            case CustomSortOrder.MountedDesc:
                return(element.Troop.IsMounted ? "1" : "0");

            case CustomSortOrder.MeleeAsc:
            case CustomSortOrder.MeleeDesc:
                return(element.Troop.IsArcher ? "1" : "0");

            case CustomSortOrder.UnitNameAsc:
            case CustomSortOrder.UnitNameDesc:
                return(element.Troop.Name.ToString());

            case CustomSortOrder.UnitCountAsc:
            case CustomSortOrder.UnitCountDesc:
                return(partyVmUnits?.Where(x => x.Character.Name == element.Troop.Name)?.Select(x => x.Number)
                       ?.FirstOrDefault().ToString());

            case CustomSortOrder.CustomUpgradesPathAsc:
            case CustomSortOrder.CustomUpgradesPathDesc:
                var unitHasUpgrade = PartyManagerSettings.Settings.SavedTroopUpgradePaths?.Exists(x =>
                                                                                                  x.UnitName == element.Troop.Name.ToString());
                if (unitHasUpgrade == true)
                {
                    return("1");
                }
                return("0");

            case CustomSortOrder.FormationAsc:
            case CustomSortOrder.FormationDesc:
                var formation = element.Troop?.CurrentFormationClass;
                if (formation != null)
                {
                    return(((int)formation).ToString());
                }
                return(null);

            default:
                return("");
            }
        }
Esempio n. 2
0
        //If performance is an issue let's memoize this, reason I haven't done that off the bat is
        //there is no readily safe identifier I can use to link the same troop types.
        //and honestly I think its over-optimising anyways to even consider it, memory is enough of a problem.
        private static double getTroopXpDivisor(TroopRoster roster, FlattenedTroopRosterElement item)
        {
            int indexOfTroop = roster.FindIndexOfTroop(item.Troop);

            if (indexOfTroop == -1)
            {
                return(1);
            }
            TroopRosterElement element = roster.GetElementCopyAtIndex(indexOfTroop);

            if (element.NumberReadyToUpgrade == 0 || element.Number == 0)
            {
                return(1);
            }
            return((double)element.Number / (double)element.NumberReadyToUpgrade);
        }