add mousewheel relay

This commit is contained in:
downthecrop 2024-10-28 11:42:37 -07:00
parent f2d4c17569
commit 52d07d5795

View file

@ -44,6 +44,10 @@ class AltCanvas : Canvas() {
override fun keyReleased(e: KeyEvent) = relayKeyEvent(e) { it.keyReleased(e) }
override fun keyTyped(e: KeyEvent) = relayKeyEvent(e) { it.keyTyped(e) }
})
addMouseWheelListener(object : MouseWheelListener {
override fun mouseWheelMoved(e: MouseWheelEvent) = relayMouseWheelEvent(e)
})
}
override fun update(g: Graphics) = paint(g)
@ -115,6 +119,17 @@ class AltCanvas : Canvas() {
for (listener in canvas.keyListeners) action(listener)
}
private fun relayMouseWheelEvent(e: MouseWheelEvent) {
val scale = minOf(width.toDouble() / gameImage!!.width, height.toDouble() / gameImage!!.height)
val xOffset = ((width - gameImage!!.width * scale) / 2)
val yOffset = ((height - gameImage!!.height * scale) / 2)
val adjustedX = ((e.x - xOffset) / scale).toInt().coerceIn(0, gameImage!!.width - 1)
val adjustedY = ((e.y - yOffset) / scale).toInt().coerceIn(0, gameImage!!.height - 1)
canvas.dispatchEvent(MouseWheelEvent(this, e.id, e.`when`, e.modifiersEx, adjustedX, adjustedY, e.clickCount, e.isPopupTrigger, e.scrollType, e.scrollAmount, e.wheelRotation))
}
fun updateGameImage() {
if (IsHD()) renderGlRaster() else renderSoftwareRaster()
repaint()