@@ -45,20 +45,6 @@ public static IQueryable<GameLevel> FilterByLevelFilterSettings(this IQueryable<
4545 if ( ( user is { ShowReuploadedContent : false } && levelFilterSettings . ShowReuploadedLevels != true ) || levelFilterSettings . ShowReuploadedLevels == false )
4646 levels = levels . Where ( l => ! l . IsReUpload ) ;
4747
48- // Don't allow beta builds to use this filtering option
49- // If the client specifies this option then it will filter out *all* levels.
50- if ( levelFilterSettings . GameVersion != TokenGame . BetaBuild )
51- {
52- levels = levelFilterSettings . GameFilterType switch {
53- GameFilterType . LittleBigPlanet1 => levels . Where ( l => l . GameVersion == TokenGame . LittleBigPlanet1 ) ,
54- GameFilterType . LittleBigPlanet2 => levels . Where ( l => l . GameVersion == TokenGame . LittleBigPlanet2 ) ,
55- //NOTE: ideally this should be .Where(l => l._GameVersion == TokenGame.LittleBigPlane1 || l._GameVersion == TokenGame.LittleBigPlane2)
56- // however, there should be no differences in all real-world cases
57- GameFilterType . Both => levels ,
58- _ => throw new ArgumentOutOfRangeException ( ) ,
59- } ;
60- }
61-
6248 if ( levelFilterSettings . Players != 0 )
6349 levels = levels . Where ( l => l . MaxPlayers >= levelFilterSettings . Players && l . MinPlayers <= levelFilterSettings . Players ) ;
6450
@@ -68,14 +54,36 @@ public static IQueryable<GameLevel> FilterByLevelFilterSettings(this IQueryable<
6854 if ( ! levelFilterSettings . DisplayVita ) levels = levels . Where ( l => l . GameVersion != TokenGame . LittleBigPlanetVita ) ;
6955 if ( ! levelFilterSettings . DisplayPSP ) levels = levels . Where ( l => l . GameVersion != TokenGame . LittleBigPlanetPSP ) ;
7056 if ( ! levelFilterSettings . DisplayBeta ) levels = levels . Where ( l => l . GameVersion != TokenGame . BetaBuild ) ;
71-
72- //TODO: store move compatibility for levels
73- // levels = levelFilterSettings.MoveFilterType switch {
74- // MoveFilterType.True => levels,
75- // MoveFilterType.Only => levels.Where(l => l.MoveCompatible),
76- // MoveFilterType.False => levels.Where(l => !l.MoveCompatible),
77- // _ => throw new ArgumentOutOfRangeException()
78- // };
57+
58+ switch ( levelFilterSettings . DisplayAdventures )
59+ {
60+ case PropertyFilterType . Include :
61+ // Do nothing
62+ break ;
63+ case PropertyFilterType . Only :
64+ levels = levels . Where ( l => l . IsAdventure == true ) ;
65+ break ;
66+ case PropertyFilterType . Exclude :
67+ levels = levels . Where ( l => l . IsAdventure == false ) ;
68+ break ;
69+ default :
70+ throw new ArgumentOutOfRangeException ( nameof ( levelFilterSettings . DisplayAdventures ) , levelFilterSettings . DisplayAdventures , "Unsupported value" ) ;
71+ }
72+
73+ switch ( levelFilterSettings . DisplayMoveLevels )
74+ {
75+ case PropertyFilterType . Include :
76+ // Do nothing
77+ break ;
78+ case PropertyFilterType . Only :
79+ levels = levels . Where ( l => l . RequiresMoveController == true ) ;
80+ break ;
81+ case PropertyFilterType . Exclude :
82+ levels = levels . Where ( l => l . RequiresMoveController == false ) ;
83+ break ;
84+ default :
85+ throw new ArgumentOutOfRangeException ( nameof ( levelFilterSettings . DisplayMoveLevels ) , levelFilterSettings . DisplayMoveLevels , "Unsupported value" ) ;
86+ }
7987
8088 // Filter out sub levels that weren't published by self
8189 levels = levels . Where ( l => ! l . IsSubLevel || l . Publisher == user ) ;
@@ -95,20 +103,6 @@ public static IEnumerable<GameLevel> FilterByLevelFilterSettings(this IEnumerabl
95103 if ( ( user is { ShowReuploadedContent : false } && levelFilterSettings . ShowReuploadedLevels != true ) || levelFilterSettings . ShowReuploadedLevels == false )
96104 levels = levels . Where ( l => ! l . IsReUpload ) ;
97105
98- // Don't allow beta builds to use this filtering option
99- // If the client specifies this option then it will filter out *all* levels.
100- if ( levelFilterSettings . GameVersion != TokenGame . BetaBuild )
101- {
102- levels = levelFilterSettings . GameFilterType switch {
103- GameFilterType . LittleBigPlanet1 => levels . Where ( l => l . GameVersion == TokenGame . LittleBigPlanet1 ) ,
104- GameFilterType . LittleBigPlanet2 => levels . Where ( l => l . GameVersion == TokenGame . LittleBigPlanet2 ) ,
105- //NOTE: ideally this should be .Where(l => l._GameVersion == TokenGame.LittleBigPlane1 || l._GameVersion == TokenGame.LittleBigPlane2)
106- // however, there should be no differences in all real-world cases
107- GameFilterType . Both => levels ,
108- _ => throw new ArgumentOutOfRangeException ( ) ,
109- } ;
110- }
111-
112106 if ( levelFilterSettings . Players != 0 )
113107 levels = levels . Where ( l => l . MaxPlayers >= levelFilterSettings . Players && l . MinPlayers <= levelFilterSettings . Players ) ;
114108
@@ -118,14 +112,36 @@ public static IEnumerable<GameLevel> FilterByLevelFilterSettings(this IEnumerabl
118112 if ( ! levelFilterSettings . DisplayVita ) levels = levels . Where ( l => l . GameVersion != TokenGame . LittleBigPlanetVita ) ;
119113 if ( ! levelFilterSettings . DisplayPSP ) levels = levels . Where ( l => l . GameVersion != TokenGame . LittleBigPlanetPSP ) ;
120114 if ( ! levelFilterSettings . DisplayBeta ) levels = levels . Where ( l => l . GameVersion != TokenGame . BetaBuild ) ;
115+
116+ switch ( levelFilterSettings . DisplayAdventures )
117+ {
118+ case PropertyFilterType . Include :
119+ // Do nothing
120+ break ;
121+ case PropertyFilterType . Only :
122+ levels = levels . Where ( l => l . IsAdventure == true ) ;
123+ break ;
124+ case PropertyFilterType . Exclude :
125+ levels = levels . Where ( l => l . IsAdventure == false ) ;
126+ break ;
127+ default :
128+ throw new ArgumentOutOfRangeException ( nameof ( levelFilterSettings . DisplayAdventures ) , levelFilterSettings . DisplayAdventures , "Unsupported value" ) ;
129+ }
121130
122- //TODO: store move compatibility for levels
123- // levels = levelFilterSettings.MoveFilterType switch {
124- // MoveFilterType.True => levels,
125- // MoveFilterType.Only => levels.Where(l => l.MoveCompatible),
126- // MoveFilterType.False => levels.Where(l => !l.MoveCompatible),
127- // _ => throw new ArgumentOutOfRangeException()
128- // };
131+ switch ( levelFilterSettings . DisplayMoveLevels )
132+ {
133+ case PropertyFilterType . Include :
134+ // Do nothing
135+ break ;
136+ case PropertyFilterType . Only :
137+ levels = levels . Where ( l => l . RequiresMoveController == true ) ;
138+ break ;
139+ case PropertyFilterType . Exclude :
140+ levels = levels . Where ( l => l . RequiresMoveController == false ) ;
141+ break ;
142+ default :
143+ throw new ArgumentOutOfRangeException ( nameof ( levelFilterSettings . DisplayMoveLevels ) , levelFilterSettings . DisplayMoveLevels , "Unsupported value" ) ;
144+ }
129145
130146 // Filter out sub levels that weren't published by self
131147 levels = levels . Where ( l => ! l . IsSubLevel || l . Publisher == user ) ;
0 commit comments