wires are simulated on every other update

This commit is contained in:
minjaesong
2021-10-25 10:58:18 +09:00
parent a79e673408
commit 64475455a8
2 changed files with 17 additions and 7 deletions

View File

@@ -8,6 +8,7 @@ import net.torvald.terrarum.blockproperties.Fluid
import net.torvald.terrarum.gameactors.ActorWithBody import net.torvald.terrarum.gameactors.ActorWithBody
import net.torvald.terrarum.gameactors.Controllable import net.torvald.terrarum.gameactors.Controllable
import net.torvald.terrarum.gameitem.ItemID import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.modulebasegame.TerrarumIngame.Companion.inUpdateRange import net.torvald.terrarum.modulebasegame.TerrarumIngame.Companion.inUpdateRange
import net.torvald.terrarum.modulebasegame.gameactors.* import net.torvald.terrarum.modulebasegame.gameactors.*
import org.dyn4j.geometry.Vector2 import org.dyn4j.geometry.Vector2
@@ -54,8 +55,8 @@ object WorldSimulator {
/** Bottom-right point */ /** Bottom-right point */
var updateYTo = 0 var updateYTo = 0
private val ingame: IngameInstance private val ingame: TerrarumIngame
get() = Terrarum.ingame!! get() = Terrarum.ingame!! as TerrarumIngame
private val world: GameWorld private val world: GameWorld
get() = ingame.world get() = ingame.world
@@ -85,8 +86,13 @@ object WorldSimulator {
App.measureDebugTime("WorldSimulator.fallables") { App.measureDebugTime("WorldSimulator.fallables") {
displaceFallables(delta) displaceFallables(delta)
} }
App.measureDebugTime("WorldSimulator.wires") { if (ingame.WORLD_UPDATE_TIMER % 2 == 1) {
simulateWires(delta) App.measureDebugTime("WorldSimulator.wires") {
simulateWires(delta)
}
}
else {
// TODO update logic
} }
App.measureDebugTime("WorldSimulator.collisionDroppedItem") { App.measureDebugTime("WorldSimulator.collisionDroppedItem") {
collideDroppedItems() collideDroppedItems()

View File

@@ -32,12 +32,12 @@ import net.torvald.terrarum.modulebasegame.worldgenerator.RoguelikeRandomiser
import net.torvald.terrarum.modulebasegame.worldgenerator.Worldgen import net.torvald.terrarum.modulebasegame.worldgenerator.Worldgen
import net.torvald.terrarum.modulebasegame.worldgenerator.WorldgenParams import net.torvald.terrarum.modulebasegame.worldgenerator.WorldgenParams
import net.torvald.terrarum.realestate.LandUtil import net.torvald.terrarum.realestate.LandUtil
import net.torvald.terrarum.savegame.DiskSkimmer
import net.torvald.terrarum.savegame.VDUtil
import net.torvald.terrarum.serialise.Common import net.torvald.terrarum.serialise.Common
import net.torvald.terrarum.serialise.LoadSavegame import net.torvald.terrarum.serialise.LoadSavegame
import net.torvald.terrarum.serialise.ReadActor import net.torvald.terrarum.serialise.ReadActor
import net.torvald.terrarum.serialise.WriteSavegame import net.torvald.terrarum.serialise.WriteSavegame
import net.torvald.terrarum.savegame.DiskSkimmer
import net.torvald.terrarum.savegame.VDUtil
import net.torvald.terrarum.ui.Toolkit import net.torvald.terrarum.ui.Toolkit
import net.torvald.terrarum.ui.UIAutosaveNotifier import net.torvald.terrarum.ui.UIAutosaveNotifier
import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UICanvas
@@ -59,6 +59,8 @@ import java.util.concurrent.locks.ReentrantLock
open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) { open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) {
var WORLD_UPDATE_TIMER = Random().nextInt(1020) + 1; private set
var historicalFigureIDBucket: ArrayList<Int> = ArrayList<Int>() var historicalFigureIDBucket: ArrayList<Int> = ArrayList<Int>()
@@ -671,7 +673,7 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) {
// define custom update rate // define custom update rate
val updateRate = if (KeyToggler.isOn(Input.Keys.APOSTROPHE)) 1f / 8f else App.UPDATE_RATE val updateRate = App.UPDATE_RATE // if (KeyToggler.isOn(Input.Keys.APOSTROPHE)) 1f / 8f else App.UPDATE_RATE
// ASYNCHRONOUS UPDATE AND RENDER // // ASYNCHRONOUS UPDATE AND RENDER //
@@ -776,6 +778,8 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) {
} }
oldCamX = WorldCamera.x oldCamX = WorldCamera.x
WORLD_UPDATE_TIMER += 1
} }
if (!paused || newWorldLoadedLatch) { if (!paused || newWorldLoadedLatch) {