diff --git a/Implementierungsphase/Abweichungen-von-der-Designphase.md b/Implementierungsphase/Abweichungen-von-der-Designphase.md
index aa69725..5e3e505 100644
--- a/Implementierungsphase/Abweichungen-von-der-Designphase.md
+++ b/Implementierungsphase/Abweichungen-von-der-Designphase.md
@@ -250,3 +250,13 @@ Sonstiges:
+---
+
+
+Paketdiagramme
+
+* Aktualisiertes Paketdiagramm
+* [package_V2.0](../uploads/Designphase/Paketdiagramme/packages_V2.0.svg)
+
+
+
diff --git a/Implementierungsphase/Klassendiagramme.md b/Implementierungsphase/Klassendiagramme.md
index a7e416c..a2de6f6 100644
--- a/Implementierungsphase/Klassendiagramme.md
+++ b/Implementierungsphase/Klassendiagramme.md
@@ -3,16 +3,27 @@ Hier werden die neuen Versionen der Klassendiagramme veröffentlicht:
* [ClassChart_V4.0](../uploads/Implementierungsphase/Klassendiagramme/ClassChart_V4.0.svg)
* [ClassChart_V4.1](../uploads/Implementierungsphase/Klassendiagramme/ClassChart_V4.1.svg)
* [ClassChart_V4.2](../uploads/Implementierungsphase/Klassendiagramme/ClassChart_V4.2.svg)
+* [ClassChart_V4.3](../uploads/Implementierungsphase/Klassendiagramme/ClassChart_V4.3.svg)
Präsentationsfertige Diagramme:
-* [client](../uploads/Implementierungsphase/Klassendiagramme/client.svg)
-* [clientMessage](../uploads/Implementierungsphase/Klassendiagramme/clientMessage.svg)
-* [fields](../uploads/Implementierungsphase/Klassendiagramme/fields.svg)
-* [gui](../uploads/Implementierungsphase/Klassendiagramme/gui.svg)
-* [model.game.client](../uploads/Implementierungsphase/Klassendiagramme/model.game.client.svg)
-* [model.game.server](../uploads/Implementierungsphase/Klassendiagramme/model.game.server.svg)
-* [model.model](../uploads/Implementierungsphase/Klassendiagramme/model.model.svg)
-* [model](../uploads/Implementierungsphase/Klassendiagramme/model.svg)
-* [notification](../uploads/Implementierungsphase/Klassendiagramme/notification.svg)
-* [serverMessage](../uploads/Implementierungsphase/Klassendiagramme/serverMessage.svg)
\ No newline at end of file
+* [client_V1.0](../uploads/Implementierungsphase/Klassendiagramme/client_V1.0.svg)
+* [client_V1.1](../uploads/Implementierungsphase/Klassendiagramme/client_V1.1.svg)
+* [clientMessage_V1.0](../uploads/Implementierungsphase/Klassendiagramme/clientMessage_V1.0.svg)
+* [clientMessage_V1.1](../uploads/Implementierungsphase/Klassendiagramme/clientMessage_V1.1.svg)
+* [fields_V1.0](../uploads/Implementierungsphase/Klassendiagramme/fields_V1.0.svg)
+* [fields_V1.1](../uploads/Implementierungsphase/Klassendiagramme/fields_V1.1.svg)
+* [gui_V1.0](../uploads/Implementierungsphase/Klassendiagramme/gui_V1.0.svg)
+* [gui_V1.1](../uploads/Implementierungsphase/Klassendiagramme/gui_V1.1.svg)
+* [model.game.client_V1.0](../uploads/Implementierungsphase/Klassendiagramme/model.game.client_V1.0.svg)
+* [model.game.client_V1.1](../uploads/Implementierungsphase/Klassendiagramme/model.game.client_V1.1.svg)
+* [model.game.server_V1.0](../uploads/Implementierungsphase/Klassendiagramme/model.game.server_V1.0.svg)
+* [model.game.server_V1.1](../uploads/Implementierungsphase/Klassendiagramme/model.game.server_V1.1.svg)
+* [model.model_V1.0](../uploads/Implementierungsphase/Klassendiagramme/model.model_V1.0.svg)
+* [model.model_V1.1](../uploads/Implementierungsphase/Klassendiagramme/model.model_V1.1.svg)
+* [model_V1.0](../uploads/Implementierungsphase/Klassendiagramme/model_V1.0.svg)
+* [model_V1.1](../uploads/Implementierungsphase/Klassendiagramme/model_V1.1.svg)
+* [notification_V1.0](../uploads/Implementierungsphase/Klassendiagramme/notification_V1.0.svg)
+* [notification_V1.1](../uploads/Implementierungsphase/Klassendiagramme/notification_V1.1.svg)
+* [serverMessage_V1.0](../uploads/Implementierungsphase/Klassendiagramme/serverMessage_V1.0.svg)
+* [serverMessage_V1.1](../uploads/Implementierungsphase/Klassendiagramme/serverMessage_V1.1.svg)
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Klassendiagramme/ClassChart_V4.3.svg b/uploads/Implementierungsphase/Klassendiagramme/ClassChart_V4.3.svg
new file mode 100644
index 0000000..d9e3faf
--- /dev/null
+++ b/uploads/Implementierungsphase/Klassendiagramme/ClassChart_V4.3.svg
@@ -0,0 +1 @@
+AcceptTrade createWarningContainer(TradeReply): void close(): void escape(): void show(): void createOverlayBackground(): void createBackgroundContainer(): void centerContainers(): void ActiveState turn: boolean rollDice(): DiceResult payBail(): void useJailCard(): void AlterProperty keyword: String properties: Set<Integer> accept(ClientInterpreter, int): void BackgroundListener cursorMoved(CursorMotionEvent, Spatial, Spatial): void cursorExited(CursorMotionEvent, Spatial, Spatial): void cursorEntered(CursorMotionEvent, Spatial, Spatial): void Bankrupt createOverlayBackground(): void createBackgroundContainer(): void close(): void createBankruptContainer(): void escape(): void centerContainers(): void show(): void Board figures: Stream<Figure> width: int height: int items: List<Item> hotels: Stream<Hotel> houses: Stream<House> add(House): void removePlayers(): void addItem(Item): void notifyListeners(GameEvent): void add(Hotel): void getFigure(int): Figure getHouse(int, int): House getHotel(int): Hotel clear(): void add(Figure): void toString(): String remove(Item): void getItems(Class<T>): Stream<T> BoardAppState initialize(AppStateManager, Application): void addCylinderCaps(): void setupScene(): void disableState(): void setupLights(): void setupSky(): void addSnowEffect(Node): void enableState(): void createCardDeck(): Node update(float): void BoardManager board: List<Field> propertiesWithBuildings: List<BuildingProperty> getPropertyFields(List<Integer>): List<PropertyField> getFieldAtIndex(int): Field getIndexOfField(Field): int canBuild(BuildingProperty): boolean canSell(BuildingProperty): boolean createBoard(): List<Field> getFieldByName(String): Field BobTheBuilder visit(Figure): Spatial createHouse(House): Spatial createBox(Item): Spatial createColoredMaterial(ColorRGBA): Material createHotel(Hotel): Spatial createFigure(Figure): Spatial visit(House): Spatial visit(Hotel): Spatial BuildInfo added: boolean id: int accept(ServerInterpreter): void BuildingProperty houses: int allRent: List<Integer> color: FieldColor housePrice: int hotel: int sell(): boolean accept(Player): void calcRent(): int build(): boolean BuildingPropertyCard show(): void addButtons(Container): void addContentToContainer(Container, BuildingProperty): void centerContainers(float): void close(): void escape(): void «enumeration» ButtonState values(): ButtonState[] valueOf(String): ButtonState «record» ButtonStatusEvent notifyListener(GameEventListener): void buttonsEnabled(): boolean BuyHouse playerProperties: List<BuildingProperty> close(): void onDropdownSelectionChanged(Selector<String>): void update(float): void escape(): void createPropertyDropdown(): Container BuyPropertyRequest accept(ServerInterpreter): void BuyPropertyResponse accept(ClientInterpreter, int): void CameraController mode: CameraMode offset: Vector3f pos: Vector3f update(float): void updatePosition(): void receivedEvent(UpdatePlayerView): void CameraInputHandler «enumeration» CameraMode valueOf(String): CameraMode values(): CameraMode[] Card description: String keyword: String accept(DeckHelper, Player): void ChoosePartner createButtonContainer(): Container update(float): void onDropdownSelectionChanged(String): void close(): void addBackgroundImage(): void createDropdown(): Container escape(): void ClickListener cursorButtonEvent(CursorButtonEvent, Spatial, Spatial): void click(CursorButtonEvent, Spatial, Spatial): void cursorEntered(CursorMotionEvent, Spatial, Spatial): void cursorExited(CursorMotionEvent, Spatial, Spatial): void ClientGameLogic infoText: String boardManager: BoardManager state: ClientState tradeHandler: TradeHandler turn: boolean board: Board playerHandler: PlayerHandler addListener(GameEventListener): void received(TradeReply): void received(JailEvent): void notifyListeners(GameEvent): void received(EventDrawCard): void received(NotificationMessage): void playSound(Sound): void received(GameStart): void send(ClientMessage): void received(PlayerStatusUpdate): void received(TradeRequest): void received(BuyPropertyRequest): void removeListener(GameEventListener): void received(ViewAssetsResponse): void received(NextPlayerTurn): void received(GameOver): void received(BuildInfo): void received(TimeOutWarning): void update(float): void received(DiceResult): void «interface» ClientInterpreter received(BuyPropertyResponse, int): void received(NotificationAnswer, int): void received(AlterProperty, int): void received(PlayerReady, int): void received(RollDice, int): void received(TradeOffer, int): void received(ViewAssetsRequest, int): void received(EndTurn, int): void received(TradeResponse, int): void ClientLogicTest testOpenGameMenuWithESC(): void setUp(): void testOpenSettingsFromMenu(): void testStartApplication(): void testNavigateToPlayOption(): void testExitApplicationFromMenu(): void testOpenStartMenu(): void ClientMessage accept(ClientInterpreter, int): void «interface» ClientSender send(ClientMessage): void ClientState name: String turn: boolean update(float): void recivedViewAssetsResponse(ViewAssetsResponse): void receivedGameStart(GameStart): void recivedPlayerStatusUpdate(PlayerStatusUpdate): void recivedNextPlayerTurn(NextPlayerTurn): void recivedNotificationMessage(NotificationMessage): void loadGameConfig(File): void entry(): void «record» ClientStateEvent notifyListener(GameEventListener): void ConfirmTrade createBackgroundContainer(): void createConfirmTradeContainer(): void close(): void show(): void escape(): void DeckHelper spoTesten(Player): void partyGewinn(Player): void jodelEispenis(Player): void drawCard(): Card partyEskaliert(Player): void rueckstuferantrag(Player): void befoerderung(Player): void dienstKfzBlitzer(Player): void jahresabschlussantreten(Player): void bergmarsch(Player): void blutspendenSonderurlaub(Player): void dienstfuehrerschein(Player): void spoparty(Player): void spendierhosenUnibar(Player): void vpEinstandsparty(Player): void verkaufenVersicherungen(Player): void schimmelGulak(Player): void naechstesMonatsgehalt(Player): void inventurHaeuserHotels(Player): void pubquiz(Player): void visit(Card, Player): void lobChef(Player): void hausfeierSturz(Player): void igfPadubrin(Player): void dienstreiseLourd(Player): void geldbeutelOktoberfest(Player): void pruefungsphaseKrank(Player): void kranzExmatrikulation(Player): void maibockOrganisiert(Player): void dienstsportGym(Player): void partynachtGulak(Player): void gulakFrei(Player): void shuffle(): void antretenVerschlafen(Player): void Dice rollDice(): int DiceResult rollResult: List<Integer> doublets: boolean calcTotal(): int accept(ServerInterpreter): void «record» DiceRollEvent notifyListener(GameEventListener): void b(): int a(): int EndTurn accept(ClientInterpreter, int): void «record» EventCardEvent description(): String notifyListener(GameEventListener): void EventDrawCard cardDescription: String accept(ServerInterpreter): void EventField accept(Player): void Field name: String id: int accept(Player): void «enumeration» FieldColor color: ColorRGBA values(): FieldColor[] valueOf(String): FieldColor «interface» FieldVisitor T visit(FoodField): T visit(TestStreckeField): T visit(GateField): T visit(WacheField): T visit(GoField): T visit(BuildingProperty): T visit(EventField): T visit(GulagField): T visit(FineField): T Figure z: float type: String y: float pos: Vector3f x: float rotation: Rotation currentFieldID: int rot: Rotation id: int moveTo(Vector3f): void accept(Visitor<T>): T moveTo(int): void calculateFieldPosition(int): Vector3f toString(): String accept(VoidVisitor): void FigureControl controlRender(RenderManager, ViewPort): void receivedEvent(UpdatePlayerView): void setPath(int, int): void nextField(int): int controlUpdate(float): void FineField fine: int accept(Player): void FoodField calcRent(): int accept(Player): void FoodFieldCard createOverlayBackground(): void close(): void show(): void createFoodFieldContainer(FoodField): void escape(): void createBackgroundContainer(): void GameBoardSynchronizer receivedEvent(ItemAddedEvent): void translate(Item): Spatial addExisting(): void receivedEvent(ItemRemovedEvent): void «interface» GameEvent notifyListener(GameEventListener): void «interface» GameEventBroker notifyListeners(GameEvent): void «interface» GameEventListener receivedEvent(InfoTextEvent): void receivedEvent(SoundEvent): void receivedEvent(EventCardEvent): void receivedEvent(ItemRemovedEvent): void receivedEvent(ClientStateEvent): void receivedEvent(ButtonStatusEvent): void receivedEvent(ItemAddedEvent): void receivedEvent(UpdatePlayerView): void receivedEvent(DiceRollEvent): void receivedEvent(PopUpEvent): void GameMusic volume: float enabled: boolean volumeInPreferences(): float loadSound(Application, String): AudioNode stopAllMusic(): void playSecondaryMusic(): void stopSecondaryMusic(): void enabledInPreferences(): boolean stopMainMusic(): void toggleMusic(): void playMainMusic(): void initialize(AppStateManager, Application): void GameOver isWinner: boolean accept(ServerInterpreter): void GameSound volume: float enabled: boolean eventCard(): void winner(): void button(): void tradeAccepted(): void initialize(AppStateManager, Application): void receivedEvent(SoundEvent): void loadSound(Application, String): AudioNode tradeRejected(): void moneyLost(): void gulag(): void passStart(): void diceRoll(): void looser(): void enabledInPreferences(): boolean toggleSound(): void volumeInPreferences(): float moneyCollect(): void GameStart playerHandler: PlayerHandler accept(ServerInterpreter): void GateField calcRent(): int accept(Player): void GateFieldCard show(): void close(): void createBackgroundContainer(): void escape(): void createGateFieldContainer(GateField): void GoField accept(Player): void GridListener reshape(GuiControl, Vector3f, Vector3f): void GridModelDelegate rowCount: int columnCount: int version: long object: GridModel<Panel> setCell(int, int, Panel): void createReference(): VersionedReference<GridModel<Panel>> getCell(int, int, Panel): Panel GridPanel halignements: HAlignment[] visibleColumns: int row: int columnwidths: Float[] columnHalignement: HAlignment[] layout: SpringGridLayout model: GridModel<Panel> rowheights: Float[] visibleRows: int column: int rowheight: Float[] toString(): String setHalignements(HAlignment[], boolean): void setRowheight(Float[], boolean): void setVisibleSize(int, int): void setColumnwidths(Float[], boolean): void setLocation(int, int): void setAlpha(float, boolean): void initializeDefaultStyles(Attributes): void preparegridsizes(Integer, boolean): boolean setRowheight(Float, int): void setHalignementchecked(HAlignment, int, boolean): void checkexistinghal(HAlignment[]): boolean refreshGrid(): void getCell(int, int): Panel setColumnwidths(Float, int): void setcheckedsize(Float, int, boolean, boolean): void updateLogicalState(float): void setHalignements(HAlignment, int): void Gulag createOverlayBackground(): void escape(): void createBackgroundContainer(): void createGulagContainer(): void show(): void close(): void GulagField bailCost: int accept(Player): void GulagInfo addActionButtons(int): void show(): void escape(): void createGulagInfoContainer(int): void close(): void createBackgroundContainer(): void Hotel pos: Vector3f rot: Rotation fieldID: int accept(Visitor<T>): T accept(VoidVisitor): void House stage: int alignment: Quaternion fieldID: int pos: Vector3f rot: Rotation accept(Visitor<T>): T accept(VoidVisitor): void ImageButton backgroundTexture: String addClickCommands(Command<Button>): void addClickCommands(Command<Button>[]): void updateButtonAppearance(ButtonState): void addButtonCommands(): void buildTexturePath(String): String «record» InfoTextEvent notifyListener(GameEventListener): void key(): String IntPoint x: int y: int equals(Object): boolean hashCode(): int toString(): String «interface» IntPosition x: int y: int «interface» Item pos: Vector3f rot: Rotation accept(Visitor<T>): T accept(VoidVisitor): void «record» ItemAddedEvent item(): Item notifyListener(GameEventListener): void board(): Board «record» ItemRemovedEvent item(): Item notifyListener(GameEventListener): void board(): Board JailEvent goingToJail: boolean accept(ServerInterpreter): void JailState useJailCard(): void rollDice(): DiceResult payBail(): void LimitedLinkedList E maxSize: int add(E): boolean «enumeration» ListAction values(): ListAction[] valueOf(String): ListAction ListBox T cellRenderer: ValueRenderer<T> listCommands: Map<ListAction, List<Command<ListBox>>> clickCommands: List<Command<ListBox>> slider: Slider visibleColumns: int gridPanel: GridPanel model: VersionedList<T> visibleItems: int scrollOnHover: boolean selectionModel: SelectionModel selectedItem: T selectionMode: SelectionMode lbreplacevalue(int, int, String): void add_StringValue(String): void deactivate(): void lbaddvalue(String): void getCommands(ListAction): List<Command<ListBox>> activate(): void gridResized(Vector3f, Vector3f): void addCommands(ListAction, Command<ListBox>[]): void lbremovevalue(int): void scroll(int): void setAlpha(float, boolean): void multi_Valueadd(int, List<T>): void lbreplacevalue(int, String): void add_StringValue(int, int, String): void initializeDefaultStyles(Styles, Attributes): void updateLogicalState(float): void getLBvalues(int): List<T> lbaddvalue(String[], boolean): void lbaddvalue(int, String[]): void add_Values(Integer, List<T>): void add_StringValue(int, String): void resetModelRange(): void resetModelhorRange(): void refreshActivation(): void detachItemListeners(): void add_StringValue(Integer, String[], boolean): void prepare_Stringvalue_foradd(String[], boolean): String[] adjustothercolumnmodel(): void add_StringValue(String[]): void lbaddvalue(int, String): void remove_Row(int): void getlbvalue(int): String[] lbbaddvalue(int, String[], boolean): void add_Values(int, int, T): void replace_LB_StringValues(int, String[], boolean): void add_StringValue(int, String[]): void gethorizontalSlider(): Slider multi_Stringadd(int, String[]): void sliderhorsetup(): void check_columns(int): void setSelectorColor(ColorRGBA, boolean): void lbcolumnadjust(): void setavailableColumns(int): void addClickCommands(Command<ListBox>[]): void refreshSelector(): void lbreplacevalue(int, String[], boolean): void toString(): String prepare_Values_foradd(List<T>, boolean): List<T> replace_LB_value(int, int, T): void lbaddvalue(String[]): void getListCell(int, int, Panel): Panel removeClickCommands(Command<ListBox>[]): void LobbyState receivedGameStart(GameStart): void MonopolyApp dialogManager: DialogManager infoText: String config: MonopolyAppConfig draw: Draw executor: ExecutorService gameLogic: ClientGameLogic id: int stop(boolean): void connect(): void receivedEvent(ClientStateEvent): void simpleUpdate(float): void attachGameSound(): void setupGui(): void escape(boolean): void requestClose(boolean): void setupStates(): void close(): void handleF8(boolean): void makeServerConnection(): ServerConnection disconnect(): void setupInput(): void errorDialog(String): void receivedEvent(InfoTextEvent): void main(String[]): void closeApp(): void attachGameMusic(): void simpleInitApp(): void confirmDialog(String, Runnable): void makeSettings(): AppSettings MonopolyAppConfig resolutionWidth: int topColor: ColorRGBA showStatistics: boolean resolutionHeight: int showSettings: boolean useGammaCorrection(): boolean convertToType(String, Class<?>): Object correctGamma(float): float useRetinaFrameBuffer(): boolean makeColorRGBA(String): ColorRGBA correctGamma(float, float): float applyGammaCorrection(ColorRGBA): ColorRGBA fullScreen(): boolean MonopolyAppState enabled: boolean app: MonopolyApp gameLogic: ClientGameLogic disableState(): void enableState(): void initialize(AppStateManager, Application): void «interface» MonopolyClient gameLogic: ClientGameLogic config: MonopolyClientConfig enqueue(Runnable): void MonopolyClientConfig map: File MonopolyConfig port: int mapHeight: int mapWidth: int MonopolyServer startServer(): void registerListeners(): void exit(int): void initializeSerializables(): void messageReceived(HostedConnection, Message): void run(): void connectionAdded(Server, HostedConnection): void send(int, ServerMessage): void processNextMessage(): void connectionRemoved(Server, HostedConnection): void main(String[]): void NetworkSupport app: MonopolyApp connected: boolean id: int clientConnected(Client): void clientDisconnected(Client, DisconnectInfo): void initNetwork(String, int): void send(ClientMessage): void connect(): void messageReceived(Client, Message): void disconnect(): void NextPlayerTurn accept(ServerInterpreter): void NoMoneyWarning adjustPaddingAndCenter(): void close(): void createBackgroundContainer(): Container createOverlayBackground(): Geometry escape(): void createNoMoneyWarningContainer(): Container show(): void NotificationAnswer keyword: String accept(ClientInterpreter, int): void NotificationMessage rentAmount: int rentOwnerId: String keyWord: String rentOwner: String accept(ServerInterpreter): void Player propertyFields: List<PropertyField> name: String properties: List<Integer> handler: PlayerHandler numHouses: int accountBalance: int numHotels: int figure: String numJailCard: int fieldID: int state: PlayerState id: int setPositionWithMoney(int): int visit(FoodField): Void finishTurn(): boolean move(int): int payBail(): void moveToJail(): void visit(EventField): Void jail(): void visit(BuildingProperty): Void buyProperty(PropertyField): void getNumProp(PropertyField): int pay(int): void toString(): String sendNotification(String, Player, int): void visit(GateField): Void addProperty(Integer): void rollDice(): DiceResult visit(WacheField): Void setPosition(int): int visit(GoField): Void sellProperty(PropertyField): void removeProperty(Integer): void useJailCard(): void visit(TestStreckeField): Void bankrupt(): void visit(FineField): Void getColor(int): PlayerColor earnMoney(int): void setActive(): void visit(GulagField): Void canFinishTurn(): boolean removeJailCard(): void addJailCard(): void «enumeration» PlayerColor color: ColorRGBA colorName: String valueOf(String): PlayerColor values(): PlayerColor[] PlayerHandler players: List<Player> logic: ServerGameLogic playerCount: int startBalance: int addPlayer(Player): void nextPlayer(): Player randomOrder(): void setPlayerReady(Player, boolean): void extraTurn(Player): void allPlayersReady(): boolean removePlayer(Player): void getPlayerById(int): Player getPlayerAtIndex(int): Player PlayerReady figure: String name: String startMoney: int isReady: boolean accept(ClientInterpreter, int): void «interface» PlayerState payBail(): void rollDice(): DiceResult useJailCard(): void PlayerStatusUpdate playerHandler: PlayerHandler accept(ServerInterpreter): void PropertyField hypo: int owner: Player price: int mortgaged: boolean calcRent(): int «record» ReceivedMessage from(): int message(): ClientMessage process(ClientInterpreter): void ReceivedRent show(): void createRentContainer(String, int): void centerContainers(): void close(): void createOverlayBackground(): void escape(): void createBackgroundContainer(): void RejectTrade show(): void adjustPaddingAndCenter(): void createRejectTradeContainer(TradeReply): Container escape(): void createOverlayBackground(): Geometry close(): void createBackgroundContainer(): Container Rent escape(): void close(): void createBackgroundContainer(): Container createOverlayBackground(): Geometry show(): void createRentContainer(String, int): Container centerContainers(): void RepayMortage playerProperties: List<PropertyField> close(): void update(float): void escape(): void createPropertyDropdown(): Container onDropdownSelectionChanged(Selector<String>): void Resources lookup(String): String RollDice accept(ClientInterpreter, int): void «enumeration» Rotation valueOf(String): Rotation toQuaternion(): Quaternion rotateClockwise(): Rotation rotateCounterclockwise(): Rotation radians(): float closestToRadians(float): Rotation rotateByRadians(float): Rotation values(): Rotation[] «interface» SelectionActionListener T onSelectionChanged(T): void «interface» SelectionListener selectionChanged(Spatial, Spatial): void SelectorClickListener click(CursorButtonEvent, Spatial, Spatial): void SellHouse playerProperties: List<BuildingProperty> onDropdownSelectionChanged(Selector<String>): void escape(): void update(float): void createPropertyDropdown(): Container close(): void «interface» ServerConnection connected: boolean connect(): void disconnect(): void ServerGameLogic boardManager: BoardManager deckHelper: DeckHelper state: ServerState received(RollDice, int): void addPlayer(Player): Player received(TradeResponse, int): void send(Player, ServerMessage): void sendAll(ServerMessage): void received(TradeOffer, int): void received(PlayerReady, int): void executeTrade(Player, Player, Set<PropertyField>, Set<PropertyField>): void received(BuyPropertyResponse, int): void received(EndTurn, int): void received(ViewAssetsRequest, int): void received(NotificationAnswer, int): void buildHouses(Player, Set<Integer>): void received(AlterProperty, int): void generatePredefinedGameState(): void addPlayer(int): Player updateAllPlayers(): void getPlayerById(int): Player assignProperties(Player, Set<Integer>): void ServerGameLogicTest testReceivePenaltyPayment(): void testBefoerderungCard(): void testUseGulagFreeCardToExit(): void testTriggerEventTile(): void testDeductGulagFreeCard(): void testNamenschildCard(): void testCardPurchaseFailed(): void setUp(): void testGoToGulag(): void testBlutspenderCard(): void testPartyeskalationCard(): void testSumDiceResults(): void testJodelCard(): void testSpopartyCard(): void testBekanntschaftCard(): void testFailUseGulagFreeCardToExit(): void testBlitzerCard(): void testMozzarellaCard(): void testPubquizCard(): void testPayTaxesWithMock(): void testMovePlayer(): void testPartyorganisatorCard(): void testUseGetOutOfGulagCard(): void testAntretenVerschlafenCard(): void testKrankInPruefungsphaseCard(): void testFailRollToExitGulag(): void testTakeMortgage(): void testDrawEventCard(): void testMaibockCard(): void testJahresabschlussantretenCard(): void testDetermineTurnOrder(): void testRollDice(): void testBergmarschCard(): void testRollToExitGulag(): void testPayToExitGulag(): void testVorbildlichesVerhaltenCard(): void testExmatrikulationCard(): void testBuyProperty(): void testVertrauenspersonCard(): void testPenaltyPayment(): void testLeaveGulag(): void testRueckstuferantragCard(): void testSwitchTurnToNextPlayer(): void testBankruptcyByPlayer(): void testVersicherungenCard(): void testBuildHotel(): void testMaxBuildHouses(): void testEndTurn(): void testGenerationDice(): void testDeclareBankruptcy(): void testLourdesCard(): void testGoToGulagCard(): void testSpendierhosenCard(): void testBuyCard(): void testOktoberfestCard(): void testDienstfuehrerscheinCard(): void testDoubleRoll(): void testPayBackMortgage(): void testPayRent(): void testDetectDoubleForAllPossibleDoubles(): void testZieheVorUeberLosCard(): void testTripleDoubleGulag(): void testTriggerGulagTransfer(): void testRentPaymentFailed(): void «interface» ServerInterpreter received(NextPlayerTurn): void received(PlayerStatusUpdate): void received(NotificationMessage): void received(JailEvent): void received(TimeOutWarning): void received(BuyPropertyRequest): void received(GameStart): void received(DiceResult): void received(ViewAssetsResponse): void received(TradeReply): void received(BuildInfo): void received(EventDrawCard): void received(TradeRequest): void received(GameOver): void ServerMessage accept(ServerInterpreter): void «interface» ServerSender send(int, ServerMessage): void «enumeration» ServerState valueOf(String): ServerState values(): ServerState[] SliderValueChangeListener controlRender(RenderManager, ViewPort): void controlUpdate(float): void «enumeration» Sound valueOf(String): Sound values(): Sound[] «record» SoundEvent sound(): Sound notifyListener(GameEventListener): void SoundSlider update(): void TakeMortage playerProperties: List<PropertyField> onDropdownSelectionChanged(Selector<String>): void createPropertyDropdown(): Container escape(): void close(): void update(float): void TestStreckeField accept(Player): void addMoney(int): void collectMoney(): int TimeOut close(): void createOverlayBackground(): Geometry escape(): void TimeOutWarning remainingTime: int accept(ServerInterpreter): void Toolbar createDiceContainer(Label): Container setDiceIcon(Label, String): void addOverviewDetails(): void setupToolbar(): Container update(): void setupPlayerInfoSection(Container): void escape(): void addAccountDetails(): void receivedEvent(UpdatePlayerView): void setupSpacer(Container): void refreshPlayerView(): void receivedEvent(ButtonStatusEvent): void updateDiceIcons(int): void animateDice(long): void diceToString(int): String createDiceDisplay(): Container createEndTurnButton(): Button handleEndTurn(): void setupActionMenu(Container): void createTradeButton(): Button handleDiceRoll(): void setupDiceSection(Container): void addBorder(float, float, float, float, ColorRGBA): void createPropertyMenuButton(): Button showFinalDiceResult(DiceRollEvent): void receivedEvent(DiceRollEvent): void setupBorders(Container): void createDiceLabel(String): Label startDiceAnimation(): void close(): void TradeHandler offeredJailCards: int requestedProperties: Set<PropertyField> offeredProperties: Set<PropertyField> offeredAmount: int receiver: Player requestedAmount: int sender: Player requestedJailCards: int TradeOffer tradeHandler: TradeHandler accept(ClientInterpreter, int): void TradeReply accepted: boolean tradeHandler: TradeHandler accept(ServerInterpreter): void TradeRequest tradeHandler: TradeHandler accept(ServerInterpreter): void TradeResponse accepted: boolean tradeHandler: TradeHandler accept(ClientInterpreter, int): void «record» UpdatePlayerView notifyListener(GameEventListener): void VersionedList T object: List<T> version: long remove(int): T wrap(List<T>): VersionedList<T> set(int, T): T incrementVersion(): void get(int): T add(int, T): void createReference(): VersionedReference<List<T>> size(): int ViewAssetsRequest accept(ClientInterpreter, int): void ViewAssetsResponse accept(ServerInterpreter): void getboard(): BoardManager «interface» Visitor T visit(Hotel): T visit(House): T visit(Figure): T «interface» VoidVisitor visit(Figure): void visit(Hotel): void visit(House): void VolumeSlider update(): void WacheField accept(Player): void WaitForTurnState turn: boolean recivedNextPlayerTurn(NextPlayerTurn): void payBail(): void rollDice(): DiceResult useJailCard(): void build metaClass: MetaClass setProperty(String, Object): void getProperty(String): Object run(): Object main(String[]): void invokeMethod(String, Object): Object 1 app 1 1 backgroundListener 1 1 app 1 1 eventBroker 1 1 bobTheBuilder 1 1 cameraController 1 1 cameraInputHandler 1 1 app 1 1 color 1 1 app 1 1 app 1 1 currentMode 1 1 app 1 1 playerHandler 1 1 cameraController 1 1 app 1 1 tradeHandler 1 1 clickListener 1 1 board 1 1 boardManager 1 1 clientSender 1 1 state 1 1 logic 1 1 playerHandler 1 1 tradeHandler 1 1 app 1 create 1 app 1 1 tradeHandler 1 1 rot 1 1 figure 1 1 app 1 1 app 1 1 board 1 1 playerHandler 1 1 app 1 1 app 1 1 app 1 1 app 1 1 playerColor 1 1 grid 1 1 selectorlistener 1 1 model 1 1 logic 1 1 config 1 1 serverConnection 1 1 app 1 1 config 1 1 logic 1 1 app 1 1 app 1 1 rollResult 1 1 handler 1 1 extra 1 1 state 1 1 owner 1 1 logic 1 1 playerHandler 1 1 playerHandler 1 1 app 1 1 app 1 1 app 1 1 app 1 1 app 1 1 boardManager 1 1 deckHelper 1 1 config 1 1 serverSender 1 1 state 1 create create 1 figure 1 create 1 player 1 create 1 playerHandler 1 1 property 1 create 1 serverGameLogic 1 1 sound 1 1 app 1 1 app 1 1 latestDiceRollEvent 1 1 app 1 1 playerHandler 1 1 sender 1 1 tradeHandler 1 1 tradehandler 1 1 tradeHandler 1 1 tradehandler 1 1 tradeHandler 1 1 board 1 1 music 1
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Klassendiagramme/clientMessage.svg b/uploads/Implementierungsphase/Klassendiagramme/clientMessage_V1.0.svg
similarity index 100%
rename from uploads/Implementierungsphase/Klassendiagramme/clientMessage.svg
rename to uploads/Implementierungsphase/Klassendiagramme/clientMessage_V1.0.svg
diff --git a/uploads/Implementierungsphase/Klassendiagramme/clientMessage_V1.1.svg b/uploads/Implementierungsphase/Klassendiagramme/clientMessage_V1.1.svg
new file mode 100644
index 0000000..7255206
--- /dev/null
+++ b/uploads/Implementierungsphase/Klassendiagramme/clientMessage_V1.1.svg
@@ -0,0 +1 @@
+AlterProperty keyword: String properties: Set<Integer> accept(ClientInterpreter, int): void BuyPropertyResponse accept(ClientInterpreter, int): void «interface» ClientInterpreter received(EndTurn, int): void received(RollDice, int): void received(TradeResponse, int): void received(PlayerReady, int): void received(ViewAssetsRequest, int): void received(TradeOffer, int): void received(BuyPropertyResponse, int): void received(AlterProperty, int): void received(NotificationAnswer, int): void ClientMessage accept(ClientInterpreter, int): void EndTurn accept(ClientInterpreter, int): void NotificationAnswer keyword: String accept(ClientInterpreter, int): void PlayerReady figure: String name: String startMoney: int isReady: boolean accept(ClientInterpreter, int): void RollDice accept(ClientInterpreter, int): void TradeOffer tradeHandler: TradeHandler accept(ClientInterpreter, int): void TradeResponse accepted: boolean tradeHandler: TradeHandler accept(ClientInterpreter, int): void ViewAssetsRequest accept(ClientInterpreter, int): void
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Klassendiagramme/client.svg b/uploads/Implementierungsphase/Klassendiagramme/client_V1.0.svg
similarity index 100%
rename from uploads/Implementierungsphase/Klassendiagramme/client.svg
rename to uploads/Implementierungsphase/Klassendiagramme/client_V1.0.svg
diff --git a/uploads/Implementierungsphase/Klassendiagramme/client_V1.1.svg b/uploads/Implementierungsphase/Klassendiagramme/client_V1.1.svg
new file mode 100644
index 0000000..eac6036
--- /dev/null
+++ b/uploads/Implementierungsphase/Klassendiagramme/client_V1.1.svg
@@ -0,0 +1 @@
+AcceptTrade createWarningContainer(TradeReply): void close(): void escape(): void show(): void createOverlayBackground(): void createBackgroundContainer(): void centerContainers(): void BackgroundListener cursorMoved(CursorMotionEvent, Spatial, Spatial): void cursorExited(CursorMotionEvent, Spatial, Spatial): void cursorEntered(CursorMotionEvent, Spatial, Spatial): void Bankrupt createOverlayBackground(): void createBackgroundContainer(): void close(): void createBankruptContainer(): void escape(): void centerContainers(): void show(): void BoardAppState initialize(AppStateManager, Application): void addCylinderCaps(): void setupScene(): void disableState(): void setupLights(): void setupSky(): void addSnowEffect(Node): void enableState(): void createCardDeck(): Node update(float): void BobTheBuilder visit(Figure): Spatial createHouse(House): Spatial createBox(Item): Spatial createColoredMaterial(ColorRGBA): Material createHotel(Hotel): Spatial createFigure(Figure): Spatial visit(House): Spatial visit(Hotel): Spatial BuildingPropertyCard show(): void addButtons(Container): void addContentToContainer(Container, BuildingProperty): void centerContainers(float): void close(): void escape(): void «enumeration» ButtonState values(): ButtonState[] valueOf(String): ButtonState BuyHouse playerProperties: List<BuildingProperty> close(): void onDropdownSelectionChanged(Selector<String>): void update(float): void escape(): void createPropertyDropdown(): Container CameraController mode: CameraMode offset: Vector3f pos: Vector3f update(float): void updatePosition(): void receivedEvent(UpdatePlayerView): void CameraInputHandler «enumeration» CameraMode valueOf(String): CameraMode values(): CameraMode[] ChoosePartner createButtonContainer(): Container update(float): void onDropdownSelectionChanged(String): void close(): void addBackgroundImage(): void createDropdown(): Container escape(): void ClickListener cursorButtonEvent(CursorButtonEvent, Spatial, Spatial): void click(CursorButtonEvent, Spatial, Spatial): void cursorEntered(CursorMotionEvent, Spatial, Spatial): void cursorExited(CursorMotionEvent, Spatial, Spatial): void ConfirmTrade createBackgroundContainer(): void createConfirmTradeContainer(): void close(): void show(): void escape(): void FigureControl controlRender(RenderManager, ViewPort): void receivedEvent(UpdatePlayerView): void setPath(int, int): void nextField(int): int controlUpdate(float): void FoodFieldCard createOverlayBackground(): void close(): void show(): void createFoodFieldContainer(FoodField): void escape(): void createBackgroundContainer(): void GameBoardSynchronizer receivedEvent(ItemAddedEvent): void translate(Item): Spatial addExisting(): void receivedEvent(ItemRemovedEvent): void GameMusic volume: float enabled: boolean volumeInPreferences(): float loadSound(Application, String): AudioNode stopAllMusic(): void playSecondaryMusic(): void stopSecondaryMusic(): void enabledInPreferences(): boolean stopMainMusic(): void toggleMusic(): void playMainMusic(): void initialize(AppStateManager, Application): void GameSound volume: float enabled: boolean eventCard(): void winner(): void button(): void tradeAccepted(): void initialize(AppStateManager, Application): void receivedEvent(SoundEvent): void loadSound(Application, String): AudioNode tradeRejected(): void moneyLost(): void gulag(): void passStart(): void diceRoll(): void looser(): void enabledInPreferences(): boolean toggleSound(): void volumeInPreferences(): float moneyCollect(): void GateFieldCard show(): void close(): void createBackgroundContainer(): void escape(): void createGateFieldContainer(GateField): void GridListener reshape(GuiControl, Vector3f, Vector3f): void GridModelDelegate rowCount: int columnCount: int version: long object: GridModel<Panel> setCell(int, int, Panel): void createReference(): VersionedReference<GridModel<Panel>> getCell(int, int, Panel): Panel GridPanel halignements: HAlignment[] visibleColumns: int row: int columnwidths: Float[] columnHalignement: HAlignment[] layout: SpringGridLayout model: GridModel<Panel> rowheights: Float[] visibleRows: int column: int rowheight: Float[] toString(): String setHalignements(HAlignment[], boolean): void setRowheight(Float[], boolean): void setVisibleSize(int, int): void setColumnwidths(Float[], boolean): void setLocation(int, int): void setAlpha(float, boolean): void initializeDefaultStyles(Attributes): void preparegridsizes(Integer, boolean): boolean setRowheight(Float, int): void setHalignementchecked(HAlignment, int, boolean): void checkexistinghal(HAlignment[]): boolean refreshGrid(): void getCell(int, int): Panel setColumnwidths(Float, int): void setcheckedsize(Float, int, boolean, boolean): void updateLogicalState(float): void setHalignements(HAlignment, int): void Gulag createOverlayBackground(): void escape(): void createBackgroundContainer(): void createGulagContainer(): void show(): void close(): void GulagInfo addActionButtons(int): void show(): void escape(): void createGulagInfoContainer(int): void close(): void createBackgroundContainer(): void ImageButton backgroundTexture: String addClickCommands(Command<Button>): void addClickCommands(Command<Button>[]): void updateButtonAppearance(ButtonState): void addButtonCommands(): void buildTexturePath(String): String «enumeration» ListAction values(): ListAction[] valueOf(String): ListAction ListBox T cellRenderer: ValueRenderer<T> listCommands: Map<ListAction, List<Command<ListBox>>> clickCommands: List<Command<ListBox>> slider: Slider visibleColumns: int gridPanel: GridPanel model: VersionedList<T> visibleItems: int scrollOnHover: boolean selectionModel: SelectionModel selectedItem: T selectionMode: SelectionMode lbreplacevalue(int, int, String): void add_StringValue(String): void deactivate(): void lbaddvalue(String): void getCommands(ListAction): List<Command<ListBox>> activate(): void gridResized(Vector3f, Vector3f): void addCommands(ListAction, Command<ListBox>[]): void lbremovevalue(int): void scroll(int): void setAlpha(float, boolean): void multi_Valueadd(int, List<T>): void lbreplacevalue(int, String): void add_StringValue(int, int, String): void initializeDefaultStyles(Styles, Attributes): void updateLogicalState(float): void getLBvalues(int): List<T> lbaddvalue(String[], boolean): void lbaddvalue(int, String[]): void add_Values(Integer, List<T>): void add_StringValue(int, String): void resetModelRange(): void resetModelhorRange(): void refreshActivation(): void detachItemListeners(): void add_StringValue(Integer, String[], boolean): void prepare_Stringvalue_foradd(String[], boolean): String[] adjustothercolumnmodel(): void add_StringValue(String[]): void lbaddvalue(int, String): void remove_Row(int): void getlbvalue(int): String[] lbbaddvalue(int, String[], boolean): void add_Values(int, int, T): void replace_LB_StringValues(int, String[], boolean): void add_StringValue(int, String[]): void gethorizontalSlider(): Slider multi_Stringadd(int, String[]): void sliderhorsetup(): void check_columns(int): void setSelectorColor(ColorRGBA, boolean): void lbcolumnadjust(): void setavailableColumns(int): void addClickCommands(Command<ListBox>[]): void refreshSelector(): void lbreplacevalue(int, String[], boolean): void toString(): String prepare_Values_foradd(List<T>, boolean): List<T> replace_LB_value(int, int, T): void lbaddvalue(String[]): void getListCell(int, int, Panel): Panel removeClickCommands(Command<ListBox>[]): void MonopolyApp dialogManager: DialogManager infoText: String config: MonopolyAppConfig draw: Draw executor: ExecutorService gameLogic: ClientGameLogic id: int stop(boolean): void connect(): void receivedEvent(ClientStateEvent): void simpleUpdate(float): void attachGameSound(): void setupGui(): void escape(boolean): void requestClose(boolean): void setupStates(): void close(): void handleF8(boolean): void makeServerConnection(): ServerConnection disconnect(): void setupInput(): void errorDialog(String): void receivedEvent(InfoTextEvent): void main(String[]): void closeApp(): void attachGameMusic(): void simpleInitApp(): void confirmDialog(String, Runnable): void makeSettings(): AppSettings MonopolyAppConfig resolutionWidth: int topColor: ColorRGBA showStatistics: boolean resolutionHeight: int showSettings: boolean useGammaCorrection(): boolean convertToType(String, Class<?>): Object correctGamma(float): float useRetinaFrameBuffer(): boolean makeColorRGBA(String): ColorRGBA correctGamma(float, float): float applyGammaCorrection(ColorRGBA): ColorRGBA fullScreen(): boolean MonopolyAppState enabled: boolean app: MonopolyApp gameLogic: ClientGameLogic disableState(): void enableState(): void initialize(AppStateManager, Application): void NetworkSupport app: MonopolyApp connected: boolean id: int clientConnected(Client): void clientDisconnected(Client, DisconnectInfo): void initNetwork(String, int): void send(ClientMessage): void connect(): void messageReceived(Client, Message): void disconnect(): void NoMoneyWarning adjustPaddingAndCenter(): void close(): void createBackgroundContainer(): Container createOverlayBackground(): Geometry escape(): void createNoMoneyWarningContainer(): Container show(): void ReceivedRent show(): void createRentContainer(String, int): void centerContainers(): void close(): void createOverlayBackground(): void escape(): void createBackgroundContainer(): void RejectTrade show(): void adjustPaddingAndCenter(): void createRejectTradeContainer(TradeReply): Container escape(): void createOverlayBackground(): Geometry close(): void createBackgroundContainer(): Container Rent escape(): void close(): void createBackgroundContainer(): Container createOverlayBackground(): Geometry show(): void createRentContainer(String, int): Container centerContainers(): void RepayMortage playerProperties: List<PropertyField> close(): void update(float): void escape(): void createPropertyDropdown(): Container onDropdownSelectionChanged(Selector<String>): void «interface» SelectionActionListener T onSelectionChanged(T): void «interface» SelectionListener selectionChanged(Spatial, Spatial): void SelectorClickListener click(CursorButtonEvent, Spatial, Spatial): void SellHouse playerProperties: List<BuildingProperty> onDropdownSelectionChanged(Selector<String>): void escape(): void update(float): void createPropertyDropdown(): Container close(): void SliderValueChangeListener controlRender(RenderManager, ViewPort): void controlUpdate(float): void SoundSlider update(): void TakeMortage playerProperties: List<PropertyField> onDropdownSelectionChanged(Selector<String>): void createPropertyDropdown(): Container escape(): void close(): void update(float): void TimeOut close(): void createOverlayBackground(): Geometry escape(): void Toolbar createDiceContainer(Label): Container setDiceIcon(Label, String): void addOverviewDetails(): void setupToolbar(): Container update(): void setupPlayerInfoSection(Container): void escape(): void addAccountDetails(): void receivedEvent(UpdatePlayerView): void setupSpacer(Container): void refreshPlayerView(): void receivedEvent(ButtonStatusEvent): void updateDiceIcons(int): void animateDice(long): void diceToString(int): String createDiceDisplay(): Container createEndTurnButton(): Button handleEndTurn(): void setupActionMenu(Container): void createTradeButton(): Button handleDiceRoll(): void setupDiceSection(Container): void addBorder(float, float, float, float, ColorRGBA): void createPropertyMenuButton(): Button showFinalDiceResult(DiceRollEvent): void receivedEvent(DiceRollEvent): void setupBorders(Container): void createDiceLabel(String): Label startDiceAnimation(): void close(): void VersionedList T object: List<T> version: long remove(int): T wrap(List<T>): VersionedList<T> set(int, T): T incrementVersion(): void get(int): T add(int, T): void createReference(): VersionedReference<List<T>> size(): int VolumeSlider update(): void build metaClass: MetaClass invokeMethod(String, Object): Object main(String[]): void setProperty(String, Object): void run(): Object getProperty(String): Object 1 app 1 1 backgroundListener 1 1 app 1 1 bobTheBuilder 1 1 cameraController 1 1 cameraInputHandler 1 1 app 1 1 app 1 1 app 1 1 currentMode 1 1 app 1 1 cameraController 1 1 app 1 1 clickListener 1 1 app 1 1 app 1 1 app 1 1 app 1 1 app 1 1 app 1 1 app 1 1 grid 1 1 selectorlistener 1 1 model 1 1 config 1 1 app 1 1 app 1 1 app 1 1 app 1 1 app 1 1 app 1 1 app 1 1 app 1 1 sound 1 1 app 1 1 app 1 1 app 1 1 music 1
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Klassendiagramme/fields.svg b/uploads/Implementierungsphase/Klassendiagramme/fields_V1.0.svg
similarity index 100%
rename from uploads/Implementierungsphase/Klassendiagramme/fields.svg
rename to uploads/Implementierungsphase/Klassendiagramme/fields_V1.0.svg
diff --git a/uploads/Implementierungsphase/Klassendiagramme/fields_V1.1.svg b/uploads/Implementierungsphase/Klassendiagramme/fields_V1.1.svg
new file mode 100644
index 0000000..2410c29
--- /dev/null
+++ b/uploads/Implementierungsphase/Klassendiagramme/fields_V1.1.svg
@@ -0,0 +1 @@
+BoardManager board: List<Field> propertiesWithBuildings: List<BuildingProperty> getFieldAtIndex(int): Field canSell(BuildingProperty): boolean getFieldByName(String): Field getIndexOfField(Field): int canBuild(BuildingProperty): boolean createBoard(): List<Field> getPropertyFields(List<Integer>): List<PropertyField> BuildingProperty houses: int allRent: List<Integer> color: FieldColor housePrice: int hotel: int build(): boolean accept(Player): void calcRent(): int sell(): boolean EventField accept(Player): void Field name: String id: int accept(Player): void «enumeration» FieldColor color: ColorRGBA values(): FieldColor[] valueOf(String): FieldColor FineField fine: int accept(Player): void FoodField calcRent(): int accept(Player): void GateField accept(Player): void calcRent(): int GoField accept(Player): void GulagField bailCost: int accept(Player): void PropertyField hypo: int owner: Player price: int mortgaged: boolean calcRent(): int TestStreckeField accept(Player): void addMoney(int): void collectMoney(): int WacheField accept(Player): void create create create create create create create create create 1 color 1
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Klassendiagramme/gui.svg b/uploads/Implementierungsphase/Klassendiagramme/gui_V1.0.svg
similarity index 100%
rename from uploads/Implementierungsphase/Klassendiagramme/gui.svg
rename to uploads/Implementierungsphase/Klassendiagramme/gui_V1.0.svg
diff --git a/uploads/Implementierungsphase/Klassendiagramme/gui_V1.1.svg b/uploads/Implementierungsphase/Klassendiagramme/gui_V1.1.svg
new file mode 100644
index 0000000..893adde
--- /dev/null
+++ b/uploads/Implementierungsphase/Klassendiagramme/gui_V1.1.svg
@@ -0,0 +1 @@
+BobTheBuilder createBox(Item): Spatial createColoredMaterial(ColorRGBA): Material createHotel(Hotel): Spatial visit(Figure): Spatial createHouse(House): Spatial visit(Hotel): Spatial createFigure(Figure): Spatial visit(House): Spatial «enumeration» ButtonState valueOf(String): ButtonState values(): ButtonState[] CameraController mode: CameraMode offset: Vector3f pos: Vector3f update(float): void receivedEvent(UpdatePlayerView): void updatePosition(): void CameraInputHandler «enumeration» CameraMode valueOf(String): CameraMode values(): CameraMode[] ChoosePartner escape(): void createDropdown(): Container createButtonContainer(): Container onDropdownSelectionChanged(String): void update(float): void close(): void addBackgroundImage(): void FigureControl setPath(int, int): void nextField(int): int receivedEvent(UpdatePlayerView): void controlRender(RenderManager, ViewPort): void controlUpdate(float): void GameBoardSynchronizer receivedEvent(ItemAddedEvent): void receivedEvent(ItemRemovedEvent): void addExisting(): void translate(Item): Spatial ImageButton backgroundTexture: String addClickCommands(Command<Button>[]): void buildTexturePath(String): String updateButtonAppearance(ButtonState): void addButtonCommands(): void addClickCommands(Command<Button>): void «interface» SelectionActionListener T onSelectionChanged(T): void SliderValueChangeListener controlUpdate(float): void controlRender(RenderManager, ViewPort): void SoundSlider update(): void Toolbar createTradeButton(): Button createPropertyMenuButton(): Button escape(): void addBorder(float, float, float, float, ColorRGBA): void setupActionMenu(Container): void receivedEvent(DiceRollEvent): void createEndTurnButton(): Button setDiceIcon(Label, String): void update(): void handleEndTurn(): void animateDice(long): void createDiceLabel(String): Label refreshPlayerView(): void createDiceContainer(Label): Container addAccountDetails(): void setupPlayerInfoSection(Container): void receivedEvent(UpdatePlayerView): void setupDiceSection(Container): void createDiceDisplay(): Container addOverviewDetails(): void showFinalDiceResult(DiceRollEvent): void diceToString(int): String setupBorders(Container): void handleDiceRoll(): void updateDiceIcons(int): void setupSpacer(Container): void startDiceAnimation(): void receivedEvent(ButtonStatusEvent): void setupToolbar(): Container close(): void VolumeSlider update(): void create 1 currentMode 1 1 cameraController 1 create create
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Klassendiagramme/model.game.client.svg b/uploads/Implementierungsphase/Klassendiagramme/model.game.client_V1.0.svg
similarity index 100%
rename from uploads/Implementierungsphase/Klassendiagramme/model.game.client.svg
rename to uploads/Implementierungsphase/Klassendiagramme/model.game.client_V1.0.svg
diff --git a/uploads/Implementierungsphase/Klassendiagramme/model.game.client_V1.1.svg b/uploads/Implementierungsphase/Klassendiagramme/model.game.client_V1.1.svg
new file mode 100644
index 0000000..8a78e3f
--- /dev/null
+++ b/uploads/Implementierungsphase/Klassendiagramme/model.game.client_V1.1.svg
@@ -0,0 +1 @@
+ActiveState turn: boolean ClientGameLogic infoText: String boardManager: BoardManager state: ClientState tradeHandler: TradeHandler turn: boolean board: Board playerHandler: PlayerHandler received(ViewAssetsResponse): void received(EventDrawCard): void update(float): void notifyListeners(GameEvent): void received(JailEvent): void received(TradeReply): void received(GameOver): void send(ClientMessage): void playSound(Sound): void received(TradeRequest): void received(GameStart): void received(TimeOutWarning): void removeListener(GameEventListener): void received(DiceResult): void received(BuildInfo): void received(NotificationMessage): void received(NextPlayerTurn): void received(BuyPropertyRequest): void addListener(GameEventListener): void received(PlayerStatusUpdate): void «interface» ClientSender send(ClientMessage): void ClientState name: String turn: boolean recivedNextPlayerTurn(NextPlayerTurn): void recivedNotificationMessage(NotificationMessage): void recivedPlayerStatusUpdate(PlayerStatusUpdate): void receivedGameStart(GameStart): void update(float): void loadGameConfig(File): void recivedViewAssetsResponse(ViewAssetsResponse): void entry(): void LobbyState receivedGameStart(GameStart): void «interface» MonopolyClient gameLogic: ClientGameLogic config: MonopolyClientConfig enqueue(Runnable): void MonopolyClientConfig map: File «interface» ServerConnection connected: boolean connect(): void disconnect(): void WaitForTurnState turn: boolean recivedNextPlayerTurn(NextPlayerTurn): void create 1 clientSender 1 1 state 1 1 logic 1 create create create create
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Klassendiagramme/model.game.server.svg b/uploads/Implementierungsphase/Klassendiagramme/model.game.server_V1.0.svg
similarity index 100%
rename from uploads/Implementierungsphase/Klassendiagramme/model.game.server.svg
rename to uploads/Implementierungsphase/Klassendiagramme/model.game.server_V1.0.svg
diff --git a/uploads/Implementierungsphase/Klassendiagramme/model.game.server_V1.1.svg b/uploads/Implementierungsphase/Klassendiagramme/model.game.server_V1.1.svg
new file mode 100644
index 0000000..50ec94d
--- /dev/null
+++ b/uploads/Implementierungsphase/Klassendiagramme/model.game.server_V1.1.svg
@@ -0,0 +1 @@
+ActiveState rollDice(): DiceResult payBail(): void useJailCard(): void Dice rollDice(): int JailState useJailCard(): void rollDice(): DiceResult? payBail(): void Player propertyFields: List<PropertyField> name: String properties: List<Integer> handler: PlayerHandler numHouses: int accountBalance: int numHotels: int figure: String numJailCard: int fieldID: int state: PlayerState id: int earnMoney(int): void addProperty(Integer): void getNumProp(PropertyField): int setPosition(int): int setActive(): void bankrupt(): void visit(GulagField): Void setPositionWithMoney(int): int visit(TestStreckeField): Void addJailCard(): void visit(GoField): Void pay(int): void move(int): int sendNotification(String, Player, int): void visit(GateField): Void rollDice(): DiceResult useJailCard(): void removeProperty(Integer): void canFinishTurn(): boolean visit(WacheField): Void visit(FineField): Void removeJailCard(): void visit(BuildingProperty): Void payBail(): void buyProperty(PropertyField): void getColor(int): PlayerColor? jail(): void visit(FoodField): Void toString(): String finishTurn(): boolean moveToJail(): void sellProperty(PropertyField): void visit(EventField): Void «enumeration» PlayerColor color: ColorRGBA colorName: String valueOf(String): PlayerColor values(): PlayerColor[] PlayerHandler players: List<Player> logic: ServerGameLogic playerCount: int startBalance: int nextPlayer(): Player setPlayerReady(Player, boolean): void addPlayer(Player): void extraTurn(Player): void getPlayerAtIndex(int): Player removePlayer(Player): void allPlayersReady(): boolean getPlayerById(int): Player randomOrder(): void «interface» PlayerState rollDice(): DiceResult payBail(): void useJailCard(): void ServerGameLogic boardManager: BoardManager deckHelper: DeckHelper state: ServerState received(BuyPropertyResponse, int): void received(TradeResponse, int): void updateAllPlayers(): void received(AlterProperty, int): void executeTrade(Player, Player, Set<PropertyField>, Set<PropertyField>): void received(PlayerReady, int): void received(NotificationAnswer, int): void received(RollDice, int): void assignProperties(Player, Set<Integer>): void send(Player, ServerMessage): void addPlayer(Player): Player buildHouses(Player, Set<Integer>): void addPlayer(int): Player generatePredefinedGameState(): void received(TradeOffer, int): void received(ViewAssetsRequest, int): void getPlayerById(int): Player sendAll(ServerMessage): void received(EndTurn, int): void «interface» ServerSender send(int, ServerMessage): void «enumeration» ServerState valueOf(String): ServerState values(): ServerState[] WaitForTurnState useJailCard(): void payBail(): void rollDice(): DiceResult? create create create 1 handler 1 1 extra 1 1 state 1 create create 1 logic 1 create 1 playerHandler 1 1 serverSender 1 1 state 1
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Klassendiagramme/model.model.svg b/uploads/Implementierungsphase/Klassendiagramme/model.model_V1.0.svg
similarity index 100%
rename from uploads/Implementierungsphase/Klassendiagramme/model.model.svg
rename to uploads/Implementierungsphase/Klassendiagramme/model.model_V1.0.svg
diff --git a/uploads/Implementierungsphase/Klassendiagramme/model.model_V1.1.svg b/uploads/Implementierungsphase/Klassendiagramme/model.model_V1.1.svg
new file mode 100644
index 0000000..df15fdb
--- /dev/null
+++ b/uploads/Implementierungsphase/Klassendiagramme/model.model_V1.1.svg
@@ -0,0 +1 @@
+Board figures: Stream<Figure> width: int height: int items: List<Item> hotels: Stream<Hotel> houses: Stream<House> clear(): void add(Hotel): void getFigure(int): Figure removePlayers(): void add(House): void addItem(Item): void remove(Item): void getItems(Class<T>): Stream<T> getHouse(int, int): House getHotel(int): Hotel notifyListeners(GameEvent): void toString(): String add(Figure): void «interface» FieldVisitor T visit(TestStreckeField): T visit(BuildingProperty): T visit(EventField): T visit(GulagField): T visit(FineField): T visit(FoodField): T visit(GoField): T visit(WacheField): T visit(GateField): T Figure z: float type: String y: float pos: Vector3f x: float rotation: Rotation currentFieldID: int rot: Rotation id: int toString(): String accept(VoidVisitor): void accept(Visitor<T>): T calculateFieldPosition(int): Vector3f moveTo(int): void moveTo(Vector3f): void Hotel pos: Vector3f rot: Rotation fieldID: int accept(VoidVisitor): void accept(Visitor<T>): T House stage: int alignment: Quaternion fieldID: int pos: Vector3f rot: Rotation accept(VoidVisitor): void accept(Visitor<T>): T IntPoint x: int y: int equals(Object): boolean toString(): String hashCode(): int «interface» IntPosition x: int y: int «interface» Item pos: Vector3f rot: Rotation accept(Visitor<T>): T accept(VoidVisitor): void LimitedLinkedList E maxSize: int add(E): boolean «enumeration» Rotation radians(): float rotateByRadians(float): Rotation values(): Rotation[] valueOf(String): Rotation rotateCounterclockwise(): Rotation closestToRadians(float): Rotation toQuaternion(): Quaternion rotateClockwise(): Rotation TradeHandler offeredJailCards: int requestedProperties: Set<PropertyField> offeredProperties: Set<PropertyField> offeredAmount: int receiver: Player requestedAmount: int sender: Player requestedJailCards: int «interface» Visitor T visit(Hotel): T visit(Figure): T visit(House): T «interface» VoidVisitor visit(Hotel): void visit(Figure): void visit(House): void 1 rot 1
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Klassendiagramme/model.svg b/uploads/Implementierungsphase/Klassendiagramme/model_V1.0.svg
similarity index 100%
rename from uploads/Implementierungsphase/Klassendiagramme/model.svg
rename to uploads/Implementierungsphase/Klassendiagramme/model_V1.0.svg
diff --git a/uploads/Implementierungsphase/Klassendiagramme/model_V1.1.svg b/uploads/Implementierungsphase/Klassendiagramme/model_V1.1.svg
new file mode 100644
index 0000000..54fde0c
--- /dev/null
+++ b/uploads/Implementierungsphase/Klassendiagramme/model_V1.1.svg
@@ -0,0 +1 @@
+ActiveState turn: boolean rollDice(): DiceResult payBail(): void useJailCard(): void AlterProperty keyword: String properties: Set<Integer> accept(ClientInterpreter, int): void Board figures: Stream<Figure> width: int height: int items: List<Item> hotels: Stream<Hotel> houses: Stream<House> add(House): void removePlayers(): void addItem(Item): void notifyListeners(GameEvent): void add(Hotel): void getFigure(int): Figure getHouse(int, int): House getHotel(int): Hotel clear(): void add(Figure): void toString(): String remove(Item): void getItems(Class<T>): Stream<T> BoardManager board: List<Field> propertiesWithBuildings: List<BuildingProperty> getPropertyFields(List<Integer>): List<PropertyField> getFieldAtIndex(int): Field getIndexOfField(Field): int canBuild(BuildingProperty): boolean canSell(BuildingProperty): boolean createBoard(): List<Field> getFieldByName(String): Field BuildInfo added: boolean id: int accept(ServerInterpreter): void BuildingProperty houses: int allRent: List<Integer> color: FieldColor housePrice: int hotel: int sell(): boolean accept(Player): void calcRent(): int build(): boolean «record» ButtonStatusEvent notifyListener(GameEventListener): void buttonsEnabled(): boolean BuyPropertyRequest accept(ServerInterpreter): void BuyPropertyResponse accept(ClientInterpreter, int): void Card description: String keyword: String accept(DeckHelper, Player): void ClientGameLogic infoText: String boardManager: BoardManager state: ClientState tradeHandler: TradeHandler turn: boolean board: Board playerHandler: PlayerHandler addListener(GameEventListener): void received(TradeReply): void received(JailEvent): void notifyListeners(GameEvent): void received(EventDrawCard): void received(NotificationMessage): void playSound(Sound): void received(GameStart): void send(ClientMessage): void received(PlayerStatusUpdate): void received(TradeRequest): void received(BuyPropertyRequest): void removeListener(GameEventListener): void received(ViewAssetsResponse): void received(NextPlayerTurn): void received(GameOver): void received(BuildInfo): void received(TimeOutWarning): void update(float): void received(DiceResult): void «interface» ClientInterpreter received(BuyPropertyResponse, int): void received(NotificationAnswer, int): void received(AlterProperty, int): void received(PlayerReady, int): void received(RollDice, int): void received(TradeOffer, int): void received(ViewAssetsRequest, int): void received(EndTurn, int): void received(TradeResponse, int): void ClientLogicTest testOpenGameMenuWithESC(): void setUp(): void testOpenSettingsFromMenu(): void testStartApplication(): void testNavigateToPlayOption(): void testExitApplicationFromMenu(): void testOpenStartMenu(): void ClientMessage accept(ClientInterpreter, int): void «interface» ClientSender send(ClientMessage): void ClientState name: String turn: boolean update(float): void recivedViewAssetsResponse(ViewAssetsResponse): void receivedGameStart(GameStart): void recivedPlayerStatusUpdate(PlayerStatusUpdate): void recivedNextPlayerTurn(NextPlayerTurn): void recivedNotificationMessage(NotificationMessage): void loadGameConfig(File): void entry(): void «record» ClientStateEvent notifyListener(GameEventListener): void DeckHelper spoTesten(Player): void partyGewinn(Player): void jodelEispenis(Player): void drawCard(): Card partyEskaliert(Player): void rueckstuferantrag(Player): void befoerderung(Player): void dienstKfzBlitzer(Player): void jahresabschlussantreten(Player): void bergmarsch(Player): void blutspendenSonderurlaub(Player): void dienstfuehrerschein(Player): void spoparty(Player): void spendierhosenUnibar(Player): void vpEinstandsparty(Player): void verkaufenVersicherungen(Player): void schimmelGulak(Player): void naechstesMonatsgehalt(Player): void inventurHaeuserHotels(Player): void pubquiz(Player): void visit(Card, Player): void lobChef(Player): void hausfeierSturz(Player): void igfPadubrin(Player): void dienstreiseLourd(Player): void geldbeutelOktoberfest(Player): void pruefungsphaseKrank(Player): void kranzExmatrikulation(Player): void maibockOrganisiert(Player): void dienstsportGym(Player): void partynachtGulak(Player): void gulakFrei(Player): void shuffle(): void antretenVerschlafen(Player): void Dice rollDice(): int DiceResult rollResult: List<Integer> doublets: boolean calcTotal(): int accept(ServerInterpreter): void «record» DiceRollEvent notifyListener(GameEventListener): void b(): int a(): int EndTurn accept(ClientInterpreter, int): void «record» EventCardEvent description(): String notifyListener(GameEventListener): void EventDrawCard cardDescription: String accept(ServerInterpreter): void EventField accept(Player): void Field name: String id: int accept(Player): void «enumeration» FieldColor color: ColorRGBA values(): FieldColor[] valueOf(String): FieldColor «interface» FieldVisitor T visit(FoodField): T visit(TestStreckeField): T visit(GateField): T visit(WacheField): T visit(GoField): T visit(BuildingProperty): T visit(EventField): T visit(GulagField): T visit(FineField): T Figure z: float type: String y: float pos: Vector3f x: float rotation: Rotation currentFieldID: int rot: Rotation id: int moveTo(Vector3f): void accept(Visitor<T>): T moveTo(int): void calculateFieldPosition(int): Vector3f toString(): String accept(VoidVisitor): void FineField fine: int accept(Player): void FoodField calcRent(): int accept(Player): void «interface» GameEvent notifyListener(GameEventListener): void «interface» GameEventBroker notifyListeners(GameEvent): void «interface» GameEventListener receivedEvent(InfoTextEvent): void receivedEvent(SoundEvent): void receivedEvent(EventCardEvent): void receivedEvent(ItemRemovedEvent): void receivedEvent(ClientStateEvent): void receivedEvent(ButtonStatusEvent): void receivedEvent(ItemAddedEvent): void receivedEvent(UpdatePlayerView): void receivedEvent(DiceRollEvent): void receivedEvent(PopUpEvent): void GameOver isWinner: boolean accept(ServerInterpreter): void GameStart playerHandler: PlayerHandler accept(ServerInterpreter): void GateField calcRent(): int accept(Player): void GoField accept(Player): void GulagField bailCost: int accept(Player): void Hotel pos: Vector3f rot: Rotation fieldID: int accept(Visitor<T>): T accept(VoidVisitor): void House stage: int alignment: Quaternion fieldID: int pos: Vector3f rot: Rotation accept(Visitor<T>): T accept(VoidVisitor): void «record» InfoTextEvent notifyListener(GameEventListener): void key(): String IntPoint x: int y: int equals(Object): boolean hashCode(): int toString(): String «interface» IntPosition x: int y: int «interface» Item pos: Vector3f rot: Rotation accept(Visitor<T>): T accept(VoidVisitor): void «record» ItemAddedEvent item(): Item notifyListener(GameEventListener): void board(): Board «record» ItemRemovedEvent item(): Item notifyListener(GameEventListener): void board(): Board JailEvent goingToJail: boolean accept(ServerInterpreter): void JailState useJailCard(): void rollDice(): DiceResult payBail(): void LimitedLinkedList E maxSize: int add(E): boolean LobbyState receivedGameStart(GameStart): void «interface» MonopolyClient gameLogic: ClientGameLogic config: MonopolyClientConfig enqueue(Runnable): void MonopolyClientConfig map: File MonopolyConfig port: int mapHeight: int mapWidth: int NextPlayerTurn accept(ServerInterpreter): void NotificationAnswer keyword: String accept(ClientInterpreter, int): void NotificationMessage rentAmount: int rentOwnerId: String keyWord: String rentOwner: String accept(ServerInterpreter): void Player propertyFields: List<PropertyField> name: String properties: List<Integer> handler: PlayerHandler numHouses: int accountBalance: int numHotels: int figure: String numJailCard: int fieldID: int state: PlayerState id: int setPositionWithMoney(int): int visit(FoodField): Void finishTurn(): boolean move(int): int payBail(): void moveToJail(): void visit(EventField): Void jail(): void visit(BuildingProperty): Void buyProperty(PropertyField): void getNumProp(PropertyField): int pay(int): void toString(): String sendNotification(String, Player, int): void visit(GateField): Void addProperty(Integer): void rollDice(): DiceResult visit(WacheField): Void setPosition(int): int visit(GoField): Void sellProperty(PropertyField): void removeProperty(Integer): void useJailCard(): void visit(TestStreckeField): Void bankrupt(): void visit(FineField): Void getColor(int): PlayerColor earnMoney(int): void setActive(): void visit(GulagField): Void canFinishTurn(): boolean removeJailCard(): void addJailCard(): void «enumeration» PlayerColor color: ColorRGBA colorName: String valueOf(String): PlayerColor values(): PlayerColor[] PlayerHandler players: List<Player> logic: ServerGameLogic playerCount: int startBalance: int addPlayer(Player): void nextPlayer(): Player randomOrder(): void setPlayerReady(Player, boolean): void extraTurn(Player): void allPlayersReady(): boolean removePlayer(Player): void getPlayerById(int): Player getPlayerAtIndex(int): Player PlayerReady figure: String name: String startMoney: int isReady: boolean accept(ClientInterpreter, int): void «interface» PlayerState payBail(): void rollDice(): DiceResult useJailCard(): void PlayerStatusUpdate playerHandler: PlayerHandler accept(ServerInterpreter): void PropertyField hypo: int owner: Player price: int mortgaged: boolean calcRent(): int Resources lookup(String): String RollDice accept(ClientInterpreter, int): void «enumeration» Rotation valueOf(String): Rotation toQuaternion(): Quaternion rotateClockwise(): Rotation rotateCounterclockwise(): Rotation radians(): float closestToRadians(float): Rotation rotateByRadians(float): Rotation values(): Rotation[] «interface» ServerConnection connected: boolean connect(): void disconnect(): void ServerGameLogic boardManager: BoardManager deckHelper: DeckHelper state: ServerState received(RollDice, int): void addPlayer(Player): Player received(TradeResponse, int): void send(Player, ServerMessage): void sendAll(ServerMessage): void received(TradeOffer, int): void received(PlayerReady, int): void executeTrade(Player, Player, Set<PropertyField>, Set<PropertyField>): void received(BuyPropertyResponse, int): void received(EndTurn, int): void received(ViewAssetsRequest, int): void received(NotificationAnswer, int): void buildHouses(Player, Set<Integer>): void received(AlterProperty, int): void generatePredefinedGameState(): void addPlayer(int): Player updateAllPlayers(): void getPlayerById(int): Player assignProperties(Player, Set<Integer>): void ServerGameLogicTest testReceivePenaltyPayment(): void testBefoerderungCard(): void testUseGulagFreeCardToExit(): void testTriggerEventTile(): void testDeductGulagFreeCard(): void testNamenschildCard(): void testCardPurchaseFailed(): void setUp(): void testGoToGulag(): void testBlutspenderCard(): void testPartyeskalationCard(): void testSumDiceResults(): void testJodelCard(): void testSpopartyCard(): void testBekanntschaftCard(): void testFailUseGulagFreeCardToExit(): void testBlitzerCard(): void testMozzarellaCard(): void testPubquizCard(): void testPayTaxesWithMock(): void testMovePlayer(): void testPartyorganisatorCard(): void testUseGetOutOfGulagCard(): void testAntretenVerschlafenCard(): void testKrankInPruefungsphaseCard(): void testFailRollToExitGulag(): void testTakeMortgage(): void testDrawEventCard(): void testMaibockCard(): void testJahresabschlussantretenCard(): void testDetermineTurnOrder(): void testRollDice(): void testBergmarschCard(): void testRollToExitGulag(): void testPayToExitGulag(): void testVorbildlichesVerhaltenCard(): void testExmatrikulationCard(): void testBuyProperty(): void testVertrauenspersonCard(): void testPenaltyPayment(): void testLeaveGulag(): void testRueckstuferantragCard(): void testSwitchTurnToNextPlayer(): void testBankruptcyByPlayer(): void testVersicherungenCard(): void testBuildHotel(): void testMaxBuildHouses(): void testEndTurn(): void testGenerationDice(): void testDeclareBankruptcy(): void testLourdesCard(): void testGoToGulagCard(): void testSpendierhosenCard(): void testBuyCard(): void testOktoberfestCard(): void testDienstfuehrerscheinCard(): void testDoubleRoll(): void testPayBackMortgage(): void testPayRent(): void testDetectDoubleForAllPossibleDoubles(): void testZieheVorUeberLosCard(): void testTripleDoubleGulag(): void testTriggerGulagTransfer(): void testRentPaymentFailed(): void «interface» ServerInterpreter received(NextPlayerTurn): void received(PlayerStatusUpdate): void received(NotificationMessage): void received(JailEvent): void received(TimeOutWarning): void received(BuyPropertyRequest): void received(GameStart): void received(DiceResult): void received(ViewAssetsResponse): void received(TradeReply): void received(BuildInfo): void received(EventDrawCard): void received(TradeRequest): void received(GameOver): void ServerMessage accept(ServerInterpreter): void «interface» ServerSender send(int, ServerMessage): void «enumeration» ServerState valueOf(String): ServerState values(): ServerState[] «enumeration» Sound valueOf(String): Sound values(): Sound[] «record» SoundEvent sound(): Sound notifyListener(GameEventListener): void TestStreckeField accept(Player): void addMoney(int): void collectMoney(): int TimeOutWarning remainingTime: int accept(ServerInterpreter): void TradeHandler offeredJailCards: int requestedProperties: Set<PropertyField> offeredProperties: Set<PropertyField> offeredAmount: int receiver: Player requestedAmount: int sender: Player requestedJailCards: int TradeOffer tradeHandler: TradeHandler accept(ClientInterpreter, int): void TradeReply accepted: boolean tradeHandler: TradeHandler accept(ServerInterpreter): void TradeRequest tradeHandler: TradeHandler accept(ServerInterpreter): void TradeResponse accepted: boolean tradeHandler: TradeHandler accept(ClientInterpreter, int): void «record» UpdatePlayerView notifyListener(GameEventListener): void ViewAssetsRequest accept(ClientInterpreter, int): void ViewAssetsResponse accept(ServerInterpreter): void getboard(): BoardManager «interface» Visitor T visit(Hotel): T visit(House): T visit(Figure): T «interface» VoidVisitor visit(Figure): void visit(Hotel): void visit(House): void WacheField accept(Player): void WaitForTurnState turn: boolean recivedNextPlayerTurn(NextPlayerTurn): void payBail(): void rollDice(): DiceResult useJailCard(): void build metaClass: MetaClass run(): Object getProperty(String): Object main(String[]): void setProperty(String, Object): void invokeMethod(String, Object): Object 1 eventBroker 1 1 color 1 1 board 1 1 boardManager 1 1 clientSender 1 1 state 1 1 logic 1 1 playerHandler 1 1 tradeHandler 1 1 rot 1 1 playerHandler 1 1 rollResult 1 1 handler 1 1 extra 1 1 state 1 1 owner 1 1 logic 1 1 playerHandler 1 1 playerHandler 1 1 boardManager 1 1 deckHelper 1 1 config 1 1 serverSender 1 1 state 1 create create 1 figure 1 create 1 player 1 create 1 playerHandler 1 1 property 1 create 1 serverGameLogic 1 1 sender 1 1 tradehandler 1 1 tradeHandler 1 1 tradehandler 1 1 tradeHandler 1 1 board 1
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Klassendiagramme/notification.svg b/uploads/Implementierungsphase/Klassendiagramme/notification_V1.0.svg
similarity index 100%
rename from uploads/Implementierungsphase/Klassendiagramme/notification.svg
rename to uploads/Implementierungsphase/Klassendiagramme/notification_V1.0.svg
diff --git a/uploads/Implementierungsphase/Klassendiagramme/notification_V1.1.svg b/uploads/Implementierungsphase/Klassendiagramme/notification_V1.1.svg
new file mode 100644
index 0000000..26282ac
--- /dev/null
+++ b/uploads/Implementierungsphase/Klassendiagramme/notification_V1.1.svg
@@ -0,0 +1 @@
+«record» ButtonStatusEvent notifyListener(GameEventListener): void buttonsEnabled(): boolean «record» ClientStateEvent notifyListener(GameEventListener): void «record» DiceRollEvent a(): int notifyListener(GameEventListener): void b(): int «record» EventCardEvent notifyListener(GameEventListener): void description(): String «interface» GameEvent notifyListener(GameEventListener): void «interface» GameEventBroker notifyListeners(GameEvent): void «interface» GameEventListener receivedEvent(SoundEvent): void receivedEvent(PopUpEvent): void receivedEvent(ButtonStatusEvent): void receivedEvent(ClientStateEvent): void receivedEvent(EventCardEvent): void receivedEvent(DiceRollEvent): void receivedEvent(InfoTextEvent): void receivedEvent(UpdatePlayerView): void receivedEvent(ItemAddedEvent): void receivedEvent(ItemRemovedEvent): void «record» InfoTextEvent notifyListener(GameEventListener): void key(): String «record» ItemAddedEvent notifyListener(GameEventListener): void board(): Board item(): Item «record» ItemRemovedEvent item(): Item notifyListener(GameEventListener): void board(): Board «enumeration» Sound valueOf(String): Sound values(): Sound[] «record» SoundEvent notifyListener(GameEventListener): void sound(): Sound «record» UpdatePlayerView notifyListener(GameEventListener): void 1 sound 1
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Klassendiagramme/serverMessage.svg b/uploads/Implementierungsphase/Klassendiagramme/serverMessage_V1.0.svg
similarity index 100%
rename from uploads/Implementierungsphase/Klassendiagramme/serverMessage.svg
rename to uploads/Implementierungsphase/Klassendiagramme/serverMessage_V1.0.svg
diff --git a/uploads/Implementierungsphase/Klassendiagramme/serverMessage_V1.1.svg b/uploads/Implementierungsphase/Klassendiagramme/serverMessage_V1.1.svg
new file mode 100644
index 0000000..724f309
--- /dev/null
+++ b/uploads/Implementierungsphase/Klassendiagramme/serverMessage_V1.1.svg
@@ -0,0 +1 @@
+BuildInfo added: boolean id: int accept(ServerInterpreter): void BuyPropertyRequest accept(ServerInterpreter): void DiceResult rollResult: List<Integer> doublets: boolean calcTotal(): int accept(ServerInterpreter): void EventDrawCard cardDescription: String accept(ServerInterpreter): void GameOver isWinner: boolean accept(ServerInterpreter): void GameStart playerHandler: PlayerHandler accept(ServerInterpreter): void JailEvent goingToJail: boolean accept(ServerInterpreter): void NextPlayerTurn accept(ServerInterpreter): void NotificationMessage rentAmount: int rentOwnerId: String keyWord: String rentOwner: String accept(ServerInterpreter): void PlayerStatusUpdate playerHandler: PlayerHandler accept(ServerInterpreter): void «interface» ServerInterpreter received(GameStart): void received(TimeOutWarning): void received(EventDrawCard): void received(NextPlayerTurn): void received(BuildInfo): void received(TradeReply): void received(ViewAssetsResponse): void received(NotificationMessage): void received(JailEvent): void received(GameOver): void received(BuyPropertyRequest): void received(PlayerStatusUpdate): void received(TradeRequest): void received(DiceResult): void ServerMessage accept(ServerInterpreter): void TimeOutWarning remainingTime: int accept(ServerInterpreter): void TradeReply accepted: boolean tradeHandler: TradeHandler accept(ServerInterpreter): void TradeRequest tradeHandler: TradeHandler accept(ServerInterpreter): void ViewAssetsResponse getboard(): BoardManager accept(ServerInterpreter): void
\ No newline at end of file
diff --git a/uploads/Implementierungsphase/Paketdiagramme/packages_V2.1.svg b/uploads/Implementierungsphase/Paketdiagramme/packages_V2.1.svg
new file mode 100644
index 0000000..6743615
--- /dev/null
+++ b/uploads/Implementierungsphase/Paketdiagramme/packages_V2.1.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file