diff --git a/assets/mods/basegame/weathers/WeatherGeneric.json b/assets/mods/basegame/weathers/WeatherGeneric.json index 014da4d9f..4859bd97b 100644 --- a/assets/mods/basegame/weathers/WeatherGeneric.json +++ b/assets/mods/basegame/weathers/WeatherGeneric.json @@ -5,7 +5,7 @@ "cloudChance": 33, "cloudGamma": [0.48, 1.8], "cloudGammaVariance": [0.1, 0.1], - "cloudDriftSpeed": 0.08, + "cloudDriftSpeed": 0.16, "clouds": { "cumulonimbus": { "filename": "cloud_large.png", "tw": 2048, "th": 1024, "probability": 0.25, diff --git a/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt b/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt index 8d913ead9..eb4348ce5 100644 --- a/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt +++ b/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt @@ -255,7 +255,9 @@ object IngameRenderer : Disposable { gdxClearAndEnableBlend(0f, 0f, 0f, 0f) // draw sky - WeatherMixer.render(camera, batch, world) + measureDebugTime("WeatherMixer.render") { + WeatherMixer.render(camera, batch, world) + } // normal behaviour diff --git a/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt b/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt index f01e89709..bf7248c33 100644 --- a/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt +++ b/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt @@ -292,16 +292,16 @@ class BasicDebugInfoWindow : UICanvas() { if (ingame != null) { App.fontSmallNumbers.draw(batch, "${ccY}Actors total $ccG${ingame!!.actorContainerActive.size + ingame!!.actorContainerInactive.size}", - TinyAlphNum.W * 2f, App.scr.height - TinyAlphNum.H * 2f) + TinyAlphNum.W * 2f, App.scr.height - TinyAlphNum.H * 2f) App.fontSmallNumbers.draw(batch, "${ccY}Active $ccG${ingame!!.actorContainerActive.size}", - (TinyAlphNum.W * 2 + 17 * 8).toFloat(), App.scr.height - TinyAlphNum.H * 2f) + TinyAlphNum.W * 2f + (17 * 8), App.scr.height - TinyAlphNum.H * 2f) App.fontSmallNumbers.draw(batch, "${ccY}Dormant $ccG${ingame!!.actorContainerInactive.size}", - (TinyAlphNum.W * 2 + 28 * 8).toFloat(), App.scr.height - TinyAlphNum.H * 2f) + TinyAlphNum.W * 2f + (28 * 8), App.scr.height - TinyAlphNum.H * 2f) if (ingame is TerrarumIngame) { - App.fontSmallNumbers.draw(batch, "${ccM}Particles $ccG${(ingame as TerrarumIngame).particlesActive}", - (TinyAlphNum.W * 2 + 41 * 8).toFloat(), App.scr.height - TinyAlphNum.H * 2f) - App.fontSmallNumbers.draw(batch, "${ccM}Clouds $ccG${WeatherMixer.cloudsSpawned}", - (TinyAlphNum.W * 2 + 53 * 8).toFloat(), App.scr.height - TinyAlphNum.H * 2f) + App.fontSmallNumbers.draw(batch, "${ccM}Particles $ccG${(ingame as TerrarumIngame).particlesActive}$ccY/$ccG${(ingame as TerrarumIngame).PARTICLES_MAX}", + TinyAlphNum.W * 2f, App.scr.height - TinyAlphNum.H * 4f) + App.fontSmallNumbers.draw(batch, "${ccM}Clouds $ccG${WeatherMixer.cloudsSpawned}$ccY/$ccG${WeatherMixer.cloudSpawnMax}", + TinyAlphNum.W * 2f + (18 * 8), App.scr.height - TinyAlphNum.H * 4f) } } diff --git a/src/net/torvald/terrarum/weather/WeatherMixer.kt b/src/net/torvald/terrarum/weather/WeatherMixer.kt index 1295951e2..04eeae09b 100644 --- a/src/net/torvald/terrarum/weather/WeatherMixer.kt +++ b/src/net/torvald/terrarum/weather/WeatherMixer.kt @@ -95,8 +95,8 @@ internal object WeatherMixer : RNGConsumer { private val clouds = SortedArrayList() var cloudsSpawned = 0; private set private var cloudDriftVector = Vector3(-1f, 0f, 0.1f) // this is a direction vector - private val cloudSpawnMax: Int - get() = App.getConfigInt("maxparticles") * 2 + val cloudSpawnMax: Int + get() = 256 shl (App.getConfigInt("maxparticles") / 256) override fun loadFromSave(s0: Long, s1: Long) { super.loadFromSave(s0, s1) @@ -220,7 +220,7 @@ internal object WeatherMixer : RNGConsumer { val cloudChanceEveryMin = 60f / (currentWeather.cloudChance * currentWeather.cloudDriftSpeed) // if chance = 0, the result will be +inf - if (cloudUpdateAkku >= cloudChanceEveryMin) { + while (cloudUpdateAkku >= cloudChanceEveryMin) { cloudUpdateAkku -= cloudChanceEveryMin tryToSpawnCloud(currentWeather) } @@ -257,6 +257,7 @@ internal object WeatherMixer : RNGConsumer { } private val scrHscaler = App.scr.height / 720f + private val cloudSizeMult = App.scr.wf / TerrarumScreenSize.defaultW /** * @param range: range of the randomised number @@ -281,8 +282,6 @@ internal object WeatherMixer : RNGConsumer { val rC = takeUniformRand(0f..1f) val rZ = takeUniformRand(1f..ALPHA_ROLLOFF_Z/4f).pow(1.5f) // clouds are more likely to spawn with low Z-value val rY = takeUniformRand(-1f..1f) - val r1 = takeUniformRand(-1f..1f) - val r2 = takeUniformRand(-1f..1f) val rT1 = takeTriangularRand(-1f..1f) val (rA, rB) = doubleToLongBits(Math.random()).let { it.ushr(20).and(0xFFFF).toInt() to it.ushr(36).and(0xFFFF).toInt() @@ -308,7 +307,7 @@ internal object WeatherMixer : RNGConsumer { val sheetX = rA % cloud.spriteSheet.horizontalCount val sheetY = rB % cloud.spriteSheet.verticalCount WeatherObjectCloud(cloud.spriteSheet.get(sheetX, sheetY), flip).also { - it.scale = cloudScale + it.scale = cloudScale * cloudSizeMult it.posX = posX it.posY = posY