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

2
.gitignore vendored
View File

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

View File

@@ -1159,4 +1159,8 @@ public class AppLoader implements ApplicationListener {
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)
AppLoader.fontGame.lineHeight
else 0f
printdbg(this, "${AppLoader.fontGame.getWidth(listControlHelp) + 2 + controlHintXPos}; ${encumbBarTextXPos}")
AppLoader.fontGame.draw(batch,
encumbranceText,
encumbBarTextXPos,

View File

@@ -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")
}
}

View File

@@ -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()
}

View File

@@ -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(