trying to write a new ingamecontroller so that its update can be manually controlled

This commit is contained in:
minjaesong
2021-08-21 21:03:39 +09:00
parent bb95444067
commit ca72a6fbe5
14 changed files with 214 additions and 111 deletions

View File

@@ -14,10 +14,10 @@ import kotlin.math.roundToInt
* ## UI Items
*
* 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.
*
* 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)
*
* 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
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
*

View File

@@ -346,16 +346,6 @@ void main() {
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 {
if (isVisible) {
uiItems.forEach { it.touchDragged(screenX, screenY, pointer) }

View File

@@ -16,8 +16,7 @@ import net.torvald.terrarum.Terrarum
* - updateListener
* - keyDownListener
* - keyUpListener
* - mouseMovedListene
* - touchDraggedListe
* - touchDraggedLister
* - touchDownListener
* - touchUpListener
* - scrolledListener
@@ -104,7 +103,6 @@ abstract class UIItem(var parentUI: UICanvas, val initialX: Int, val initialY: I
open var keyDownListener: ((Int) -> Unit)? = null
/** Parametre: keycode */
open var keyUpListener: ((Int) -> Unit)? = null
open var mouseMovedListener: ((Int, Int) -> Unit)? = null
open var touchDraggedListener: ((Int, Int, Int) -> Unit)? = null
/** Parameters: screenX, screenY, pointer, button */
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
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 {
if (parentUI.isVisible && touchDraggedListener != null) {
touchDraggedListener!!.invoke(relativeMouseX, relativeMouseY, pointer)

View File

@@ -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() {
imageList.forEach { it.dispose() }
}

View File

@@ -103,9 +103,6 @@ class UIItemIntSlider(
override var keyUpListener: ((Int) -> Unit)?
get() = super.keyUpListener
set(_) {}
override var mouseMovedListener: ((Int, Int) -> Unit)?
get() = super.mouseMovedListener
set(_) {}
override var touchDraggedListener: ((Int, Int, Int) -> Unit)?
get() = super.touchDraggedListener
set(_) {}

View File

@@ -257,10 +257,6 @@ class UIItemTextButtonList(
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 {
return super.touchDragged(screenX, screenY, pointer) || buttons.map { it.touchDragged(screenX, screenY, pointer).toInt() }.sum() != 0
}

View File

@@ -96,11 +96,6 @@ open class UIItemTransitionContainer(
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 {
uis.forEachIndexed { index, ui -> if (timeToUpdate(index)) ui.touchDragged(screenX, screenY, pointer) }
return true

View File

@@ -202,9 +202,6 @@ class UINSMenu(
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 dragOriginY = 0 // relative mousepos