mirror of
				https://athene2.informatik.unibw-muenchen.de/progproj/gruppen-ht24/Gruppe-02.git
				synced 2025-10-31 03:31:50 +01:00 
			
		
		
		
	refactor PlayerColor
fixed default playermodel selection
This commit is contained in:
		| @@ -25,7 +25,7 @@ import com.simsilica.lemur.style.ElementId; | |||||||
|  |  | ||||||
| import pp.dialog.Dialog; | import pp.dialog.Dialog; | ||||||
| import pp.monopoly.client.MonopolyApp; | import pp.monopoly.client.MonopolyApp; | ||||||
| import pp.monopoly.game.server.PlayerColor; | import pp.monopoly.game.server.Player; | ||||||
| import pp.monopoly.message.client.PlayerReady; | import pp.monopoly.message.client.PlayerReady; | ||||||
| import pp.monopoly.notification.Sound; | import pp.monopoly.notification.Sound; | ||||||
|  |  | ||||||
| @@ -67,6 +67,9 @@ public class LobbyMenu extends Dialog { | |||||||
|     /** Selected player figure. */ |     /** Selected player figure. */ | ||||||
|     private String figure; |     private String figure; | ||||||
|  |  | ||||||
|  |     private VersionedReference<Set<Integer>> selectionRef; | ||||||
|  |     private Selector<String> figureDropdown; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Constructs the lobby menu for player configuration. |      * Constructs the lobby menu for player configuration. | ||||||
|      * |      * | ||||||
| @@ -142,7 +145,7 @@ public class LobbyMenu extends Dialog { | |||||||
|         figureDropdownContainer.setBackground(null); |         figureDropdownContainer.setBackground(null); | ||||||
|  |  | ||||||
|         VersionedList<String> figures = new VersionedList<>(); |         VersionedList<String> figures = new VersionedList<>(); | ||||||
|         figures.add("Laptop"); |         figures.add("Computer"); | ||||||
|         figures.add("Flugzeug"); |         figures.add("Flugzeug"); | ||||||
|         figures.add("Jägermeister"); |         figures.add("Jägermeister"); | ||||||
|         figures.add("Katze"); |         figures.add("Katze"); | ||||||
| @@ -150,8 +153,7 @@ public class LobbyMenu extends Dialog { | |||||||
|         figures.add("Handyholster"); |         figures.add("Handyholster"); | ||||||
|  |  | ||||||
|          |          | ||||||
|  |         figureDropdown = new Selector<>(figures, "glass"); | ||||||
|         Selector<String> figureDropdown = new Selector<>(figures, "glass"); |  | ||||||
|         figureDropdown.setBackground(new QuadBackgroundComponent(ColorRGBA.DarkGray)); |         figureDropdown.setBackground(new QuadBackgroundComponent(ColorRGBA.DarkGray)); | ||||||
|         figureDropdown.setPreferredSize(new Vector3f(100, 20, 0)); |         figureDropdown.setPreferredSize(new Vector3f(100, 20, 0)); | ||||||
|         figureDropdownContainer.addChild(figureDropdown); |         figureDropdownContainer.addChild(figureDropdown); | ||||||
| @@ -159,10 +161,12 @@ public class LobbyMenu extends Dialog { | |||||||
|         Vector3f dimens2 = figureDropdown.getPopupContainer().getPreferredSize(); |         Vector3f dimens2 = figureDropdown.getPopupContainer().getPreferredSize(); | ||||||
|         dimens2.setX( dimens.getX() ); |         dimens2.setX( dimens.getX() ); | ||||||
|         figureDropdown.getPopupContainer().setPreferredSize(new Vector3f(200,200,5)); |         figureDropdown.getPopupContainer().setPreferredSize(new Vector3f(200,200,5)); | ||||||
|         figureDropdown.getSelectionModel().setSelection(0); |  | ||||||
|         figure = "Laptop"; |  | ||||||
|  |  | ||||||
|         addSelectionActionListener(figureDropdown, this::onDropdownSelectionChanged); |         // Create selection ref for updating | ||||||
|  |         selectionRef = figureDropdown.getSelectionModel().createReference(); | ||||||
|  |         // Set default | ||||||
|  |         figureDropdown.getSelectionModel().setSelection(0); | ||||||
|  |         onDropdownSelectionChanged(figureDropdown); | ||||||
|  |  | ||||||
|         Container buttonContainer = menuContainer.addChild(new Container(new SpringGridLayout(Axis.X, Axis.Y))); |         Container buttonContainer = menuContainer.addChild(new Container(new SpringGridLayout(Axis.X, Axis.Y))); | ||||||
|         buttonContainer.setPreferredSize(new Vector3f(100, 40, 0)); |         buttonContainer.setPreferredSize(new Vector3f(100, 40, 0)); | ||||||
| @@ -216,6 +220,7 @@ public class LobbyMenu extends Dialog { | |||||||
|                 1  // Höhere Z-Ebene für den Vordergrund |                 1  // Höhere Z-Ebene für den Vordergrund | ||||||
|         ); |         ); | ||||||
|  |  | ||||||
|  |  | ||||||
|         app.getGuiNode().attachChild(menuContainer); |         app.getGuiNode().attachChild(menuContainer); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -247,31 +252,12 @@ public class LobbyMenu extends Dialog { | |||||||
|  |  | ||||||
|         // Create a material with a solid color |         // Create a material with a solid color | ||||||
|         Material material = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md"); |         Material material = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md"); | ||||||
|         material.setColor("Color", idToColor()); // Set the desired color |         material.setColor("Color", Player.getColor(app.getId()).getColor()); // Set the desired color | ||||||
|         circleGeometry.setMaterial(material); |         circleGeometry.setMaterial(material); | ||||||
|  |  | ||||||
|         return circleGeometry; |         return circleGeometry; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Maps the player's ID to a corresponding color. |  | ||||||
|      * |  | ||||||
|      * @return the color associated with the player's ID |  | ||||||
|      */ |  | ||||||
|     private ColorRGBA idToColor() { |  | ||||||
|         switch (app.getId()+1) { |  | ||||||
|             case 1: return PlayerColor.CYAN.getColor(); |  | ||||||
|             case 2: return PlayerColor.YELLOW.getColor(); |  | ||||||
|             case 3: return PlayerColor.RED.getColor(); |  | ||||||
|             case 4: return PlayerColor.PINK.getColor(); |  | ||||||
|             case 5: return PlayerColor.GREEN.getColor(); |  | ||||||
|             case 6: return PlayerColor.PURPLE.getColor(); |  | ||||||
|          |  | ||||||
|             default: |  | ||||||
|                 return null; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Toggles the player's ready state and sends the configuration to the server. |      * Toggles the player's ready state and sends the configuration to the server. | ||||||
|      */ |      */ | ||||||
| @@ -287,73 +273,32 @@ public class LobbyMenu extends Dialog { | |||||||
|         new SettingsMenu(app).open(); |         new SettingsMenu(app).open(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Adds a custom action listener to a dropdown selector. |  | ||||||
|      * |  | ||||||
|      * @param selector the selector to add the listener to |  | ||||||
|      * @param listener the action to perform when a selection changes |  | ||||||
|      */ |  | ||||||
|     private void addSelectionActionListener(Selector<String> selector, SelectionActionListener<String> listener) { |  | ||||||
|         VersionedReference<Set<Integer>> selectionRef = selector.getSelectionModel().createReference(); |  | ||||||
|  |  | ||||||
|         app.getStateManager().attach(new BaseAppState() { |  | ||||||
|     @Override |     @Override | ||||||
|     public void update(float tpf) { |     public void update(float tpf) { | ||||||
|         if (selectionRef.update()) { |         if (selectionRef.update()) { | ||||||
|                     String selected = selectionRef.get().toString(); |             onDropdownSelectionChanged(figureDropdown);  | ||||||
|                     listener.onSelectionChanged(selected); |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|             @Override |  | ||||||
|             protected void initialize(Application app) { |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             @Override |  | ||||||
|             protected void cleanup(Application app) { |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             @Override |  | ||||||
|             protected void onEnable() { |  | ||||||
|  |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             @Override |  | ||||||
|             protected void onDisable() { |  | ||||||
|  |  | ||||||
|             } |  | ||||||
|         }); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Updates the selected figure based on the dropdown menu selection. |      * Updates the selected figure based on the dropdown menu selection. | ||||||
|      * |      * | ||||||
|      * @param selected the selected figure |      * @param selected the selected figure | ||||||
|      */ |      */ | ||||||
|     private void onDropdownSelectionChanged(String selected) { |     private void onDropdownSelectionChanged(Selector<String> selector) { | ||||||
|         app.getGameLogic().playSound(Sound.BUTTON); |         app.getGameLogic().playSound(Sound.BUTTON); | ||||||
|         switch (selected) { |         switch (selector.getSelectedItem()) { | ||||||
|             case "[0]": |             case "Jägermeister": | ||||||
|                 figure = "Computer"; |  | ||||||
|                 break; |  | ||||||
|             case "[1]": |  | ||||||
|                 figure = "Flugzeug"; |  | ||||||
|                 break; |  | ||||||
|             case "[2]": |  | ||||||
|                 figure = "Jaegermeister"; |                 figure = "Jaegermeister"; | ||||||
|                 break; |                 break; | ||||||
|             case "[3]": |             case "Handyholster": | ||||||
|                 figure = "Katze"; |  | ||||||
|                 break; |  | ||||||
|             case "[4]": |  | ||||||
|                 figure = "OOP"; |  | ||||||
|                 break; |  | ||||||
|             case "[5]": |  | ||||||
|                 figure = "Holster"; |                 figure = "Holster"; | ||||||
|                 break; |                 break; | ||||||
|             default: |             default: | ||||||
|  |             figure = selector.getSelectedItem(); | ||||||
|                 break; |                 break; | ||||||
|         } |         } | ||||||
|  |         System.out.println("FIGUR:::::"+figure); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|   | |||||||
| @@ -133,7 +133,7 @@ public class Toolbar extends Dialog implements GameEventListener { | |||||||
|      |      | ||||||
|         // Spielerfarbe abrufen |         // Spielerfarbe abrufen | ||||||
|         Player currentPlayer = playerHandler.getPlayerById(app.getId()); |         Player currentPlayer = playerHandler.getPlayerById(app.getId()); | ||||||
|         ColorRGBA playerColor = currentPlayer.getColor().getColor(); |         ColorRGBA playerColor = Player.getColor(currentPlayer.getId()).getColor(); | ||||||
|      |      | ||||||
|         // Oberer Balken |         // Oberer Balken | ||||||
|         Container playerColorBar = new Container(); |         Container playerColorBar = new Container(); | ||||||
| @@ -381,7 +381,7 @@ public class Toolbar extends Dialog implements GameEventListener { | |||||||
|         for (Player player : playerHandler.getPlayers()) { |         for (Player player : playerHandler.getPlayers()) { | ||||||
|             if (player.getId() != app.getId()) { |             if (player.getId() != app.getId()) { | ||||||
|                 // Spielerfarbe abrufen |                 // Spielerfarbe abrufen | ||||||
|                 ColorRGBA playerColor = (player.getColor().getColor()); |                 ColorRGBA playerColor = (Player.getColor(player.getId()).getColor()); | ||||||
|              |              | ||||||
|                 // Label für den Spieler erstellen |                 // Label für den Spieler erstellen | ||||||
|                 Label playerLabel = new Label( |                 Label playerLabel = new Label( | ||||||
|   | |||||||
| @@ -90,7 +90,7 @@ public class Player implements FieldVisitor<Void>{ | |||||||
|         return figure; |         return figure; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public PlayerColor getColor() { |     public static PlayerColor getColor(int id) { | ||||||
|         switch ((id%6)+1) { |         switch ((id%6)+1) { | ||||||
|             case 1: return PlayerColor.CYAN; |             case 1: return PlayerColor.CYAN; | ||||||
|             case 2: return PlayerColor.YELLOW; |             case 2: return PlayerColor.YELLOW; | ||||||
|   | |||||||
| @@ -6,22 +6,24 @@ import com.jme3.math.ColorRGBA; | |||||||
|  * Enum representing six distinct colors for players in the game. |  * Enum representing six distinct colors for players in the game. | ||||||
|  */ |  */ | ||||||
| public enum PlayerColor { | public enum PlayerColor { | ||||||
|     CYAN(new ColorRGBA(1 / 255f, 190 / 255f, 254 / 255f, 1)), |     CYAN(new ColorRGBA(1 / 255f, 190 / 255f, 254 / 255f, 1), "Cyan"), | ||||||
|     YELLOW(new ColorRGBA(255 / 255f, 255 / 255f, 0 / 255f, 1)), |     YELLOW(new ColorRGBA(255 / 255f, 255 / 255f, 0 / 255f, 1), "Gelb"), | ||||||
|     RED(new ColorRGBA(255 / 255f, 0 / 255f, 0 / 255f, 1)), |     RED(new ColorRGBA(255 / 255f, 0 / 255f, 0 / 255f, 1), "Rot"), | ||||||
|     PINK(new ColorRGBA(255 / 255f, 77 / 255f, 166 / 255f, 1)), |     PINK(new ColorRGBA(255 / 255f, 77 / 255f, 166 / 255f, 1), "Pink"), | ||||||
|     GREEN(new ColorRGBA(0 / 255f, 204 / 255f, 0 / 255f, 1)), |     GREEN(new ColorRGBA(0 / 255f, 204 / 255f, 0 / 255f, 1), "Grün"), | ||||||
|     PURPLE(new ColorRGBA(143 / 255f, 0 / 255f, 255 / 255f, 1)); |     PURPLE(new ColorRGBA(143 / 255f, 0 / 255f, 255 / 255f, 1), "Lila"); | ||||||
|  |  | ||||||
|     private final ColorRGBA color; |     private final ColorRGBA color; | ||||||
|  |     private final String colorName; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Constructs a PlayerColor with the specified ColorRGBA value. |      * Constructs a PlayerColor with the specified ColorRGBA value. | ||||||
|      * |      * | ||||||
|      * @param color the ColorRGBA value associated with the player color |      * @param color the ColorRGBA value associated with the player color | ||||||
|      */ |      */ | ||||||
|     PlayerColor(ColorRGBA color) { |     PlayerColor(ColorRGBA color, String colorName) { | ||||||
|         this.color = color; |         this.color = color; | ||||||
|  |         this.colorName = colorName; | ||||||
|     }  |     }  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -32,4 +34,13 @@ public enum PlayerColor { | |||||||
|     public ColorRGBA getColor() { |     public ColorRGBA getColor() { | ||||||
|         return color; |         return color; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Gets the Name of the Color | ||||||
|  |      *  | ||||||
|  |      * @return a String with re corresponing name | ||||||
|  |      */ | ||||||
|  |     public String getColorName() { | ||||||
|  |         return colorName; | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user