@@ -94,11 +94,6 @@ public class GameIndexService(
94
94
/// </summary>
95
95
private readonly IParametrizedParser parametrizedParser = parametrizedParser ;
96
96
97
- /// <summary>
98
- /// The inline scripts folder
99
- /// </summary>
100
- private readonly string inlineScriptsFolder = "common\\ inline_scripts" . StandardizeDirectorySeparator ( ) ;
101
-
102
97
#endregion Fields
103
98
104
99
#region Methods
@@ -129,8 +124,13 @@ public virtual async Task<bool> IndexDefinitionsAsync(IGame game, IEnumerable<st
129
124
{
130
125
var provider = DefinitionInfoProviders . FirstOrDefault ( p => p . CanProcess ( game . Type ) ) ;
131
126
files = files . Where ( p => game . GameFolders . Any ( p . StartsWith ) ) ;
132
- var gameInlineScriptFiles = files . Where ( p => p . StartsWith ( inlineScriptsFolder , StringComparison . OrdinalIgnoreCase ) ) ;
133
- var gameInlineFolders = gameInlineScriptFiles . Select ( Path . GetDirectoryName ) . GroupBy ( p => p ) . Select ( p => p . FirstOrDefault ( ) ) . ToList ( ) ;
127
+ var gameInlineFolders = new List < string > ( ) ;
128
+ if ( provider ! . SupportsInlineScripts )
129
+ {
130
+ var gameInlineScriptFiles = files . Where ( p => p . StartsWith ( provider . InlineScriptsPath , StringComparison . OrdinalIgnoreCase ) ) ;
131
+ gameInlineFolders = gameInlineScriptFiles . Select ( Path . GetDirectoryName ) . GroupBy ( p => p ) . Select ( p => p . FirstOrDefault ( ) ) . ToList ( ) ;
132
+ }
133
+
134
134
var indexedFolders = ( await indexedDefinitions . GetAllDirectoryKeysAsync ( ) ) . Select ( p => p . ToLowerInvariant ( ) ) ;
135
135
var validFolders = files . Select ( Path . GetDirectoryName ) . GroupBy ( p => p ) . Select ( p => p . FirstOrDefault ( ) ) . Where ( p => indexedFolders . Any ( a => a . ToLowerInvariant ( ) . Equals ( p ! . ToLowerInvariant ( ) ) ) ) ;
136
136
var folders = new List < string > ( ) ;
@@ -142,7 +142,7 @@ public virtual async Task<bool> IndexDefinitionsAsync(IGame game, IEnumerable<st
142
142
}
143
143
}
144
144
145
- if ( provider is { SupportsInlineScripts : true } )
145
+ if ( provider . SupportsInlineScripts )
146
146
{
147
147
// Inline scripts folders must always be indexed
148
148
foreach ( var folder in gameInlineFolders )
@@ -166,10 +166,10 @@ public virtual async Task<bool> IndexDefinitionsAsync(IGame game, IEnumerable<st
166
166
var inlineDefinitions = DIResolver . Get < IIndexedDefinitions > ( ) ;
167
167
168
168
// First index inline scripts folder
169
- if ( provider is { SupportsInlineScripts : true } )
169
+ if ( provider . SupportsInlineScripts )
170
170
{
171
171
total += gameInlineFolders . Count ;
172
- var inlineFolders = folders . Where ( p => p . StartsWith ( inlineScriptsFolder , StringComparison . OrdinalIgnoreCase ) ) . ToList ( ) ;
172
+ var inlineFolders = folders . Where ( p => p . StartsWith ( provider . InlineScriptsPath , StringComparison . OrdinalIgnoreCase ) ) . ToList ( ) ;
173
173
var inlineTasks = inlineFolders . AsParallel ( ) . Select ( async folder =>
174
174
{
175
175
await semaphore . WaitAsync ( ) ;
@@ -204,7 +204,7 @@ await Task.Run(async () =>
204
204
} ) ;
205
205
await Task . WhenAll ( inlineTasks ) ;
206
206
207
- folders = folders . Where ( p => ! p . StartsWith ( inlineScriptsFolder , StringComparison . OrdinalIgnoreCase ) ) . ToList ( ) ;
207
+ folders = folders . Where ( p => ! p . StartsWith ( provider . InlineScriptsPath , StringComparison . OrdinalIgnoreCase ) ) . ToList ( ) ;
208
208
209
209
var loadTasks = gameInlineFolders . Select ( async directory =>
210
210
{
@@ -326,13 +326,17 @@ protected virtual async Task<IIndexedDefinitions> LoadDefinitionsInternalAsync(I
326
326
// No directory override this means we want to ensure inline directories are loaded even if not requested
327
327
if ( string . IsNullOrWhiteSpace ( directoryOverride ) )
328
328
{
329
- var gamePath = PathResolver . GetPath ( game ) ;
330
- var files = Reader . GetFiles ( gamePath ) ;
331
- files = files . Where ( p => game . GameFolders . Any ( p . StartsWith ) ) ;
332
- var gameInlineScriptFiles = files . Where ( p => p . StartsWith ( inlineScriptsFolder , StringComparison . OrdinalIgnoreCase ) ) ;
333
- var gameInlineFolders = gameInlineScriptFiles . Select ( Path . GetDirectoryName ) . GroupBy ( p => p ) . Select ( p => p . FirstOrDefault ( ) ) . ToList ( ) ;
334
- directories . AddRange ( gameInlineFolders ) ;
335
- directories = directories . Distinct ( ) . ToList ( ) ;
329
+ var provider = DefinitionInfoProviders . FirstOrDefault ( p => p . CanProcess ( game . Type ) ) ;
330
+ if ( provider ! . SupportsInlineScripts )
331
+ {
332
+ var gamePath = PathResolver . GetPath ( game ) ;
333
+ var files = Reader . GetFiles ( gamePath ) ;
334
+ files = files . Where ( p => game . GameFolders . Any ( p . StartsWith ) ) ;
335
+ var gameInlineScriptFiles = files . Where ( p => p . StartsWith ( provider ! . InlineScriptsPath , StringComparison . OrdinalIgnoreCase ) ) ;
336
+ var gameInlineFolders = gameInlineScriptFiles . Select ( Path . GetDirectoryName ) . GroupBy ( p => p ) . Select ( p => p . FirstOrDefault ( ) ) . ToList ( ) ;
337
+ directories . AddRange ( gameInlineFolders ) ;
338
+ directories = directories . Distinct ( ) . ToList ( ) ;
339
+ }
336
340
}
337
341
338
342
if ( gameLanguages != null && gameLanguages . Count != 0 )
@@ -489,7 +493,7 @@ protected virtual async Task<IEnumerable<IDefinition>> ParseGameFiles(IGame game
489
493
}
490
494
491
495
List < IDefinition > prunedInlineDefinitions = null ;
492
- if ( provider ! . SupportsInlineScripts && ! folder . StandardizeDirectorySeparator ( ) . StartsWith ( inlineScriptsFolder , StringComparison . OrdinalIgnoreCase ) )
496
+ if ( provider ! . SupportsInlineScripts && ! folder . StandardizeDirectorySeparator ( ) . StartsWith ( provider . InlineScriptsPath , StringComparison . OrdinalIgnoreCase ) )
493
497
{
494
498
inlineDefinitions ??= DIResolver . Get < IIndexedDefinitions > ( ) ;
495
499
prunedInlineDefinitions = [ ] ;
0 commit comments