mirror of
https://athene2.informatik.unibw-muenchen.de/progproj/gruppen-ht24/Gruppe-02.git
synced 2025-01-19 03:46:15 +01:00
add and remove houses and hotel models
This commit is contained in:
parent
815899fa8d
commit
aa9e8ed3f0
@ -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
|
||||||
|
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user