From 22def38cf75e1eda8698a75c3e896c0f17955b46 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Fri, 6 Oct 2023 16:20:12 +0900 Subject: [PATCH] removing codes for renderorder-to-number relation --- src/net/torvald/terrarum/ReferencingRanges.kt | 11 ++--------- src/net/torvald/terrarum/Terrarum.kt | 10 ++-------- src/net/torvald/terrarum/gameactors/Actor.kt | 12 ++---------- 3 files changed, 6 insertions(+), 27 deletions(-) diff --git a/src/net/torvald/terrarum/ReferencingRanges.kt b/src/net/torvald/terrarum/ReferencingRanges.kt index a32a1b531..475daa4e0 100644 --- a/src/net/torvald/terrarum/ReferencingRanges.kt +++ b/src/net/torvald/terrarum/ReferencingRanges.kt @@ -10,16 +10,9 @@ object ReferencingRanges { val WALLS = 65536..131071 // 65 536 walls val ITEMS_STATIC = 135168..0x0F_FFFF // 913 408 items val ITEMS_DYNAMIC = 0x10_0000..0x0FFF_FFFF // 267 386 880 pseudo-items - val ACTORS = 0x1000_0000..0x7FFF_FFFF // too much actors + val ACTORS = 0x1000_0000..0x7FFE_FFFF - // Actor IDs are assigned in 256 groups, single actor can have 256 sub-actors - // we're leaving last 65536 entries unassignable so that some special actors would use them - val ACTORS_BEHIND = 0x1000_0000..0x1FFE_FFFF // Rendered behind (e.g. tapestries) - val ACTORS_MIDDLE = 0x2000_0000..0x4FFE_FFFF // Regular actors (e.g. almost all of them) - val ACTORS_MIDTOP = 0x5000_0000..0x5FFE_FFFF // Special (e.g. weapon swung, bullets, dropped item, particles) - val ACTORS_FRONT = 0x6000_0000..0x6FFE_FFFF // Rendered front (e.g. fake tile) - - val ACTORS_OVERLAY = 0x7001_0000..0x7FFE_FFFF // Rendered as screen overlay, not affected by light nor environment overlays + // there is a gap between 0x7FFF_0000..0x7FFF_BFFF // IDs doesn't effect the render order at all, but we're kinda enforcing these ID ranging. // However, these two wire-related actor will break the rule. But as we want them to render on top of others diff --git a/src/net/torvald/terrarum/Terrarum.kt b/src/net/torvald/terrarum/Terrarum.kt index c54c2aa76..ae7f96f06 100644 --- a/src/net/torvald/terrarum/Terrarum.kt +++ b/src/net/torvald/terrarum/Terrarum.kt @@ -347,13 +347,7 @@ object Terrarum : Disposable { * override var referenceID: Int = generateUniqueReferenceID() */ fun generateUniqueReferenceID(renderOrder: Actor.RenderOrder): ActorID { - fun renderOrderToRange(renderOrder: Actor.RenderOrder) = when (renderOrder) { - Actor.RenderOrder.BEHIND -> Actor.RANGE_BEHIND - Actor.RenderOrder.MIDDLE -> Actor.RANGE_MIDDLE - Actor.RenderOrder.MIDTOP -> Actor.RANGE_MIDTOP - Actor.RenderOrder.FRONT -> Actor.RANGE_FRONT - Actor.RenderOrder.OVERLAY-> Actor.RANGE_OVERLAY - } + // render orders can be changed arbitrarily so the whole "renderorder to actor id" is only there for an initial sorting fun hasCollision(value: ActorID) = try { Terrarum.ingame?.theGameHasActor(value) == true @@ -364,7 +358,7 @@ object Terrarum : Disposable { var ret: Int do { - val range = renderOrderToRange(renderOrder) + val range = ReferencingRanges.ACTORS val size = range.last - range.first + 1 ret = (HQRNG().nextInt().rem(size) + range.first) and 0x7FFF_FF00 // make room for sub-actors } while (hasCollision(ret)) // check for collision diff --git a/src/net/torvald/terrarum/gameactors/Actor.kt b/src/net/torvald/terrarum/gameactors/Actor.kt index ed974d2af..d8e681af5 100644 --- a/src/net/torvald/terrarum/gameactors/Actor.kt +++ b/src/net/torvald/terrarum/gameactors/Actor.kt @@ -44,21 +44,13 @@ abstract class Actor : Comparable, Runnable { BEHIND, // tapestries, some particles (obstructed by terrain) MIDDLE, // actors MIDTOP, // bullets, thrown items - FRONT, // fake tiles + FRONT, // front walls ("blocks" that obstruct actors) OVERLAY // screen overlay, not affected by lightmap } - companion object { - 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 // 0.9375 - val RANGE_OVERLAY= ReferencingRanges.ACTORS_OVERLAY // 0.9375 - } - abstract fun update(delta: Float) - var actorValue = ActorValue(this) // FIXME cyclic reference on GSON + var actorValue = ActorValue(this) @Volatile var flagDespawn = false override fun equals(other: Any?): Boolean {