From f48532207ec72ffc32247a8905a3dc14b972651d Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Sun, 22 Oct 2017 00:06:00 +1100 Subject: [PATCH] Add a untested hacky workaround, to force OSX to use 32 bit architecture with mono >= 5.2 --- ClassicalSharp/2D/Screens/ChatScreen.cs | 1 - .../2D/Screens/Menu/NostalgiaScreen.cs | 1 - ClassicalSharp/2D/Widgets/InputWidget.cs | 1 - ClassicalSharp/Network/IServerConnection.cs | 4 --- ClassicalSharp/Network/Protocols/CPE.cs | 1 - .../Selections/PickedPosRenderer.cs | 3 +- Launcher2/Gui/TableWidget/TableView.cs | 2 +- Launcher2/Gui/Views/SettingsView.cs | 1 - Launcher2/Utils/Client.cs | 31 +++++++++++++++++-- 9 files changed, 30 insertions(+), 15 deletions(-) diff --git a/ClassicalSharp/2D/Screens/ChatScreen.cs b/ClassicalSharp/2D/Screens/ChatScreen.cs index 0b417923c..3b23b0230 100644 --- a/ClassicalSharp/2D/Screens/ChatScreen.cs +++ b/ClassicalSharp/2D/Screens/ChatScreen.cs @@ -30,7 +30,6 @@ namespace ClassicalSharp.Gui.Screens { static string chatInInputBuffer = null; public override void Init() { - float textScale = game.Drawer2D.UseBitmappedChat ? 1.25f : 1; int fontSize = (int)(8 * game.GuiChatScale); Utils.Clamp(ref fontSize, 8, 60); chatFont = new Font(game.FontName, fontSize); diff --git a/ClassicalSharp/2D/Screens/Menu/NostalgiaScreen.cs b/ClassicalSharp/2D/Screens/Menu/NostalgiaScreen.cs index 8883de5e3..a36f1c14e 100644 --- a/ClassicalSharp/2D/Screens/Menu/NostalgiaScreen.cs +++ b/ClassicalSharp/2D/Screens/Menu/NostalgiaScreen.cs @@ -29,7 +29,6 @@ namespace ClassicalSharp.Gui.Screens { protected override void ContextRecreated() { ClickHandler onClick = OnWidgetClick; - bool classic = game.UseClassicOptions; widgets = new Widget[] { MakeOpt(-1, -150, "Classic hand model", onClick, GetHand, SetHand), MakeOpt(-1, -100, "Classic walk anim", onClick, GetAnim, SetAnim), diff --git a/ClassicalSharp/2D/Widgets/InputWidget.cs b/ClassicalSharp/2D/Widgets/InputWidget.cs index 1bdd0336f..6c711aef1 100644 --- a/ClassicalSharp/2D/Widgets/InputWidget.cs +++ b/ClassicalSharp/2D/Widgets/InputWidget.cs @@ -200,7 +200,6 @@ namespace ClassicalSharp.Gui.Widgets { protected char GetLastColour(int indexX, int indexY) { int x = indexX; - IDrawer2D drawer = game.Drawer2D; for (int y = indexY; y >= 0; y--) { string part = lines[y]; char code = IDrawer2D.LastCol(part, x); diff --git a/ClassicalSharp/Network/IServerConnection.cs b/ClassicalSharp/Network/IServerConnection.cs index e4bdeaf2b..1d4637ed5 100644 --- a/ClassicalSharp/Network/IServerConnection.cs +++ b/ClassicalSharp/Network/IServerConnection.cs @@ -71,10 +71,6 @@ namespace ClassicalSharp { string url = identifier.Substring(3); float contentLengthMB = (contentLength / 1024f / 1024f); - string address = url; - if (url.StartsWith("https://")) address = url.Substring(8); - if (url.StartsWith("http://")) address = url.Substring(7); - warning.lines[3] = "Download size: " + contentLengthMB.ToString("F3") + " MB"; warning.RedrawText(); } diff --git a/ClassicalSharp/Network/Protocols/CPE.cs b/ClassicalSharp/Network/Protocols/CPE.cs index fcdb035ec..40058df9b 100644 --- a/ClassicalSharp/Network/Protocols/CPE.cs +++ b/ClassicalSharp/Network/Protocols/CPE.cs @@ -201,7 +201,6 @@ namespace ClassicalSharp.Network.Protocols { byte blockId = reader.ReadUInt8(); bool canPlace = reader.ReadUInt8() != 0; bool canDelete = reader.ReadUInt8() != 0; - Inventory inv = game.Inventory; if (blockId == 0) { int count = game.UseCPEBlocks ? Block.CpeCount : Block.OriginalCount; diff --git a/ClassicalSharp/Selections/PickedPosRenderer.cs b/ClassicalSharp/Selections/PickedPosRenderer.cs index a10e6cefc..15ea4a141 100644 --- a/ClassicalSharp/Selections/PickedPosRenderer.cs +++ b/ClassicalSharp/Selections/PickedPosRenderer.cs @@ -38,8 +38,7 @@ namespace ClassicalSharp.Renderers { index = 0; Vector3 camPos = game.CurrentCameraPos; float dist = (camPos - selected.Min).LengthSquared; - IGraphicsApi gfx = game.Graphics; - + float offset = 0.01f; if (dist < 4 * 4) offset = 0.00625f; if (dist < 2 * 2) offset = 0.00500f; diff --git a/Launcher2/Gui/TableWidget/TableView.cs b/Launcher2/Gui/TableWidget/TableView.cs index 67dc59030..530a63f67 100644 --- a/Launcher2/Gui/TableWidget/TableView.cs +++ b/Launcher2/Gui/TableWidget/TableView.cs @@ -61,7 +61,7 @@ namespace Launcher.Gui.Widgets { x += DrawColumn(drawer, "Name", 0, x, filterName) + 5; x += DrawColumn(drawer, "Players", 1, x, filterPlayers) + 5; x += DrawColumn(drawer, "Uptime", 2, x, filterUptime) + 5; - x += DrawColumn(drawer, "Software", 3, x, FilterSoftware) + 5; + x += DrawColumn(drawer, "Software", 3, x, filterSoftware) + 5; DrawScrollbar(drawer); } diff --git a/Launcher2/Gui/Views/SettingsView.cs b/Launcher2/Gui/Views/SettingsView.cs index b86d5d9bb..019255580 100644 --- a/Launcher2/Gui/Views/SettingsView.cs +++ b/Launcher2/Gui/Views/SettingsView.cs @@ -20,7 +20,6 @@ namespace Launcher.Gui.Views { protected override void MakeWidgets() { widgetIndex = 0; - int middle = game.Width / 2; updatesIndex = widgetIndex; Makers.Button(this, "Updates", 110, 35, titleFont) diff --git a/Launcher2/Utils/Client.cs b/Launcher2/Utils/Client.cs index 5e49c1486..63b24f254 100644 --- a/Launcher2/Utils/Client.cs +++ b/Launcher2/Utils/Client.cs @@ -3,6 +3,7 @@ using System; using System.ComponentModel; using System.Diagnostics; using System.IO; +using System.Reflection; using ClassicalSharp; using OpenTK; @@ -56,14 +57,38 @@ namespace Launcher { throw; // File not found HRESULT, HRESULT thrown when running on wine Process.Start(path, args); } + } else if (Configuration.RunningOnMacOS && NeedOSXHack()) { + Process.Start("mono", "--arch=32 \"" + path + "\" " + args); } else { Process.Start("mono", "\"" + path + "\" " + args); - } + } } else { Process.Start(path, args); } } + static bool NeedOSXHack() { + Type type = Type.GetType("Mono.Runtime"); + if (type == null) return false; + MethodInfo displayName = type.GetMethod("GetDisplayName", BindingFlags.NonPublic | BindingFlags.Static); + if (displayName == null) return false; + + object versionRaw = displayName.Invoke(null, null); + if (versionRaw == null) return false; + + string versionStr = versionRaw.ToString(); + if (versionStr.IndexOf(' ') >= 0) { + versionStr = versionStr.Substring(0, versionStr.IndexOf(' ')); + } + + try { + Version version = new Version(versionStr); + return version.Major >= 5 && version.Minor >= 2; + } catch { + return false; + } + } + internal static void CheckSettings(ClientStartData data, bool ccSkins, out bool shouldExit) { shouldExit = false; // Make sure if the client has changed some settings in the meantime, we keep the changes @@ -76,11 +101,11 @@ namespace Launcher { Options.Set("launcher-ip", data.Ip); Options.Set("launcher-port", data.Port); Options.Set("launcher-mppass", Secure.Encode(data.Mppass, data.Username)); - Options.Set("launcher-ccskins", ccSkins); + Options.Set("launcher-ccskins", ccSkins); Options.Save(); } } - + public class ClientStartData { public string Username, Mppass, Ip, Port;