@@ -102,10 +102,17 @@ class Chart {
102102 return data ;
103103 }
104104
105- public static function loadChartMeta (songName : String , ? variant : String , fromMods : Bool = true , includeMetaVariations = true ): ChartMetaData {
106- var defaultPath = Paths .file (' songs/ $songName /meta.json' ), isVariant = false ;
107- var data : ChartMetaData = null , paths = (variant == null || variant == ' ' ) ? [defaultPath ] : [Paths .file (' songs/ $songName /meta- $variant .json' ), defaultPath ];
108- for (path in paths ) if (Assets .exists (path )) {
105+ public static function loadChartMeta (songName : String , ? variant : String , ? difficulty : String , fromMods : Bool = true , includeMetaVariations = true ): ChartMetaData {
106+ var folder = ' songs/ $songName ' , isVariant = false , data : ChartMetaData = null ;
107+ var defaultPaths = [Paths .file (' $folder /meta- $difficulty .json' ), Paths .file (' $folder /meta.json' )], variantPaths = [];
108+ if (difficulty != null ) defaultPaths .unshift (Paths .file (' $folder /meta- $difficulty .json' ));
109+
110+ if (variant != null && variant != ' ' ) {
111+ variantPaths .push (Paths .file (' $folder /meta- $variant .json' ));
112+ if (difficulty != null ) variantPaths .unshift (Paths .file (' $folder /meta- $variant - $difficulty .json' ));
113+ }
114+
115+ for (path in variantPaths .concat (defaultPaths )) if (Assets .exists (path )) {
109116 fromMods = Paths .assetsTree .existsSpecific (path , " TEXT" , MODS );
110117 try {
111118 var tempData = Json .parse (Assets .getText (path ));
@@ -114,7 +121,7 @@ class Chart {
114121 } catch (e ) Logs .trace (' Failed to load song metadata for $songName ( $path ): ${Std .string (e )}' , ERROR );
115122
116123 if (data != null ) {
117- isVariant = path != defaultPath ;
124+ isVariant = variantPaths . contains ( path ) ;
118125 break ;
119126 }
120127 }
@@ -148,8 +155,10 @@ class Chart {
148155
149156 data .metas = [];
150157 if (includeMetaVariations && data .variants .length > 0 ) for (variant in data .variants ) {
151- if (! data .metas .exists (variant ) && Assets .exists (Paths .file (' songs/ $songName /meta- $variant .json' )))
152- data .metas .set (variant , loadChartMeta (songName , variant , fromMods ));
158+ if (! data .metas .exists (variant ) && Assets .exists (Paths .file (' songs/ $songName /meta- $variant .json' ))) {
159+ var meta = loadChartMeta (songName , variant , fromMods )
160+ if (meta .variant != null ) data .metas .set (variant , meta );
161+ }
153162 }
154163
155164 return data ;
0 commit comments