This commit is contained in:
minjaesong
2019-09-19 18:10:54 +09:00
parent bce3da1446
commit 1cf62da4c5
6 changed files with 37 additions and 18 deletions

2
.gitignore vendored
View File

@@ -22,7 +22,7 @@ external_resource_packs.zip
# IntelliJ # IntelliJ
workspace.xml workspace.xml
*/workspace.xml .idea/*
# Temporary files # Temporary files
.tmp* .tmp*

View File

@@ -1159,4 +1159,8 @@ public class AppLoader implements ApplicationListener {
debugTimers.put(target, l); debugTimers.put(target, l);
} }
} }
public static long getTIME_T() {
return System.currentTimeMillis() / 1000L;
}
} }

View File

@@ -503,9 +503,7 @@ class UIInventoryFull(
if (AppLoader.fontGame.getWidth(listControlHelp) + 2 + controlHintXPos >= encumbBarTextXPos) if (AppLoader.fontGame.getWidth(listControlHelp) + 2 + controlHintXPos >= encumbBarTextXPos)
AppLoader.fontGame.lineHeight AppLoader.fontGame.lineHeight
else 0f else 0f
printdbg(this, "${AppLoader.fontGame.getWidth(listControlHelp) + 2 + controlHintXPos}; ${encumbBarTextXPos}")
AppLoader.fontGame.draw(batch, AppLoader.fontGame.draw(batch,
encumbranceText, encumbranceText,
encumbBarTextXPos, encumbBarTextXPos,

View File

@@ -5,14 +5,14 @@ import net.torvald.terrarum.gameworld.GameWorld
/** /**
* Created by minjaesong on 2019-09-02. * 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 override var generationStarted: Boolean
get() = TODO("not implemented") get() = TODO("not implemented")
set(value) {} set(value) {}
override val generationDone: Boolean override val generationDone: Boolean
get() = TODO("not implemented") get() = TODO("not implemented")
override fun invoke(world: GameWorld, seed: Long, params: Any) { override fun run() {
TODO("not implemented") TODO("not implemented")
} }
} }

View File

@@ -12,13 +12,13 @@ import kotlin.math.sin
/** /**
* Created by minjaesong on 2019-07-23. * 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 var generationStarted: Boolean = false
override val generationDone: Boolean override val generationDone: Boolean
get() = generationStarted && ThreadParallel.allFinished() get() = generationStarted && ThreadParallel.allFinished()
override fun invoke(world: GameWorld, seed: Long, params: Any) { override fun run() {
val joise = getGenerator(seed, params as TerragenParams) val joise = getGenerator(seed, params as TerragenParams)
(0 until world.width).mapToThreadPoolDirectly(this.javaClass.simpleName) { range -> (0 until world.width).mapToThreadPoolDirectly(this.javaClass.simpleName) { range ->
@@ -38,7 +38,7 @@ object Terragen : Gen {
ThreadParallel.startAll() ThreadParallel.startAll()
generationStarted = true generationStarted = true
super.run()
} }

View File

@@ -1,5 +1,7 @@
package net.torvald.terrarum.modulebasegame.worldgenerator package net.torvald.terrarum.modulebasegame.worldgenerator
import net.torvald.terrarum.AppLoader
import net.torvald.terrarum.LoadScreen
import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.gameworld.GameWorld
/** /**
@@ -10,24 +12,39 @@ import net.torvald.terrarum.gameworld.GameWorld
object Worldgen { object Worldgen {
operator fun invoke(worldIndex: Int, params: WorldgenParams) { operator fun invoke(worldIndex: Int, params: WorldgenParams) {
val genTime = AppLoader.getTIME_T()
val world = GameWorld(worldIndex, params.width, params.height, System.currentTimeMillis() / 1000, System.currentTimeMillis() / 1000, 0) val world = GameWorld(worldIndex, params.width, params.height, genTime, genTime, 0)
val jobs = listOf( val jobs = listOf(
Work("Reticulating Splines") { Terragen(world, params.seed, params.terragenParams) }, Work("Reticulating Splines", Terragen(world, params.seed, params.terragenParams))
Work("Adding Vegetations") { Biomegen(world, params.seed, params.biomegenParams) } //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 { abstract class Gen(val world: GameWorld, val seed: Long, val params: Any) {
var generationStarted: Boolean abstract var generationStarted: Boolean
val generationDone: Boolean abstract val generationDone: Boolean
operator fun invoke(world: GameWorld, seed: Long, params: Any) open fun run() {
if (generationDone) {
// worldgen.wake()
}
}
} }
data class WorldgenParams( data class WorldgenParams(