diff --git a/OpenRA.Game/Widgets/ChromeMetrics.cs b/OpenRA.Game/Widgets/ChromeMetrics.cs index 86779d7ff2..dd91767285 100644 --- a/OpenRA.Game/Widgets/ChromeMetrics.cs +++ b/OpenRA.Game/Widgets/ChromeMetrics.cs @@ -33,5 +33,17 @@ namespace OpenRA.Widgets { return FieldLoader.GetValue(key, data[key]); } + + public static bool TryGet(string key, out T result) + { + string s; + if (!data.TryGetValue(key, out s)) + { + result = default(T); + return false; + } + result = FieldLoader.GetValue(key, s); + return true; + } } } diff --git a/OpenRA.Mods.RA/Widgets/Logic/Ingame/AddRaceSuffixLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/Ingame/AddRaceSuffixLogic.cs index 6f0ae48745..834ff49bf6 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/Ingame/AddRaceSuffixLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/Ingame/AddRaceSuffixLogic.cs @@ -18,7 +18,11 @@ namespace OpenRA.Mods.RA.Widgets.Logic [ObjectCreator.UseCtor] public AddRaceSuffixLogic(Widget widget, World world) { - var suffix = "-" + world.LocalPlayer.Country.Race; + string race; + if (!ChromeMetrics.TryGet("RaceSuffix-" + world.LocalPlayer.Country.Race, out race)) + race = world.LocalPlayer.Country.Race; + var suffix = "-" + race; + if (widget is ButtonWidget) ((ButtonWidget)widget).Background += suffix; else if (widget is ImageWidget) diff --git a/mods/ra/chrome.yaml b/mods/ra/chrome.yaml index 7b967849dd..d1163eced4 100644 --- a/mods/ra/chrome.yaml +++ b/mods/ra/chrome.yaml @@ -337,7 +337,12 @@ strategic: strategic.png flags: buttons.png allies: 30,112,30,15 + england: 30,112,30,15 + france: 30,112,30,15 + germany: 30,112,30,15 soviet: 0,112,30,15 + russia: 0,112,30,15 + ukraine: 0,112,30,15 random: 60,112,30,15 spectator: 60,112,30,15 diff --git a/mods/ra/metrics.yaml b/mods/ra/metrics.yaml index a44bdc1b66..ce65490323 100644 --- a/mods/ra/metrics.yaml +++ b/mods/ra/metrics.yaml @@ -24,3 +24,10 @@ Metrics: SpawnColor: 255,255,255 SpawnContrastColor: 0,0,0 SpawnLabelOffset: 0,1 + RaceSuffix-allies: allies + RaceSuffix-england: allies + RaceSuffix-france: allies + RaceSuffix-germany: allies + RaceSuffix-soviet: soviet + RaceSuffix-russia: soviet + RaceSuffix-ukraine: soviet diff --git a/mods/ra/rules/world.yaml b/mods/ra/rules/world.yaml index a5094986a2..448f90e299 100644 --- a/mods/ra/rules/world.yaml +++ b/mods/ra/rules/world.yaml @@ -96,8 +96,23 @@ World: Name: Allies Race: allies Country@1: + Name: England + Race: england + Country@2: + Name: France + Race: france + Country@3: + Name: Germany + Race: germany + Country@4: Name: Soviet Race: soviet + Country@5: + Name: Russia + Race: russia + Country@6: + Name: Ukraine + Race: ukraine DomainIndex: SmudgeLayer@SCORCH: Type: Scorch @@ -139,12 +154,12 @@ World: MPStartUnits@mcvonly: Class: none ClassName: MCV Only - Races: soviet, allies + Races: allies, england, france, germany, soviet, russia, ukraine BaseActor: mcv MPStartUnits@lightallies: Class: light ClassName: Light Support - Races: allies + Races: allies, england, france, germany BaseActor: mcv SupportActors: e1,e1,e1,e3,e3,jeep,1tnk InnerSupportRadius: 3 @@ -152,7 +167,7 @@ World: MPStartUnits@lightsoviet: Class: light ClassName: Light Support - Races: soviet + Races: soviet, russia, ukraine BaseActor: mcv SupportActors: e1,e1,e1,e3,e3,apc,ftrk InnerSupportRadius: 3 @@ -160,7 +175,7 @@ World: MPStartUnits@heavyallies: Class: heavy ClassName: Heavy Support - Races: allies + Races: allies, england, france, germany BaseActor: mcv SupportActors: e1,e1,e1,e3,e3,jeep,1tnk,2tnk,2tnk,2tnk InnerSupportRadius: 3 @@ -168,7 +183,7 @@ World: MPStartUnits@heavysoviet: Class: heavy ClassName: Heavy Support - Races: soviet + Races: soviet, russia, ukraine BaseActor: mcv SupportActors: e1,e1,e1,e3,e3,apc,ftrk,3tnk,3tnk InnerSupportRadius: 3