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)) if (!yaml.ContainsKey(key))
return new ReadOnlyDictionary<string, string>(); return new ReadOnlyDictionary<string, string>();
Func<string, string> keySelector = parsePaths ? (Func<string, string>)Platform.ResolvePath : k => k; var inner = new Dictionary<string, string>();
var inner = yaml[key].ToDictionary(keySelector, my => my.Value); 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); return new ReadOnlyDictionary<string, string>(inner);
} }

View File

@@ -18,8 +18,8 @@ Folders:
~^Content/cnc ~^Content/cnc
MapFolders: MapFolders:
./mods/cnc/maps: System ./mods/cnc/maps@System
~^maps/cnc: User ~^maps/cnc@User
Packages: Packages:
speech.mix speech.mix

View File

@@ -20,8 +20,8 @@ Folders:
~^Content/d2k/Music ~^Content/d2k/Music
MapFolders: MapFolders:
./mods/d2k/maps: System ./mods/d2k/maps@System
~^maps/d2k: User ~^maps/d2k@User
Packages: Packages:
SOUND.RS SOUND.RS

View File

@@ -16,8 +16,8 @@ Folders:
~^Content/ra ~^Content/ra
MapFolders: MapFolders:
./mods/ra/maps: System ./mods/ra/maps@System
~^maps/ra: User ~^maps/ra@User
Packages: Packages:
~main.mix ~main.mix

View File

@@ -15,49 +15,49 @@ Folders:
~^Content/ts ~^Content/ts
MapFolders: MapFolders:
./mods/ts/maps: System ./mods/ts/maps@System
~^maps/ts: User ~^maps/ts@User
Packages: Packages:
# Tiberian Sun # Tiberian Sun
~scores.mix:CRC32 ~scores.mix@CRC32
~sidenc01.mix:CRC32 ~sidenc01.mix@CRC32
~sidenc02.mix:CRC32 ~sidenc02.mix@CRC32
~gmenu.mix:CRC32 ~gmenu.mix@CRC32
~e01scd01.mix:CRC32 ~e01scd01.mix@CRC32
~e01scd02.mix:CRC32 ~e01scd02.mix@CRC32
~maps01.mix:CRC32 ~maps01.mix@CRC32
~maps02.mix:CRC32 ~maps02.mix@CRC32
~movies01.mix:CRC32 ~movies01.mix@CRC32
~movies02.mix:CRC32 ~movies02.mix@CRC32
~multi.mix:CRC32 ~multi.mix@CRC32
~patch.mix:CRC32 ~patch.mix@CRC32
~sidecd01.mix:CRC32 ~sidecd01.mix@CRC32
~sidecd02.mix:CRC32 ~sidecd02.mix@CRC32
~tibsun.mix:CRC32 ~tibsun.mix@CRC32
cache.mix:CRC32 cache.mix@CRC32
conquer.mix:CRC32 conquer.mix@CRC32
isosnow.mix:CRC32 isosnow.mix@CRC32
isotemp.mix:CRC32 isotemp.mix@CRC32
local.mix:CRC32 local.mix@CRC32
sidec01.mix:CRC32 sidec01.mix@CRC32
sidec02.mix:CRC32 sidec02.mix@CRC32
sno.mix:CRC32 sno.mix@CRC32
snow.mix:CRC32 snow.mix@CRC32
sounds.mix:CRC32 sounds.mix@CRC32
speech01.mix:CRC32 # EVA speech01.mix@CRC32 # EVA
speech02.mix:CRC32 # Cabal speech02.mix@CRC32 # Cabal
tem.mix:CRC32 tem.mix@CRC32
temperat.mix:CRC32 temperat.mix@CRC32
# Firestorm # Firestorm
~scores01.mix:CRC32 ~scores01.mix@CRC32
~expand01.mix:CRC32 ~expand01.mix@CRC32
~sounds01.mix:CRC32 ~sounds01.mix@CRC32
~e01sc01.mix:CRC32 ~e01sc01.mix@CRC32
~e01sc02.mix:CRC32 ~e01sc02.mix@CRC32
~e01vox01.mix:CRC32 ~e01vox01.mix@CRC32
~e01vox02.mix:CRC32 ~e01vox02.mix@CRC32
~ecache01.mix:CRC32 ~ecache01.mix@CRC32
Rules: Rules:
./mods/ts/rules/ai.yaml ./mods/ts/rules/ai.yaml