blocks now have properly formatted ids

This commit is contained in:
Song Minjae
2017-04-29 00:05:10 +09:00
parent df3afab5ee
commit 0510ac230b
17 changed files with 3346 additions and 851 deletions

View File

@@ -54,10 +54,10 @@ class StateInGame : BasicGameState() {
val particlesContainer = CircularArray<ParticleBase>(PARTICLES_MAX)
val uiContainer = ArrayList<UIHandler>()
private val actorsRenderBehind = ArrayList<ActorVisible>(ACTORCONTAINER_INITIAL_SIZE)
private val actorsRenderMiddle = ArrayList<ActorVisible>(ACTORCONTAINER_INITIAL_SIZE)
private val actorsRenderMidTop = ArrayList<ActorVisible>(ACTORCONTAINER_INITIAL_SIZE)
private val actorsRenderFront = ArrayList<ActorVisible>(ACTORCONTAINER_INITIAL_SIZE)
private val actorsRenderBehind = ArrayList<ActorWithBody>(ACTORCONTAINER_INITIAL_SIZE)
private val actorsRenderMiddle = ArrayList<ActorWithBody>(ACTORCONTAINER_INITIAL_SIZE)
private val actorsRenderMidTop = ArrayList<ActorWithBody>(ACTORCONTAINER_INITIAL_SIZE)
private val actorsRenderFront = ArrayList<ActorWithBody>(ACTORCONTAINER_INITIAL_SIZE)
var playableActorDelegate: PlayableActorDelegate? = null // DO NOT LATEINIT!
private set
@@ -204,11 +204,13 @@ class StateInGame : BasicGameState() {
// batch-process uiAliases
uiAliases = arrayListOf(
uiPieMenu,
uiQuickBar,
// drawn first
uiVitalPrimary,
uiVitalSecondary,
uiVitalItem
uiVitalItem,
uiPieMenu,
uiQuickBar
// drawn last
)
uiAlasesPausing = arrayListOf(
uiInventoryPlayer,
@@ -391,7 +393,7 @@ class StateInGame : BasicGameState() {
actorsRenderMidTop.forEach { it.drawBody(worldG) }
player?.drawBody(worldG)
actorsRenderFront.forEach { it.drawBody(worldG) }
// --> Change of blend mode <-- introduced by ActorVisible //
// --> Change of blend mode <-- introduced by childs of ActorWithBody //
/////////////////////////////
@@ -418,7 +420,7 @@ class StateInGame : BasicGameState() {
actorsRenderMidTop.forEach { it.drawGlow(worldG) }
player?.drawGlow(worldG)
actorsRenderFront.forEach { it.drawGlow(worldG) }
// --> blendLightenOnly() <-- introduced by ActorVisible //
// --> blendLightenOnly() <-- introduced by childs of ActorWithBody //
////////////////////////
@@ -428,7 +430,7 @@ class StateInGame : BasicGameState() {
// draw reference ID if debugWindow is open
if (debugWindow.isVisible) {
actorContainer.forEachIndexed { i, actor ->
if (actor is ActorVisible) {
if (actor is ActorWithBody) {
worldG.color = Color.white
worldG.font = Terrarum.fontSmallNumbers
worldG.drawString(
@@ -540,7 +542,7 @@ class StateInGame : BasicGameState() {
var i = 0
while (i < actorContainerSize) { // loop through actorContainerInactive
val actor = actorContainerInactive[i]
if (actor is ActorVisible && actor.inUpdateRange()) {
if (actor is ActorWithBody && actor.inUpdateRange()) {
activateDormantActor(actor) // duplicates are checked here
actorContainerSize -= 1
i-- // array removed 1 elem, so we also decrement counter by 1
@@ -567,7 +569,7 @@ class StateInGame : BasicGameState() {
i-- // array removed 1 elem, so we also decrement counter by 1
}
// inactivate distant actors
else if (actor is ActorVisible && !actor.inUpdateRange()) {
else if (actor is ActorWithBody && !actor.inUpdateRange()) {
if (actor !is Projectile) { // if it's a projectile, don't inactivate it; just kill it.
actorContainerInactive.add(actor) // naïve add; duplicates are checked when the actor is re-activated
}
@@ -626,7 +628,7 @@ class StateInGame : BasicGameState() {
d.forEach { if (it < ret) ret = it }
return ret
}
private fun distToActorSqr(a: ActorVisible, p: ActorVisible) =
private fun distToActorSqr(a: ActorWithBody, p: ActorWithBody) =
min(// take min of normal position and wrapped (x < 0) position
(a.hitbox.centeredX - p.hitbox.centeredX).sqr() +
(a.hitbox.centeredY - p.hitbox.centeredY).sqr(),
@@ -635,7 +637,7 @@ class StateInGame : BasicGameState() {
(a.hitbox.centeredX - p.hitbox.centeredX - world.width * TILE_SIZE).sqr() +
(a.hitbox.centeredY - p.hitbox.centeredY).sqr()
)
private fun distToCameraSqr(a: ActorVisible) =
private fun distToCameraSqr(a: ActorWithBody) =
min(
(a.hitbox.posX - WorldCamera.x).sqr() +
(a.hitbox.posY - WorldCamera.y).sqr(),
@@ -646,14 +648,14 @@ class StateInGame : BasicGameState() {
)
/** whether the actor is within screen */
private fun ActorVisible.inScreen() =
private fun ActorWithBody.inScreen() =
distToCameraSqr(this) <=
(Terrarum.WIDTH.plus(this.hitbox.width.div(2)).times(1 / Terrarum.ingame!!.screenZoom).sqr() +
Terrarum.HEIGHT.plus(this.hitbox.height.div(2)).times(1 / Terrarum.ingame!!.screenZoom).sqr())
/** whether the actor is within update range */
private fun ActorVisible.inUpdateRange() = distToCameraSqr(this) <= ACTOR_UPDATE_RANGE.sqr()
private fun ActorWithBody.inUpdateRange() = distToCameraSqr(this) <= ACTOR_UPDATE_RANGE.sqr()
/**
* actorContainer extensions
@@ -693,7 +695,7 @@ class StateInGame : BasicGameState() {
// indexToDelete >= 0 means that the actor certainly exists in the game
// which means we don't need to check if i >= 0 again
if (actor is ActorVisible) {
if (actor is ActorWithBody) {
when (actor.renderOrder) {
Actor.RenderOrder.BEHIND -> {
val i = actorsRenderBehind.binarySearch(actor.referenceID)
@@ -727,7 +729,7 @@ class StateInGame : BasicGameState() {
actorContainer.add(actor)
insertionSortLastElem(actorContainer) // we can do this as we are only adding single actor
if (actor is ActorVisible) {
if (actor is ActorWithBody) {
when (actor.renderOrder) {
Actor.RenderOrder.BEHIND -> {
actorsRenderBehind.add(actor); insertionSortLastElemAV(actorsRenderBehind)
@@ -758,7 +760,7 @@ class StateInGame : BasicGameState() {
actorContainer.add(actor)
insertionSortLastElem(actorContainer) // we can do this as we are only adding single actor
if (actor is ActorVisible) {
if (actor is ActorWithBody) {
when (actor.renderOrder) {
Actor.RenderOrder.BEHIND -> {
actorsRenderBehind.add(actor); insertionSortLastElemAV(actorsRenderBehind)
@@ -820,7 +822,7 @@ class StateInGame : BasicGameState() {
arr[j + 1] = x
}
}
private fun insertionSortLastElemAV(arr: ArrayList<ActorVisible>) { // out-projection doesn't work, duh
private fun insertionSortLastElemAV(arr: ArrayList<ActorWithBody>) { // out-projection doesn't work, duh
lock(ReentrantLock()) {
var j = arr.lastIndex - 1
val x = arr.last()

View File

@@ -7,147 +7,147 @@ object Block {
val AIR = 0 // hard coded; this is the standard
val STONE = BlockCodex.idDamageToIndex(1, 0)
val STONE_QUARRIED = BlockCodex.idDamageToIndex(1, 1)
val STONE_TILE_WHITE = BlockCodex.idDamageToIndex(1, 2)
val STONE_BRICKS = BlockCodex.idDamageToIndex(1, 3)
val STONE = 16
val STONE_QUARRIED = 17
val STONE_TILE_WHITE = 18
val STONE_BRICKS = 19
val DIRT = BlockCodex.idDamageToIndex(2, 0)
val GRASS = BlockCodex.idDamageToIndex(2, 1)
val GRASSWALL = BlockCodex.idDamageToIndex(2, 2)
val DIRT = 32
val GRASS = 33
val GRASSWALL = 34
val PLANK_NORMAL = BlockCodex.idDamageToIndex(3, 0)
val PLANK_EBONY = BlockCodex.idDamageToIndex(3, 1)
val PLANK_BIRCH = BlockCodex.idDamageToIndex(3, 2)
val PLANK_BLOODROSE = BlockCodex.idDamageToIndex(3, 3)
val PLANK_NORMAL = 48
val PLANK_EBONY = 49
val PLANK_BIRCH = 50
val PLANK_BLOODROSE = 51
val TRUNK_NORMAL = BlockCodex.idDamageToIndex(4, 0)
val TRUNK_EBONY = BlockCodex.idDamageToIndex(4, 1)
val TRUNK_BIRCH = BlockCodex.idDamageToIndex(4, 2)
val TRUNK_BLOODROSE = BlockCodex.idDamageToIndex(4, 3)
val TRUNK_NORMAL = 64
val TRUNK_EBONY = 65
val TRUNK_BIRCH = 66
val TRUNK_BLOODROSE = 67
val SAND = BlockCodex.idDamageToIndex(5, 0)
val SAND_WHITE = BlockCodex.idDamageToIndex(5, 1)
val SAND_RED = BlockCodex.idDamageToIndex(5, 2)
val SAND_DESERT = BlockCodex.idDamageToIndex(5, 3)
val SAND_BLACK = BlockCodex.idDamageToIndex(5, 4)
val SAND_GREEN = BlockCodex.idDamageToIndex(5, 5)
val SAND = 80
val SAND_WHITE = 81
val SAND_RED = 82
val SAND_DESERT = 83
val SAND_BLACK = 84
val SAND_GREEN = 85
val GRAVEL = BlockCodex.idDamageToIndex(6, 0)
val GRAVEL_GREY = BlockCodex.idDamageToIndex(6, 1)
val GRAVEL = 96
val GRAVEL_GREY = 97
val ORE_COPPER = BlockCodex.idDamageToIndex(7, 0)
val ORE_IRON = BlockCodex.idDamageToIndex(7, 1)
val ORE_GOLD = BlockCodex.idDamageToIndex(7, 2)
val ORE_SILVER = BlockCodex.idDamageToIndex(7, 3)
val ORE_ILMENITE = BlockCodex.idDamageToIndex(7, 4)
val ORE_AURICHALCUM = BlockCodex.idDamageToIndex(7, 5)
val ORE_COPPER = 112
val ORE_IRON = 113
val ORE_GOLD = 114
val ORE_SILVER = 115
val ORE_ILMENITE = 116
val ORE_AURICHALCUM = 117
val RAW_RUBY = BlockCodex.idDamageToIndex(8, 0)
val RAW_EMERALD = BlockCodex.idDamageToIndex(8, 1)
val RAW_SAPPHIRE = BlockCodex.idDamageToIndex(8, 2)
val RAW_TOPAZ = BlockCodex.idDamageToIndex(8, 3)
val RAW_DIAMOND = BlockCodex.idDamageToIndex(8, 4)
val RAW_AMETHYST = BlockCodex.idDamageToIndex(8, 5)
val RAW_RUBY = 128
val RAW_EMERALD = 129
val RAW_SAPPHIRE = 130
val RAW_TOPAZ = 131
val RAW_DIAMOND = 132
val RAW_AMETHYST = 133
val SNOW = BlockCodex.idDamageToIndex(9, 0)
val ICE_FRAGILE = BlockCodex.idDamageToIndex(9, 1)
val ICE_NATURAL = BlockCodex.idDamageToIndex(9, 2)
val ICE_MAGICAL = BlockCodex.idDamageToIndex(9, 3)
val SNOW = 144
val ICE_FRAGILE = 145
val ICE_NATURAL = 146
val ICE_MAGICAL = 147
val GLASS_CRUDE = BlockCodex.idDamageToIndex(9, 4)
val GLASS_CLEAN = BlockCodex.idDamageToIndex(9, 5)
val GLASS_CRUDE = 148
val GLASS_CLEAN = 149
val PLATFORM_STONE = BlockCodex.idDamageToIndex(10, 0)
val PLATFORM_WOODEN = BlockCodex.idDamageToIndex(10, 1)
val PLATFORM_EBONY = BlockCodex.idDamageToIndex(10, 2)
val PLATFORM_BIRCH = BlockCodex.idDamageToIndex(10, 3)
val PLATFORM_BLOODROSE = BlockCodex.idDamageToIndex(10, 4)
val PLATFORM_STONE = 160
val PLATFORM_WOODEN = 161
val PLATFORM_EBONY = 162
val PLATFORM_BIRCH = 163
val PLATFORM_BLOODROSE = 164
val TORCH = BlockCodex.idDamageToIndex(11, 0)
val TORCH_FROST = BlockCodex.idDamageToIndex(11, 1)
val TORCH = 176
val TORCH_FROST = 177
val TORCH_OFF = BlockCodex.idDamageToIndex(12, 0)
val TORCH_FROST_OFF = BlockCodex.idDamageToIndex(12, 1)
val TORCH_OFF = 192
val TORCH_FROST_OFF = 193
val ILLUMINATOR_WHITE = BlockCodex.idDamageToIndex(13, 0)
val ILLUMINATOR_YELLOW = BlockCodex.idDamageToIndex(13, 1)
val ILLUMINATOR_ORANGE = BlockCodex.idDamageToIndex(13, 2)
val ILLUMINATOR_RED = BlockCodex.idDamageToIndex(13, 3)
val ILLUMINATOR_FUCHSIA = BlockCodex.idDamageToIndex(13, 4)
val ILLUMINATOR_PURPLE = BlockCodex.idDamageToIndex(13, 5)
val ILLUMINATOR_BLUE = BlockCodex.idDamageToIndex(13, 6)
val ILLUMINATOR_CYAN = BlockCodex.idDamageToIndex(13, 7)
val ILLUMINATOR_GREEN = BlockCodex.idDamageToIndex(13, 8)
val ILLUMINATOR_GREEN_DARK = BlockCodex.idDamageToIndex(13, 9)
val ILLUMINATOR_BROWN = BlockCodex.idDamageToIndex(13, 10)
val ILLUMINATOR_TAN = BlockCodex.idDamageToIndex(13, 11)
val ILLUMINATOR_GREY_LIGHT = BlockCodex.idDamageToIndex(13, 12)
val ILLUMINATOR_GREY_MED = BlockCodex.idDamageToIndex(13, 13)
val ILLUMINATOR_GREY_DARK = BlockCodex.idDamageToIndex(13, 14)
val ILLUMINATOR_BLACK = BlockCodex.idDamageToIndex(13, 15)
val ILLUMINATOR_WHITE = 208
val ILLUMINATOR_YELLOW = 209
val ILLUMINATOR_ORANGE = 210
val ILLUMINATOR_RED = 211
val ILLUMINATOR_FUCHSIA = 212
val ILLUMINATOR_PURPLE = 213
val ILLUMINATOR_BLUE = 214
val ILLUMINATOR_CYAN = 215
val ILLUMINATOR_GREEN = 216
val ILLUMINATOR_GREEN_DARK = 217
val ILLUMINATOR_BROWN = 218
val ILLUMINATOR_TAN = 219
val ILLUMINATOR_GREY_LIGHT = 220
val ILLUMINATOR_GREY_MED = 221
val ILLUMINATOR_GREY_DARK = 222
val ILLUMINATOR_BLACK = 223
val ILLUMINATOR_WHITE_OFF = BlockCodex.idDamageToIndex(14, 0)
val ILLUMINATOR_YELLOW_OFF = BlockCodex.idDamageToIndex(14, 1)
val ILLUMINATOR_ORANGE_OFF = BlockCodex.idDamageToIndex(14, 2)
val ILLUMINATOR_RED_OFF = BlockCodex.idDamageToIndex(14, 3)
val ILLUMINATOR_FUCHSIA_OFF = BlockCodex.idDamageToIndex(14, 4)
val ILLUMINATOR_PURPLE_OFF = BlockCodex.idDamageToIndex(14, 5)
val ILLUMINATOR_BLUE_OFF = BlockCodex.idDamageToIndex(14, 6)
val ILLUMINATOR_CYAN_OFF = BlockCodex.idDamageToIndex(14, 7)
val ILLUMINATOR_GREEN_OFF = BlockCodex.idDamageToIndex(14, 8)
val ILLUMINATOR_GREEN_DARK_OFF = BlockCodex.idDamageToIndex(14, 9)
val ILLUMINATOR_BROWN_OFF = BlockCodex.idDamageToIndex(14, 10)
val ILLUMINATOR_TAN_OFF = BlockCodex.idDamageToIndex(14, 11)
val ILLUMINATOR_GREY_LIGHT_OFF = BlockCodex.idDamageToIndex(14, 12)
val ILLUMINATOR_GREY_MED_OFF = BlockCodex.idDamageToIndex(14, 13)
val ILLUMINATOR_GREY_DARK_OFF = BlockCodex.idDamageToIndex(14, 14)
val ILLUMINATOR_BLACK_OFF = BlockCodex.idDamageToIndex(14, 15)
val ILLUMINATOR_WHITE_OFF = 224
val ILLUMINATOR_YELLOW_OFF = 225
val ILLUMINATOR_ORANGE_OFF = 226
val ILLUMINATOR_RED_OFF = 227
val ILLUMINATOR_FUCHSIA_OFF = 228
val ILLUMINATOR_PURPLE_OFF = 229
val ILLUMINATOR_BLUE_OFF = 230
val ILLUMINATOR_CYAN_OFF = 231
val ILLUMINATOR_GREEN_OFF = 232
val ILLUMINATOR_GREEN_DARK_OFF = 233
val ILLUMINATOR_BROWN_OFF = 234
val ILLUMINATOR_TAN_OFF = 235
val ILLUMINATOR_GREY_LIGHT_OFF = 236
val ILLUMINATOR_GREY_MED_OFF = 237
val ILLUMINATOR_GREY_DARK_OFF = 238
val ILLUMINATOR_BLACK_OFF = 239
val SANDSTONE = BlockCodex.idDamageToIndex(15, 0)
val SANDSTONE_WHITE = BlockCodex.idDamageToIndex(15, 1)
val SANDSTONE_RED = BlockCodex.idDamageToIndex(15, 2)
val SANDSTONE_DESERT = BlockCodex.idDamageToIndex(15, 3)
val SANDSTONE_BLACK = BlockCodex.idDamageToIndex(15, 4)
val SANDSTONE_GREEN = BlockCodex.idDamageToIndex(15, 5)
val SANDSTONE = 240
val SANDSTONE_WHITE = 241
val SANDSTONE_RED = 242
val SANDSTONE_DESERT = 243
val SANDSTONE_BLACK = 244
val SANDSTONE_GREEN = 245
val LANTERN = BlockCodex.idDamageToIndex(16, 0)
val SUNSTONE = BlockCodex.idDamageToIndex(16, 1)
val DAYLIGHT_CAPACITOR = BlockCodex.idDamageToIndex(16, 2)
val LANTERN = 256
val SUNSTONE = 257
val DAYLIGHT_CAPACITOR = 258
val WATER_1 = BlockCodex.idDamageToIndex(255, 0)
val WATER_2 = BlockCodex.idDamageToIndex(255, 1)
val WATER_3 = BlockCodex.idDamageToIndex(255, 2)
val WATER_4 = BlockCodex.idDamageToIndex(255, 3)
val WATER_5 = BlockCodex.idDamageToIndex(255, 4)
val WATER_6 = BlockCodex.idDamageToIndex(255, 5)
val WATER_7 = BlockCodex.idDamageToIndex(255, 6)
val WATER_8 = BlockCodex.idDamageToIndex(255, 7)
val WATER_9 = BlockCodex.idDamageToIndex(255, 8)
val WATER_10 = BlockCodex.idDamageToIndex(255, 9)
val WATER_11 = BlockCodex.idDamageToIndex(255, 10)
val WATER_12 = BlockCodex.idDamageToIndex(255, 11)
val WATER_13 = BlockCodex.idDamageToIndex(255, 12)
val WATER_14 = BlockCodex.idDamageToIndex(255, 13)
val WATER_15 = BlockCodex.idDamageToIndex(255, 14)
val WATER = BlockCodex.idDamageToIndex(255, 15)
val WATER_1 = 4080
val WATER_2 = 4081
val WATER_3 = 4082
val WATER_4 = 4083
val WATER_5 = 4084
val WATER_6 = 4085
val WATER_7 = 4086
val WATER_8 = 4087
val WATER_9 = 4088
val WATER_10 = 4089
val WATER_11 = 4090
val WATER_12 = 4091
val WATER_13 = 4092
val WATER_14 = 4093
val WATER_15 = 4094
val WATER = 4095
val LAVA_1 = BlockCodex.idDamageToIndex(254, 0)
val LAVA_2 = BlockCodex.idDamageToIndex(254, 1)
val LAVA_3 = BlockCodex.idDamageToIndex(254, 2)
val LAVA_4 = BlockCodex.idDamageToIndex(254, 3)
val LAVA_5 = BlockCodex.idDamageToIndex(254, 4)
val LAVA_6 = BlockCodex.idDamageToIndex(254, 5)
val LAVA_7 = BlockCodex.idDamageToIndex(254, 6)
val LAVA_8 = BlockCodex.idDamageToIndex(254, 7)
val LAVA_9 = BlockCodex.idDamageToIndex(254, 8)
val LAVA_10 = BlockCodex.idDamageToIndex(254, 9)
val LAVA_11 = BlockCodex.idDamageToIndex(254, 10)
val LAVA_12 = BlockCodex.idDamageToIndex(254, 11)
val LAVA_13 = BlockCodex.idDamageToIndex(254, 12)
val LAVA_14 = BlockCodex.idDamageToIndex(254, 13)
val LAVA_15 = BlockCodex.idDamageToIndex(254, 14)
val LAVA = BlockCodex.idDamageToIndex(254, 15)
val LAVA_1 = 4064
val LAVA_2 = 4065
val LAVA_3 = 4066
val LAVA_4 = 4067
val LAVA_5 = 4068
val LAVA_6 = 4069
val LAVA_7 = 4070
val LAVA_8 = 4071
val LAVA_9 = 4072
val LAVA_10 = 4073
val LAVA_11 = 4074
val LAVA_12 = 4075
val LAVA_13 = 4076
val LAVA_14 = 4077
val LAVA_15 = 4078
val LAVA = 4079
val NULL = -1
}

View File

@@ -29,13 +29,11 @@ object BlockCodex {
println("[BlockCodex] Building block properties table")
records.forEach {
if (intVal(it, "sid") == -1) {
if (intVal(it, "blid") == -1) {
setProp(nullProp, it)
}
else {
setProp(
blockProps[idDamageToIndex(intVal(it, "id"), intVal(it, "sid"))], it
)
setProp(blockProps[intVal(it, "blid")], it)
}
}
}
@@ -44,15 +42,13 @@ object BlockCodex {
}
}
fun get(index: Int, subID: Int): BlockProp {
fun get(index: Int): BlockProp {
try {
blockProps[idDamageToIndex(index, subID)].id
return blockProps[index]
}
catch (e: NullPointerException) {
throw NullPointerException("Blockprop with id $index and subID $subID does not exist.")
throw NullPointerException("Blockprop with id $index does not exist.")
}
return blockProps[idDamageToIndex(index, subID)]
}
operator fun get(rawIndex: Int?): BlockProp {
@@ -71,14 +67,13 @@ object BlockCodex {
private fun setProp(prop: BlockProp, record: CSVRecord) {
prop.nameKey = record.get("name")
prop.id = idDamageToIndex(intVal(record, "id"), intVal(record, "sid"))
prop.id = intVal(record, "blid")
prop.drop = intVal(record, "drid")
prop.opacity = intVal(record, "opacity")
prop.strength = intVal(record, "strength")
prop.density = intVal(record, "dsty")
prop.luminosity = intVal(record, "lumcolor")
prop.drop = intVal(record, "drop")
prop.dropDamage = intVal(record, "ddmg")
prop.friction = intVal(record, "friction")
prop.viscosity = intVal(record, "vscs")
@@ -90,7 +85,7 @@ object BlockCodex {
prop.dynamicLuminosityFunction = intVal(record, "dlfn")
print(formatNum3(intVal(record, "id")) + ":" + formatNum2(intVal(record, "sid")))
print("${intVal(record, "blid")}")
println("\t" + prop.nameKey)
}
@@ -107,16 +102,5 @@ object BlockCodex {
private fun boolVal(rec: CSVRecord, s: String) = intVal(rec, s) != 0
fun idDamageToIndex(index: Int, damage: Int) = index * PairedMapLayer.RANGE + damage
private fun formatNum3(i: Int): String {
if (i < 10)
return "00" + i
else if (i < 100)
return "0" + i
else
return i.toString()
}
private fun formatNum2(i: Int) = if (i < 10) "0" + i else i.toString()
}

View File

@@ -33,7 +33,6 @@ class BlockProp {
get() = BlockPropUtil.getDynamicLumFunc(field, dynamicLuminosityFunction)
var drop: Int = 0
var dropDamage: Int = 0
var isFallable: Boolean = false

View File

@@ -7,6 +7,7 @@ import net.torvald.terrarum.gamecontroller.Key
import net.torvald.terrarum.itemproperties.InventoryItem
import net.torvald.terrarum.itemproperties.Material
import net.torvald.terrarum.realestate.LandUtil
import net.torvald.terrarum.ui.UIInventory
import org.newdawn.slick.GameContainer
import org.newdawn.slick.Input
import java.util.*
@@ -479,12 +480,15 @@ open class ActorHumanoid(birth: GameDate, death: GameDate? = null)
// ONLY FOR HAND_GRIPs!!
val quickBarItem = inventory.getQuickBar(actorValue.getAsInt(key)!!)?.item
if (quickBarItem == null) {
unequipSlot(InventoryItem.EquipPosition.HAND_GRIP)
}
else if (quickBarItem.equipPosition == InventoryItem.EquipPosition.HAND_GRIP) {
if (quickBarItem != null && quickBarItem.equipPosition == InventoryItem.EquipPosition.HAND_GRIP) {
equipItem(quickBarItem)
}
// force update inventory UI
try {
(Terrarum.ingame!!.uiInventoryPlayer.UI as UIInventory).shutUpAndRebuild()
}
catch (LateInitMyArse: kotlin.UninitializedPropertyAccessException) { }
}
}

View File

@@ -8,9 +8,8 @@ import org.newdawn.slick.Graphics
*
* Created by minjaesong on 2017-01-21.
*/
abstract class ActorVisible(renderOrder: RenderOrder) : Actor(renderOrder) {
abstract class ActorWithBody(renderOrder: RenderOrder) : Actor(renderOrder) {
open val hitbox = Hitbox(0.0, 0.0, 0.0, 0.0)
override abstract fun update(gc: GameContainer, delta: Int)
abstract fun drawBody(g: Graphics)
abstract fun drawGlow(g: Graphics)
}

View File

@@ -26,7 +26,7 @@ import java.util.*
*
* Created by minjaesong on 16-01-13.
*/
open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean = false, physics: Boolean = true) : ActorVisible(renderOrder) {
open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean = false, physics: Boolean = true) : ActorWithBody(renderOrder) {
/** !! ActorValue macros are on the very bottom of the source !! **/

View File

@@ -13,7 +13,11 @@ typealias AnyPlayer = HistoricalFigure
*
* Created by minjaesong on 16-10-10.
*/
open class HistoricalFigure(val born: GameDate, val dead: GameDate? = null, realAirFriction: Boolean = false) : ActorWithPhysics(Actor.RenderOrder.MIDDLE, realAirFriction) {
open class HistoricalFigure(
val born: GameDate,
val dead: GameDate? = null,
realAirFriction: Boolean = false
) : ActorWithPhysics(Actor.RenderOrder.MIDDLE, realAirFriction) {
init {
this.actorValue["_bornyear"] = born.year

View File

@@ -115,11 +115,11 @@ class UIInventory(
val listControlHelp: String
get() = if (Terrarum.environment == RunningEnvironment.PC)
"${0xe006.toChar()} ${Lang["GAME_INVENTORY_USE"]}$SP" +
"${0xe011.toChar()}..${0xe019.toChar()} ${Lang["GAME_INVENTORY_REGISTER"]}$SP" +
"${0xe011.toChar()}..${0xe010.toChar()} ${Lang["GAME_INVENTORY_REGISTER"]}$SP" +
"${0xe034.toChar()} ${Lang["GAME_INVENTORY_DROP"]}"
else
"$joypadLabelNinY ${Lang["GAME_INVENTORY_USE"]}$SP" +
"${0xe011.toChar()}${0xe019.toChar()} ${Lang["GAME_INVENTORY_REGISTER"]}$SP" +
"${0xe011.toChar()}${0xe010.toChar()} ${Lang["GAME_INVENTORY_REGISTER"]}$SP" +
"$joypadLabelNinA ${Lang["GAME_INVENTORY_DROP"]}"
val listControlClose: String
get() = if (Terrarum.environment == RunningEnvironment.PC)