referencing ranges for wire overlay; more pronounced torch flicker

This commit is contained in:
minjaesong
2021-08-07 00:53:17 +09:00
parent ce9b86d637
commit de2be74fb1
6 changed files with 19 additions and 14 deletions

View File

@@ -17,11 +17,13 @@ object ReferencingRanges {
val ACTORS_MIDDLE = 0x2000_0000..0x4FFF_FFFF // Regular actors (e.g. almost all of them)
val ACTORS_MIDTOP = 0x5000_0000..0x5FFF_FFFF // Special (e.g. weapon swung, bullets, dropped item, particles)
val ACTORS_FRONT = 0x6000_0000..0x6EFF_FFFF // Rendered front (e.g. fake tile)
val ACTORS_WIRES = 0x6FFF_0000..0x6FFF_FFFF // Rendered front--weres
val ACTORS_OVERLAY = 0x7000_0000..0x7FFF_FFFF // Rendered as screen overlay, not affected by light nor environment overlays
val VIRTUAL_TILES = -2 downTo -1048576 // index of -1 breaks things for some reason :(
val ACTORS_WIRES = 0x6FFF_0000..0x6FFF_FFFF // Rendered front--wires
val ACTORS_WIRES_HELPER = 0x7000_0000..0x7000_FFFF // Rendered overlay--wiring port icons and logic gates
val PREFIX_DYNAMICITEM = "dyn:"
val PREFIX_ACTORITEM = "actor:"
val ACTORS_OVERLAY = 0x7001_0000..0x7FFF_FFFF // Rendered as screen overlay, not affected by light nor environment overlays
val PREFIX_DYNAMICITEM = "dyn"
val PREFIX_ACTORITEM = "actor"
val PREFIX_VIRTUALTILE = "virt"
}

View File

@@ -5,6 +5,7 @@ import net.torvald.terrarum.AppLoader
import net.torvald.terrarum.AppLoader.printdbg
import net.torvald.terrarum.AppLoader.printmsg
import net.torvald.terrarum.ReferencingRanges
import net.torvald.terrarum.ReferencingRanges.PREFIX_VIRTUALTILE
import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.gameworld.FluidType
import net.torvald.terrarum.gameworld.GameWorld
@@ -72,12 +73,12 @@ object BlockCodex {
// add virtual props for dynamic lights
val virtualChunk = ArrayList<ItemID>()
repeat(DYNAMIC_RANDOM_CASES) { _ ->
val virtualID = "virt:$virtualTileCursor"
val virtualID = "$PREFIX_VIRTUALTILE:$virtualTileCursor"
virtualToTile[virtualID] = tileId
virtualChunk.add(virtualID)
setProp("virt", virtualTileCursor, it)
setProp(PREFIX_VIRTUALTILE, virtualTileCursor, it)
printdbg(this, "Block ID $tileId -> Virtual ID $virtualID, baseLum: ${blockProps[virtualID]?.baseLumCol}")
virtualTileCursor += 1

View File

@@ -15,7 +15,7 @@ import net.torvald.terrarum.weather.WeatherMixer
object BlockPropUtil {
//var flickerFuncX: Second = 0f // saves current status (time) of func
val flickerFuncDomain: Second = 0.08f // time between two noise sample
val flickerFuncRange = 0.012f // intensity [0, 1]
val flickerFuncRange = 0.022f // intensity [0, 1]
//var breathFuncX = 0f
val breathRange = 0.02f

View File

@@ -27,9 +27,11 @@ abstract class Actor(val renderOrder: RenderOrder) : Comparable<Actor>, Runnable
val RANGE_BEHIND = ReferencingRanges.ACTORS_BEHIND // 1
val RANGE_MIDDLE = ReferencingRanges.ACTORS_MIDDLE // 3
val RANGE_MIDTOP = ReferencingRanges.ACTORS_MIDTOP // 1
val RANGE_FRONT = ReferencingRanges.ACTORS_FRONT // 1
val RANGE_FRONT = ReferencingRanges.ACTORS_FRONT // 0.9375
val RANGE_OVERLAY= ReferencingRanges.ACTORS_OVERLAY // 0.9375
val RANGE_WIRES = ReferencingRanges.ACTORS_WIRES // 0.0002
val RANGE_WIRES_HELPER = ReferencingRanges.ACTORS_WIRES_HELPER // 0.0002
}
abstract fun update(delta: Float)

View File

@@ -295,7 +295,7 @@ abstract class GameItem(val originalID: ItemID) : Comparable<GameItem>, Cloneabl
fun generateUniqueDynamicID(inventory: ActorInventory): GameItem {
dynamicID = "$PREFIX_DYNAMICITEM${Companion.generateUniqueDynamicID(inventory)}"
dynamicID = "$PREFIX_DYNAMICITEM:${Companion.generateUniqueDynamicID(inventory)}"
ItemCodex.registerNewDynamicItem(dynamicID, this)
return this
}
@@ -308,7 +308,7 @@ abstract class GameItem(val originalID: ItemID) : Comparable<GameItem>, Cloneabl
var ret: Int
do {
ret = (1..2147483647).pickRandom()
} while (inventory.contains("$PREFIX_DYNAMICITEM$ret"))
} while (inventory.contains("$PREFIX_DYNAMICITEM:$ret"))
return ret
}

View File

@@ -53,9 +53,9 @@ object ItemCodex {
operator fun get(code: ItemID?): GameItem? {
if (code == null) return null
if (code.startsWith(PREFIX_DYNAMICITEM))
if (code.startsWith("$PREFIX_DYNAMICITEM:"))
return dynamicItemDescription[code]!!
else if (code.startsWith(PREFIX_ACTORITEM)) {
else if (code.startsWith("$PREFIX_ACTORITEM:")) {
val a = (Terrarum.ingame!! as TerrarumIngame).getActorByID(code.substring(6).toInt()) // actor item
if (a is CanBeAnItem) return a.itemData
@@ -89,7 +89,7 @@ object ItemCodex {
if (itemID == null) return null
// dynamic item
if (itemID.startsWith(PREFIX_DYNAMICITEM)) {
if (itemID.startsWith("$PREFIX_DYNAMICITEM:")) {
return getItemImage(dynamicToStaticID(itemID))
}
// item