From 63fe578ba8a2174101b9cf1c80b1db8c4e7718ac Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Fri, 6 Mar 2015 16:02:40 +0100 Subject: [PATCH] Allow picking of a random subfaction --- OpenRA.Game/GameInformation.cs | 2 +- OpenRA.Game/Network/Session.cs | 2 +- OpenRA.Game/Network/UnitOrders.cs | 2 +- OpenRA.Game/Player.cs | 16 ++++++++++++++-- OpenRA.Game/Server/Server.cs | 4 ++-- OpenRA.Game/Traits/World/Country.cs | 3 +++ OpenRA.Game/Widgets/MapPreviewWidget.cs | 2 +- .../ServerTraits/LobbyCommands.cs | 4 ++-- .../Widgets/Logic/Lobby/LobbyLogic.cs | 1 - .../Widgets/Logic/Lobby/LobbyUtils.cs | 8 ++++---- mods/cnc/chrome.yaml | 2 +- mods/cnc/rules/world.yaml | 4 ++++ mods/d2k/chrome.yaml | 2 +- mods/d2k/rules/world.yaml | 4 ++++ mods/ra/chrome.yaml | 4 +++- mods/ra/rules/world.yaml | 18 ++++++++++++++++++ mods/ra/uibits/buttons.png | Bin 19488 -> 262910 bytes mods/ts/chrome.yaml | 2 +- mods/ts/rules/world.yaml | 4 ++++ 19 files changed, 65 insertions(+), 19 deletions(-) diff --git a/OpenRA.Game/GameInformation.cs b/OpenRA.Game/GameInformation.cs index 7eaa02b6db..a2b88360a4 100644 --- a/OpenRA.Game/GameInformation.cs +++ b/OpenRA.Game/GameInformation.cs @@ -118,7 +118,7 @@ namespace OpenRA Color = runtimePlayer.Color, Team = client.Team, SpawnPoint = runtimePlayer.SpawnPoint, - IsRandomFaction = runtimePlayer.Country.Race != client.Country, + IsRandomFaction = runtimePlayer.Country.Race != client.Race, IsRandomSpawnPoint = runtimePlayer.SpawnPoint != client.SpawnPoint }; diff --git a/OpenRA.Game/Network/Session.cs b/OpenRA.Game/Network/Session.cs index a0a13b7720..8f0539df57 100644 --- a/OpenRA.Game/Network/Session.cs +++ b/OpenRA.Game/Network/Session.cs @@ -102,7 +102,7 @@ namespace OpenRA.Network public int Index; public HSLColor PreferredColor; // Color that the client normally uses from settings.yaml. public HSLColor Color; // Actual color that the client is using. Usually the same as PreferredColor but can be different on maps with locked colors. - public string Country; + public string Race; public int SpawnPoint; public string Name; public string IpAddress; diff --git a/OpenRA.Game/Network/UnitOrders.cs b/OpenRA.Game/Network/UnitOrders.cs index dec224bdc4..5c9a4daae0 100644 --- a/OpenRA.Game/Network/UnitOrders.cs +++ b/OpenRA.Game/Network/UnitOrders.cs @@ -154,7 +154,7 @@ namespace OpenRA.Network Name = Game.Settings.Player.Name, PreferredColor = Game.Settings.Player.Color, Color = Game.Settings.Player.Color, - Country = "random", + Race = "Random", SpawnPoint = 0, Team = 0, State = Session.ClientState.Invalid diff --git a/OpenRA.Game/Player.cs b/OpenRA.Game/Player.cs index 3cb52d7f53..a04346a9d2 100644 --- a/OpenRA.Game/Player.cs +++ b/OpenRA.Game/Player.cs @@ -52,8 +52,20 @@ namespace OpenRA .WithInterface().Where(c => !requireSelectable || c.Selectable) .ToList(); - return selectableCountries.FirstOrDefault(c => c.Race == name) + var selected = selectableCountries.FirstOrDefault(c => c.Race == name) ?? selectableCountries.Random(world.SharedRandom); + + // Don't loop infinite + for (var i = 0; i <= 10 && selected.RandomRaceMembers.Any(); i++) + { + var race = selected.RandomRaceMembers.Random(world.SharedRandom); + selected = selectableCountries.FirstOrDefault(c => c.Race == race); + + if (selected == null) + throw new YamlException("Unknown race: {0}".F(race)); + } + + return selected; } public Player(World world, Session.Client client, Session.Slot slot, PlayerReference pr) @@ -70,7 +82,7 @@ namespace OpenRA Color = client.Color; PlayerName = client.Name; botType = client.Bot; - Country = ChooseCountry(world, client.Country); + Country = ChooseCountry(world, client.Race); } else { diff --git a/OpenRA.Game/Server/Server.cs b/OpenRA.Game/Server/Server.cs index 7636943d8a..7489035e20 100644 --- a/OpenRA.Game/Server/Server.cs +++ b/OpenRA.Game/Server/Server.cs @@ -64,7 +64,7 @@ namespace OpenRA.Server else c.Color = c.PreferredColor; if (pr.LockRace) - c.Country = pr.Race; + c.Race = pr.Race; if (pr.LockSpawn) c.SpawnPoint = pr.Spawn; if (pr.LockTeam) @@ -289,7 +289,7 @@ namespace OpenRA.Server Slot = LobbyInfo.FirstEmptySlot(), PreferredColor = handshake.Client.Color, Color = handshake.Client.Color, - Country = "random", + Race = "Random", SpawnPoint = 0, Team = 0, State = Session.ClientState.Invalid, diff --git a/OpenRA.Game/Traits/World/Country.cs b/OpenRA.Game/Traits/World/Country.cs index 0970a5ae60..e034874331 100644 --- a/OpenRA.Game/Traits/World/Country.cs +++ b/OpenRA.Game/Traits/World/Country.cs @@ -18,6 +18,9 @@ namespace OpenRA.Traits [Desc("This is the internal name for owner checks.")] public readonly string Race = null; + [Desc("Pick a random race as the player's race out of this list.")] + public readonly string[] RandomRaceMembers = { }; + [Desc("The side that the country belongs to. For example, England belongs to the 'Allies' side.")] public readonly string Side = null; diff --git a/OpenRA.Game/Widgets/MapPreviewWidget.cs b/OpenRA.Game/Widgets/MapPreviewWidget.cs index e64b316efb..4dec43de68 100644 --- a/OpenRA.Game/Widgets/MapPreviewWidget.cs +++ b/OpenRA.Game/Widgets/MapPreviewWidget.cs @@ -32,7 +32,7 @@ namespace OpenRA.Widgets ClientIndex = client.Index; PlayerName = client.Name; Team = client.Team; - Country = client.Country; + Country = client.Race; SpawnPoint = client.SpawnPoint; } diff --git a/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs b/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs index 92f67dd5aa..8ee979efe3 100644 --- a/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs +++ b/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs @@ -270,7 +270,7 @@ namespace OpenRA.Mods.Common.Server Name = botType, Bot = botType, Slot = parts[0], - Country = "random", + Race = "Random", SpawnPoint = 0, Team = 0, State = Session.ClientState.NotReady, @@ -738,7 +738,7 @@ namespace OpenRA.Mods.Common.Server if (server.LobbyInfo.Slots[targetClient.Slot].LockRace) return true; - targetClient.Country = parts[1]; + targetClient.Race = parts[1]; server.SyncLobbyClients(); return true; } diff --git a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyLogic.cs index 39ddcde156..d96accdeef 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyLogic.cs @@ -144,7 +144,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic colorPreview = lobby.Get("COLOR_MANAGER"); colorPreview.Color = Game.Settings.Player.Color; - countries.Add("random", new LobbyCountry { Name = "Any" }); foreach (var c in modRules.Actors["world"].Traits.WithInterface().Where(c => c.Selectable)) countries.Add(c.Race, new LobbyCountry { Name = c.Name, Side = c.Side, Description = c.Description }); diff --git a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs index 446bcb014c..163987b45d 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs @@ -110,7 +110,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic Func setupItem = (race, itemTemplate) => { var item = ScrollItemWidget.Setup(itemTemplate, - () => client.Country == race, + () => client.Race == race, () => orderManager.IssueOrder(Order.Command("race {0} {1}".F(client.Index, race)))); var country = countries[race]; item.Get("LABEL").GetText = () => country.Name; @@ -398,7 +398,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic var dropdown = parent.Get("FACTION"); dropdown.IsDisabled = () => s.LockRace || orderManager.LocalClient.IsReady; dropdown.OnMouseDown = _ => ShowRaceDropDown(dropdown, c, orderManager, countries); - var factionDescription = countries[c.Country].Description; + var factionDescription = countries[c.Race].Description; dropdown.GetTooltipText = () => factionDescription; SetupFactionWidget(dropdown, s, c, countries); } @@ -407,9 +407,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic Dictionary countries) { var factionName = parent.Get("FACTIONNAME"); - factionName.GetText = () => countries[c.Country].Name; + factionName.GetText = () => countries[c.Race].Name; var factionFlag = parent.Get("FACTIONFLAG"); - factionFlag.GetImageName = () => c.Country; + factionFlag.GetImageName = () => c.Race; factionFlag.GetImageCollection = () => "flags"; } diff --git a/mods/cnc/chrome.yaml b/mods/cnc/chrome.yaml index 07323716c3..0f8a6d2670 100644 --- a/mods/cnc/chrome.yaml +++ b/mods/cnc/chrome.yaml @@ -461,7 +461,7 @@ scrollbar: chrome.png flags: chrome.png nod: 352,0,32,16 gdi: 352,16,32,16 - random: 352,32,32,16 + Random: 352,32,32,16 strategic: strategic.png unowned: 0,0,32,32 diff --git a/mods/cnc/rules/world.yaml b/mods/cnc/rules/world.yaml index c7d204aa70..b5c0ef80c8 100644 --- a/mods/cnc/rules/world.yaml +++ b/mods/cnc/rules/world.yaml @@ -81,6 +81,10 @@ World: FogVariants: typea, typeb, typec, typed OverrideFullShroud: full OverrideFullFog: full + Country@Random: + Name: Any + Race: Random + RandomRaceMembers: gdi, nod Country@gdi: Name: GDI Race: gdi diff --git a/mods/d2k/chrome.yaml b/mods/d2k/chrome.yaml index a8037bb792..135b297c9a 100644 --- a/mods/d2k/chrome.yaml +++ b/mods/d2k/chrome.yaml @@ -91,7 +91,7 @@ flags: buttons.png atreides: 0,114,22,21 harkonnen: 22,114,23,21 ordos: 45,114,22,21 - random: 67,114,23,21 + Random: 67,114,23,21 spectator: 67,114,23,21 # Used for the menu diff --git a/mods/d2k/rules/world.yaml b/mods/d2k/rules/world.yaml index fb2c37e5ee..5e270dcad6 100644 --- a/mods/d2k/rules/world.yaml +++ b/mods/d2k/rules/world.yaml @@ -94,6 +94,10 @@ World: OverrideFullShroud: full OverrideFullFog: full ShroudBlend: Multiply + Country@Random: + Name: Any + Race: Random + RandomRaceMembers: atreides, harkonnen, ordos Country@Atreides: Name: Atreides Race: atreides diff --git a/mods/ra/chrome.yaml b/mods/ra/chrome.yaml index 15cbcf9971..8bc287b2b1 100644 --- a/mods/ra/chrome.yaml +++ b/mods/ra/chrome.yaml @@ -471,7 +471,9 @@ strategic: strategic.png flags: buttons.png soviet: 0,112,30,15 allies: 30,112,30,15 - random: 60,112,30,15 + Random: 60,112,30,15 + RandomAllies: 30,172,30,15 + RandomSoviet: 0,172,30,15 spectator: 60,112,30,15 russia: 0,127,30,15 diff --git a/mods/ra/rules/world.yaml b/mods/ra/rules/world.yaml index a821e08fd1..cffc0e3592 100644 --- a/mods/ra/rules/world.yaml +++ b/mods/ra/rules/world.yaml @@ -126,6 +126,24 @@ World: Race: ukraine Side: Soviet Description: Ukraine: Demolitions\nSpecial Ability: Parabombs\nSpecial Unit: Demolition Truck + Country@random: + Name: Any + Race: Random + RandomRaceMembers: RandomAllies, RandomSoviet + Side: Random + Description: A random country. + Country@randomallies: + Name: Allied + Race: RandomAllies + RandomRaceMembers: allies, england, france, germany + Side: Random + Description: A random Allied country. + Country@randomsoviet: + Name: Soviet + Race: RandomSoviet + RandomRaceMembers: soviet, russia, ukraine + Side: Random + Description: A random Soviet country. DomainIndex: SmudgeLayer@SCORCH: Type: Scorch diff --git a/mods/ra/uibits/buttons.png b/mods/ra/uibits/buttons.png index e98f5306e1b6d9581d4ea46ee6e8eb6f6bddb9b1..ac725da6fbb283f1c1492176cce77799e4b834f9 100644 GIT binary patch literal 262910 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 literal 19488 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 S4gR_d*uEt=;M(Q`1%CnIwWrts diff --git a/mods/ts/chrome.yaml b/mods/ts/chrome.yaml index 4f08919a6a..03058d79e3 100644 --- a/mods/ts/chrome.yaml +++ b/mods/ts/chrome.yaml @@ -453,7 +453,7 @@ strategic: strategic.png flags: buttons.png gdi: 30,112,30,15 nod: 0,112,30,15 - random: 60,112,30,15 + Random: 60,112,30,15 spectator: 60,112,30,15 music: musicplayer.png diff --git a/mods/ts/rules/world.yaml b/mods/ts/rules/world.yaml index fc667cf5e2..05a4496782 100644 --- a/mods/ts/rules/world.yaml +++ b/mods/ts/rules/world.yaml @@ -79,6 +79,10 @@ World: VoxelNormalsPalette@normals: Name: normals Type: TiberianSun + Country@Random: + Name: Any + Race: Random + RandomRaceMembers: gdi, nod Country@0: Name: GDI Race: gdi