Use '@' in mod.yaml to indicate extra info
Applies to MapFolders (to indicate System and User directories) and Packages (to indicate package annotation).
This commit is contained in:
@@ -160,8 +160,19 @@ namespace OpenRA
|
||||
if (!yaml.ContainsKey(key))
|
||||
return new ReadOnlyDictionary<string, string>();
|
||||
|
||||
Func<string, string> keySelector = parsePaths ? (Func<string, string>)Platform.ResolvePath : k => k;
|
||||
var inner = yaml[key].ToDictionary(keySelector, my => my.Value);
|
||||
var inner = new Dictionary<string, string>();
|
||||
foreach (var node in yaml[key].Nodes)
|
||||
{
|
||||
// '@' may be used in mod.yaml to indicate extra information (similar to trait @ tags).
|
||||
// Applies to MapFolders (to indicate System and User directories) and Packages (to indicate package annotation).
|
||||
if (node.Key.Contains('@'))
|
||||
{
|
||||
var split = node.Key.Split('@');
|
||||
inner.Add(split[0], split[1]);
|
||||
}
|
||||
else
|
||||
inner.Add(node.Key, null);
|
||||
}
|
||||
|
||||
return new ReadOnlyDictionary<string, string>(inner);
|
||||
}
|
||||
|
||||
@@ -18,8 +18,8 @@ Folders:
|
||||
~^Content/cnc
|
||||
|
||||
MapFolders:
|
||||
./mods/cnc/maps: System
|
||||
~^maps/cnc: User
|
||||
./mods/cnc/maps@System
|
||||
~^maps/cnc@User
|
||||
|
||||
Packages:
|
||||
speech.mix
|
||||
|
||||
@@ -20,8 +20,8 @@ Folders:
|
||||
~^Content/d2k/Music
|
||||
|
||||
MapFolders:
|
||||
./mods/d2k/maps: System
|
||||
~^maps/d2k: User
|
||||
./mods/d2k/maps@System
|
||||
~^maps/d2k@User
|
||||
|
||||
Packages:
|
||||
SOUND.RS
|
||||
|
||||
@@ -16,8 +16,8 @@ Folders:
|
||||
~^Content/ra
|
||||
|
||||
MapFolders:
|
||||
./mods/ra/maps: System
|
||||
~^maps/ra: User
|
||||
./mods/ra/maps@System
|
||||
~^maps/ra@User
|
||||
|
||||
Packages:
|
||||
~main.mix
|
||||
|
||||
@@ -15,49 +15,49 @@ Folders:
|
||||
~^Content/ts
|
||||
|
||||
MapFolders:
|
||||
./mods/ts/maps: System
|
||||
~^maps/ts: User
|
||||
./mods/ts/maps@System
|
||||
~^maps/ts@User
|
||||
|
||||
Packages:
|
||||
# Tiberian Sun
|
||||
~scores.mix:CRC32
|
||||
~sidenc01.mix:CRC32
|
||||
~sidenc02.mix:CRC32
|
||||
~gmenu.mix:CRC32
|
||||
~e01scd01.mix:CRC32
|
||||
~e01scd02.mix:CRC32
|
||||
~maps01.mix:CRC32
|
||||
~maps02.mix:CRC32
|
||||
~movies01.mix:CRC32
|
||||
~movies02.mix:CRC32
|
||||
~multi.mix:CRC32
|
||||
~patch.mix:CRC32
|
||||
~sidecd01.mix:CRC32
|
||||
~sidecd02.mix:CRC32
|
||||
~tibsun.mix:CRC32
|
||||
cache.mix:CRC32
|
||||
conquer.mix:CRC32
|
||||
isosnow.mix:CRC32
|
||||
isotemp.mix:CRC32
|
||||
local.mix:CRC32
|
||||
sidec01.mix:CRC32
|
||||
sidec02.mix:CRC32
|
||||
sno.mix:CRC32
|
||||
snow.mix:CRC32
|
||||
sounds.mix:CRC32
|
||||
speech01.mix:CRC32 # EVA
|
||||
speech02.mix:CRC32 # Cabal
|
||||
tem.mix:CRC32
|
||||
temperat.mix:CRC32
|
||||
~scores.mix@CRC32
|
||||
~sidenc01.mix@CRC32
|
||||
~sidenc02.mix@CRC32
|
||||
~gmenu.mix@CRC32
|
||||
~e01scd01.mix@CRC32
|
||||
~e01scd02.mix@CRC32
|
||||
~maps01.mix@CRC32
|
||||
~maps02.mix@CRC32
|
||||
~movies01.mix@CRC32
|
||||
~movies02.mix@CRC32
|
||||
~multi.mix@CRC32
|
||||
~patch.mix@CRC32
|
||||
~sidecd01.mix@CRC32
|
||||
~sidecd02.mix@CRC32
|
||||
~tibsun.mix@CRC32
|
||||
cache.mix@CRC32
|
||||
conquer.mix@CRC32
|
||||
isosnow.mix@CRC32
|
||||
isotemp.mix@CRC32
|
||||
local.mix@CRC32
|
||||
sidec01.mix@CRC32
|
||||
sidec02.mix@CRC32
|
||||
sno.mix@CRC32
|
||||
snow.mix@CRC32
|
||||
sounds.mix@CRC32
|
||||
speech01.mix@CRC32 # EVA
|
||||
speech02.mix@CRC32 # Cabal
|
||||
tem.mix@CRC32
|
||||
temperat.mix@CRC32
|
||||
# Firestorm
|
||||
~scores01.mix:CRC32
|
||||
~expand01.mix:CRC32
|
||||
~sounds01.mix:CRC32
|
||||
~e01sc01.mix:CRC32
|
||||
~e01sc02.mix:CRC32
|
||||
~e01vox01.mix:CRC32
|
||||
~e01vox02.mix:CRC32
|
||||
~ecache01.mix:CRC32
|
||||
~scores01.mix@CRC32
|
||||
~expand01.mix@CRC32
|
||||
~sounds01.mix@CRC32
|
||||
~e01sc01.mix@CRC32
|
||||
~e01sc02.mix@CRC32
|
||||
~e01vox01.mix@CRC32
|
||||
~e01vox02.mix@CRC32
|
||||
~ecache01.mix@CRC32
|
||||
|
||||
Rules:
|
||||
./mods/ts/rules/ai.yaml
|
||||
|
||||
Reference in New Issue
Block a user