DEADSOFTWARE

25f598c1ae814e6db284f37e454359419d777182
[cavedroid.git] /
1 package ru.fredboy.cavedroid.ux.controls.input.handler.keyboard
2
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
19
20 @GameScope
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 {
32
33 override fun checkConditions(action: KeyboardInputAction): Boolean {
34 return action.actionKey is KeyboardInputActionKey.Pause && action.isKeyDown
35 }
36
37 override fun handle(action: KeyboardInputAction) {
38 if (gameWindowsManager.currentWindowType != GameWindowType.NONE) {
39 gameWindowsManager.closeWindow()
40 return
41 }
42
43 saveDataRepository.save(
44 gameDataFolder = applicationContextRepository.getGameDirectory(),
45 dropController = dropController,
46 mobController = mobController,
47 containerController = containerController,
48 gameWorld = gameWorld,
49 )
50
51 gameController.quitGame()
52 }
53 }