Ver Fonte

Reworking game-state message

RedstoneFuture há 1 ano atrás
pai
commit
e86e06383c

+ 6 - 4
missilewars-plugin/src/main/java/de/butzlabben/missilewars/configuration/Messages.java

@@ -170,14 +170,16 @@ public class Messages {
         SIGNEDIT_LOBBY_NOT_FOUND("signedit.lobby_not_found", "&cCould not find lobby %input%."),
         SIGNEDIT_SIGN_REMOVE_DESC("signedit.sign_remove_desc", "&cYou have to be sneaking in order to remove this sign."),
 
+        GAME_STATE_NO_GAME("game_state.no_game", "&cNo Game."),
+        GAME_STATE_LOBBY("game_state.lobby", "&aLobby"),
+        GAME_STATE_INGAME("game_state.ingame", "&bIngame"),
+        GAME_STATE_END("game_state.ended", "&8Restarting..."),
+        GAME_STATE_ERROR("game_state.error", "&cError..."),
+        
         SIGN_0("sign.0", "•● MissileWars ●•"),
         SIGN_1("sign.1", "%state%"),
         SIGN_2("sign.2", "%arena%"),
         SIGN_3("sign.3", "&7%players%&8/&7%max_players%"),
-        SIGN_STATE_LOBBY("sign.state.lobby", "&aLobby"),
-        SIGN_STATE_INGAME("sign.state.ingame", "&bIngame"),
-        SIGN_STATE_ENDED("sign.state.ended", "&cRestarting..."),
-        SIGN_STATE_ERROR("sign.state.error", "&cError..."),
 
         STATS_NOT_ENABLED("stats.not_enabled", "&cThe Fight Stats are not enabled!"),
         STATS_FETCHING_PLAYERS("stats.fetching_players", "Fetching not cached player names: %current_size%/%real_size%"),

+ 18 - 0
missilewars-plugin/src/main/java/de/butzlabben/missilewars/game/GameManager.java

@@ -22,6 +22,7 @@ import de.butzlabben.missilewars.Logger;
 import de.butzlabben.missilewars.MissileWars;
 import de.butzlabben.missilewars.configuration.Config;
 import de.butzlabben.missilewars.configuration.Lobby;
+import de.butzlabben.missilewars.configuration.Messages;
 import de.butzlabben.missilewars.util.geometry.GameArea;
 import de.butzlabben.missilewars.util.serialization.Serializer;
 import lombok.Getter;
@@ -186,4 +187,21 @@ public class GameManager {
         }
         return null;
     }
+    
+    public String getGameStateMessage(Game game) {
+        
+        if (game == null) return Messages.getMessage(false, Messages.MessageEnum.GAME_STATE_NO_GAME);
+        
+        switch (game.getState()) {
+            case LOBBY:
+                return Messages.getMessage(false, Messages.MessageEnum.GAME_STATE_LOBBY);
+            case INGAME:
+                return Messages.getMessage(false, Messages.MessageEnum.GAME_STATE_INGAME);
+            case END:
+                return Messages.getMessage(false, Messages.MessageEnum.GAME_STATE_END);
+            default:
+                return Messages.getMessage(false, Messages.MessageEnum.GAME_STATE_ERROR);
+        }
+    }
+    
 }

+ 12 - 12
missilewars-plugin/src/main/java/de/butzlabben/missilewars/game/signs/MWSign.java

@@ -85,29 +85,29 @@ public class MWSign {
     }
 
     private String replace(String line, Game game) {
-        String state = Messages.getMessage(false, Messages.MessageEnum.SIGN_STATE_ERROR);
-        String name = "No game";
+
+        String state = GameManager.getInstance().getGameStateMessage(game);
+        String name = "-";
+        
         if (game != null) {
             switch (game.getState()) {
                 case LOBBY:
-                    state = Messages.getMessage(false, Messages.MessageEnum.SIGN_STATE_LOBBY);
                     name = game.getLobby().getDisplayName();
                     break;
                 case INGAME:
-                    state = Messages.getMessage(false, Messages.MessageEnum.SIGN_STATE_INGAME);
-                    name = game.getArena().getDisplayName();
-                    break;
                 case END:
-                    state = Messages.getMessage(false, Messages.MessageEnum.SIGN_STATE_ENDED);
                     name = game.getArena().getDisplayName();
                     break;
             }
         }
-        String replaced = line.replace("%state%", state).replace("%arena%", name);
-        int maxPlayers = game == null ? 0 : game.getLobby().getMaxSize();
-        int players = game == null ? 0 : game.getPlayers().size();
-        replaced = replaced.replace("%max_players%", Integer.toString(maxPlayers)).replace("%players%", Integer.toString(players));
-        return replaced;
+
+        int maxPlayers = (game == null ? 0 : game.getLobby().getMaxSize());
+        int players = (game == null ? 0 : game.getPlayers().size());
+
+        return line.replace("%state%", state)
+                .replace("%arena%", name)
+                .replace("%max_players%", Integer.toString(maxPlayers))
+                .replace("%players%", Integer.toString(players));
     }
     
     public static boolean isSign(BlockData blockData) {