diff --git a/OpenRA.Mods.Common/Commands/DevCommands.cs b/OpenRA.Mods.Common/Commands/DevCommands.cs index cb68fa11d2..5a4e9725b0 100644 --- a/OpenRA.Mods.Common/Commands/DevCommands.cs +++ b/OpenRA.Mods.Common/Commands/DevCommands.cs @@ -71,30 +71,8 @@ namespace OpenRA.Mods.Common.Commands switch (name) { - case "givecash": - var givecashorder = new Order("DevGiveCash", world.LocalPlayer.PlayerActor, false); - int cash; - int.TryParse(arg, out cash); - - givecashorder.ExtraData = (uint)cash; - Game.Debug("Giving {0} credits to player {1}.", cash == 0 ? "cheat default" : cash.ToString(CultureInfo.InvariantCulture), world.LocalPlayer.PlayerName); - world.IssueOrder(givecashorder); - - break; - - case "givecashall": - int.TryParse(arg, out cash); - - foreach (var player in world.Players.Where(p => !p.NonCombatant)) - { - var givecashall = new Order("DevGiveCash", player.PlayerActor, false); - givecashall.ExtraData = (uint)cash; - Game.Debug("Giving {0} credits to player {1}.", cash == 0 ? "cheat default" : cash.ToString(CultureInfo.InvariantCulture), player.PlayerName); - world.IssueOrder(givecashall); - } - - break; - + case "givecash": IssueGiveCashDevCommand(false, arg); break; + case "givecashall": IssueGiveCashDevCommand(true, arg); break; case "visibility": IssueDevCommand(world, "DevVisibility"); break; case "instantbuild": IssueDevCommand(world, "DevFastBuild"); break; case "buildanywhere": IssueDevCommand(world, "DevBuildAnywhere"); break; @@ -156,6 +134,18 @@ namespace OpenRA.Mods.Common.Commands } } + void IssueGiveCashDevCommand(bool toAll, string arg) + { + var orderString = toAll ? "DevGiveCashAll" : "DevGiveCash"; + var giveCashOrder = new Order(orderString, world.LocalPlayer.PlayerActor, false); + + int cash; + int.TryParse(arg, out cash); + giveCashOrder.ExtraData = (uint)cash; + + world.IssueOrder(giveCashOrder); + } + static void IssueDevCommand(World world, string command) { world.IssueOrder(new Order(command, world.LocalPlayer.PlayerActor, false)); diff --git a/OpenRA.Mods.Common/Traits/Player/DeveloperMode.cs b/OpenRA.Mods.Common/Traits/Player/DeveloperMode.cs index 6bca7bf181..d129d5ee4c 100644 --- a/OpenRA.Mods.Common/Traits/Player/DeveloperMode.cs +++ b/OpenRA.Mods.Common/Traits/Player/DeveloperMode.cs @@ -116,6 +116,7 @@ namespace OpenRA.Mods.Common.Traits if (!Enabled) return; + var debugSuffix = ""; switch (order.OrderString) { case "DevAll": @@ -162,6 +163,20 @@ namespace OpenRA.Mods.Common.Traits { var amount = order.ExtraData != 0 ? (int)order.ExtraData : info.Cash; self.Trait().ChangeCash(amount); + + debugSuffix = " ({0} credits)".F(amount); + break; + } + + case "DevGiveCashAll": + { + var amount = order.ExtraData != 0 ? (int)order.ExtraData : info.Cash; + var receivingPlayers = self.World.Players.Where(p => p.Playable); + + foreach (var player in receivingPlayers) + player.PlayerActor.Trait().ChangeCash(amount); + + debugSuffix = " ({0} credits)".F(amount); break; } @@ -240,7 +255,7 @@ namespace OpenRA.Mods.Common.Traits return; } - Game.Debug("Cheat used: {0} by {1}", order.OrderString, self.Owner.PlayerName); + Game.Debug("Cheat used: {0} by {1}{2}", order.OrderString, self.Owner.PlayerName, debugSuffix); } bool IUnlocksRenderPlayer.RenderPlayerUnlocked { get { return Enabled; } }