diff --git a/src/net/torvald/terrarum/App.java b/src/net/torvald/terrarum/App.java index e3d434a0b..ed53accca 100644 --- a/src/net/torvald/terrarum/App.java +++ b/src/net/torvald/terrarum/App.java @@ -142,6 +142,12 @@ public class App implements ApplicationListener { public static final int GLOBAL_FRAMERATE_LIMIT = 300; + private static String undesirableConditions; + + public static String getUndesirableConditions() { + return undesirableConditions; + } + /** * These languages won't distinguish regional differences (e.g. enUS and enUK, frFR and frCA) */ @@ -346,10 +352,13 @@ public class App implements ApplicationListener { processorVendor = "Unknown CPU"; } - if (processor.startsWith("Apple M") && Objects.equals(systemArch, "aarch64")) { + if (processor.startsWith("Apple M") && systemArch.equals("aarch64")) { isAppleM = true; System.out.println("Apple Proprietary "+processor+" detected; don't expect smooth sailing..."); } + if (processor.startsWith("Apple M") && !systemArch.equals("aarch64")) { + undesirableConditions = "apple_execution_through_rosetta"; + } if (!IS_DEVELOPMENT_BUILD) { var p = UnsafeHelper.INSTANCE.allocate(64); diff --git a/src/net/torvald/terrarum/modulebasegame/TitleScreen.kt b/src/net/torvald/terrarum/modulebasegame/TitleScreen.kt index 5da2936ab..405fea28a 100644 --- a/src/net/torvald/terrarum/modulebasegame/TitleScreen.kt +++ b/src/net/torvald/terrarum/modulebasegame/TitleScreen.kt @@ -332,11 +332,11 @@ class TitleScreen(batch: FlippingSpriteBatch) : IngameInstance(batch) { batch.color = Color.WHITE + // warn: 32-bit + val linegap = 4 + val imgTxtGap = 10 + val yoff = App.scr.height - App.scr.tvSafeGraphicsHeight - 64 - (3*(20+linegap)) - imgTxtGap - 9 if (App.is32BitJVM && uiRemoCon.currentRemoConContents.parent == null) { -// if (uiRemoCon.currentRemoConContents.parent == null) { - val linegap = 4 - val imgTxtGap = 10 - val yoff = App.scr.height - App.scr.tvSafeGraphicsHeight - 64 - (3*(20+linegap)) - imgTxtGap - 9 Toolkit.drawCentered(batch, warning32bitJavaIcon, yoff) for (i in 0..2) { val text = Lang.get("GAME_32BIT_WARNING${i+1}", (i != 2)) @@ -344,6 +344,15 @@ class TitleScreen(batch: FlippingSpriteBatch) : IngameInstance(batch) { App.fontGame.draw(batch, text, ((drawWidth - App.fontGame.getWidth(text)) / 2).toFloat(), yoff + imgTxtGap + 64f + linegap + i*(20+linegap)) } } + // warn: rosetta on Apple M-chips + else if (App.getUndesirableConditions() == "apple_execution_through_rosetta") { + listOf( + "It seems you are using a Mac with Apple Silicon but running the game through Rosetta.", + "A native build for the game is available which runs much faster than current version." + ).forEachIndexed { i, text -> + App.fontGame.draw(batch, text, ((drawWidth - App.fontGame.getWidth(text)) / 2).toFloat(), yoff + imgTxtGap + 64f + linegap + i*(20+linegap)) + } + } } override fun pause() {