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_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_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_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 ACTORS_OVERLAY = 0x7001_0000..0x7FFF_FFFF // Rendered as screen overlay, not affected by light nor environment overlays
val PREFIX_ACTORITEM = "actor:"
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.printdbg
import net.torvald.terrarum.AppLoader.printmsg import net.torvald.terrarum.AppLoader.printmsg
import net.torvald.terrarum.ReferencingRanges import net.torvald.terrarum.ReferencingRanges
import net.torvald.terrarum.ReferencingRanges.PREFIX_VIRTUALTILE
import net.torvald.terrarum.gameitem.ItemID import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.gameworld.FluidType import net.torvald.terrarum.gameworld.FluidType
import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.gameworld.GameWorld
@@ -72,12 +73,12 @@ object BlockCodex {
// add virtual props for dynamic lights // add virtual props for dynamic lights
val virtualChunk = ArrayList<ItemID>() val virtualChunk = ArrayList<ItemID>()
repeat(DYNAMIC_RANDOM_CASES) { _ -> repeat(DYNAMIC_RANDOM_CASES) { _ ->
val virtualID = "virt:$virtualTileCursor" val virtualID = "$PREFIX_VIRTUALTILE:$virtualTileCursor"
virtualToTile[virtualID] = tileId virtualToTile[virtualID] = tileId
virtualChunk.add(virtualID) virtualChunk.add(virtualID)
setProp("virt", virtualTileCursor, it) setProp(PREFIX_VIRTUALTILE, virtualTileCursor, it)
printdbg(this, "Block ID $tileId -> Virtual ID $virtualID, baseLum: ${blockProps[virtualID]?.baseLumCol}") printdbg(this, "Block ID $tileId -> Virtual ID $virtualID, baseLum: ${blockProps[virtualID]?.baseLumCol}")
virtualTileCursor += 1 virtualTileCursor += 1

View File

@@ -15,7 +15,7 @@ import net.torvald.terrarum.weather.WeatherMixer
object BlockPropUtil { object BlockPropUtil {
//var flickerFuncX: Second = 0f // saves current status (time) of func //var flickerFuncX: Second = 0f // saves current status (time) of func
val flickerFuncDomain: Second = 0.08f // time between two noise sample 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 //var breathFuncX = 0f
val breathRange = 0.02f 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_BEHIND = ReferencingRanges.ACTORS_BEHIND // 1
val RANGE_MIDDLE = ReferencingRanges.ACTORS_MIDDLE // 3 val RANGE_MIDDLE = ReferencingRanges.ACTORS_MIDDLE // 3
val RANGE_MIDTOP = ReferencingRanges.ACTORS_MIDTOP // 1 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_OVERLAY= ReferencingRanges.ACTORS_OVERLAY // 0.9375
val RANGE_WIRES = ReferencingRanges.ACTORS_WIRES // 0.0002 val RANGE_WIRES = ReferencingRanges.ACTORS_WIRES // 0.0002
val RANGE_WIRES_HELPER = ReferencingRanges.ACTORS_WIRES_HELPER // 0.0002
} }
abstract fun update(delta: Float) 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 { fun generateUniqueDynamicID(inventory: ActorInventory): GameItem {
dynamicID = "$PREFIX_DYNAMICITEM${Companion.generateUniqueDynamicID(inventory)}" dynamicID = "$PREFIX_DYNAMICITEM:${Companion.generateUniqueDynamicID(inventory)}"
ItemCodex.registerNewDynamicItem(dynamicID, this) ItemCodex.registerNewDynamicItem(dynamicID, this)
return this return this
} }
@@ -308,7 +308,7 @@ abstract class GameItem(val originalID: ItemID) : Comparable<GameItem>, Cloneabl
var ret: Int var ret: Int
do { do {
ret = (1..2147483647).pickRandom() ret = (1..2147483647).pickRandom()
} while (inventory.contains("$PREFIX_DYNAMICITEM$ret")) } while (inventory.contains("$PREFIX_DYNAMICITEM:$ret"))
return ret return ret
} }

View File

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