From 55bb7eb1a0932ec42401975db81493c86c578502 Mon Sep 17 00:00:00 2001 From: Pavel Penev Date: Wed, 16 Dec 2015 22:07:12 +0200 Subject: [PATCH] Use '@' in mod.yaml to indicate extra info Applies to MapFolders (to indicate System and User directories) and Packages (to indicate package annotation). --- OpenRA.Game/Manifest.cs | 15 ++++++-- mods/cnc/mod.yaml | 4 +-- mods/d2k/mod.yaml | 4 +-- mods/ra/mod.yaml | 4 +-- mods/ts/mod.yaml | 78 ++++++++++++++++++++--------------------- 5 files changed, 58 insertions(+), 47 deletions(-) diff --git a/OpenRA.Game/Manifest.cs b/OpenRA.Game/Manifest.cs index 6ac395b722..5cf464f4bb 100644 --- a/OpenRA.Game/Manifest.cs +++ b/OpenRA.Game/Manifest.cs @@ -160,8 +160,19 @@ namespace OpenRA if (!yaml.ContainsKey(key)) return new ReadOnlyDictionary(); - Func keySelector = parsePaths ? (Func)Platform.ResolvePath : k => k; - var inner = yaml[key].ToDictionary(keySelector, my => my.Value); + var inner = new Dictionary(); + 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(inner); } diff --git a/mods/cnc/mod.yaml b/mods/cnc/mod.yaml index f127fdfe10..3e153d5cdd 100644 --- a/mods/cnc/mod.yaml +++ b/mods/cnc/mod.yaml @@ -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 diff --git a/mods/d2k/mod.yaml b/mods/d2k/mod.yaml index b823fe3e9d..951b98fb17 100644 --- a/mods/d2k/mod.yaml +++ b/mods/d2k/mod.yaml @@ -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 diff --git a/mods/ra/mod.yaml b/mods/ra/mod.yaml index 43bd07c24e..b650c214bd 100644 --- a/mods/ra/mod.yaml +++ b/mods/ra/mod.yaml @@ -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 diff --git a/mods/ts/mod.yaml b/mods/ts/mod.yaml index e0129723d1..6a77463c95 100644 --- a/mods/ts/mod.yaml +++ b/mods/ts/mod.yaml @@ -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