mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-14 04:24:05 +09:00
save/load fluid layer
This commit is contained in:
@@ -324,6 +324,7 @@ open class GameWorld(
|
|||||||
TERRAIN -> layerTerrain
|
TERRAIN -> layerTerrain
|
||||||
WALL -> layerWall
|
WALL -> layerWall
|
||||||
ORES -> layerOres
|
ORES -> layerOres
|
||||||
|
FLUID -> layerFluids
|
||||||
else -> null//throw IllegalArgumentException("Unknown layer index: $index")
|
else -> null//throw IllegalArgumentException("Unknown layer index: $index")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -860,6 +861,7 @@ open class GameWorld(
|
|||||||
@Transient const val TERRAIN = 0
|
@Transient const val TERRAIN = 0
|
||||||
@Transient const val WALL = 1
|
@Transient const val WALL = 1
|
||||||
@Transient const val ORES = 2
|
@Transient const val ORES = 2
|
||||||
|
@Transient const val FLUID = 3
|
||||||
|
|
||||||
@Transient val TILES_SUPPORTED = ReferencingRanges.TILES.last + 1
|
@Transient val TILES_SUPPORTED = ReferencingRanges.TILES.last + 1
|
||||||
//@Transient val SIZEOF: Byte = 2
|
//@Transient val SIZEOF: Byte = 2
|
||||||
|
|||||||
@@ -858,16 +858,10 @@ open class ActorHumanoid : ActorWithBody, Controllable, Pocketed, Factionable, L
|
|||||||
}
|
}
|
||||||
|
|
||||||
// flipping the sprite
|
// flipping the sprite
|
||||||
if (walkHeading == LEFT) {
|
val flip = (walkHeading == LEFT)
|
||||||
sprite?.flip(true, false)
|
sprite?.flip(flip, false)
|
||||||
spriteGlow?.flip(true, false)
|
spriteGlow?.flip(flip, false)
|
||||||
spriteEmissive?.flip(true, false)
|
spriteEmissive?.flip(flip, false)
|
||||||
}
|
|
||||||
else {
|
|
||||||
sprite?.flip(false, false)
|
|
||||||
spriteGlow?.flip(false, false)
|
|
||||||
spriteEmissive?.flip(false, false)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun reload() {
|
override fun reload() {
|
||||||
|
|||||||
@@ -3,6 +3,10 @@ package net.torvald.terrarum.modulebasegame.serialise
|
|||||||
import net.torvald.gdx.graphics.PixmapIO2
|
import net.torvald.gdx.graphics.PixmapIO2
|
||||||
import net.torvald.terrarum.*
|
import net.torvald.terrarum.*
|
||||||
import net.torvald.terrarum.gameworld.GameWorld.Companion.CHUNK_LOADED
|
import net.torvald.terrarum.gameworld.GameWorld.Companion.CHUNK_LOADED
|
||||||
|
import net.torvald.terrarum.gameworld.GameWorld.Companion.FLUID
|
||||||
|
import net.torvald.terrarum.gameworld.GameWorld.Companion.ORES
|
||||||
|
import net.torvald.terrarum.gameworld.GameWorld.Companion.TERRAIN
|
||||||
|
import net.torvald.terrarum.gameworld.GameWorld.Companion.WALL
|
||||||
import net.torvald.terrarum.modulebasegame.IngameRenderer
|
import net.torvald.terrarum.modulebasegame.IngameRenderer
|
||||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||||
import net.torvald.terrarum.modulebasegame.gameactors.FixtureBase
|
import net.torvald.terrarum.modulebasegame.gameactors.FixtureBase
|
||||||
@@ -25,7 +29,7 @@ class WorldSavingThread(
|
|||||||
val ingame: TerrarumIngame,
|
val ingame: TerrarumIngame,
|
||||||
val isAuto: Boolean,
|
val isAuto: Boolean,
|
||||||
val callback: () -> Unit,
|
val callback: () -> Unit,
|
||||||
val errorHandler: (Throwable) -> Unit
|
errorHandler: (Throwable) -> Unit
|
||||||
) : SavingThread(errorHandler) {
|
) : SavingThread(errorHandler) {
|
||||||
/**
|
/**
|
||||||
* Will happily overwrite existing entry
|
* Will happily overwrite existing entry
|
||||||
@@ -59,7 +63,7 @@ class WorldSavingThread(
|
|||||||
|
|
||||||
val playersList: List<IngamePlayer> = allTheActors.filterIsInstance<IngamePlayer>()
|
val playersList: List<IngamePlayer> = allTheActors.filterIsInstance<IngamePlayer>()
|
||||||
val actorsList = allTheActors.filter { WriteWorld.actorAcceptable(it) }
|
val actorsList = allTheActors.filter { WriteWorld.actorAcceptable(it) }
|
||||||
val layers = intArrayOf(0,1,2).map { ingame.world.getLayer(it) }
|
val layers = intArrayOf(TERRAIN, WALL, ORES, FLUID).map { ingame.world.getLayer(it) }
|
||||||
val cw = ingame.world.width / LandUtil.CHUNK_W
|
val cw = ingame.world.width / LandUtil.CHUNK_W
|
||||||
val ch = ingame.world.height / LandUtil.CHUNK_H
|
val ch = ingame.world.height / LandUtil.CHUNK_H
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,10 @@ import net.torvald.terrarum.gameworld.BlockLayerI16F16
|
|||||||
import net.torvald.terrarum.gameworld.BlockLayerOresI16I8
|
import net.torvald.terrarum.gameworld.BlockLayerOresI16I8
|
||||||
import net.torvald.terrarum.gameworld.GameWorld
|
import net.torvald.terrarum.gameworld.GameWorld
|
||||||
import net.torvald.terrarum.gameworld.GameWorld.Companion.CHUNK_LOADED
|
import net.torvald.terrarum.gameworld.GameWorld.Companion.CHUNK_LOADED
|
||||||
|
import net.torvald.terrarum.gameworld.GameWorld.Companion.FLUID
|
||||||
|
import net.torvald.terrarum.gameworld.GameWorld.Companion.ORES
|
||||||
|
import net.torvald.terrarum.gameworld.GameWorld.Companion.TERRAIN
|
||||||
|
import net.torvald.terrarum.gameworld.GameWorld.Companion.WALL
|
||||||
import net.torvald.terrarum.langpack.Lang
|
import net.torvald.terrarum.langpack.Lang
|
||||||
import net.torvald.terrarum.modulebasegame.FancyWorldReadLoadScreen
|
import net.torvald.terrarum.modulebasegame.FancyWorldReadLoadScreen
|
||||||
import net.torvald.terrarum.modulebasegame.IngameRenderer
|
import net.torvald.terrarum.modulebasegame.IngameRenderer
|
||||||
@@ -193,7 +197,7 @@ object LoadSavegame {
|
|||||||
val cw = LandUtil.CHUNK_W
|
val cw = LandUtil.CHUNK_W
|
||||||
val ch = LandUtil.CHUNK_H
|
val ch = LandUtil.CHUNK_H
|
||||||
val chunkCount = world.width * world.height / (cw * ch)
|
val chunkCount = world.width * world.height / (cw * ch)
|
||||||
val worldLayer = intArrayOf(0,1,2).map { world.getLayer(it) }
|
val worldLayer = intArrayOf(TERRAIN, WALL, ORES, FLUID).map { world.getLayer(it) }
|
||||||
for (chunk in 0L until chunkCount) {
|
for (chunk in 0L until chunkCount) {
|
||||||
for (layer in worldLayer.indices) {
|
for (layer in worldLayer.indices) {
|
||||||
loadscreen.addMessage(Lang["MENU_IO_LOADING"])
|
loadscreen.addMessage(Lang["MENU_IO_LOADING"])
|
||||||
|
|||||||
Reference in New Issue
Block a user