mirror of
				https://athene2.informatik.unibw-muenchen.de/progproj/gruppen-ht24/Gruppe-02.git
				synced 2025-11-04 13:56:22 +01:00 
			
		
		
		
	add and remove houses and hotel models
This commit is contained in:
		@@ -4,6 +4,7 @@ import java.lang.System.Logger;
 | 
				
			|||||||
import java.lang.System.Logger.Level;
 | 
					import java.lang.System.Logger.Level;
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.stream.Collectors;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.jme3.math.Vector3f;
 | 
					import com.jme3.math.Vector3f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -318,10 +319,21 @@ public class ClientGameLogic implements ServerInterpreter, GameEventBroker {
 | 
				
			|||||||
        if (msg.isAdded()) {
 | 
					        if (msg.isAdded()) {
 | 
				
			||||||
            BuildingProperty property = ((BuildingProperty)boardManager.getFieldAtIndex(msg.getId()));
 | 
					            BuildingProperty property = ((BuildingProperty)boardManager.getFieldAtIndex(msg.getId()));
 | 
				
			||||||
            if (property.getHotel() == 1 ) {
 | 
					            if (property.getHotel() == 1 ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                for(int i = 0; i < 4; i++) {
 | 
				
			||||||
 | 
					                    board.remove(board.getHouse(msg.getId(), i+1));
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
                board.add(new Hotel(property.getId()));
 | 
					                board.add(new Hotel(property.getId()));
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                board.add(new House( property.getHouses(), property.getId()));
 | 
					                board.add(new House( property.getHouses(), property.getId()));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            if( ((BuildingProperty)boardManager.getFieldAtIndex(msg.getId())).getHouses() == 4 ) {
 | 
				
			||||||
 | 
					                board.remove(board.getHotel(msg.getId()));
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                board.remove(board.getHouse(msg.getId(), ((BuildingProperty)boardManager.getFieldAtIndex(msg.getId())).getHouses()+1));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -454,13 +454,9 @@ public class ServerGameLogic implements ClientInterpreter {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void generatePredefinedGameState() {
 | 
					    private void generatePredefinedGameState() {
 | 
				
			||||||
        // Ensure at least two players exist
 | 
					 | 
				
			||||||
        if (playerHandler.getPlayers().size() < 2) {
 | 
					 | 
				
			||||||
            Player player1 = new Player(0, "Player1", playerHandler);
 | 
					 | 
				
			||||||
            Player player2 = new Player(1, "Player2", playerHandler);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            playerHandler.addPlayer(player1);
 | 
					        if(playerHandler.getPlayerCount() < 2) {
 | 
				
			||||||
            playerHandler.addPlayer(player2);
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        Player p1 = playerHandler.getPlayerById(0);
 | 
					        Player p1 = playerHandler.getPlayerById(0);
 | 
				
			||||||
@@ -484,10 +480,10 @@ public class ServerGameLogic implements ClientInterpreter {
 | 
				
			|||||||
        assignProperties(p2, p2Properties);
 | 
					        assignProperties(p2, p2Properties);
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        // Player 1 builds houses on Gym and Sportplatz
 | 
					        // Player 1 builds houses on Gym and Sportplatz
 | 
				
			||||||
        buildHouses(p1, Set.of(1, 3));
 | 
					        // buildHouses(p1, Set.of(1, 3));
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        // Player 2 builds houses on the Red set
 | 
					        // Player 2 builds houses on the Red set
 | 
				
			||||||
        buildHouses(p2, Set.of(21, 23, 24));
 | 
					        // buildHouses(p2, Set.of(21, 23, 24));
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        // Set player balances
 | 
					        // Set player balances
 | 
				
			||||||
        p1.setAccountBalance(12325);
 | 
					        p1.setAccountBalance(12325);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -139,6 +139,14 @@ public class Board {
 | 
				
			|||||||
        return getItems(House.class);
 | 
					        return getItems(House.class);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public House getHouse(int fieldId, int stage) {
 | 
				
			||||||
 | 
					        return getHouses().filter(house -> house.getFieldID() == fieldId && house.getStage() == stage).findFirst().orElse(null);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Hotel getHotel(int fieldId) {
 | 
				
			||||||
 | 
					        return getHotels().filter(hotel -> hotel.getFieldID() == fieldId).findFirst().orElse(null);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Returns a stream of all hotels currently on the map.
 | 
					     * Returns a stream of all hotels currently on the map.
 | 
				
			||||||
     * 
 | 
					     * 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -96,4 +96,13 @@ public class Hotel implements Item{
 | 
				
			|||||||
        // TODO
 | 
					        // TODO
 | 
				
			||||||
        return Rotation.NORTH;        
 | 
					        return Rotation.NORTH;        
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Returns the ID of the field the hotel is on.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return the ID of the field the hotel is on
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public int getFieldID() {
 | 
				
			||||||
 | 
					        return fieldID;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,6 +24,15 @@ public class House implements Item{
 | 
				
			|||||||
        this.fieldID = 0;
 | 
					        this.fieldID = 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Returns the field ID of the house.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return the field ID of the house
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public int getFieldID() {
 | 
				
			||||||
 | 
					        return fieldID;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Creates a new house with the given stage.
 | 
					     * Creates a new house with the given stage.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -146,9 +146,10 @@ public class BoardManager {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Checks if a House can be sold on the given Property
 | 
					     * Checks if a House or Hotel can be sold on the given Property.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
     * @param field the Property to check
 | 
					     * @param field the Property to check
 | 
				
			||||||
     * @return true if a house can be sold on the property, false otherwise
 | 
					     * @return true if a house or hotel can be sold on the property, false otherwise
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public boolean canSell(BuildingProperty field) {
 | 
					    public boolean canSell(BuildingProperty field) {
 | 
				
			||||||
        if (field == null) {
 | 
					        if (field == null) {
 | 
				
			||||||
@@ -174,7 +175,7 @@ public class BoardManager {
 | 
				
			|||||||
        int currentHouses = field.getHouses();
 | 
					        int currentHouses = field.getHouses();
 | 
				
			||||||
        int currentHotel = field.getHotel();
 | 
					        int currentHotel = field.getHotel();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // If there is a hotel, selling is allowed only if all other properties have max houses
 | 
					        // If there is a hotel, ensure all other properties have max houses (4) before selling it
 | 
				
			||||||
        if (currentHotel > 0) {
 | 
					        if (currentHotel > 0) {
 | 
				
			||||||
            return groupProperties.stream()
 | 
					            return groupProperties.stream()
 | 
				
			||||||
                    .allMatch(bp -> bp.getHouses() == 4 || bp.equals(field));
 | 
					                    .allMatch(bp -> bp.getHouses() == 4 || bp.equals(field));
 | 
				
			||||||
@@ -185,6 +186,7 @@ public class BoardManager {
 | 
				
			|||||||
                .allMatch(bp -> bp.getHouses() <= currentHouses);
 | 
					                .allMatch(bp -> bp.getHouses() <= currentHouses);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Gibt eine Liste von BuildingProperty-Feldern zurück, auf denen Häuser oder Hotels stehen.
 | 
					     * Gibt eine Liste von BuildingProperty-Feldern zurück, auf denen Häuser oder Hotels stehen.
 | 
				
			||||||
     * @return Liste von BuildingProperty-Feldern mit Gebäuden
 | 
					     * @return Liste von BuildingProperty-Feldern mit Gebäuden
 | 
				
			||||||
@@ -198,3 +200,10 @@ public class BoardManager {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* TODO:
 | 
				
			||||||
 | 
					- Häuser beim bau eines Hotels entfernen
 | 
				
			||||||
 | 
					- Alle texturen schwarz
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user