diff --git a/OpenRa.Game/Chrome.cs b/OpenRa.Game/Chrome.cs index 0a0ef0bf5f..ae8ee5ca2a 100644 --- a/OpenRa.Game/Chrome.cs +++ b/OpenRa.Game/Chrome.cs @@ -430,7 +430,7 @@ namespace OpenRa.Game leftOffset.X += 1; rightOffset.X -= 1; } - lineRenderer.DrawLine(barStart + leftOffset, powerLevel + rightOffset, color, color); + lineRenderer.DrawLine(Game.viewport.Location + barStart + leftOffset, Game.viewport.Location + powerLevel + rightOffset, color, color); } lineRenderer.Flush(); diff --git a/OpenRa.Game/Game.cs b/OpenRa.Game/Game.cs index 32e7026741..b80110316a 100644 --- a/OpenRa.Game/Game.cs +++ b/OpenRa.Game/Game.cs @@ -57,6 +57,7 @@ namespace OpenRa.Game public static void ChangeMap(string mapName) { + chat.AddLine(Color.White, "Debug", "Map change {0} -> {1}".F(Game.mapName, mapName)); Game.changePending = false; Game.mapName = mapName; SheetBuilder.Initialize(renderer); @@ -388,8 +389,6 @@ namespace OpenRa.Game LobbyInfo = session; - // todo: if we don't have all the resources, we don't want to do this yet. - if (Game.orderManager.FramesAhead != LobbyInfo.GlobalSettings.OrderLatency && !Game.orderManager.GameStarted) { @@ -398,19 +397,9 @@ namespace OpenRa.Game "Order lag is now {0} frames.".F(LobbyInfo.GlobalSettings.OrderLatency)); } - PackageDownloader.SetPackageList(LobbyInfo.GlobalSettings.Packages); - if (!PackageDownloader.IsIdle()) - { + if (PackageDownloader.SetPackageList(LobbyInfo.GlobalSettings.Packages) + || mapName != LobbyInfo.GlobalSettings.Map) changePending = true; - return; - } - - if (mapName != LobbyInfo.GlobalSettings.Map) - { - chat.AddLine(Color.White, "Debug", - "Map change {0} -> {1}".F(mapName, session.GlobalSettings.Map)); - ChangeMap(LobbyInfo.GlobalSettings.Map); - } } public static void StartGame() diff --git a/OpenRa.Game/PackageDownloader.cs b/OpenRa.Game/PackageDownloader.cs index 4e4b83143e..529641b99c 100644 --- a/OpenRa.Game/PackageDownloader.cs +++ b/OpenRa.Game/PackageDownloader.cs @@ -20,8 +20,12 @@ namespace OpenRa.Game public static float Fraction { get; private set; } public static int DownloadedBytes { get { return (int)content.Length; } } - public static void SetPackageList(string[] packages) + public static bool SetPackageList(string[] packages) { + if (!(allPackages.Except(packages).Any() + || packages.Except(allPackages).Any())) + return false; + allPackages = packages; missingPackages = allPackages.Where(p => !HavePackage(p)).ToList(); @@ -29,6 +33,8 @@ namespace OpenRa.Game BeginDownload(); else missingPackages.Remove(currentPackage); + + return true; } class Chunk { public int Index = 0; public int Count = 0; public string Data = ""; }