DEADSOFTWARE

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