mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-11 02:54:04 +09:00
trying to write a new ingamecontroller so that its update can be manually controlled
This commit is contained in:
@@ -325,11 +325,6 @@ class TitleScreen(batch: SpriteBatch) : IngameInstance(batch) {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun mouseMoved(screenX: Int, screenY: Int): Boolean {
|
|
||||||
screen.uiContainer.forEach { it?.mouseMoved(screenX, screenY) }
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun keyTyped(character: Char): Boolean {
|
override fun keyTyped(character: Char): Boolean {
|
||||||
screen.uiContainer.forEach { it?.keyTyped(character) }
|
screen.uiContainer.forEach { it?.keyTyped(character) }
|
||||||
return true
|
return true
|
||||||
|
|||||||
@@ -2,13 +2,13 @@ package net.torvald.terrarum.gamecontroller
|
|||||||
|
|
||||||
import com.badlogic.gdx.Gdx
|
import com.badlogic.gdx.Gdx
|
||||||
import com.badlogic.gdx.Input
|
import com.badlogic.gdx.Input
|
||||||
|
import com.badlogic.gdx.Input.Keys
|
||||||
import com.badlogic.gdx.InputAdapter
|
import com.badlogic.gdx.InputAdapter
|
||||||
import com.badlogic.gdx.controllers.Controllers
|
import com.badlogic.gdx.controllers.Controllers
|
||||||
import com.badlogic.gdx.utils.GdxRuntimeException
|
import com.badlogic.gdx.utils.GdxRuntimeException
|
||||||
import net.torvald.terrarum.AppLoader
|
import net.torvald.terrarum.AppLoader
|
||||||
import net.torvald.terrarum.AppLoader.printdbg
|
import net.torvald.terrarum.AppLoader.printdbg
|
||||||
import net.torvald.terrarum.AppLoader.printdbgerr
|
import net.torvald.terrarum.AppLoader.printdbgerr
|
||||||
import net.torvald.terrarum.TerrarumAppConfiguration
|
|
||||||
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
|
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
|
||||||
import net.torvald.terrarum.controller.TerrarumController
|
import net.torvald.terrarum.controller.TerrarumController
|
||||||
import net.torvald.terrarum.floorInt
|
import net.torvald.terrarum.floorInt
|
||||||
@@ -17,9 +17,8 @@ import net.torvald.terrarum.gameitem.GameItem
|
|||||||
import net.torvald.terrarum.gameworld.fmod
|
import net.torvald.terrarum.gameworld.fmod
|
||||||
import net.torvald.terrarum.itemproperties.ItemCodex
|
import net.torvald.terrarum.itemproperties.ItemCodex
|
||||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||||
import net.torvald.terrarum.modulebasegame.gameactors.FixtureBase
|
|
||||||
import net.torvald.terrarum.worlddrawer.CreateTileAtlas
|
|
||||||
import net.torvald.terrarum.worlddrawer.WorldCamera
|
import net.torvald.terrarum.worlddrawer.WorldCamera
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by minjaesong on 2015-12-31.
|
* Created by minjaesong on 2015-12-31.
|
||||||
@@ -61,6 +60,12 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
|
|||||||
|
|
||||||
private var worldPrimaryClickLatched = false
|
private var worldPrimaryClickLatched = false
|
||||||
|
|
||||||
|
private val keyStatus = BitSet(256)
|
||||||
|
private var inputMouseX = -1
|
||||||
|
private var inputMouseY = -1
|
||||||
|
private val mouseStatus = BitSet(8)
|
||||||
|
private val controllerButtonStatus = BitSet(64)
|
||||||
|
|
||||||
fun update(delta: Float) {
|
fun update(delta: Float) {
|
||||||
|
|
||||||
///////////////////
|
///////////////////
|
||||||
@@ -107,11 +112,45 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
|
|||||||
//KeyToggler.update(terrarumIngame.canPlayerControl)
|
//KeyToggler.update(terrarumIngame.canPlayerControl)
|
||||||
//printdbg(this, terrarumIngame.canPlayerControl)
|
//printdbg(this, terrarumIngame.canPlayerControl)
|
||||||
|
|
||||||
|
// control key events
|
||||||
|
var noKeyHeldDown = true
|
||||||
|
for (key in 1..Input.Keys.MAX_KEYCODE) {
|
||||||
|
val keyDown = Gdx.input.isKeyPressed(key)
|
||||||
|
|
||||||
|
noKeyHeldDown = noKeyHeldDown and keyDown
|
||||||
|
|
||||||
|
if (keyDown && !keyStatus[key])
|
||||||
|
tKeyDown(key)
|
||||||
|
else if (!keyDown && keyStatus[key])
|
||||||
|
tKeyUp(key)
|
||||||
|
|
||||||
|
keyStatus[key] = keyDown
|
||||||
|
}
|
||||||
|
// control mouse/touch events
|
||||||
|
val newmx = Gdx.input.x
|
||||||
|
val newmy = Gdx.input.y
|
||||||
|
for (touch in 0..4) {
|
||||||
|
val touchDown = Gdx.input.isButtonPressed(touch)
|
||||||
|
|
||||||
|
if (touchDown && !mouseStatus[touch])
|
||||||
|
tTouchDown(newmx, newmy, 0, touch)
|
||||||
|
else if (!touchDown && keyStatus[touch])
|
||||||
|
tTouchUp(newmx, newmy, 0, touch)
|
||||||
|
|
||||||
|
if (touchDown && mouseStatus.bitCount() != 0) {
|
||||||
|
tTouchDragged(newmx, newmy, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
mouseStatus[touch] = touchDown
|
||||||
|
}
|
||||||
|
|
||||||
|
inputMouseX = newmx
|
||||||
|
inputMouseY = newmy
|
||||||
}
|
}
|
||||||
|
|
||||||
private var f12Down = false
|
private var f12Down = false
|
||||||
|
|
||||||
override fun keyDown(keycode: Int): Boolean {
|
private fun tKeyDown(keycode: Int): Boolean {
|
||||||
|
|
||||||
if (!terrarumIngame.paused) {
|
if (!terrarumIngame.paused) {
|
||||||
terrarumIngame.actorNowPlaying?.keyDown(keycode)
|
terrarumIngame.actorNowPlaying?.keyDown(keycode)
|
||||||
@@ -148,7 +187,7 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun keyUp(keycode: Int): Boolean {
|
private fun tKeyUp(keycode: Int): Boolean {
|
||||||
if (AppLoader.getConfigIntArray("config_keyquickselalt").contains(keycode)
|
if (AppLoader.getConfigIntArray("config_keyquickselalt").contains(keycode)
|
||||||
|| keycode == AppLoader.getConfigInt("config_keyquicksel")) {
|
|| keycode == AppLoader.getConfigInt("config_keyquicksel")) {
|
||||||
terrarumIngame.uiPieMenu.setAsClose()
|
terrarumIngame.uiPieMenu.setAsClose()
|
||||||
@@ -169,12 +208,7 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun mouseMoved(screenX: Int, screenY: Int): Boolean {
|
private fun tTouchUp(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
|
||||||
terrarumIngame.uiContainer.forEach { it?.mouseMoved(screenX, screenY) }
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun touchUp(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
|
|
||||||
// don't separate Player from this! Physics will break, esp. airborne manoeuvre
|
// don't separate Player from this! Physics will break, esp. airborne manoeuvre
|
||||||
if (!terrarumIngame.paused) {
|
if (!terrarumIngame.paused) {
|
||||||
// fire world click events; the event is defined as Ingame's (or any others') WorldClick event
|
// fire world click events; the event is defined as Ingame's (or any others') WorldClick event
|
||||||
@@ -216,12 +250,12 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun touchDragged(screenX: Int, screenY: Int, pointer: Int): Boolean {
|
private fun tTouchDragged(screenX: Int, screenY: Int, pointer: Int): Boolean {
|
||||||
terrarumIngame.uiContainer.forEach { it?.touchDragged(screenX, screenY, pointer) }
|
terrarumIngame.uiContainer.forEach { it?.touchDragged(screenX, screenY, pointer) }
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun touchDown(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
|
private fun tTouchDown(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
|
||||||
terrarumIngame.uiContainer.forEach { it?.touchDown(screenX, screenY, pointer, button) }
|
terrarumIngame.uiContainer.forEach { it?.touchDown(screenX, screenY, pointer, button) }
|
||||||
|
|
||||||
// pie menu
|
// pie menu
|
||||||
@@ -233,5 +267,163 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val KEY_DELAY = 0.2f
|
||||||
|
const val KEY_REPEAT = 1f / 40f
|
||||||
|
val KEYCODE_TO_CHAR = hashMapOf<Int, Char>(
|
||||||
|
Keys.NUM_1 to '1',
|
||||||
|
Keys.NUM_2 to '2',
|
||||||
|
Keys.NUM_3 to '3',
|
||||||
|
Keys.NUM_4 to '4',
|
||||||
|
Keys.NUM_5 to '5',
|
||||||
|
Keys.NUM_6 to '6',
|
||||||
|
Keys.NUM_7 to '7',
|
||||||
|
Keys.NUM_8 to '8',
|
||||||
|
Keys.NUM_9 to '9',
|
||||||
|
Keys.NUM_0 to '0',
|
||||||
|
|
||||||
|
Keys.A to 'a',
|
||||||
|
Keys.B to 'b',
|
||||||
|
Keys.C to 'c',
|
||||||
|
Keys.D to 'd',
|
||||||
|
Keys.E to 'e',
|
||||||
|
Keys.F to 'f',
|
||||||
|
Keys.G to 'g',
|
||||||
|
Keys.H to 'h',
|
||||||
|
Keys.I to 'i',
|
||||||
|
Keys.J to 'j',
|
||||||
|
Keys.K to 'k',
|
||||||
|
Keys.L to 'l',
|
||||||
|
Keys.M to 'm',
|
||||||
|
Keys.N to 'n',
|
||||||
|
Keys.O to 'o',
|
||||||
|
Keys.P to 'p',
|
||||||
|
Keys.Q to 'q',
|
||||||
|
Keys.R to 'r',
|
||||||
|
Keys.S to 's',
|
||||||
|
Keys.T to 't',
|
||||||
|
Keys.U to 'u',
|
||||||
|
Keys.V to 'v',
|
||||||
|
Keys.W to 'w',
|
||||||
|
Keys.X to 'x',
|
||||||
|
Keys.Y to 'y',
|
||||||
|
Keys.Z to 'z',
|
||||||
|
|
||||||
|
Keys.GRAVE to '`',
|
||||||
|
Keys.MINUS to '-',
|
||||||
|
Keys.EQUALS to '=',
|
||||||
|
Keys.BACKSPACE to 8.toChar(),
|
||||||
|
|
||||||
|
Keys.LEFT_BRACKET to '[',
|
||||||
|
Keys.RIGHT_BRACKET to ']',
|
||||||
|
Keys.BACKSLASH to '\\',
|
||||||
|
|
||||||
|
Keys.SEMICOLON to ';',
|
||||||
|
Keys.APOSTROPHE to '\'',
|
||||||
|
Keys.ENTER to 10.toChar(),
|
||||||
|
|
||||||
|
Keys.COMMA to ',',
|
||||||
|
Keys.PERIOD to '.',
|
||||||
|
Keys.SLASH to '/',
|
||||||
|
|
||||||
|
Keys.SPACE to ' ',
|
||||||
|
|
||||||
|
Keys.NUMPAD_0 to '0',
|
||||||
|
Keys.NUMPAD_1 to '1',
|
||||||
|
Keys.NUMPAD_2 to '2',
|
||||||
|
Keys.NUMPAD_3 to '3',
|
||||||
|
Keys.NUMPAD_4 to '4',
|
||||||
|
Keys.NUMPAD_5 to '5',
|
||||||
|
Keys.NUMPAD_6 to '6',
|
||||||
|
Keys.NUMPAD_7 to '7',
|
||||||
|
Keys.NUMPAD_8 to '8',
|
||||||
|
Keys.NUMPAD_9 to '9',
|
||||||
|
|
||||||
|
Keys.NUMPAD_DIVIDE to '/',
|
||||||
|
Keys.NUMPAD_MULTIPLY to '*',
|
||||||
|
Keys.NUMPAD_SUBTRACT to '-',
|
||||||
|
Keys.NUMPAD_ADD to '+',
|
||||||
|
Keys.NUMPAD_DOT to '.',
|
||||||
|
Keys.NUMPAD_ENTER to 10.toChar()
|
||||||
|
)
|
||||||
|
val KEYCODE_TO_CHAR_SHIFT = hashMapOf<Int, Char>(
|
||||||
|
Keys.NUM_1 to '!',
|
||||||
|
Keys.NUM_2 to '@',
|
||||||
|
Keys.NUM_3 to '#',
|
||||||
|
Keys.NUM_4 to '$',
|
||||||
|
Keys.NUM_5 to '%',
|
||||||
|
Keys.NUM_6 to '^',
|
||||||
|
Keys.NUM_7 to '&',
|
||||||
|
Keys.NUM_8 to '*',
|
||||||
|
Keys.NUM_9 to '(',
|
||||||
|
Keys.NUM_0 to ')',
|
||||||
|
|
||||||
|
Keys.A to 'A',
|
||||||
|
Keys.B to 'B',
|
||||||
|
Keys.C to 'C',
|
||||||
|
Keys.D to 'D',
|
||||||
|
Keys.E to 'E',
|
||||||
|
Keys.F to 'F',
|
||||||
|
Keys.G to 'G',
|
||||||
|
Keys.H to 'H',
|
||||||
|
Keys.I to 'I',
|
||||||
|
Keys.J to 'J',
|
||||||
|
Keys.K to 'K',
|
||||||
|
Keys.L to 'L',
|
||||||
|
Keys.M to 'M',
|
||||||
|
Keys.N to 'N',
|
||||||
|
Keys.O to 'O',
|
||||||
|
Keys.P to 'P',
|
||||||
|
Keys.Q to 'Q',
|
||||||
|
Keys.R to 'R',
|
||||||
|
Keys.S to 'S',
|
||||||
|
Keys.T to 'T',
|
||||||
|
Keys.U to 'U',
|
||||||
|
Keys.V to 'V',
|
||||||
|
Keys.W to 'W',
|
||||||
|
Keys.X to 'X',
|
||||||
|
Keys.Y to 'Y',
|
||||||
|
Keys.Z to 'Z',
|
||||||
|
|
||||||
|
Keys.GRAVE to '~',
|
||||||
|
Keys.MINUS to '_',
|
||||||
|
Keys.EQUALS to '+',
|
||||||
|
Keys.BACKSPACE to 8.toChar(),
|
||||||
|
|
||||||
|
Keys.LEFT_BRACKET to '{',
|
||||||
|
Keys.RIGHT_BRACKET to '}',
|
||||||
|
Keys.BACKSLASH to '|',
|
||||||
|
|
||||||
|
Keys.SEMICOLON to ':',
|
||||||
|
Keys.APOSTROPHE to '"',
|
||||||
|
Keys.ENTER to 10.toChar(),
|
||||||
|
|
||||||
|
Keys.COMMA to '<',
|
||||||
|
Keys.PERIOD to '>',
|
||||||
|
Keys.SLASH to '?',
|
||||||
|
|
||||||
|
Keys.SPACE to ' ',
|
||||||
|
|
||||||
|
Keys.NUMPAD_0 to '0',
|
||||||
|
Keys.NUMPAD_1 to '1',
|
||||||
|
Keys.NUMPAD_2 to '2',
|
||||||
|
Keys.NUMPAD_3 to '3',
|
||||||
|
Keys.NUMPAD_4 to '4',
|
||||||
|
Keys.NUMPAD_5 to '5',
|
||||||
|
Keys.NUMPAD_6 to '6',
|
||||||
|
Keys.NUMPAD_7 to '7',
|
||||||
|
Keys.NUMPAD_8 to '8',
|
||||||
|
Keys.NUMPAD_9 to '9',
|
||||||
|
|
||||||
|
Keys.NUMPAD_DIVIDE to '/',
|
||||||
|
Keys.NUMPAD_MULTIPLY to '*',
|
||||||
|
Keys.NUMPAD_SUBTRACT to '-',
|
||||||
|
Keys.NUMPAD_ADD to '+',
|
||||||
|
Keys.NUMPAD_DOT to '.',
|
||||||
|
Keys.NUMPAD_ENTER to 10.toChar()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private inline fun BitSet.bitCount() = this.cardinality()
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@ object KeyToggler {
|
|||||||
* Set ```toggleGameKeys = true``` to make toggling work for keys like Q, W, E, ...; otherwise only F1-F12 keys will be toggled
|
* Set ```toggleGameKeys = true``` to make toggling work for keys like Q, W, E, ...; otherwise only F1-F12 keys will be toggled
|
||||||
*/
|
*/
|
||||||
fun update(toggleGameKeys: Boolean) {
|
fun update(toggleGameKeys: Boolean) {
|
||||||
for (it in 0..255) {
|
for (it in 1..255) {
|
||||||
if (!toggleGameKeys && gameKeys.contains(it)) {
|
if (!toggleGameKeys && gameKeys.contains(it)) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -505,11 +505,6 @@ class BuildingMakerController(val screen: BuildingMaker) : InputAdapter() {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun mouseMoved(screenX: Int, screenY: Int): Boolean {
|
|
||||||
screen.uiContainer.forEach { it?.mouseMoved(screenX, screenY) }
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun keyTyped(character: Char): Boolean {
|
override fun keyTyped(character: Char): Boolean {
|
||||||
screen.uiContainer.forEach { it?.keyTyped(character) }
|
screen.uiContainer.forEach { it?.keyTyped(character) }
|
||||||
return true
|
return true
|
||||||
|
|||||||
@@ -564,6 +564,10 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) {
|
|||||||
particlesActive = 0
|
particlesActive = 0
|
||||||
|
|
||||||
|
|
||||||
|
// synchronised Ingame Input Updater
|
||||||
|
ingameController.update(delta)
|
||||||
|
|
||||||
|
|
||||||
if (!paused) {
|
if (!paused) {
|
||||||
|
|
||||||
//hypothetical_input_capturing_function_if_you_finally_decided_to_forgo_gdx_input_processor_and_implement_your_own_to_synchronise_everything()
|
//hypothetical_input_capturing_function_if_you_finally_decided_to_forgo_gdx_input_processor_and_implement_your_own_to_synchronise_everything()
|
||||||
@@ -611,9 +615,6 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// world click events (e.g. opening the UI that a fixture has) must go here
|
|
||||||
ingameController.update(delta)
|
|
||||||
|
|
||||||
/*if (!paused) {
|
/*if (!paused) {
|
||||||
// completely consume block change queues because why not
|
// completely consume block change queues because why not
|
||||||
terrainChangeQueue.clear()
|
terrainChangeQueue.clear()
|
||||||
|
|||||||
@@ -188,14 +188,6 @@ open class UIRemoCon(treeRepresentation: QNDTreeNode<String>) : UICanvas() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun mouseMoved(screenX: Int, screenY: Int): Boolean {
|
|
||||||
screens.forEach {
|
|
||||||
it.second.mouseMoved(screenX, screenY) // again, underlying handler will block unnecessary renders
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun touchDragged(screenX: Int, screenY: Int, pointer: Int): Boolean {
|
override fun touchDragged(screenX: Int, screenY: Int, pointer: Int): Boolean {
|
||||||
screens.forEach {
|
screens.forEach {
|
||||||
it.second.touchDragged(screenX, screenY, pointer) // again, underlying handler will block unnecessary renders
|
it.second.touchDragged(screenX, screenY, pointer) // again, underlying handler will block unnecessary renders
|
||||||
|
|||||||
@@ -14,10 +14,10 @@ import kotlin.math.roundToInt
|
|||||||
* ## UI Items
|
* ## UI Items
|
||||||
*
|
*
|
||||||
* UI can contain one or more UI elements (called UIItem). Each UIItem can have one or more events programmed to it.
|
* UI can contain one or more UI elements (called UIItem). Each UIItem can have one or more events programmed to it.
|
||||||
* Events have their own listener are governed by their GDX event handlers (e.g. mouseMoved).
|
* Events have their own listener are governed by their GDX event handlers (e.g. touchDragged).
|
||||||
* These GDX handlers are what makes the our own handler to work.
|
* These GDX handlers are what makes the our own handler to work.
|
||||||
*
|
*
|
||||||
* UIItems have following event handlers: updateLister, keyDownListener, mouseMovedListener, touchDraggedListener, touchDownListener, touchUpListener, scrolledListener, and clickOnceListener.
|
* UIItems have following event handlers: updateLister, keyDownListener, touchDraggedListener, touchDownListener, touchUpListener, scrolledListener, and clickOnceListener.
|
||||||
* (perhaps clickOnceListener is the one most useful)
|
* (perhaps clickOnceListener is the one most useful)
|
||||||
*
|
*
|
||||||
* To make them work without any hassle on your part,
|
* To make them work without any hassle on your part,
|
||||||
@@ -150,15 +150,6 @@ abstract class UICanvas(
|
|||||||
|
|
||||||
fun mouseInScreen(x: Int, y: Int) = x in 0 until AppLoader.screenSize.screenW && y in 0 until AppLoader.screenSize.screenH
|
fun mouseInScreen(x: Int, y: Int) = x in 0 until AppLoader.screenSize.screenW && y in 0 until AppLoader.screenSize.screenH
|
||||||
|
|
||||||
open fun mouseMoved(screenX: Int, screenY: Int): Boolean {
|
|
||||||
if (this.isVisible) {
|
|
||||||
uiItems.forEach { it.mouseMoved(screenX, screenY) }
|
|
||||||
handler.subUIs.forEach { it.mouseMoved(screenX, screenY) }
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
else return false
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called by the screen's InputProcessor
|
* Called by the screen's InputProcessor
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -346,16 +346,6 @@ void main() {
|
|||||||
TerrarumIngame.setCameraPosition(batch, camera, newX, newY)
|
TerrarumIngame.setCameraPosition(batch, camera, newX, newY)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun mouseMoved(uiItems: List<UIItem>, screenX: Int, screenY: Int): Boolean {
|
|
||||||
if (isVisible) {
|
|
||||||
uiItems.forEach { it.mouseMoved(screenX, screenY) }
|
|
||||||
subUIs.forEach { it.mouseMoved(screenX, screenY) }
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fun touchDragged(uiItems: List<UIItem>, screenX: Int, screenY: Int, pointer: Int): Boolean {
|
fun touchDragged(uiItems: List<UIItem>, screenX: Int, screenY: Int, pointer: Int): Boolean {
|
||||||
if (isVisible) {
|
if (isVisible) {
|
||||||
uiItems.forEach { it.touchDragged(screenX, screenY, pointer) }
|
uiItems.forEach { it.touchDragged(screenX, screenY, pointer) }
|
||||||
|
|||||||
@@ -16,8 +16,7 @@ import net.torvald.terrarum.Terrarum
|
|||||||
* - updateListener
|
* - updateListener
|
||||||
* - keyDownListener
|
* - keyDownListener
|
||||||
* - keyUpListener
|
* - keyUpListener
|
||||||
* - mouseMovedListene
|
* - touchDraggedLister
|
||||||
* - touchDraggedListe
|
|
||||||
* - touchDownListener
|
* - touchDownListener
|
||||||
* - touchUpListener
|
* - touchUpListener
|
||||||
* - scrolledListener
|
* - scrolledListener
|
||||||
@@ -104,7 +103,6 @@ abstract class UIItem(var parentUI: UICanvas, val initialX: Int, val initialY: I
|
|||||||
open var keyDownListener: ((Int) -> Unit)? = null
|
open var keyDownListener: ((Int) -> Unit)? = null
|
||||||
/** Parametre: keycode */
|
/** Parametre: keycode */
|
||||||
open var keyUpListener: ((Int) -> Unit)? = null
|
open var keyUpListener: ((Int) -> Unit)? = null
|
||||||
open var mouseMovedListener: ((Int, Int) -> Unit)? = null
|
|
||||||
open var touchDraggedListener: ((Int, Int, Int) -> Unit)? = null
|
open var touchDraggedListener: ((Int, Int, Int) -> Unit)? = null
|
||||||
/** Parameters: screenX, screenY, pointer, button */
|
/** Parameters: screenX, screenY, pointer, button */
|
||||||
open var touchDownListener: ((Int, Int, Int, Int) -> Unit)? = null
|
open var touchDownListener: ((Int, Int, Int, Int) -> Unit)? = null
|
||||||
@@ -177,14 +175,6 @@ abstract class UIItem(var parentUI: UICanvas, val initialX: Int, val initialY: I
|
|||||||
}
|
}
|
||||||
|
|
||||||
// mouse controlled
|
// mouse controlled
|
||||||
open fun mouseMoved(screenX: Int, screenY: Int): Boolean {
|
|
||||||
if (parentUI.isVisible && mouseMovedListener != null) {
|
|
||||||
mouseMovedListener!!.invoke(relativeMouseX, relativeMouseY)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
open fun touchDragged(screenX: Int, screenY: Int, pointer: Int): Boolean {
|
open fun touchDragged(screenX: Int, screenY: Int, pointer: Int): Boolean {
|
||||||
if (parentUI.isVisible && touchDraggedListener != null) {
|
if (parentUI.isVisible && touchDraggedListener != null) {
|
||||||
touchDraggedListener!!.invoke(relativeMouseX, relativeMouseY, pointer)
|
touchDraggedListener!!.invoke(relativeMouseX, relativeMouseY, pointer)
|
||||||
|
|||||||
@@ -43,34 +43,6 @@ class UIItemImageGallery(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun keyDown(keycode: Int): Boolean {
|
|
||||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun keyUp(keycode: Int): Boolean {
|
|
||||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun mouseMoved(screenX: Int, screenY: Int): Boolean {
|
|
||||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun touchDragged(screenX: Int, screenY: Int, pointer: Int): Boolean {
|
|
||||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun touchDown(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
|
|
||||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun touchUp(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
|
|
||||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun scrolled(amountX: Float, amountY: Float): Boolean {
|
|
||||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun dispose() {
|
override fun dispose() {
|
||||||
imageList.forEach { it.dispose() }
|
imageList.forEach { it.dispose() }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,9 +103,6 @@ class UIItemIntSlider(
|
|||||||
override var keyUpListener: ((Int) -> Unit)?
|
override var keyUpListener: ((Int) -> Unit)?
|
||||||
get() = super.keyUpListener
|
get() = super.keyUpListener
|
||||||
set(_) {}
|
set(_) {}
|
||||||
override var mouseMovedListener: ((Int, Int) -> Unit)?
|
|
||||||
get() = super.mouseMovedListener
|
|
||||||
set(_) {}
|
|
||||||
override var touchDraggedListener: ((Int, Int, Int) -> Unit)?
|
override var touchDraggedListener: ((Int, Int, Int) -> Unit)?
|
||||||
get() = super.touchDraggedListener
|
get() = super.touchDraggedListener
|
||||||
set(_) {}
|
set(_) {}
|
||||||
|
|||||||
@@ -257,10 +257,6 @@ class UIItemTextButtonList(
|
|||||||
return super.keyUp(keycode) || buttons.map { it.keyUp(keycode).toInt() }.sum() != 0
|
return super.keyUp(keycode) || buttons.map { it.keyUp(keycode).toInt() }.sum() != 0
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun mouseMoved(screenX: Int, screenY: Int): Boolean {
|
|
||||||
return super.mouseMoved(screenX, screenY) || buttons.map { it.mouseMoved(screenX, screenY).toInt() }.sum() != 0
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun touchDragged(screenX: Int, screenY: Int, pointer: Int): Boolean {
|
override fun touchDragged(screenX: Int, screenY: Int, pointer: Int): Boolean {
|
||||||
return super.touchDragged(screenX, screenY, pointer) || buttons.map { it.touchDragged(screenX, screenY, pointer).toInt() }.sum() != 0
|
return super.touchDragged(screenX, screenY, pointer) || buttons.map { it.touchDragged(screenX, screenY, pointer).toInt() }.sum() != 0
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,11 +96,6 @@ open class UIItemTransitionContainer(
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun mouseMoved(screenX: Int, screenY: Int): Boolean {
|
|
||||||
uis.forEachIndexed { index, ui -> if (timeToUpdate(index)) ui.mouseMoved(screenX, screenY) }
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun touchDragged(screenX: Int, screenY: Int, pointer: Int): Boolean {
|
override fun touchDragged(screenX: Int, screenY: Int, pointer: Int): Boolean {
|
||||||
uis.forEachIndexed { index, ui -> if (timeToUpdate(index)) ui.touchDragged(screenX, screenY, pointer) }
|
uis.forEachIndexed { index, ui -> if (timeToUpdate(index)) ui.touchDragged(screenX, screenY, pointer) }
|
||||||
return true
|
return true
|
||||||
|
|||||||
@@ -202,9 +202,6 @@ class UINSMenu(
|
|||||||
override fun endClosing(delta: Float) {
|
override fun endClosing(delta: Float) {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun mouseMoved(screenX: Int, screenY: Int): Boolean {
|
|
||||||
return super.mouseMoved(screenX, screenY)
|
|
||||||
}
|
|
||||||
|
|
||||||
private var dragOriginX = 0 // relative mousepos
|
private var dragOriginX = 0 // relative mousepos
|
||||||
private var dragOriginY = 0 // relative mousepos
|
private var dragOriginY = 0 // relative mousepos
|
||||||
|
|||||||
Reference in New Issue
Block a user