diff --git a/OpenRA.Game/Graphics/SelectionBarsRenderable.cs b/OpenRA.Game/Graphics/SelectionBarsRenderable.cs index d430abf393..b7aab12f19 100644 --- a/OpenRA.Game/Graphics/SelectionBarsRenderable.cs +++ b/OpenRA.Game/Graphics/SelectionBarsRenderable.cs @@ -147,8 +147,8 @@ namespace OpenRA.Graphics var bounds = actor.Bounds; bounds.Offset(screenPos.X, screenPos.Y); - var start = new float2(bounds.Left, bounds.Top); - var end = new float2(bounds.Right, bounds.Top); + var start = new float2(bounds.Left + 1, bounds.Top); + var end = new float2(bounds.Right - 1, bounds.Top); DrawHealthBar(wr, health, start, end); DrawExtraBars(wr, start, end); diff --git a/OpenRA.Game/Traits/World/ActorMap.cs b/OpenRA.Game/Traits/World/ActorMap.cs index 619cf01d31..cb1d8d1caf 100644 --- a/OpenRA.Game/Traits/World/ActorMap.cs +++ b/OpenRA.Game/Traits/World/ActorMap.cs @@ -150,8 +150,9 @@ namespace OpenRA.Traits public void Dispose() { - foreach (var a in currentActors) - onActorExited(a); + if (onActorExited != null) + foreach (var a in currentActors) + onActorExited(a); } } diff --git a/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs b/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs index 30361addf2..27d7d772c1 100644 --- a/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs +++ b/OpenRA.Mods.Common/ServerTraits/LobbyCommands.cs @@ -572,6 +572,9 @@ namespace OpenRA.Mods.Common.Server { "difficulty", s => { + if (!server.Map.Options.Difficulties.Any()) + return true; + if (!client.IsAdmin) { server.SendOrderTo(conn, "Message", "Only the host can set that option."); diff --git a/OpenRA.Mods.Common/UtilityCommands/LegacyMapImporter.cs b/OpenRA.Mods.Common/UtilityCommands/LegacyMapImporter.cs index f9bb2410a9..e2e3997323 100644 --- a/OpenRA.Mods.Common/UtilityCommands/LegacyMapImporter.cs +++ b/OpenRA.Mods.Common/UtilityCommands/LegacyMapImporter.cs @@ -387,23 +387,28 @@ namespace OpenRA.Mods.Common.UtilityCommands try { var parts = s.Value.Split(','); - var loc = Exts.ParseIntegerInvariant(parts[3]); if (parts[0] == "") parts[0] = "Neutral"; if (!players.Contains(parts[0])) players.Add(parts[0]); + var loc = Exts.ParseIntegerInvariant(parts[3]); + var health = float.Parse(parts[2], NumberFormatInfo.InvariantInfo) / 256; + var facing = (section == "INFANTRY") ? Exts.ParseIntegerInvariant(parts[6]) : Exts.ParseIntegerInvariant(parts[4]); + var actor = new ActorReference(parts[1].ToLowerInvariant()) { new LocationInit(new CPos(loc % mapSize, loc / mapSize)), new OwnerInit(parts[0]), - new HealthInit(float.Parse(parts[2], NumberFormatInfo.InvariantInfo) / 256), - new FacingInit((section == "INFANTRY") - ? Exts.ParseIntegerInvariant(parts[6]) - : Exts.ParseIntegerInvariant(parts[4])), }; + var initDict = actor.InitDict; + if (health != 1) + initDict.Add(new HealthInit(health)); + if (facing != 0) + initDict.Add(new FacingInit(facing)); + if (section == "INFANTRY") actor.Add(new SubCellInit(Exts.ParseIntegerInvariant(parts[4]))); diff --git a/OpenRA.Mods.RA/Widgets/Logic/LobbyLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/LobbyLogic.cs index 58906f09af..0acbd28ffa 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/LobbyLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/LobbyLogic.cs @@ -507,7 +507,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic disconnectButton.OnClick = () => { CloseWindow(); onExit(); }; if (skirmishMode) - disconnectButton.Text = "Cancel"; + disconnectButton.Text = "Back"; chatLabel = lobby.Get("LABEL_CHATTYPE"); var chatTextField = lobby.Get("CHAT_TEXTFIELD"); diff --git a/OpenRA.Mods.RA/Widgets/Logic/MainMenuLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/MainMenuLogic.cs index 3197818054..45c9e245a3 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/MainMenuLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/MainMenuLogic.cs @@ -294,7 +294,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic menuType = MenuType.None; Game.OpenWindow("SERVER_LOBBY", new WidgetArgs { - { "onExit", () => { Game.Disconnect(); menuType = MenuType.Main; } }, + { "onExit", () => { Game.Disconnect(); menuType = MenuType.Singleplayer; } }, { "onStart", RemoveShellmapUI }, { "skirmishMode", true } });