mirror of
				https://athene2.informatik.unibw-muenchen.de/progproj/gruppen-ht24/Gruppe-02.git
				synced 2025-10-31 15:49:01 +01:00 
			
		
		
		
	added selector to SellHouse
This commit is contained in:
		| @@ -4,17 +4,26 @@ import com.jme3.math.ColorRGBA; | |||||||
| import com.jme3.math.Vector2f; | import com.jme3.math.Vector2f; | ||||||
| import com.jme3.math.Vector3f; | import com.jme3.math.Vector3f; | ||||||
| import com.simsilica.lemur.Button; | import com.simsilica.lemur.Button; | ||||||
|  | import com.simsilica.lemur.Checkbox; | ||||||
| import com.simsilica.lemur.Container; | import com.simsilica.lemur.Container; | ||||||
| import com.simsilica.lemur.Label; | import com.simsilica.lemur.Label; | ||||||
|  | import com.simsilica.lemur.ListBox; | ||||||
| import com.simsilica.lemur.component.IconComponent; | import com.simsilica.lemur.component.IconComponent; | ||||||
| import com.simsilica.lemur.component.QuadBackgroundComponent; | import com.simsilica.lemur.component.QuadBackgroundComponent; | ||||||
|  | import com.simsilica.lemur.core.VersionedList; | ||||||
| import com.simsilica.lemur.style.ElementId; | 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.client.gui.SettingsMenu; | import pp.monopoly.client.gui.SettingsMenu; | ||||||
|  | import pp.monopoly.game.server.Player; | ||||||
| import pp.monopoly.message.client.BuyPropertyResponse; | import pp.monopoly.message.client.BuyPropertyResponse; | ||||||
|  | import pp.monopoly.model.fields.BoardManager; | ||||||
|  | import pp.monopoly.model.fields.BuildingProperty; | ||||||
| import pp.monopoly.notification.Sound; | import pp.monopoly.notification.Sound; | ||||||
|  |  | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.stream.Collectors; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * SettingsMenu ist ein Overlay-Menü, das durch ESC aufgerufen werden kann. |  * SettingsMenu ist ein Overlay-Menü, das durch ESC aufgerufen werden kann. | ||||||
|  */ |  */ | ||||||
| @@ -39,6 +48,7 @@ public class SellHouse extends Dialog { | |||||||
|  |  | ||||||
|         // Hauptcontainer für die Gebäudekarte |         // Hauptcontainer für die Gebäudekarte | ||||||
|         sellhouseContainer = new Container(); |         sellhouseContainer = new Container(); | ||||||
|  |         sellhouseContainer.setPreferredSize(new Vector3f(800, 600, 0)); | ||||||
|          |          | ||||||
|          |          | ||||||
|         Label title = sellhouseContainer.addChild(new Label( "Gebäude Abreißen", new ElementId("label-Bold"))); //TODO ggf die Buttons Sprachabhängig von den Properties machen |         Label title = sellhouseContainer.addChild(new Label( "Gebäude Abreißen", new ElementId("label-Bold"))); //TODO ggf die Buttons Sprachabhängig von den Properties machen | ||||||
| @@ -54,11 +64,65 @@ public class SellHouse extends Dialog { | |||||||
|         upContainer.addChild(new Label("„Grundstück wählen:", new ElementId("label-Text"))); //TODO hier überall die entsprechenden Variablen einfügen |         upContainer.addChild(new Label("„Grundstück wählen:", new ElementId("label-Text"))); //TODO hier überall die entsprechenden Variablen einfügen | ||||||
|         upContainer.addChild(new Label("", new ElementId("label-Text")));// Leerzeile |         upContainer.addChild(new Label("", new ElementId("label-Text")));// Leerzeile | ||||||
|         upContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.4657f, 0.4735f, 0.4892f, 1.0f))); |         upContainer.setBackground(new QuadBackgroundComponent(new ColorRGBA(0.4657f, 0.4735f, 0.4892f, 1.0f))); | ||||||
|  |  | ||||||
|         middleContainer.setPreferredSize(new Vector3f(100, 150, 0)); |         middleContainer.setPreferredSize(new Vector3f(100, 150, 0)); | ||||||
|         middleContainer.setBackground(new QuadBackgroundComponent(ColorRGBA.Red)); |         middleContainer.setBackground(new QuadBackgroundComponent(ColorRGBA.Orange)); | ||||||
|         middleContainer.addChild(new Label("Dies ist ein Container", new ElementId("label-Text"))); |         /* | ||||||
|         middleContainer.addChild(new Label("", new ElementId("label-Text"))); |         // Create a VersionedList for the ListBox model | ||||||
|         middleContainer.addChild(new Label("Hier kann der Slider und die Checkbocen eingefügt werden", new ElementId("label-Text"))); |         VersionedList<String> checkboxListModel = new VersionedList<>(); | ||||||
|  |         for (int i = 1; i <= 10; i++) { | ||||||
|  |             checkboxListModel.add("Option " + i); // Add items to the list | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |        // Create a ListBox with the "glass" style and the model | ||||||
|  |         ListBox<String> checkboxListBox = new ListBox<>(checkboxListModel, "glass"); | ||||||
|  |         checkboxListBox.setPreferredSize(new Vector3f(300, 200, 0)); // Adjust size as needed | ||||||
|  |  | ||||||
|  |        // Add the ListBox to the middle container | ||||||
|  |         middleContainer.addChild(checkboxListBox); | ||||||
|  |  | ||||||
|  |          // If you need separate checkboxes (optional), render them separately | ||||||
|  |         for (String option : checkboxListModel) { | ||||||
|  |             Checkbox checkbox = new Checkbox(option); | ||||||
|  |             checkbox.setFontSize(16); // Optional: adjust font size | ||||||
|  |             middleContainer.addChild(checkbox); // Add it to the middle container | ||||||
|  |         } | ||||||
|  |         // Add the ListBox to the middle container | ||||||
|  |         middleContainer.addChild(checkboxListBox); */ | ||||||
|  |  | ||||||
|  |         // Create a VersionedList for the ListBox model | ||||||
|  |         VersionedList<BuildingProperty> listModel = new VersionedList<>(); | ||||||
|  |  | ||||||
|  |         // Retrieve current player and their properties | ||||||
|  |         Player currentPlayer = app.getGameLogic().getPlayerHandler().getPlayers().get(0); | ||||||
|  |         BoardManager boardManager = app.getGameLogic().getBoardManager(); | ||||||
|  |  | ||||||
|  |         List<BuildingProperty> playerProperties = boardManager.getPropertyFields( | ||||||
|  |                                                                       currentPlayer.getProperties()).stream() | ||||||
|  |                                                               .filter(property -> property instanceof BuildingProperty) | ||||||
|  |                                                               .map(property -> (BuildingProperty) property) | ||||||
|  |                                                               .filter(property -> property.getHouses() > 0 || property.getHotel() == 1) | ||||||
|  |                                                               .collect(Collectors.toList()); | ||||||
|  |  | ||||||
|  |         // Populate the list model | ||||||
|  |         listModel.addAll(playerProperties); | ||||||
|  |  | ||||||
|  |         // Create a ListBox with the "glass" style and the model | ||||||
|  |         ListBox<BuildingProperty> listBox = new ListBox<>(listModel, "glass"); | ||||||
|  |         listBox.setPreferredSize(new Vector3f(300, 200, 0)); // Adjust size as needed | ||||||
|  |  | ||||||
|  |         // Add selection listener | ||||||
|  |         listBox.addClickCommands(item -> { | ||||||
|  |             BuildingProperty selected = listBox.getSelectedItem(); // Correct method to retrieve the selected item | ||||||
|  |             if (selected != null) { | ||||||
|  |                 System.out.println("Selected property: " + selected.getName()); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         // Add the ListBox to the middle container | ||||||
|  |         middleContainer.addChild(listBox); | ||||||
|  |  | ||||||
|  |  | ||||||
|         downContainer.addChild(new Label("", new ElementId("label-Text")));// Leerzeile |         downContainer.addChild(new Label("", new ElementId("label-Text")));// Leerzeile | ||||||
|         downContainer.addChild(new Label("Erstattung:", new ElementId("label-Text")));// Leerzeile |         downContainer.addChild(new Label("Erstattung:", new ElementId("label-Text")));// Leerzeile | ||||||
|         downContainer.addChild(new Label("Hier die tätsächliche Erstattung", new ElementId("label-Text"))); |         downContainer.addChild(new Label("Hier die tätsächliche Erstattung", new ElementId("label-Text"))); | ||||||
| @@ -76,10 +140,16 @@ public class SellHouse extends Dialog { | |||||||
|         confirmButton.setFontSize(32); |         confirmButton.setFontSize(32); | ||||||
|         confirmButton.addClickCommands(s -> ifTopDialog( () -> { |         confirmButton.addClickCommands(s -> ifTopDialog( () -> { | ||||||
|             app.getGameLogic().playSound(Sound.BUTTON); |             app.getGameLogic().playSound(Sound.BUTTON); | ||||||
|             //TODO |             BuildingProperty selected = listBox.getSelectedItem(); | ||||||
|  |             if (selected != null) { | ||||||
|  |                 System.out.println("Confirmed property: " + selected.getName()); | ||||||
|  |                 // Send the "alter building" message to the server | ||||||
|  |                //app.getGameLogic().sendMessage(new AlterBuildingMessage(selected.getId(), false)); TODO Message an Server | ||||||
|  |             } | ||||||
|         })); |         })); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         float padding = 10; // Padding around the settingsContainer for the background |         float padding = 10; // Padding around the settingsContainer for the background | ||||||
|         backgroundContainer.setPreferredSize(sellhouseContainer.getPreferredSize().addLocal(padding, padding, 0)); |         backgroundContainer.setPreferredSize(sellhouseContainer.getPreferredSize().addLocal(padding, padding, 0)); | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user