From 707abe8c6dd52a6c6de1f7ea75c485bb51b418ce Mon Sep 17 00:00:00 2001 From: minjaesong Date: Mon, 11 Mar 2024 02:44:05 +0900 Subject: [PATCH] devcycle-based version name (alpha, beta thing) --- src/net/torvald/terrarum/App.java | 9 +-- .../terrarum/TerrarumAppConfiguration.kt | 79 +++++++++++++++++++ .../torvald/terrarum/TerrarumPostProcessor.kt | 2 +- .../terrarum/modulebasegame/TerrarumIngame.kt | 2 +- .../modulebasegame/ui/UILoadDemoSavefiles.kt | 2 +- .../modulebasegame/ui/UILoadManage.kt | 4 +- 6 files changed, 86 insertions(+), 12 deletions(-) diff --git a/src/net/torvald/terrarum/App.java b/src/net/torvald/terrarum/App.java index bf5b58dac..89a4c5fe7 100644 --- a/src/net/torvald/terrarum/App.java +++ b/src/net/torvald/terrarum/App.java @@ -70,16 +70,11 @@ public class App implements ApplicationListener { public static final String VERSION_TAG = TerrarumAppConfiguration.VERSION_TAG; public static final String getVERSION_STRING() { - - var snap = TerrarumAppConfiguration.INSTANCE.getVERSION_SNAPSHOT(); - - return String.format("%d.%d.%d", VERSION_RAW >>> 48, (VERSION_RAW & 0xffff000000L) >>> 24, VERSION_RAW & 0xffffffL) + - (VERSION_TAG.isBlank() ? "" : "-"+VERSION_TAG) + (snap == null ? "" : (" (" + snap + ")")); + return TerrarumAppConfiguration.INSTANCE.getVERSION_STRING(); } public static final String getVERSION_STRING_WITHOUT_SNAPSHOT() { - return String.format("%d.%d.%d", VERSION_RAW >>> 48, (VERSION_RAW & 0xffff000000L) >>> 24, VERSION_RAW & 0xffffffL) + - (VERSION_TAG.isBlank() ? "" : "-"+VERSION_TAG); + return TerrarumAppConfiguration.INSTANCE.getVERSION_STRING_WITHOUT_SNAPSHOT(); } /** diff --git a/src/net/torvald/terrarum/TerrarumAppConfiguration.kt b/src/net/torvald/terrarum/TerrarumAppConfiguration.kt index f43ec16f3..8faf87858 100644 --- a/src/net/torvald/terrarum/TerrarumAppConfiguration.kt +++ b/src/net/torvald/terrarum/TerrarumAppConfiguration.kt @@ -77,12 +77,91 @@ basegame // Commit counts up to the Release 0.4.0: 3631 // Commit counts up to the Release 0.4.1: 3678 + val DEV_CYCLE: Map = mapOf( + "Alpha" to 0x0000_000004_000000, + "Beta" to 0x0000_FFFFFF_000000, + ) + + val VERSION_NUMBER: String = String.format( + "%d.%d.%d", + VERSION_RAW ushr 48, + (VERSION_RAW and 0xffff000000L) ushr 24, + VERSION_RAW and 0xffffffL + ) + + private val DEV_CYCLE_LIST_SORTED = DEV_CYCLE.toList().sortedBy { it.second } + val CURRENT_DEV_CYCLE: String? = DEV_CYCLE_LIST_SORTED.map { it.first to VERSION_RAW - it.second }.firstOrNull { it.second >= 0L }?.first + val VERSION_SNAPSHOT = Snapshot(0) // for normal dev // val VERSION_SNAPSHOT = ForcedSnapshot("24w07d") // for snapshot release // val VERSION_SNAPSHOT = null // for the release const val VERSION_TAG: String = "" + val VERSION_STRING: String + get() { + val major = if (VERSION_RAW >= 0x0001_000000_000000) + VERSION_NUMBER + else if (CURRENT_DEV_CYCLE != null) { + val delta = VERSION_RAW - DEV_CYCLE[CURRENT_DEV_CYCLE]!! + CURRENT_DEV_CYCLE + " " + String.format("%d.%d", ((delta and 0xffff000000L) ushr 24) + 1, delta and 0xffffffL) + } + else + VERSION_NUMBER + + val tag = if (VERSION_TAG.isNotBlank()) "-$VERSION_TAG" else "" + + val snapshot = if (VERSION_SNAPSHOT == null) "" else " ($VERSION_SNAPSHOT)" + + return "$major$tag$snapshot" + } + + val VERSION_STRING_WITHOUT_SNAPSHOT: String + get() { + val major = if (VERSION_RAW >= 0x0001_000000_000000) + VERSION_NUMBER + else if (CURRENT_DEV_CYCLE != null) { + val delta = VERSION_RAW - DEV_CYCLE[CURRENT_DEV_CYCLE ?: ""]!! + CURRENT_DEV_CYCLE + " " + String.format("%d.%d", ((delta and 0xffff000000L) ushr 24) + 1, delta and 0xffffffL) + } + else + VERSION_NUMBER + + val tag = if (VERSION_TAG.isNotBlank()) "-$VERSION_TAG" else "" + + return "$major$tag" + } + + fun convertVersionNumberToReadable(semverStr: String, snapshotObj: Snapshot? = null): String { + val numbers = semverStr.split('.') + val maj = numbers[0].toLong() + val min = numbers.getOrNull(1)?.toLong() ?: 0L + val pat = numbers.getOrNull(2)?.toLong() ?: 0L + + val VERSION_RAW = maj.shl(48) or min.shl(24) or pat + val CURRENT_DEV_CYCLE: String? = DEV_CYCLE_LIST_SORTED.map { it.first to VERSION_RAW - it.second }.firstOrNull { it.second >= 0L }?.first + + val major = if (VERSION_RAW >= 0x0001_000000_000000) + semverStr + else if (CURRENT_DEV_CYCLE != null) { + val delta = VERSION_RAW - DEV_CYCLE[CURRENT_DEV_CYCLE]!! + CURRENT_DEV_CYCLE + " " + String.format("%d.%d", ((delta and 0xffff000000L) ushr 24) + 1, delta and 0xffffffL) + } + else + semverStr + +// val tag = if (VERSION_TAG.isNotBlank()) "-$VERSION_TAG" else "" + + val snapshot = if (snapshotObj == null) "" else " (${snapshotObj})" + + return "$major$snapshot" + } + + fun convertVersionNumberToReadableShort(semverStr: String, snapshotObj: Snapshot? = null): String { + val s = convertVersionNumberToReadable(semverStr, snapshotObj) + return s.replace("Alpha", "α").replace("Beta", "β") + } + ////////////////////////////////////////////////////////// // CONFIGURATION FOR TILE MAKER // // MAKE SURE THESE VALUES ARE UNIQUE IN THE SOURCE CODE // diff --git a/src/net/torvald/terrarum/TerrarumPostProcessor.kt b/src/net/torvald/terrarum/TerrarumPostProcessor.kt index 325bc2136..c13099416 100644 --- a/src/net/torvald/terrarum/TerrarumPostProcessor.kt +++ b/src/net/torvald/terrarum/TerrarumPostProcessor.kt @@ -350,7 +350,7 @@ object TerrarumPostProcessor : Disposable { private val defaultResStr = "Ingame UI Area" private val currentResStr = "${App.scr.width}x${App.scr.height}" private val safeAreaStr = "TV Safe Area" - private val versionStr = "Version ${App.getVERSION_STRING()}" + private val versionStr = "${App.getVERSION_STRING()}" internal val thisIsDebugStr = "${App.GAME_NAME} ${if (App.IS_DEVELOPMENT_BUILD) "Development Build" else "Release"} $versionStr" /** diff --git a/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt index fb8eab08d..2935413d5 100644 --- a/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt +++ b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt @@ -515,7 +515,7 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) { printdbg(this, "loaded successfully.") } else { - App.getLoadScreen().addMessage("${App.GAME_NAME} version ${App.getVERSION_STRING()}") + App.getLoadScreen().addMessage("${App.GAME_NAME} ${App.getVERSION_STRING()}") App.getLoadScreen().addMessage("Creating new world") diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UILoadDemoSavefiles.kt b/src/net/torvald/terrarum/modulebasegame/ui/UILoadDemoSavefiles.kt index 7b37a0d6d..bbab1b311 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UILoadDemoSavefiles.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UILoadDemoSavefiles.kt @@ -544,7 +544,7 @@ class UIItemPlayerCells( } val snap = loadable.getSaveSnapshotVersion() - versionString = genver + (if (snap != null) "-$snap" else "") + versionString = TerrarumAppConfiguration.convertVersionNumberToReadable(genver, snap)// genver + (if (snap != null) "-$snap" else "") val savegameVersionNum = // 0x GGGG GGGGGG GGGGGG YY WW RR BigInteger(genverLong.toString()) * BigInteger("16777216") + BigInteger(snap?.hashCode()?.toString() ?: "16777215") diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UILoadManage.kt b/src/net/torvald/terrarum/modulebasegame/ui/UILoadManage.kt index 5d2f40026..0473383a1 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UILoadManage.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UILoadManage.kt @@ -9,6 +9,7 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.TextureRegion import net.torvald.terrarum.App import net.torvald.terrarum.CommonResourcePool +import net.torvald.terrarum.TerrarumAppConfiguration import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.modulebasegame.serialise.LoadSavegame @@ -481,8 +482,7 @@ class UILoadManage(val full: UILoadSavegame) : UICanvas() { } val snap = this.getSaveSnapshotVersion()?.toString() -// val versionString = genver + (if (snap != null) "-$snap" else "") - val versionString = if (snap != null) "$snap" else genver + val versionString = if (snap != null) "$snap" else TerrarumAppConfiguration.convertVersionNumberToReadableShort(genver) return SavegameMeta( lastPlayTime,