From 55be88b7daa766c8b3c3a9f2db9d1059e24bde82 Mon Sep 17 00:00:00 2001
From: lars <larslukasneuhaus@gmx.de>
Date: Mon, 4 Nov 2024 15:04:09 +0100
Subject: [PATCH] removed countdown when no player left

---
 build.gradle                                  |  2 +-
 .../game/stateless/types/tetris/Tetris.java   | 29 +++++++++++++------
 2 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/build.gradle b/build.gradle
index 6607b2c..5d7a77d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -89,5 +89,5 @@ tasks.register('copyJarToServer', Exec) {
     dependsOn shadowJar
     mustRunAfter shadowJar
 
-    commandLine 'scp', 'build/libs/Minigames-1.0-SNAPSHOT.jar', 'root@10.20.6.5:/root/minigames'
+    commandLine 'scp', 'build/libs/Minigames-1.0-SNAPSHOT.jar', '/home/lars/Documents/Minecraft Server/minigames'
 }
diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/Tetris.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/Tetris.java
index 7e8f310..3b5dfe1 100644
--- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/Tetris.java
+++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/Tetris.java
@@ -69,6 +69,7 @@ class Tetris extends StatelessGame {
     @Override
     protected void onPlayerLeave(Player p) {
         this.tetrisGames.get(p).sidebar.removeViewer(p);
+        this.letPlayerLoose(p);
     }
 
     @Override
@@ -124,17 +125,27 @@ class Tetris extends StatelessGame {
     }
 
     protected void onPlayerTick(PlayerTickEvent event) {
-        TetrisGame tetrisGame = this.tetrisGames.get(event.getPlayer());
+        Player player = event.getPlayer();
+        TetrisGame tetrisGame = this.tetrisGames.get(player);
         if(tetrisGame == null) return;
-        if(tetrisGame.lost && event.getPlayer().getGameMode() != GameMode.SPECTATOR) {
-            event.getPlayer().setGameMode(GameMode.SPECTATOR);
-            getScore().insertResult(event.getPlayer(), tetrisGame.getScore());
+        if(tetrisGame.lost && player.getGameMode() != GameMode.SPECTATOR) {
+            letPlayerLoose(player);
+        }
+    }
 
-            if(!setTimeLimit) {
-                this.setTimeLimit(90);
-                setTimeLimit = true;
-                new ChatMessage(Icon.SCIENCE).appendStatic("Noch 90 Sekunden!").send(getPlayers());
-            }
+    private void letPlayerLoose(Player player) {
+        TetrisGame tetrisGame = this.tetrisGames.get(player);
+        player.setGameMode(GameMode.SPECTATOR);
+        getScore().insertResult(player, tetrisGame.getScore());
+
+        boolean allGamesLost = this.tetrisGames.values().stream()
+                .filter(tetrisGame1 -> !tetrisGame1.lost)
+                .toList()
+                .isEmpty();
+        if(!setTimeLimit && !allGamesLost) {
+            this.setTimeLimit(90);
+            setTimeLimit = true;
+            new ChatMessage(Icon.SCIENCE).appendStatic("Noch 90 Sekunden!").send(getPlayers());
         }
     }