DEADSOFTWARE

Remove guava
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / input / handler / keyboard / PauseGameKeyboardInputHandler.kt
index 8f0f49441addb93cc8dd1832cb3ae6168a0c8b5a..0311c8831fb22dd753d08db23564e9a8f5b19235 100644 (file)
@@ -1,32 +1,42 @@
 package ru.deadsoftware.cavedroid.game.input.handler.keyboard
 
 import ru.deadsoftware.cavedroid.MainConfig
-import ru.deadsoftware.cavedroid.game.GameSaver
 import ru.deadsoftware.cavedroid.game.GameScope
-import ru.deadsoftware.cavedroid.game.input.IGameInputHandler
+import ru.deadsoftware.cavedroid.game.GameUiWindow
+import ru.deadsoftware.cavedroid.game.input.IKeyboardInputHandler
 import ru.deadsoftware.cavedroid.game.input.action.KeyboardInputAction
 import ru.deadsoftware.cavedroid.game.input.action.keys.KeyboardInputActionKey
 import ru.deadsoftware.cavedroid.game.mobs.MobsController
 import ru.deadsoftware.cavedroid.game.objects.drop.DropController
 import ru.deadsoftware.cavedroid.game.objects.container.ContainerController
+import ru.deadsoftware.cavedroid.game.save.GameSaveLoader
+import ru.deadsoftware.cavedroid.game.ui.windows.GameWindowsManager
 import ru.deadsoftware.cavedroid.game.world.GameWorld
+import ru.deadsoftware.cavedroid.misc.annotations.multibinding.BindKeyboardInputHandler
 import javax.inject.Inject
 
 @GameScope
+@BindKeyboardInputHandler
 class PauseGameKeyboardInputHandler @Inject constructor(
     private val mainConfig: MainConfig,
     private val dropController: DropController,
     private val mobsController: MobsController,
     private val gameWorld: GameWorld,
     private val containerController: ContainerController,
-) : IGameInputHandler<KeyboardInputAction> {
+    private val gameWindowsManager: GameWindowsManager,
+) : IKeyboardInputHandler {
 
     override fun checkConditions(action: KeyboardInputAction): Boolean {
         return action.actionKey is KeyboardInputActionKey.Pause && action.isKeyDown
     }
 
     override fun handle(action: KeyboardInputAction) {
-        GameSaver.save(mainConfig, dropController, mobsController, containerController, gameWorld)
+        if (gameWindowsManager.getCurrentWindow() != GameUiWindow.NONE) {
+            gameWindowsManager.closeWindow()
+            return
+        }
+
+        GameSaveLoader.save(mainConfig, dropController, mobsController, containerController, gameWorld)
         mainConfig.caveGame.quitGame()
     }
 }
\ No newline at end of file