From 64b0f8b617059e09d9c34d345f39fbe83cb7f196 Mon Sep 17 00:00:00 2001 From: Carlos Ballesteros Velasco Date: Sat, 23 May 2020 19:01:33 +0200 Subject: [PATCH] Some adjustments --- sample-input/src/commonMain/kotlin/main.kt | 16 ++--- .../commonMain/kotlin/OnScreenController.kt | 64 ++++++++++--------- 2 files changed, 42 insertions(+), 38 deletions(-) diff --git a/sample-input/src/commonMain/kotlin/main.kt b/sample-input/src/commonMain/kotlin/main.kt index d267e34..2fe4ff3 100644 --- a/sample-input/src/commonMain/kotlin/main.kt +++ b/sample-input/src/commonMain/kotlin/main.kt @@ -25,14 +25,14 @@ suspend fun main() = Korge { val gamepadUpdateText = textLine("GamepadUpdateEv") val gamepadUpdate2Text = textLine("GamepadUpdate2Ev") - addEventListener { keysEvText.text = "${nowUnix()}:$it" } - addEventListener { mouseEvText.text = "${nowUnix()}:$it" } - addEventListener { resizeText.text = "${nowUnix()}:$it" } - addEventListener { gamepadConnectedText.text = "${nowUnix()}:$it" } - addEventListener { - gamepadUpdateText.text = "${nowUnix()}:$it" - gamepadUpdate2Text.text = "" + it.gamepads.lastOrNull { it.connected }?.rawButtonsPressed - } + //stage.addEventListener { keysEvText.text = "${nowUnix()}:$it" } + //stage.addEventListener { mouseEvText.text = "${nowUnix()}:$it" } + //stage.addEventListener { resizeText.text = "${nowUnix()}:$it" } + //stage.addEventListener { gamepadConnectedText.text = "${nowUnix()}:$it" } + //stage.addEventListener { + // gamepadUpdateText.text = "${nowUnix()}:$it" + // gamepadUpdate2Text.text = "" + it.gamepads.lastOrNull { it.connected }?.rawButtonsPressed + //} gamepad { button.invoke { gamepadButtonText.text = "$it" } diff --git a/sample-onscreen-controller/src/commonMain/kotlin/OnScreenController.kt b/sample-onscreen-controller/src/commonMain/kotlin/OnScreenController.kt index ffba25d..2d1663b 100644 --- a/sample-onscreen-controller/src/commonMain/kotlin/OnScreenController.kt +++ b/sample-onscreen-controller/src/commonMain/kotlin/OnScreenController.kt @@ -1,5 +1,6 @@ import com.soywiz.kmem.* import com.soywiz.korev.* +import com.soywiz.korge.component.* import com.soywiz.korge.input.* import com.soywiz.korge.view.* import com.soywiz.korim.color.* @@ -40,40 +41,43 @@ fun Container.addTouchGamepad(width: Double = 320.0, height: Double = 224.0, rad var dragging = false val start = Point(0, 0) - view.addEventListener { - val px = view.globalMatrixInv.transformX(it.x, it.y) - val py = view.globalMatrixInv.transformY(it.x, it.y) + view.addComponent(object : MouseComponent { + override val view: View = view - when (it.type) { - MouseEvent.Type.DOWN -> { + override fun onMouseEvent(views: Views, it: MouseEvent) { + val px = view.globalMatrixInv.transformX(it.x.toDouble(), it.y.toDouble()) + val py = view.globalMatrixInv.transformY(it.x.toDouble(), it.y.toDouble()) - if (px >= width / 2) return@addEventListener - start.x = px - start.y = py - ball.alpha = 0.3 - dragging = true - } - MouseEvent.Type.DRAG -> { - if (dragging) { - val deltaX = px - start.x - val deltaY = py - start.y - val length = hypot(deltaX, deltaY) - val maxLength = radius * 0.3 - val lengthClamped = length.clamp(0.0, maxLength) - val angle = Angle.between(start.x, start.y, px, py) - ball.position(cos(angle) * lengthClamped, sin(angle) * lengthClamped) - val lengthNormalized = lengthClamped / maxLength - onStick(cos(angle) * lengthNormalized, sin(angle) * lengthNormalized) + when (it.type) { + MouseEvent.Type.DOWN -> { + if (px >= width / 2) return@onMouseEvent + start.x = px + start.y = py + ball.alpha = 0.3 + dragging = true } + MouseEvent.Type.DRAG -> { + if (dragging) { + val deltaX = px - start.x + val deltaY = py - start.y + val length = hypot(deltaX, deltaY) + val maxLength = radius * 0.3 + val lengthClamped = length.clamp(0.0, maxLength) + val angle = Angle.between(start.x, start.y, px, py) + ball.position(cos(angle) * lengthClamped, sin(angle) * lengthClamped) + val lengthNormalized = lengthClamped / maxLength + onStick(cos(angle) * lengthNormalized, sin(angle) * lengthNormalized) + } + } + MouseEvent.Type.UP -> { + ball.position(0, 0) + ball.alpha = 0.2 + dragging = false + onStick(0.0, 0.0) + } + else -> Unit } - MouseEvent.Type.UP -> { - ball.position(0, 0) - ball.alpha = 0.2 - dragging = false - onStick(0.0, 0.0) - } - else -> Unit } - } + }) }