From 5367b97943836d70f9ad7ecedc95f210b326d650 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Mon, 1 Oct 2018 23:51:04 +0900 Subject: [PATCH] World Click events let's hope it works w/o tests as I can't get to the Ingame now --- .gitignore | 1 + assets/graphics/gui/health_distance.tga | 4 +- assets/graphics/gui/health_take_a_break.tga | 4 +- assets/mods/basegame/items/testpick.nope | 2 +- lib/TerrarumSansBitmap.jar | Bin 67058 -> 75500 bytes src/net/torvald/terrarum/IngameInstance.kt | 214 ++++++++++++++++++ src/net/torvald/terrarum/Terrarum.kt | 175 -------------- .../terrarum/gameactors/ActorWBMovable.kt | 20 +- .../gamecontroller/IngameController.kt | 23 +- .../terrarum/itemproperties/GameItem.kt | 4 +- .../terrarum/itemproperties/ItemCodex.kt | 6 +- .../terrarum/modulebasegame/EntryPoint.kt | 4 +- .../torvald/terrarum/modulebasegame/Ingame.kt | 20 ++ .../modulebasegame/gameactors/HumanoidNPC.kt | 2 +- .../modulebasegame/gameactors/Pocketed.kt | 4 +- .../modulebasegame/items/PickaxeGeneric.kt | 2 +- .../terrarum/modulebasegame/ui/UIRemoCon.kt | 25 +- .../modulebasegame/ui/UITitleRemoConYaml.kt | 1 + src/net/torvald/terrarum/ui/UICanvas.kt | 2 +- work_files/DataFormats/Map data format.txt | 34 ++- work_files/DataFormats/Savegame container.txt | 6 +- work_files/GameDesign/MISC_FEATURES.md | 2 +- work_files/graphics/gui/sante_distance.psd | 4 +- work_files/graphics/gui/sante_jeu.psd | 4 +- .../sprites/fixtures/computer_parts.psd | 4 +- 25 files changed, 341 insertions(+), 226 deletions(-) create mode 100644 src/net/torvald/terrarum/IngameInstance.kt diff --git a/.gitignore b/.gitignore index 18f1d2f6f..cefc2dea3 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ external_resource_packs.zip .idea/workspace.xml .tmp* external_resource_packs.zip +tmp_* diff --git a/assets/graphics/gui/health_distance.tga b/assets/graphics/gui/health_distance.tga index 318dae95b..51c408eea 100644 --- a/assets/graphics/gui/health_distance.tga +++ b/assets/graphics/gui/health_distance.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a99612c8309696bc34cad08c92f5c9a6e498f6f487130c9068c529acc1138e2d -size 40018 +oid sha256:20b07fedc8322c16fb8d59e13921743f7b5f877d04dcc8039899667fe1b5af64 +size 40044 diff --git a/assets/graphics/gui/health_take_a_break.tga b/assets/graphics/gui/health_take_a_break.tga index fe0baf099..2010ddfc5 100644 --- a/assets/graphics/gui/health_take_a_break.tga +++ b/assets/graphics/gui/health_take_a_break.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:733cfb082904c7093ba4024acf8c9e4b75a1af7d3f9ca67774cde38e4267dfb7 -size 73378 +oid sha256:ddf7e9839d649af2214d5081086db7e062c636fbebc56d5d2d79dcdfb23f5247 +size 73404 diff --git a/assets/mods/basegame/items/testpick.nope b/assets/mods/basegame/items/testpick.nope index b9e5ea9b3..b93578efe 100644 --- a/assets/mods/basegame/items/testpick.nope +++ b/assets/mods/basegame/items/testpick.nope @@ -55,7 +55,7 @@ class TestPick extends GameItem { } @Override - boolean primaryUse(float delta) { + boolean startPrimaryUse(float delta) { int mouseTileX = Terrarum.getMouseTileX() int mouseTileY = Terrarum.getMouseTileY() diff --git a/lib/TerrarumSansBitmap.jar b/lib/TerrarumSansBitmap.jar index a67b15c1e2b5eb842aef2dfd1e87176af2c8f2b6..4e148c8ccf38a562d9bb36d7654e155c61e886a1 100644 GIT binary patch delta 55745 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 delta 47387 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 diff --git a/src/net/torvald/terrarum/IngameInstance.kt b/src/net/torvald/terrarum/IngameInstance.kt new file mode 100644 index 000000000..b55243fbf --- /dev/null +++ b/src/net/torvald/terrarum/IngameInstance.kt @@ -0,0 +1,214 @@ +package net.torvald.terrarum + +import com.badlogic.gdx.Screen +import com.badlogic.gdx.graphics.g2d.SpriteBatch +import net.torvald.terrarum.gameactors.Actor +import net.torvald.terrarum.gameworld.GameWorld +import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid +import net.torvald.terrarum.ui.ConsoleWindow +import java.util.ArrayList +import java.util.concurrent.locks.Lock +import java.util.concurrent.locks.ReentrantLock +import javax.swing.JOptionPane + +open class IngameInstance(val batch: SpriteBatch) : Screen { + + var screenZoom = 1.0f + val ZOOM_MAXIMUM = 4.0f + val ZOOM_MINIMUM = 0.5f + + open lateinit var consoleHandler: ConsoleWindow + + open lateinit var world: GameWorld + /** The actor the game is currently allowing you to control. + * + * Most of the time it'd be the "player", but think about the case where you have possessed + * some random actor of the game. Now that actor is now actorNowPlaying, the actual gamer's avatar + * (reference ID of 0x91A7E2) (must) stay in the actorContainer, but it's not a actorNowPlaying. + * + * Nullability of this property is believed to be unavoidable (trust me!). I'm sorry for the inconvenience. + */ + open var actorNowPlaying: ActorHumanoid? = null + + val ACTORCONTAINER_INITIAL_SIZE = 64 + val actorContainer = ArrayList(ACTORCONTAINER_INITIAL_SIZE) + val actorContainerInactive = ArrayList(ACTORCONTAINER_INITIAL_SIZE) + + override fun hide() { + } + + override fun show() { + } + + override fun render(delta: Float) { + } + + override fun pause() { + } + + override fun resume() { + } + + override fun resize(width: Int, height: Int) { + } + + override fun dispose() { + } + + //////////// + // EVENTS // + //////////// + + /** + * Event for triggering held item's `startPrimaryUse(Float)` + */ + open fun worldPrimaryClickStart(delta: Float) { + } + + /** + * Event for triggering held item's `endPrimaryUse(Float)` + */ + open fun worldPrimaryClickEnd(delta: Float) { + } + + /** + * Event for triggering held item's `startSecondaryUse(Float)` + */ + open fun worldSecondaryClickStart(delta: Float) { + } + + /** + * Event for triggering held item's `endSecondaryUse(Float)` + */ + open fun worldSecondaryClickEnd(delta: Float) { + } + + + + /////////////////////// + // UTILITY FUNCTIONS // + /////////////////////// + + fun getActorByID(ID: Int): Actor { + if (actorContainer.size == 0 && actorContainerInactive.size == 0) + throw IllegalArgumentException("Actor with ID $ID does not exist.") + + var index = actorContainer.binarySearch(ID) + if (index < 0) { + index = actorContainerInactive.binarySearch(ID) + + if (index < 0) { + JOptionPane.showMessageDialog( + null, + "Actor with ID $ID does not exist.", + null, JOptionPane.ERROR_MESSAGE + ) + throw IllegalArgumentException("Actor with ID $ID does not exist.") + } + else + return actorContainerInactive[index] + } + else + return actorContainer[index] + } + + fun ArrayList<*>.binarySearch(actor: Actor) = this.binarySearch(actor.referenceID!!) + + fun ArrayList<*>.binarySearch(ID: Int): Int { + // code from collections/Collections.kt + var low = 0 + var high = this.size - 1 + + while (low <= high) { + val mid = (low + high).ushr(1) // safe from overflows + + val midVal = get(mid)!! + + if (ID > midVal.hashCode()) + low = mid + 1 + else if (ID < midVal.hashCode()) + high = mid - 1 + else + return mid // key found + } + return -(low + 1) // key not found + } + + open fun removeActor(ID: Int) = removeActor(getActorByID(ID)) + /** + * get index of the actor and delete by the index. + * we can do this as the list is guaranteed to be sorted + * and only contains unique values. + * + * Any values behind the index will be automatically pushed to front. + * This is how remove function of [java.util.ArrayList] is defined. + */ + open fun removeActor(actor: Actor?) { + if (actor == null) return + + val indexToDelete = actorContainer.binarySearch(actor.referenceID!!) + if (indexToDelete >= 0) { + actorContainer.removeAt(indexToDelete) + } + } + + /** + * Check for duplicates, append actor and sort the list + */ + open fun addNewActor(actor: Actor?) { + if (actor == null) return + + if (theGameHasActor(actor.referenceID!!)) { + throw Error("The actor $actor already exists in the game") + } + else { + actorContainer.add(actor) + insertionSortLastElem(actorContainer) // we can do this as we are only adding single actor + } + } + + fun isActive(ID: Int): Boolean = + if (actorContainer.size == 0) + false + else + actorContainer.binarySearch(ID) >= 0 + + fun isInactive(ID: Int): Boolean = + if (actorContainerInactive.size == 0) + false + else + actorContainerInactive.binarySearch(ID) >= 0 + + /** + * actorContainer extensions + */ + fun theGameHasActor(actor: Actor?) = if (actor == null) false else theGameHasActor(actor.referenceID!!) + + fun theGameHasActor(ID: Int): Boolean = + isActive(ID) || isInactive(ID) + + + + + fun insertionSortLastElem(arr: ArrayList) { + lock(ReentrantLock()) { + var j = arr.lastIndex - 1 + val x = arr.last() + while (j >= 0 && arr[j] > x) { + arr[j + 1] = arr[j] + j -= 1 + } + arr[j + 1] = x + } + } + + inline fun lock(lock: Lock, body: () -> Unit) { + lock.lock() + try { + body() + } + finally { + lock.unlock() + } + } +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/Terrarum.kt b/src/net/torvald/terrarum/Terrarum.kt index 2e6bc3bad..7e8a80718 100644 --- a/src/net/torvald/terrarum/Terrarum.kt +++ b/src/net/torvald/terrarum/Terrarum.kt @@ -18,11 +18,8 @@ import net.torvald.terrarum.AppLoader.printdbg import net.torvald.terrarum.AppLoader.printdbgerr import net.torvald.terrarum.gameactors.Actor import net.torvald.terrarum.gameactors.ActorID -import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.imagefont.TinyAlphNum import net.torvald.terrarum.itemproperties.ItemCodex -import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid -import net.torvald.terrarum.ui.ConsoleWindow import net.torvald.terrarum.utils.JsonFetcher import net.torvald.terrarum.utils.JsonWriter import net.torvald.terrarum.worlddrawer.FeaturesDrawer @@ -33,10 +30,6 @@ import org.lwjgl.BufferUtils import org.lwjgl.input.Controllers import java.io.File import java.io.IOException -import java.util.* -import java.util.concurrent.locks.Lock -import java.util.concurrent.locks.ReentrantLock -import javax.swing.JOptionPane @@ -714,174 +707,6 @@ object Terrarum : Screen { } } -open class IngameInstance(val batch: SpriteBatch) : Screen { - - var screenZoom = 1.0f - val ZOOM_MAXIMUM = 4.0f - val ZOOM_MINIMUM = 0.5f - - open lateinit var consoleHandler: ConsoleWindow - - open lateinit var world: GameWorld - /** The actor the game is currently allowing you to control. - * - * Most of the time it'd be the "player", but think about the case where you have possessed - * some random actor of the game. Now that actor is now actorNowPlaying, the actual gamer's avatar - * (reference ID of 0x91A7E2) (must) stay in the actorContainer, but it's not a actorNowPlaying. - * - * Nullability of this property is believed to be unavoidable (trust me!). I'm sorry for the inconvenience. - */ - open var actorNowPlaying: ActorHumanoid? = null - - val ACTORCONTAINER_INITIAL_SIZE = 64 - val actorContainer = ArrayList(ACTORCONTAINER_INITIAL_SIZE) - val actorContainerInactive = ArrayList(ACTORCONTAINER_INITIAL_SIZE) - - override fun hide() { - } - - override fun show() { - } - - override fun render(delta: Float) { - } - - override fun pause() { - } - - override fun resume() { - } - - override fun resize(width: Int, height: Int) { - } - - override fun dispose() { - } - - fun getActorByID(ID: Int): Actor { - if (actorContainer.size == 0 && actorContainerInactive.size == 0) - throw IllegalArgumentException("Actor with ID $ID does not exist.") - - var index = actorContainer.binarySearch(ID) - if (index < 0) { - index = actorContainerInactive.binarySearch(ID) - - if (index < 0) { - JOptionPane.showMessageDialog( - null, - "Actor with ID $ID does not exist.", - null, JOptionPane.ERROR_MESSAGE - ) - throw IllegalArgumentException("Actor with ID $ID does not exist.") - } - else - return actorContainerInactive[index] - } - else - return actorContainer[index] - } - - fun ArrayList<*>.binarySearch(actor: Actor) = this.binarySearch(actor.referenceID!!) - - fun ArrayList<*>.binarySearch(ID: Int): Int { - // code from collections/Collections.kt - var low = 0 - var high = this.size - 1 - - while (low <= high) { - val mid = (low + high).ushr(1) // safe from overflows - - val midVal = get(mid)!! - - if (ID > midVal.hashCode()) - low = mid + 1 - else if (ID < midVal.hashCode()) - high = mid - 1 - else - return mid // key found - } - return -(low + 1) // key not found - } - - open fun removeActor(ID: Int) = removeActor(getActorByID(ID)) - /** - * get index of the actor and delete by the index. - * we can do this as the list is guaranteed to be sorted - * and only contains unique values. - * - * Any values behind the index will be automatically pushed to front. - * This is how remove function of [java.util.ArrayList] is defined. - */ - open fun removeActor(actor: Actor?) { - if (actor == null) return - - val indexToDelete = actorContainer.binarySearch(actor.referenceID!!) - if (indexToDelete >= 0) { - actorContainer.removeAt(indexToDelete) - } - } - - /** - * Check for duplicates, append actor and sort the list - */ - open fun addNewActor(actor: Actor?) { - if (actor == null) return - - if (theGameHasActor(actor.referenceID!!)) { - throw Error("The actor $actor already exists in the game") - } - else { - actorContainer.add(actor) - insertionSortLastElem(actorContainer) // we can do this as we are only adding single actor - } - } - - fun isActive(ID: Int): Boolean = - if (actorContainer.size == 0) - false - else - actorContainer.binarySearch(ID) >= 0 - - fun isInactive(ID: Int): Boolean = - if (actorContainerInactive.size == 0) - false - else - actorContainerInactive.binarySearch(ID) >= 0 - - /** - * actorContainer extensions - */ - fun theGameHasActor(actor: Actor?) = if (actor == null) false else theGameHasActor(actor.referenceID!!) - - fun theGameHasActor(ID: Int): Boolean = - isActive(ID) || isInactive(ID) - - - - - fun insertionSortLastElem(arr: ArrayList) { - lock(ReentrantLock()) { - var j = arr.lastIndex - 1 - val x = arr.last() - while (j >= 0 && arr[j] > x) { - arr[j + 1] = arr[j] - j -= 1 - } - arr[j + 1] = x - } - } - - inline fun lock(lock: Lock, body: () -> Unit) { - lock.lock() - try { - body() - } - finally { - lock.unlock() - } - } -} - inline fun SpriteBatch.inUse(action: (SpriteBatch) -> Unit) { this.begin() action(this) diff --git a/src/net/torvald/terrarum/gameactors/ActorWBMovable.kt b/src/net/torvald/terrarum/gameactors/ActorWBMovable.kt index 04ba55941..5ec1ecd20 100644 --- a/src/net/torvald/terrarum/gameactors/ActorWBMovable.kt +++ b/src/net/torvald/terrarum/gameactors/ActorWBMovable.kt @@ -507,11 +507,21 @@ open class ActorWBMovable(val world: GameWorld, renderOrder: RenderOrder, val im */ val D: Vector2 = Vector2(externalForce.x.magnSqr(), externalForce.y.magnSqr()) * dragCoefficient * 0.5 * A// * tileDensityFluid.toDouble() - val V: Vector2 = (W - D) / Terrarum.TARGET_FPS.toDouble() * SI_TO_GAME_ACC + val V: Vector2 = (W - D) / Terrarum.TARGET_FPS * SI_TO_GAME_ACC return V } + /** + * Event for collision (event gets fired when it collided with the world or other actors) + * + * This event may fired two or more times per update. + */ + open fun collided(other: Array) { + } + + data class CollisionMessage(val targetID: Int, val AkspfisWorld: Boolean) + /** * Apply gravitation to the every falling body (unless not levitating) * @@ -663,6 +673,14 @@ open class ActorWBMovable(val world: GameWorld, renderOrder: RenderOrder, val im 2, 7 -> { newHitbox.translatePosY( - newHitbox.endY.modTileDelta()) ; bounceY = true } } + + // fire Collision Event with one/two/three-side collision + // for the ease of writing, this jumptable is separated from above. + when (selfCollisionStatus) { + // TODO compose CollisionInfo and fire collided() + } + + // two-side collision if (selfCollisionStatus in listOf(3,6,9,12)) { debug1("twoside collision $selfCollisionStatus") diff --git a/src/net/torvald/terrarum/gamecontroller/IngameController.kt b/src/net/torvald/terrarum/gamecontroller/IngameController.kt index 7f1f63085..a236c7a48 100644 --- a/src/net/torvald/terrarum/gamecontroller/IngameController.kt +++ b/src/net/torvald/terrarum/gamecontroller/IngameController.kt @@ -115,14 +115,14 @@ class IngameController(val ingame: Ingame) : InputAdapter() { override fun touchUp(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean { // don't separate Player from this! Physics will break, esp. airborne manoeuvre if (ingame.canPlayerControl) { - val itemOnGrip = ingame.actorNowPlaying?.inventory?.itemEquipped?.get(GameItem.EquipPosition.HAND_GRIP) ?: null + // fire world click events; the event is defined as Ingame's (or any others') WorldClick event + if (ingame.uiContainer.map { if ((it.isOpening || it.isOpened) && it.mouseUp) 1 else 0 }.sum() == 0) { // no UI on the mouse, right? - if (itemOnGrip != null) { if (button == Terrarum.getConfigInt("mouseprimary")) { - itemOnGrip.endPrimaryUse(Terrarum.deltaTime) + ingame.worldPrimaryClickEnd(Terrarum.deltaTime) } if (button == Terrarum.getConfigInt("mousesecondary")) { - itemOnGrip.endSecondaryUse(Terrarum.deltaTime) + ingame.worldSecondaryClickEnd(Terrarum.deltaTime) } } } @@ -144,6 +144,21 @@ class IngameController(val ingame: Ingame) : InputAdapter() { } override fun touchDown(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean { + // don't separate Player from this! Physics will break, esp. airborne manoeuvre + if (ingame.canPlayerControl) { + // fire world click events; the event is defined as Ingame's (or any others') WorldClick event + if (ingame.uiContainer.map { if ((it.isOpening || it.isOpened) && it.mouseUp) 1 else 0 }.sum() == 0) { // no UI on the mouse, right? + + if (button == Terrarum.getConfigInt("mouseprimary")) { + ingame.worldPrimaryClickStart(Terrarum.deltaTime) + } + if (button == Terrarum.getConfigInt("mousesecondary")) { + ingame.worldSecondaryClickStart(Terrarum.deltaTime) + } + } + } + + ingame.uiContainer.forEach { it.touchDown(screenX, screenY, pointer, button) } return true } diff --git a/src/net/torvald/terrarum/itemproperties/GameItem.kt b/src/net/torvald/terrarum/itemproperties/GameItem.kt index fa1c8093e..67c245d38 100644 --- a/src/net/torvald/terrarum/itemproperties/GameItem.kt +++ b/src/net/torvald/terrarum/itemproperties/GameItem.kt @@ -142,7 +142,7 @@ abstract class GameItem : Comparable, Cloneable { * Consumption function is executed in net.torvald.terrarum.gamecontroller.IngameController, * in which the function itself is defined in net.torvald.terrarum.modulebasegame.gameactors.ActorInventory */ - open fun primaryUse(delta: Float): Boolean = false + open fun startPrimaryUse(delta: Float): Boolean = false /** * Apply effects (continuously or not) while secondary button (usually right mouse button) is down @@ -152,7 +152,7 @@ abstract class GameItem : Comparable, Cloneable { * * note: DO NOT super() this! */ - open fun secondaryUse(delta: Float): Boolean = false + open fun startSecondaryUse(delta: Float): Boolean = false open fun endPrimaryUse(delta: Float): Boolean = false open fun endSecondaryUse(delta: Float): Boolean = false diff --git a/src/net/torvald/terrarum/itemproperties/ItemCodex.kt b/src/net/torvald/terrarum/itemproperties/ItemCodex.kt index 37c1e381f..93e9a4f22 100644 --- a/src/net/torvald/terrarum/itemproperties/ItemCodex.kt +++ b/src/net/torvald/terrarum/itemproperties/ItemCodex.kt @@ -61,12 +61,12 @@ object ItemCodex { print("$originalID ") } - override fun primaryUse(delta: Float): Boolean { + override fun startPrimaryUse(delta: Float): Boolean { return false // TODO base punch attack } - override fun secondaryUse(delta: Float): Boolean { + override fun startSecondaryUse(delta: Float): Boolean { val mousePoint = Point2d(Terrarum.mouseTileX.toDouble(), Terrarum.mouseTileY.toDouble()) // check for collision with actors (BLOCK only) @@ -130,7 +130,7 @@ object ItemCodex { name = "Stone pickaxe" } - override fun primaryUse(delta: Float): Boolean { + override fun startPrimaryUse(delta: Float): Boolean { val mousePoint = Point2d(Terrarum.mouseTileX.toDouble(), Terrarum.mouseTileY.toDouble()) val actorvalue = ingame.actorNowPlaying.actorValue diff --git a/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt b/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt index d4f0eb2b5..0dc4c22ff 100644 --- a/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt +++ b/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt @@ -51,12 +51,12 @@ class EntryPoint : ModuleEntryPoint() { print("$originalID ") } - override fun primaryUse(delta: Float): Boolean { + override fun startPrimaryUse(delta: Float): Boolean { return false // TODO base punch attack } - override fun secondaryUse(delta: Float): Boolean { + override fun startSecondaryUse(delta: Float): Boolean { val ingame = Terrarum.ingame!! as Ingame val mousePoint = Point2d(Terrarum.mouseTileX.toDouble(), Terrarum.mouseTileY.toDouble()) diff --git a/src/net/torvald/terrarum/modulebasegame/Ingame.kt b/src/net/torvald/terrarum/modulebasegame/Ingame.kt index 5fcadecfa..da532a178 100644 --- a/src/net/torvald/terrarum/modulebasegame/Ingame.kt +++ b/src/net/torvald/terrarum/modulebasegame/Ingame.kt @@ -29,6 +29,7 @@ import net.torvald.terrarum.modulebasegame.console.AVTracker import net.torvald.terrarum.modulebasegame.console.ActorsList import net.torvald.terrarum.console.Authenticator import net.torvald.terrarum.console.SetGlobalLightOverride +import net.torvald.terrarum.itemproperties.GameItem import net.torvald.terrarum.modulebasegame.gameactors.* import net.torvald.terrarum.modulebasegame.gameworld.GameWorldExtension import net.torvald.terrarum.modulebasegame.imagefont.Watch7SegMain @@ -392,6 +393,25 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) { }// END enter + override fun worldPrimaryClickStart(delta: Float) { + val itemOnGrip = actorNowPlaying?.inventory?.itemEquipped?.get(GameItem.EquipPosition.HAND_GRIP) + itemOnGrip?.startPrimaryUse(delta) + } + + override fun worldPrimaryClickEnd(delta: Float) { + val itemOnGrip = actorNowPlaying?.inventory?.itemEquipped?.get(GameItem.EquipPosition.HAND_GRIP) + itemOnGrip?.endPrimaryUse(delta) + } + + override fun worldSecondaryClickStart(delta: Float) { + val itemOnGrip = actorNowPlaying?.inventory?.itemEquipped?.get(GameItem.EquipPosition.HAND_GRIP) + itemOnGrip?.startSecondaryUse(delta) + } + + override fun worldSecondaryClickEnd(delta: Float) { + val itemOnGrip = actorNowPlaying?.inventory?.itemEquipped?.get(GameItem.EquipPosition.HAND_GRIP) + itemOnGrip?.endSecondaryUse(delta) + } protected var updateDeltaCounter = 0.0 protected val updateRate = 1.0 / Terrarum.TARGET_INTERNAL_FPS diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/HumanoidNPC.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/HumanoidNPC.kt index de423cbd1..e40c4f6c1 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/HumanoidNPC.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/HumanoidNPC.kt @@ -50,7 +50,7 @@ open class HumanoidNPC( override val isDynamic = false override val material = Material(0,0,0,0,0,0,0,0,0,0.0) - override fun secondaryUse(delta: Float): Boolean { + override fun startSecondaryUse(delta: Float): Boolean { try { // place the actor to the world this@HumanoidNPC.setPosition(Terrarum.mouseX, Terrarum.mouseY) diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/Pocketed.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/Pocketed.kt index 666a2d4c1..0cd14e4b7 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/Pocketed.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/Pocketed.kt @@ -69,13 +69,13 @@ interface Pocketed { fun consumePrimary(item: GameItem) { - if (item.primaryUse(Terrarum.deltaTime)) { + if (item.startPrimaryUse(Terrarum.deltaTime)) { inventory.consumeItem(this as Actor, item) // consume on successful } } fun consumeSecondary(item: GameItem) { - if (item.secondaryUse(Terrarum.deltaTime)) + if (item.startSecondaryUse(Terrarum.deltaTime)) inventory.consumeItem(this as Actor, item) // consume on successful } } \ No newline at end of file diff --git a/src/net/torvald/terrarum/modulebasegame/items/PickaxeGeneric.kt b/src/net/torvald/terrarum/modulebasegame/items/PickaxeGeneric.kt index 83717eada..0e0dd8be6 100644 --- a/src/net/torvald/terrarum/modulebasegame/items/PickaxeGeneric.kt +++ b/src/net/torvald/terrarum/modulebasegame/items/PickaxeGeneric.kt @@ -33,7 +33,7 @@ class PickaxeGeneric(override val originalID: ItemID) : GameItem() { super.name = "Builtin Pickaxe" } - override fun primaryUse(delta: Float): Boolean { + override fun startPrimaryUse(delta: Float): Boolean { val player = (Terrarum.ingame!! as Ingame).actorNowPlaying if (player == null) return false diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIRemoCon.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIRemoCon.kt index 55447d27a..a987fdacf 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIRemoCon.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIRemoCon.kt @@ -77,6 +77,9 @@ open class UIRemoCon(treeRepresentation: QNDTreeNode) : UICanvas() { return UIRemoConElement(this, dynamicStrArray) } + // currently there's no resetter for this! + private var startNewGameCalled = false + override fun updateUI(delta: Float) { if (mouseActionAvailable) { remoConTray.update(delta) @@ -105,20 +108,24 @@ open class UIRemoCon(treeRepresentation: QNDTreeNode) : UICanvas() { } } else if (it.labelText.contains("Start New Random Game")) { + if (!startNewGameCalled) { + startNewGameCalled = true - printdbg(this, 1) - val ingame = Ingame(Terrarum.batch) - ingame.gameLoadInfoPayload = Ingame.NewWorldParameters(2400, 800, HQRNG().nextLong()) - ingame.gameLoadMode = Ingame.GameLoadMode.CREATE_NEW + printdbg(this, 1) - printdbg(this, 2) + val ingame = Ingame(Terrarum.batch) + ingame.gameLoadInfoPayload = Ingame.NewWorldParameters(2400, 800, HQRNG().nextLong()) + ingame.gameLoadMode = Ingame.GameLoadMode.CREATE_NEW - Terrarum.ingame = ingame - LoadScreen.screenToLoad = ingame - Terrarum.setScreen(LoadScreen) + printdbg(this, 2) - printdbg(this, 3) + Terrarum.ingame = ingame + LoadScreen.screenToLoad = ingame + Terrarum.setScreen(LoadScreen) + + printdbg(this, 3) + } } else { // check if target exists diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConYaml.kt b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConYaml.kt index a053e1500..2a4b768e1 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConYaml.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConYaml.kt @@ -36,6 +36,7 @@ object UITitleRemoConYaml { - Development Tools $ - Building Maker - Start New Random Game + - MENU_LABEL_RETURN """.trimIndent() operator fun invoke() = if (AppLoader.IS_DEVELOPMENT_BUILD) diff --git a/src/net/torvald/terrarum/ui/UICanvas.kt b/src/net/torvald/terrarum/ui/UICanvas.kt index b76d8b7f5..ca9fa8922 100644 --- a/src/net/torvald/terrarum/ui/UICanvas.kt +++ b/src/net/torvald/terrarum/ui/UICanvas.kt @@ -57,7 +57,7 @@ abstract class UICanvas( val relativeMouseY: Int get() = Terrarum.mouseScreenY - handler.posY - /** If mouse is hovering over it */ + /** If mouse is hovering over it regardless of its visibility */ val mouseUp: Boolean get() = relativeMouseX in 0..width - 1 && relativeMouseY in 0..height - 1 /** If mouse is hovering over it and mouse is down */ diff --git a/work_files/DataFormats/Map data format.txt b/work_files/DataFormats/Map data format.txt index b55162ef6..15ecfa55e 100644 --- a/work_files/DataFormats/Map data format.txt +++ b/work_files/DataFormats/Map data format.txt @@ -6,11 +6,11 @@ Ord Hex Description 00 54 T 01 45 E 02 4D M -03 44 D +03 7A z # 'z' because it's compressed -04 01 Number of bytes per tile; only 1 is supported +04 01 Version revision number -05 Number of layers +05 03 Number of layers 06 00 Reserved 07 00 Reserved @@ -36,16 +36,30 @@ Ord Hex Description 17 Default spawn coord Y # Layer count 1 -18 Terrain tiles data MSB +18 54 T +19 45 E +20 52 R +21 52 R + +22 Uncompressed size of DEFLATEd payload +23 Uncompressed size of DEFLATEd payload +24 Uncompressed size of DEFLATEd payload +25 Uncompressed size of DEFLATEd payload + +26... DEFLATEd payload for the terrain (MSB ++ LSB; uncompressed size must be 1.5x of MSB) # ++ is a list concat sign in Haskell # Layer count 2 -... Wall tiles data MSB +... "WALL" +... Uncompressed size of DEFLATEd payload +... DEFLATEd payload for the wall (MSB ++ LSB; uncompressed size must be 1.5x of MSB) + # Layer count 3 -... Terrain tiles data LSB (half size of MSB byte array) -... Wall tiles data LSB (half size of MSB byte array) +... "WIRE" +... Uncompressed size of DEFLATEd payload +... Wire tiles data (MSB only) -# Layer count 4 -... Wire tiles data (0-255) + - \ No newline at end of file + +* To read layers: you'll need to search for specific strings, namely ["TERR", "WALL", "WIRE"] diff --git a/work_files/DataFormats/Savegame container.txt b/work_files/DataFormats/Savegame container.txt index 5b082606c..7d62278e6 100644 --- a/work_files/DataFormats/Savegame container.txt +++ b/work_files/DataFormats/Savegame container.txt @@ -4,15 +4,15 @@ A savegame is a single file in the format of TerranVirtualDisk. Files contained the TerranVirtualDisk is as follows: (root) - worldinfo0 -- Savegame Metadata GZipped (TESV) - worldinfo1 -- Layer Data GZipped (TEMD) + worldinfo0 -- Savegame Metadata (TESV) + worldinfo1 -- Layer Data (TEMD) worldinfo2 -- Copy of blocks.csv GZipped -- will use this from the next load worldinfo3 -- Copy of items.csv GZipped -- will use this from the next load worldinfo4 -- Copy of materials.csv GZipped -- will use this from the next load (any random number in Hex ACTORID_MIN..FFFFFFFF) -- Serialised Entity Information (including Player) (PLAYER_REF_ID in Hex -- 91A7E2) -- Player Character Information (Serialised Entity Information) (51621D) -- The Debug Player (Serialised Entity Information) - load_order.txt -- LoadOrder.csv + load_order.txt -- LoadOrder.csv (NOT zipped) diff --git a/work_files/GameDesign/MISC_FEATURES.md b/work_files/GameDesign/MISC_FEATURES.md index dd74707dc..b4e7d4178 100644 --- a/work_files/GameDesign/MISC_FEATURES.md +++ b/work_files/GameDesign/MISC_FEATURES.md @@ -38,7 +38,7 @@ Connect two or more tracker head to play the array of trackers play simultaneous ## Aimhack ## - Include a valid way of obtaining Aimhack (possessed weapon shit?) -- Implement it on ```.primaryUse(gc, delta)``` +- Implement it on ```.startPrimaryUse(gc, delta)``` ## Particles ## diff --git a/work_files/graphics/gui/sante_distance.psd b/work_files/graphics/gui/sante_distance.psd index 48e487410..e44a4c211 100644 --- a/work_files/graphics/gui/sante_distance.psd +++ b/work_files/graphics/gui/sante_distance.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49a61744481c9a88ba9789fd11947b9aa37ae50a85ae566eec5c385dccd5fe76 -size 37853 +oid sha256:481a0178d3fc0daa7961d98d5d46bf1b913d712b7f70a4e1568f069b55f69efa +size 37895 diff --git a/work_files/graphics/gui/sante_jeu.psd b/work_files/graphics/gui/sante_jeu.psd index dbc637596..221b8e587 100644 --- a/work_files/graphics/gui/sante_jeu.psd +++ b/work_files/graphics/gui/sante_jeu.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dcc295e137604c80cb5c02f27b42b8f0965cc99ef49f18b4e2b49d7b1582ade1 -size 35940 +oid sha256:323cd16aa5365c1c62fb910d0b6de1961f21183c4d06911ff9b1c4881df09c3d +size 34563 diff --git a/work_files/graphics/sprites/fixtures/computer_parts.psd b/work_files/graphics/sprites/fixtures/computer_parts.psd index cb7428346..15109309a 100644 --- a/work_files/graphics/sprites/fixtures/computer_parts.psd +++ b/work_files/graphics/sprites/fixtures/computer_parts.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:faf85655c07cc2c206fd67374ec7a0e2c27506554e28286bc17963cf3d05a1e3 -size 224648 +oid sha256:14572e74ec96a0b7f5b83a3609c4ad7ecd64e283fe61188f4806c5f1f59f5820 +size 225326