public static string AsString(this TypeSortOption typeSortOption) { switch (typeSortOption) { // TODO: Add more options case TypeSortOption.CAVALRY: return("Cavalry"); case TypeSortOption.RANGED_CAVALRY: return("Ranged Cavalry"); case TypeSortOption.INFANTRY: return("Infantry"); case TypeSortOption.RANGED: return("Archers"); default: throw new ArgumentOutOfRangeException(nameof(typeSortOption), typeSortOption, null); } }
public TypeSortOptionVm(TypeSortOption value) { Value = value; Label = value.AsString(); }
private static Func <TroopRosterElement, TroopRosterElement, int> ResolveTypeSortAction(TypeSortOption typeSortOption) { return(typeSortOption switch { TypeSortOption.CAVALRY => (a, b) => { if (a.Character.IsMounted && !a.Character.IsArcher && !(b.Character.IsMounted && !b.Character.IsArcher)) { return -1; } if (b.Character.IsMounted && !b.Character.IsArcher && !(a.Character.IsMounted && !a.Character.IsArcher)) { return 1; } if (a.Character.IsMounted && !a.Character.IsArcher && b.Character.IsMounted && !b.Character.IsArcher) { return 0; } return int.MaxValue; }, TypeSortOption.RANGED_CAVALRY => (a, b) => { if (a.Character.IsMounted && a.Character.IsArcher && !(b.Character.IsMounted && b.Character.IsArcher)) { return -1; } if (b.Character.IsMounted && b.Character.IsArcher && !(a.Character.IsMounted && a.Character.IsArcher)) { return 1; } if (a.Character.IsMounted && a.Character.IsArcher && b.Character.IsMounted && b.Character.IsArcher) { return 0; } return int.MaxValue; }, TypeSortOption.INFANTRY => (a, b) => { if (a.Character.IsInfantry && !b.Character.IsInfantry) { return -1; } if (b.Character.IsInfantry && !a.Character.IsInfantry) { return 1; } if (a.Character.IsInfantry && b.Character.IsInfantry) { return 0; } return int.MaxValue; }, TypeSortOption.RANGED => (a, b) => { if (a.Character.IsArcher && !b.Character.IsArcher) { return -1; } if (b.Character.IsArcher && !a.Character.IsArcher) { return 1; } if (a.Character.IsArcher && b.Character.IsArcher) { return 0; } return int.MaxValue; }, _ => throw new ArgumentOutOfRangeException(nameof(typeSortOption), typeSortOption, $"TypeSortOption {typeSortOption} does not exist") });