1 package ru.fredboy.cavedroid.ux.controls.input.handler.keyboard
3 import ru.fredboy.cavedroid.common.api.ApplicationController
4 import ru.fredboy.cavedroid.common.di.GameScope
5 import ru.fredboy.cavedroid.domain.configuration.repository.ApplicationContextRepository
6 import ru.fredboy.cavedroid.domain.configuration.repository.GameContextRepository
7 import ru.fredboy.cavedroid.domain.save.repository.SaveDataRepository
8 import ru.fredboy.cavedroid.game.controller.container.ContainerController
9 import ru.fredboy.cavedroid.game.controller.drop.DropController
10 import ru.fredboy.cavedroid.game.controller.mob.MobController
11 import ru.fredboy.cavedroid.game.window.GameWindowType
12 import ru.fredboy.cavedroid.game.window.GameWindowsManager
13 import ru.fredboy.cavedroid.game.world.GameWorld
14 import ru.fredboy.cavedroid.ux.controls.input.IKeyboardInputHandler
15 import ru.fredboy.cavedroid.ux.controls.input.action.KeyboardInputAction
16 import ru.fredboy.cavedroid.ux.controls.input.action.keys.KeyboardInputActionKey
17 import ru.fredboy.cavedroid.ux.controls.input.annotation.BindKeyboardInputHandler
18 import javax.inject.Inject
21 @BindKeyboardInputHandler
22 class PauseGameKeyboardInputHandler @Inject constructor(
23 private val applicationContextRepository: ApplicationContextRepository,
24 private val gameController: ApplicationController,
25 private val dropController: DropController,
26 private val mobController: MobController,
27 private val gameWorld: GameWorld,
28 private val containerController: ContainerController,
29 private val gameWindowsManager: GameWindowsManager,
30 private val saveDataRepository: SaveDataRepository,
31 ) : IKeyboardInputHandler {
33 override fun checkConditions(action: KeyboardInputAction): Boolean {
34 return action.actionKey is KeyboardInputActionKey.Pause && action.isKeyDown
37 override fun handle(action: KeyboardInputAction) {
38 if (gameWindowsManager.currentWindowType != GameWindowType.NONE) {
39 gameWindowsManager.closeWindow()
43 saveDataRepository.save(
44 gameDataFolder = applicationContextRepository.getGameDirectory(),
45 dropController = dropController,
46 mobController = mobController,
47 containerController = containerController,
48 gameWorld = gameWorld,
51 gameController.quitGame()