1 package ru.deadsoftware.cavedroid.game.input.mapper
3 import com.badlogic.gdx.Gdx
4 import com.badlogic.gdx.Input
5 import com.badlogic.gdx.math.Rectangle
6 import ru.deadsoftware.cavedroid.MainConfig
7 import ru.deadsoftware.cavedroid.game.GameScope
8 import ru.deadsoftware.cavedroid.game.input.action.MouseInputAction
9 import ru.deadsoftware.cavedroid.game.input.action.keys.MouseInputActionKey
10 import javax.inject.Inject
13 class MouseInputActionMapper @Inject constructor(
14 val mainConfig: MainConfig,
20 cameraViewport: Rectangle,
24 ): MouseInputAction? {
25 val actionKey = mapActionKey(button, touchUp, pointer) ?: return null
27 return MouseInputAction(
28 screenX = getScreenX(mouseX),
29 screenY = getScreenY(mouseY),
30 actionKey = actionKey,
31 cameraViewport = cameraViewport,
38 cameraViewport: Rectangle,
41 return MouseInputAction(
42 screenX = getScreenX(mouseX),
43 screenY = getScreenY(mouseY),
44 actionKey = MouseInputActionKey.Dragged(pointer),
45 cameraViewport = cameraViewport,
54 cameraViewport: Rectangle,
56 return MouseInputAction(
57 screenX = getScreenX(mouseX),
58 screenY = getScreenY(mouseY),
59 actionKey = MouseInputActionKey.Scroll(amountX, amountY),
60 cameraViewport = cameraViewport,
64 private fun mapActionKey(button: Int, touchUp: Boolean, pointer: Int): MouseInputActionKey? {
65 return when (button) {
66 Input.Buttons.LEFT -> MouseInputActionKey.Left(touchUp)
67 Input.Buttons.RIGHT -> MouseInputActionKey.Right(touchUp)
68 Input.Buttons.MIDDLE -> MouseInputActionKey.Middle(touchUp)
69 -1 -> MouseInputActionKey.Screen(touchUp, pointer)
74 private fun getScreenX(mouseX: Float): Float {
75 return mouseX * (mainConfig.width / Gdx.graphics.width)
78 private fun getScreenY(mouseY: Float): Float {
79 return mouseY * (mainConfig.height / Gdx.graphics.height)