From e5e02681b8ce546c42dce2bd25ef5a9cba6a93dc Mon Sep 17 00:00:00 2001 From: minjaesong Date: Fri, 30 Jun 2023 00:53:46 +0900 Subject: [PATCH] weather only change on titlescreen --- .../terrarum/modulebasegame/IngameRenderer.kt | 2 +- .../terrarum/modulebasegame/TerrarumIngame.kt | 1 + .../torvald/terrarum/modulebasegame/TitleScreen.kt | 11 ++++++++--- src/net/torvald/terrarum/weather/WeatherMixer.kt | 14 +++++++++++++- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt b/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt index fccf2f916..ec7e61e95 100644 --- a/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt +++ b/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt @@ -205,7 +205,7 @@ object IngameRenderer : Disposable { actorsRenderOverlay: List, particlesContainer : CircularArray, player: ActorWithBody? = null, - uiContainer: UIContainer? = null + uiContainer: UIContainer? = null, ) { renderingActorsCount = (actorsRenderBehind.size) + (actorsRenderMiddle.size) + diff --git a/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt index 34e6f7812..65dc2bcd1 100644 --- a/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt +++ b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt @@ -484,6 +484,7 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) { actorGamer = player forceAddActor(player) + WeatherMixer.internalReset() } KeyToggler.forceSet(Input.Keys.Q, false) diff --git a/src/net/torvald/terrarum/modulebasegame/TitleScreen.kt b/src/net/torvald/terrarum/modulebasegame/TitleScreen.kt index bf127f234..53bbe9066 100644 --- a/src/net/torvald/terrarum/modulebasegame/TitleScreen.kt +++ b/src/net/torvald/terrarum/modulebasegame/TitleScreen.kt @@ -165,7 +165,7 @@ class TitleScreen(batch: FlippingSpriteBatch) : IngameInstance(batch) { //ReadWorld.readWorldAndSetNewWorld(Terrarum.ingame!! as TerrarumIngame, reader) val world = ReadSimpleWorld(reader, file) demoWorld = world - demoWorld.worldTime.timeDelta = 0//60 + demoWorld.worldTime.timeDelta = 440 // a year = 6 minutes printdbg(this, "Demo world loaded") } catch (e: IOException) { @@ -281,9 +281,14 @@ class TitleScreen(batch: FlippingSpriteBatch) : IngameInstance(batch) { } private val updateScreen = { delta: Float -> - demoWorld.globalLight = WeatherMixer.globalLightNow + // TODO: desynched weather and time-of-day change + + val forcedTime = 39693 +// demoWorld.globalLight = WeatherMixer.globalLightNow + demoWorld.globalLight = WeatherMixer.getGlobalLightOfTime(demoWorld, forcedTime) demoWorld.updateWorldTime(delta) - WeatherMixer.update(delta, cameraPlayer, demoWorld) +// WeatherMixer.update(delta, cameraPlayer, demoWorld) + WeatherMixer.forceTimeAt = forcedTime cameraPlayer.update(delta) // worldcamera update AFTER cameraplayer in this case; the other way is just an exception for actual ingame SFX diff --git a/src/net/torvald/terrarum/weather/WeatherMixer.kt b/src/net/torvald/terrarum/weather/WeatherMixer.kt index 7bb9b2d58..9562e9115 100644 --- a/src/net/torvald/terrarum/weather/WeatherMixer.kt +++ b/src/net/torvald/terrarum/weather/WeatherMixer.kt @@ -57,6 +57,18 @@ internal object WeatherMixer : RNGConsumer { // TODO to save from GL overhead, store lightmap to array; use GdxColorMap + var forceTimeAt: Int? = null + + override fun loadFromSave(s0: Long, s1: Long) { + super.loadFromSave(s0, s1) + internalReset() + } + + fun internalReset() { + globalLightOverridden = false + forceTimeAt = null + } + init { weatherList = HashMap>() @@ -146,7 +158,7 @@ internal object WeatherMixer : RNGConsumer { // we will not care for nextSkybox for now - val timeNow = world.worldTime.TIME_T.toInt() % WorldTime.DAY_LENGTH + val timeNow = (forceTimeAt ?: world.worldTime.TIME_T.toInt()) % WorldTime.DAY_LENGTH val skyboxColourMap = currentWeather.skyboxGradColourMap // calculate global light