mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-10 18:44:05 +09:00
worldgen: estimated time disp
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"APP_WARNING_HEALTH_AND_SAFETY": "WARNING-HEALTH AND SAFETY",
|
"APP_WARNING_HEALTH_AND_SAFETY": "WARNING-HEALTH AND SAFETY",
|
||||||
"CONTEXT_CHARACTER": "Character",
|
"CONTEXT_CHARACTER": "Character",
|
||||||
|
"CONTEXT_ESTIMATED_MINUTES_PLURAL": "Estimated: about {0} minutes",
|
||||||
"CONTEXT_TIME_MINUTE_PLURAL": "Minutes",
|
"CONTEXT_TIME_MINUTE_PLURAL": "Minutes",
|
||||||
"CONTEXT_TIME_SECOND_PLURAL": "Seconds",
|
"CONTEXT_TIME_SECOND_PLURAL": "Seconds",
|
||||||
"COPYRIGHT_ALL_RIGHTS_RESERVED": "All rights reserved",
|
"COPYRIGHT_ALL_RIGHTS_RESERVED": "All rights reserved",
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"APP_WARNING_HEALTH_AND_SAFETY": "경고—건강과 안전을 위하여",
|
"APP_WARNING_HEALTH_AND_SAFETY": "경고—건강과 안전을 위하여",
|
||||||
"CONTEXT_CHARACTER": "캐릭터",
|
"CONTEXT_CHARACTER": "캐릭터",
|
||||||
|
"CONTEXT_ESTIMATED_MINUTES_PLURAL": "예상 시간: 약 {0}분",
|
||||||
"CONTEXT_TIME_MINUTE_PLURAL": "분",
|
"CONTEXT_TIME_MINUTE_PLURAL": "분",
|
||||||
"CONTEXT_TIME_SECOND_PLURAL": "초",
|
"CONTEXT_TIME_SECOND_PLURAL": "초",
|
||||||
"COPYRIGHT_ALL_RIGHTS_RESERVED": "모든 권리 보유",
|
"COPYRIGHT_ALL_RIGHTS_RESERVED": "모든 권리 보유",
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import net.torvald.terrarum.savegame.ByteArray64Reader
|
|||||||
import net.torvald.terrarum.savegame.VirtualDisk
|
import net.torvald.terrarum.savegame.VirtualDisk
|
||||||
import net.torvald.terrarum.serialise.Common
|
import net.torvald.terrarum.serialise.Common
|
||||||
import net.torvald.terrarum.modulebasegame.serialise.ReadActor
|
import net.torvald.terrarum.modulebasegame.serialise.ReadActor
|
||||||
|
import net.torvald.terrarum.modulebasegame.worldgenerator.Worldgen
|
||||||
import net.torvald.terrarum.savegame.DiskSkimmer
|
import net.torvald.terrarum.savegame.DiskSkimmer
|
||||||
import net.torvald.terrarum.savegame.VDFileID.SAVEGAMEINFO
|
import net.torvald.terrarum.savegame.VDFileID.SAVEGAMEINFO
|
||||||
import net.torvald.terrarum.serialise.toBigInt64
|
import net.torvald.terrarum.serialise.toBigInt64
|
||||||
@@ -26,6 +27,7 @@ import net.torvald.terrarum.ui.*
|
|||||||
import net.torvald.terrarum.utils.PasswordBase32
|
import net.torvald.terrarum.utils.PasswordBase32
|
||||||
import net.torvald.terrarum.utils.RandomWordsName
|
import net.torvald.terrarum.utils.RandomWordsName
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by minjaesong on 2021-10-25.
|
* Created by minjaesong on 2021-10-25.
|
||||||
@@ -88,6 +90,7 @@ class UINewWorld(val remoCon: UIRemoCon) : UICanvas() {
|
|||||||
|
|
||||||
private val inputLineY1 = 90
|
private val inputLineY1 = 90
|
||||||
private val inputLineY2 = 130
|
private val inputLineY2 = 130
|
||||||
|
private val inputLineY3 = 170
|
||||||
private val goButtonWidth = 180
|
private val goButtonWidth = 180
|
||||||
private val gridGap = 10
|
private val gridGap = 10
|
||||||
private val buttonBaseX = (Toolkit.drawWidth - 3 * goButtonWidth - 2 * gridGap) / 2
|
private val buttonBaseX = (Toolkit.drawWidth - 3 * goButtonWidth - 2 * gridGap) / 2
|
||||||
@@ -291,6 +294,12 @@ class UINewWorld(val remoCon: UIRemoCon) : UICanvas() {
|
|||||||
// name/seed input labels
|
// name/seed input labels
|
||||||
App.fontGame.draw(batch, Lang["MENU_NAME"], drawX - 4, drawY + sizeSelY + inputLineY1)
|
App.fontGame.draw(batch, Lang["MENU_NAME"], drawX - 4, drawY + sizeSelY + inputLineY1)
|
||||||
App.fontGame.draw(batch, Lang["CONTEXT_GENERATOR_SEED"], drawX - 4, drawY + sizeSelY + inputLineY2)
|
App.fontGame.draw(batch, Lang["CONTEXT_GENERATOR_SEED"], drawX - 4, drawY + sizeSelY + inputLineY2)
|
||||||
|
|
||||||
|
val (wx, wy) = TerrarumIngame.NEW_WORLD_SIZE[sizeSelector.selection]
|
||||||
|
val etaMin = Worldgen.getEstimationSec(wx, wy).div(60f).roundToInt().coerceAtLeast(1)
|
||||||
|
val etaText = Lang.getAndUseTemplate("CONTEXT_ESTIMATED_MINUTES_PLURAL", true, etaMin)
|
||||||
|
|
||||||
|
Toolkit.drawTextCentered(batch, App.fontGame, etaText, width, drawX, drawY + sizeSelY + inputLineY3)
|
||||||
}
|
}
|
||||||
else if (mode == 1) {
|
else if (mode == 1) {
|
||||||
// code input labels
|
// code input labels
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import net.torvald.terrarum.modulebasegame.gameactors.FixtureWorldPortal
|
|||||||
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
|
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
|
||||||
import net.torvald.terrarum.modulebasegame.serialise.ReadActor
|
import net.torvald.terrarum.modulebasegame.serialise.ReadActor
|
||||||
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_OFFSET_Y
|
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_OFFSET_Y
|
||||||
|
import net.torvald.terrarum.modulebasegame.worldgenerator.Worldgen
|
||||||
import net.torvald.terrarum.realestate.LandUtil
|
import net.torvald.terrarum.realestate.LandUtil
|
||||||
import net.torvald.terrarum.savegame.ByteArray64Reader
|
import net.torvald.terrarum.savegame.ByteArray64Reader
|
||||||
import net.torvald.terrarum.savegame.VDFileID
|
import net.torvald.terrarum.savegame.VDFileID
|
||||||
@@ -24,6 +25,7 @@ import net.torvald.terrarum.savegame.VirtualDisk
|
|||||||
import net.torvald.terrarum.serialise.Common
|
import net.torvald.terrarum.serialise.Common
|
||||||
import net.torvald.terrarum.ui.*
|
import net.torvald.terrarum.ui.*
|
||||||
import net.torvald.terrarum.utils.RandomWordsName
|
import net.torvald.terrarum.utils.RandomWordsName
|
||||||
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by minjaesong on 2023-05-19.
|
* Created by minjaesong on 2023-05-19.
|
||||||
@@ -53,6 +55,7 @@ class UIWorldPortalSearch(val full: UIWorldPortal) : UICanvas() {
|
|||||||
private val inputWidth = 350
|
private val inputWidth = 350
|
||||||
private val inputLineY1 = 90
|
private val inputLineY1 = 90
|
||||||
private val inputLineY2 = 130
|
private val inputLineY2 = 130
|
||||||
|
private val inputLineY3 = 170
|
||||||
|
|
||||||
private val sizeSelY = 186 + 40
|
private val sizeSelY = 186 + 40
|
||||||
|
|
||||||
@@ -199,6 +202,11 @@ class UIWorldPortalSearch(val full: UIWorldPortal) : UICanvas() {
|
|||||||
App.fontGame.draw(batch, Lang["MENU_NAME"], drawX - 4, drawY + sizeSelY + inputLineY1)
|
App.fontGame.draw(batch, Lang["MENU_NAME"], drawX - 4, drawY + sizeSelY + inputLineY1)
|
||||||
App.fontGame.draw(batch, Lang["CONTEXT_PLACE_COORDINATE"], drawX - 4, drawY + sizeSelY + inputLineY2)
|
App.fontGame.draw(batch, Lang["CONTEXT_PLACE_COORDINATE"], drawX - 4, drawY + sizeSelY + inputLineY2)
|
||||||
|
|
||||||
|
val (wx, wy) = TerrarumIngame.NEW_WORLD_SIZE[sizeSelector.selection]
|
||||||
|
val etaMin = Worldgen.getEstimationSec(wx, wy).div(60f).roundToInt().coerceAtLeast(1)
|
||||||
|
val etaText = Lang.getAndUseTemplate("CONTEXT_ESTIMATED_MINUTES_PLURAL", true, etaMin)
|
||||||
|
|
||||||
|
Toolkit.drawTextCentered(batch, App.fontGame, etaText, width, drawX, drawY + sizeSelY + inputLineY3)
|
||||||
|
|
||||||
// memory gauge
|
// memory gauge
|
||||||
val chunksUsed = full.chunksUsed
|
val chunksUsed = full.chunksUsed
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
package net.torvald.terrarum.modulebasegame.worldgenerator
|
package net.torvald.terrarum.modulebasegame.worldgenerator
|
||||||
|
|
||||||
import net.torvald.terrarum.App
|
import net.torvald.terrarum.App
|
||||||
import net.torvald.terrarum.App.printdbg
|
import net.torvald.terrarum.App.*
|
||||||
import net.torvald.terrarum.BlockCodex
|
import net.torvald.terrarum.BlockCodex
|
||||||
import net.torvald.terrarum.gameworld.GameWorld
|
import net.torvald.terrarum.gameworld.GameWorld
|
||||||
|
import kotlin.math.roundToLong
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* New world generator.
|
* New world generator.
|
||||||
@@ -62,6 +63,9 @@ object Worldgen {
|
|||||||
|
|
||||||
private data class Work(val loadingScreenName: String, val theWork: Gen)
|
private data class Work(val loadingScreenName: String, val theWork: Gen)
|
||||||
|
|
||||||
|
fun getEstimationSec(width: Int, height: Int): Long {
|
||||||
|
return (23.05 * 1.25 * (bogoflops / 47500000.0) * (width * height / 40095000.0) * (THREAD_COUNT / 32.0)).roundToLong()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class Gen(val world: GameWorld, val seed: Long, val params: Any) {
|
abstract class Gen(val world: GameWorld, val seed: Long, val params: Any) {
|
||||||
|
|||||||
Reference in New Issue
Block a user