From aaae4f71d8541e165b65bb4cad56219fb6d8630e Mon Sep 17 00:00:00 2001 From: minjaesong Date: Thu, 19 Sep 2019 18:10:54 +0900 Subject: [PATCH] commit --- .gitignore | 2 +- src/net/torvald/terrarum/AppLoader.java | 4 +++ .../modulebasegame/ui/UIInventoryFull.kt | 4 +-- .../modulebasegame/worldgenerator/Biomegen.kt | 4 +-- .../modulebasegame/worldgenerator/Terragen.kt | 6 ++-- .../modulebasegame/worldgenerator/Worldgen.kt | 35 ++++++++++++++----- 6 files changed, 37 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index 583c3409b..37d4b3181 100644 --- a/.gitignore +++ b/.gitignore @@ -22,7 +22,7 @@ external_resource_packs.zip # IntelliJ workspace.xml -*/workspace.xml +.idea/* # Temporary files .tmp* diff --git a/src/net/torvald/terrarum/AppLoader.java b/src/net/torvald/terrarum/AppLoader.java index ba1825e51..96b75903c 100644 --- a/src/net/torvald/terrarum/AppLoader.java +++ b/src/net/torvald/terrarum/AppLoader.java @@ -1159,4 +1159,8 @@ public class AppLoader implements ApplicationListener { debugTimers.put(target, l); } } + + public static long getTIME_T() { + return System.currentTimeMillis() / 1000L; + } } \ No newline at end of file diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt index 9d0f9430f..c831d2304 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt @@ -503,9 +503,7 @@ class UIInventoryFull( if (AppLoader.fontGame.getWidth(listControlHelp) + 2 + controlHintXPos >= encumbBarTextXPos) AppLoader.fontGame.lineHeight else 0f - - printdbg(this, "${AppLoader.fontGame.getWidth(listControlHelp) + 2 + controlHintXPos}; ${encumbBarTextXPos}") - + AppLoader.fontGame.draw(batch, encumbranceText, encumbBarTextXPos, diff --git a/src/net/torvald/terrarum/modulebasegame/worldgenerator/Biomegen.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/Biomegen.kt index d7f002f34..e28f35e08 100644 --- a/src/net/torvald/terrarum/modulebasegame/worldgenerator/Biomegen.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/Biomegen.kt @@ -5,14 +5,14 @@ import net.torvald.terrarum.gameworld.GameWorld /** * Created by minjaesong on 2019-09-02. */ -object Biomegen : Gen { +class Biomegen(world: GameWorld, seed: Long, params: Any) : Gen(world, seed, params) { override var generationStarted: Boolean get() = TODO("not implemented") set(value) {} override val generationDone: Boolean get() = TODO("not implemented") - override fun invoke(world: GameWorld, seed: Long, params: Any) { + override fun run() { TODO("not implemented") } } diff --git a/src/net/torvald/terrarum/modulebasegame/worldgenerator/Terragen.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/Terragen.kt index 2e0cde908..1bf96dfbc 100644 --- a/src/net/torvald/terrarum/modulebasegame/worldgenerator/Terragen.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/Terragen.kt @@ -12,13 +12,13 @@ import kotlin.math.sin /** * Created by minjaesong on 2019-07-23. */ -object Terragen : Gen { +class Terragen(world: GameWorld, seed: Long, params: Any) : Gen(world, seed, params) { override var generationStarted: Boolean = false override val generationDone: Boolean get() = generationStarted && ThreadParallel.allFinished() - override fun invoke(world: GameWorld, seed: Long, params: Any) { + override fun run() { val joise = getGenerator(seed, params as TerragenParams) (0 until world.width).mapToThreadPoolDirectly(this.javaClass.simpleName) { range -> @@ -38,7 +38,7 @@ object Terragen : Gen { ThreadParallel.startAll() generationStarted = true - + super.run() } diff --git a/src/net/torvald/terrarum/modulebasegame/worldgenerator/Worldgen.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/Worldgen.kt index 758cc9c7f..768d36cc0 100644 --- a/src/net/torvald/terrarum/modulebasegame/worldgenerator/Worldgen.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/Worldgen.kt @@ -1,5 +1,7 @@ package net.torvald.terrarum.modulebasegame.worldgenerator +import net.torvald.terrarum.AppLoader +import net.torvald.terrarum.LoadScreen import net.torvald.terrarum.gameworld.GameWorld /** @@ -10,24 +12,39 @@ import net.torvald.terrarum.gameworld.GameWorld object Worldgen { operator fun invoke(worldIndex: Int, params: WorldgenParams) { - - val world = GameWorld(worldIndex, params.width, params.height, System.currentTimeMillis() / 1000, System.currentTimeMillis() / 1000, 0) + val genTime = AppLoader.getTIME_T() + val world = GameWorld(worldIndex, params.width, params.height, genTime, genTime, 0) val jobs = listOf( - Work("Reticulating Splines") { Terragen(world, params.seed, params.terragenParams) }, - Work("Adding Vegetations") { Biomegen(world, params.seed, params.biomegenParams) } + Work("Reticulating Splines", Terragen(world, params.seed, params.terragenParams)) + //Work("Adding Vegetations") { Biomegen(world, params.seed, params.biomegenParams) } ) + + for (i in 0 until jobs.size) { + val it = jobs[i] + + LoadScreen.addMessage(it.loadingScreenName) + it.theWork.run() + + // busy wait + while (!it.theWork.generationDone) { } + } + } - private data class Work(val loadingScreenName: String, val theWork: () -> Unit) + private data class Work(val loadingScreenName: String, val theWork: Gen) } -interface Gen { - var generationStarted: Boolean - val generationDone: Boolean - operator fun invoke(world: GameWorld, seed: Long, params: Any) +abstract class Gen(val world: GameWorld, val seed: Long, val params: Any) { + abstract var generationStarted: Boolean + abstract val generationDone: Boolean + open fun run() { + if (generationDone) { + // worldgen.wake() + } + } } data class WorldgenParams(