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:
Pavel Penev
2015-12-16 22:07:12 +02:00
parent 20725c9b2c
commit 55bb7eb1a0
5 changed files with 58 additions and 47 deletions

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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