diff --git a/Documentation/DiagrammeUML/Components/Diagram_Components.png b/Documentation/DiagrammeUML/Components/Diagram_Components.png index f71b64a..baca3b2 100644 Binary files a/Documentation/DiagrammeUML/Components/Diagram_Components.png and b/Documentation/DiagrammeUML/Components/Diagram_Components.png differ diff --git a/Documentation/DiagrammeUML/Components/Diagram_Components.puml b/Documentation/DiagrammeUML/Components/Diagram_Components.puml index 33a482a..0752310 100644 --- a/Documentation/DiagrammeUML/Components/Diagram_Components.puml +++ b/Documentation/DiagrammeUML/Components/Diagram_Components.puml @@ -1,16 +1,18 @@ -@startuml -class fr.monkhanny.dorfromantik.components.Title { -+ <> Title(String,float) -+ <> Title(String,float,Color) -+ void updateTitleFont(float) +@startuml components + +!theme plain +top to bottom direction +skinparam linetype ortho + +class Button { + + Button(): + + createCustomIconButton(String): JButton + + createCustomTextButton(String, float): JButton +} +class Title { + + Title(String, float): + + Title(String, float, Color): + + updateTitleFont(float): void } -class fr.monkhanny.dorfromantik.components.Button { -+ {static} JButton createCustomTextButton(String,float) -+ {static} JButton createCustomIconButton(String) -} - - - -fr.monkhanny.dorfromantik.components.JLabel <|-- fr.monkhanny.dorfromantik.components.Title -@enduml \ No newline at end of file +@enduml diff --git a/Documentation/DiagrammeUML/Components/Diagram_Components.svg b/Documentation/DiagrammeUML/Components/Diagram_Components.svg new file mode 100644 index 0000000..580a3ab --- /dev/null +++ b/Documentation/DiagrammeUML/Components/Diagram_Components.svg @@ -0,0 +1,28 @@ + + +package + + + +Button + +Button + ++ Button() : + ++ createCustomIconButton(String) : JButton + + createCustomTextButton(String, float) : JButton + + + +Title + +Title + ++ Title(String, float) : + + Title(String, float, Color) : + ++ updateTitleFont(float) : void + + + \ No newline at end of file diff --git a/Documentation/DiagrammeUML/Controller/Diagram_controller.png b/Documentation/DiagrammeUML/Controller/Diagram_controller.png index 9c8961c..de24cc0 100644 Binary files a/Documentation/DiagrammeUML/Controller/Diagram_controller.png and b/Documentation/DiagrammeUML/Controller/Diagram_controller.png differ diff --git a/Documentation/DiagrammeUML/Controller/Diagram_controller.puml b/Documentation/DiagrammeUML/Controller/Diagram_controller.puml index 9579bc2..2039531 100644 --- a/Documentation/DiagrammeUML/Controller/Diagram_controller.puml +++ b/Documentation/DiagrammeUML/Controller/Diagram_controller.puml @@ -1,97 +1,59 @@ -@startuml -class fr.monkhanny.dorfromantik.controller.MainMenuButtonController { -- MainMenu mainMenu -- JFrame settingsFrame -- JFrame howToPlayFrame -- JFrame gameModeFrame -- JFrame gameFrame -+ <> MainMenuButtonController(MainMenu,JFrame,JFrame,JFrame,JFrame) -- void configureFrame(JFrame) -+ void actionPerformed(ActionEvent) -+ void startNewGame() -+ void showHowToPlay() -- void exitGame() -- void openSettings() -- void adjustFrameDisplay(JFrame) +@startuml controller + +!theme plain +top to bottom direction +skinparam linetype ortho + +class ButtonHoverAnimationListener { + + ButtonHoverAnimationListener(boolean, JButton, Color, Font): + + actionPerformed(ActionEvent): void +} +class ButtonHoverListener { + + ButtonHoverListener(ButtonHoverAnimator): + + mouseEntered(MouseEvent): void + + mouseExited(MouseEvent): void +} +class GameModeController { + + GameModeController(JFrame, MainMenu, JFrame): + - gameModeSelectionPanel: GameModeSelectionPanel + - isDynamicSeries(String): boolean + - addCustomSeedToDatabase(long): void + - getSeedFromDatabaseByName(String): long + + actionPerformed(ActionEvent): void + - startGame(long): void + gameModeBoard: Board + gameModeSelectionPanel: GameModeSelectionPanel +} +class MainMenuButtonController { + + MainMenuButtonController(MainMenu, JFrame, JFrame, JFrame, JFrame): + - adjustFrameDisplay(JFrame): void + + actionPerformed(ActionEvent): void + - openSettings(): void + + startNewGame(): void + + showHowToPlay(): void + - configureFrame(JFrame): void + - exitGame(): void +} +class MainMenuMouseController { + + MainMenuMouseController(ButtonPanel): + - initMouseListeners(): void + - addButtonHoverListener(JButton): void +} +class MainMenuResizeController { + + MainMenuResizeController(MainMenu): + - addComponentListener(): void +} +class MainMenuResizeHandler { + + MainMenuResizeHandler(MainMenu): + + componentResized(ComponentEvent): void +} +class TutorialController { + + TutorialController(MainMenu, JFrame): + - tutorialPanel: TutorialPanel + tutorialPanel: JPanel } - -class fr.monkhanny.dorfromantik.controller.ButtonHoverListener { -- ButtonHoverAnimator animator -+ <> ButtonHoverListener(ButtonHoverAnimator) -+ void mouseEntered(MouseEvent) -+ void mouseExited(MouseEvent) -} - - -class fr.monkhanny.dorfromantik.controller.MainMenuMouseController { -- ButtonPanel buttonPanel -+ <> MainMenuMouseController(ButtonPanel) -- void initMouseListeners() -- void addButtonHoverListener(JButton) -} - - -class fr.monkhanny.dorfromantik.controller.TutorialController { -- TutorialPanel tutorialPanel -- MainMenu mainMenu -- JFrame tutorialFrame -+ <> TutorialController(MainMenu,JFrame) -+ JPanel getTutorialPanel() -} - - -class fr.monkhanny.dorfromantik.controller.GameModeController { -- GameModeSelectionPanel gameModeSelectionPanel -- JFrame gameFrame -- MainMenu mainMenu -- JFrame gameModeFrame -- Database database -- {static} Board board -+ <> GameModeController(JFrame,MainMenu,JFrame) -+ void setGameModeSelectionPanel(GameModeSelectionPanel) -+ void actionPerformed(ActionEvent) -- long getSeedFromDatabaseByName(String) -- void addCustomSeedToDatabase(long) -- boolean isDynamicSeries(String) -- void startGame(long) -+ {static} Board getGameModeBoard() -} - - -class fr.monkhanny.dorfromantik.controller.MainMenuResizeHandler { -- MainMenu mainMenu -+ <> MainMenuResizeHandler(MainMenu) -+ void componentResized(ComponentEvent) -} - - -class fr.monkhanny.dorfromantik.controller.ButtonHoverAnimationListener { -- int step -- float scaleIncrement -- boolean entering -- JButton button -- Color originalColor -- Font originalFont -- float currentScale -+ <> ButtonHoverAnimationListener(boolean,JButton,Color,Font) -+ void actionPerformed(ActionEvent) -} - - -class fr.monkhanny.dorfromantik.controller.MainMenuResizeController { -- MainMenu mainMenu -- MainMenuResizeHandler resizeHandler -+ <> MainMenuResizeController(MainMenu) -- void addComponentListener() -} - - - - -java.awt.event.ActionListener <|.. fr.monkhanny.dorfromantik.controller.MainMenuButtonController -java.awt.event.MouseAdapter <|-- fr.monkhanny.dorfromantik.controller.ButtonHoverListener -java.awt.event.ActionListener <|.. fr.monkhanny.dorfromantik.controller.GameModeController -java.awt.event.ComponentAdapter <|-- fr.monkhanny.dorfromantik.controller.MainMenuResizeHandler -java.awt.event.ActionListener <|.. fr.monkhanny.dorfromantik.controller.ButtonHoverAnimationListener -@enduml \ No newline at end of file +MainMenuMouseController -[#595959,dashed]-> ButtonHoverListener : "«create»" +MainMenuResizeController "1" *-[#595959,plain]-> "resizeHandler\n1" MainMenuResizeHandler +MainMenuResizeController -[#595959,dashed]-> MainMenuResizeHandler : "«create»" +@enduml diff --git a/Documentation/DiagrammeUML/Controller/Diagram_controller.svg b/Documentation/DiagrammeUML/Controller/Diagram_controller.svg new file mode 100644 index 0000000..2f16501 --- /dev/null +++ b/Documentation/DiagrammeUML/Controller/Diagram_controller.svg @@ -0,0 +1,129 @@ + + +package + + + +ButtonHoverAnimationListener + +ButtonHoverAnimationListener + ++ ButtonHoverAnimationListener(boolean, JButton, Color, Font) : + ++ actionPerformed(ActionEvent) : void + + + +ButtonHoverListener + +ButtonHoverListener + ++ ButtonHoverListener(ButtonHoverAnimator) : + ++ mouseEntered(MouseEvent) : void + + mouseExited(MouseEvent) : void + + + +GameModeController + +GameModeController + ++ GameModeController(JFrame, MainMenu, JFrame) : + +- gameModeSelectionPanel : GameModeSelectionPanel + +- isDynamicSeries(String) : boolean + - addCustomSeedToDatabase(long) : void + - getSeedFromDatabaseByName(String) : long + + actionPerformed(ActionEvent) : void + - startGame(long) : void + +gameModeBoard : Board + gameModeSelectionPanel : GameModeSelectionPanel + + + +MainMenuButtonController + +MainMenuButtonController + ++ MainMenuButtonController(MainMenu, JFrame, JFrame, JFrame, JFrame) : + +- adjustFrameDisplay(JFrame) : void + + actionPerformed(ActionEvent) : void + - openSettings() : void + + startNewGame() : void + + showHowToPlay() : void + - configureFrame(JFrame) : void + - exitGame() : void + + + +MainMenuMouseController + +MainMenuMouseController + ++ MainMenuMouseController(ButtonPanel) : + +- initMouseListeners() : void + - addButtonHoverListener(JButton) : void + + + +MainMenuMouseController->ButtonHoverListener + + +«create» + + + +MainMenuResizeController + +MainMenuResizeController + ++ MainMenuResizeController(MainMenu) : + +- addComponentListener() : void + + + +MainMenuResizeHandler + +MainMenuResizeHandler + ++ MainMenuResizeHandler(MainMenu) : + ++ componentResized(ComponentEvent) : void + + + +MainMenuResizeController->MainMenuResizeHandler + + + +resizeHandler +1 +1 + + + +MainMenuResizeController->MainMenuResizeHandler + + +«create» + + + +TutorialController + +TutorialController + ++ TutorialController(MainMenu, JFrame) : + +- tutorialPanel : TutorialPanel + +tutorialPanel : JPanel + + + \ No newline at end of file diff --git a/Documentation/DiagrammeUML/Enums/Diagram_enums.png b/Documentation/DiagrammeUML/Enums/Diagram_enums.png index 63f4b30..681d345 100644 Binary files a/Documentation/DiagrammeUML/Enums/Diagram_enums.png and b/Documentation/DiagrammeUML/Enums/Diagram_enums.png differ diff --git a/Documentation/DiagrammeUML/Enums/Diagram_enums.puml b/Documentation/DiagrammeUML/Enums/Diagram_enums.puml index 53e6ba5..e65b6df 100644 --- a/Documentation/DiagrammeUML/Enums/Diagram_enums.puml +++ b/Documentation/DiagrammeUML/Enums/Diagram_enums.puml @@ -1,58 +1,45 @@ -@startuml -enum fr.monkhanny.dorfromantik.enums.TileOrientation { -+ NORTH -+ NORTH_EAST -+ SOUTH_EAST -+ SOUTH -+ SOUTH_WEST -+ NORTH_WEST -+ TileOrientation oppositeOrientation() +@startuml enums + +!theme plain +top to bottom direction +skinparam linetype ortho + +enum Biome << enumeration >> { + + Biome(): + + values(): Biome[] + + valueOf(String): Biome + biomeColors: Color[] +} +enum Fonts << enumeration >> { + + Fonts(): + + getFont(float): Font + + valueOf(String): Fonts + + values(): Fonts[] + fontPath: String +} +enum Images << enumeration >> { + + Images(): + + values(): Images[] + + valueOf(String): Images + imagePath: String +} +enum Musics << enumeration >> { + + Musics(): + + values(): Musics[] + + valueOf(String): Musics + soundsPath: String +} +enum Sounds << enumeration >> { + + Sounds(): + + values(): Sounds[] + + valueOf(String): Sounds + soundsPath: String +} +enum TileOrientation << enumeration >> { + + TileOrientation(): + + oppositeOrientation(): TileOrientation + + valueOf(String): TileOrientation + + values(): TileOrientation[] } - -enum fr.monkhanny.dorfromantik.enums.Biome { -+ SEA -+ FIELD -+ PRE -+ FOREST -+ MOUNTAIN -+ Color[] getBiomeColors() -} - - -enum fr.monkhanny.dorfromantik.enums.Fonts { -+ TITLE -+ BUTTON -+ SCORE -+ String getFontPath() -+ Font getFont(float) -} - - -enum fr.monkhanny.dorfromantik.enums.Sounds { -+ SOUNDS1 -+ SOUNDS2 -+ String getSoundsPath() -} - - -enum fr.monkhanny.dorfromantik.enums.Images { -+ SETTINGS_ICON -+ EXIT_ICON -+ TUTORIAL_GIF1 -+ TUTORIAL_GIF2 -+ TUTORIAL_GIF3 -+ TUTORIAL_GIF4 -+ TUTORIAL_GIF5 -+ TUTORIAL_GIF6 -+ String getImagePath() -} - - -enum fr.monkhanny.dorfromantik.enums.Musics { -+ MAIN_MENU_MUSIC -+ String getSoundsPath() -} - - -@enduml \ No newline at end of file +@enduml diff --git a/Documentation/DiagrammeUML/Enums/Diagram_enums.svg b/Documentation/DiagrammeUML/Enums/Diagram_enums.svg new file mode 100644 index 0000000..d731c50 --- /dev/null +++ b/Documentation/DiagrammeUML/Enums/Diagram_enums.svg @@ -0,0 +1,90 @@ + + +package + + + +Biome + +<<enumeration>> +Biome + ++ Biome() : + ++ values() : Biome[] + + valueOf(String) : Biome + +biomeColors : Color[] + + + +Fonts + +<<enumeration>> +Fonts + ++ Fonts() : + ++ getFont(float) : Font + + valueOf(String) : Fonts + + values() : Fonts[] + +fontPath : String + + + +Images + +<<enumeration>> +Images + ++ Images() : + ++ values() : Images[] + + valueOf(String) : Images + +imagePath : String + + + +Musics + +<<enumeration>> +Musics + ++ Musics() : + ++ values() : Musics[] + + valueOf(String) : Musics + +soundsPath : String + + + +Sounds + +<<enumeration>> +Sounds + ++ Sounds() : + ++ values() : Sounds[] + + valueOf(String) : Sounds + +soundsPath : String + + + +TileOrientation + +<<enumeration>> +TileOrientation + ++ TileOrientation() : + ++ oppositeOrientation() : TileOrientation + + valueOf(String) : TileOrientation + + values() : TileOrientation[] + + + \ No newline at end of file diff --git a/Documentation/DiagrammeUML/GUI/Diagram_GUI.png b/Documentation/DiagrammeUML/GUI/Diagram_GUI.png index f3411bb..7d31256 100644 Binary files a/Documentation/DiagrammeUML/GUI/Diagram_GUI.png and b/Documentation/DiagrammeUML/GUI/Diagram_GUI.png differ diff --git a/Documentation/DiagrammeUML/GUI/Diagram_GUI.puml b/Documentation/DiagrammeUML/GUI/Diagram_GUI.puml index 05db353..1b111e3 100644 --- a/Documentation/DiagrammeUML/GUI/Diagram_GUI.puml +++ b/Documentation/DiagrammeUML/GUI/Diagram_GUI.puml @@ -1,206 +1,141 @@ -@startuml -class fr.monkhanny.dorfromantik.gui.TutorialPanel { -- List steps -- int currentStepIndex -- Title title -- JLabel stepText -- JLabel stepImage -- JButton nextButton -- JButton prevButton -- MainMenu mainMenu -- JFrame tutorialFrame -+ <> TutorialPanel(List,MainMenu,JFrame) -# void paintComponent(Graphics) -- void updateStepDisplay() -- void styleButton(JButton) -- void showPreviousStep() -- void showNextStep() -- JButton createReturnButtonWithIcon() -- String addLineBreaks(String,int) +@startuml gui +!theme plain +top to bottom direction +skinparam linetype ortho + +class BarChartPanel { + + BarChartPanel(List, int, JPanel): + # paintComponent(Graphics): void +} +class ButtonHoverAnimator { + + ButtonHoverAnimator(JButton): + + startAnimation(boolean): void + + updateOriginalFont(float): void +} +class ButtonPanel { + + ButtonPanel(float): + - howToPlayButton: JButton + - exitButton: JButton + - newGameButton: JButton + - settingsButton: JButton + + updateButtonFonts(int): void + howToPlayButton: JButton + exitButton: JButton + buttons: List + settingsButton: JButton + newGameButton: JButton +} +class GameControlsMenu { + + GameControlsMenu(): + - createPanel(String, String): JPanel + - loadIcon(String): ImageIcon + - createPanelWithMultipleIcons(String, String[]): JPanel + + toggleVisibility(): void + controlsMenuVisible: boolean +} +class GameModeSelectionPanel { + + GameModeSelectionPanel(ActionListener, JFrame, MainMenu): + - currentPage: int + - createTopPanel(JFrame, MainMenu): JPanel + - createDateFilterPanel(): JPanel + - createSeedPanel(ActionListener): JPanel + - stylizeDateSpinner(JSpinner): void + - createPaginationPanel(): JPanel + - createReturnButtonWithIcon(JFrame, MainMenu): JButton + - createGameModeButton(String, ActionListener): JButton + + loadSeriesForCurrentPage(): void + - createMainPanel(): JPanel + - updatePageLabelAndButtons(int, int): void + - createGridBagConstraints(int, int, int): GridBagConstraints + longSeed: long + currentPage: int + stringSeed: String +} +class GameOver { + + GameOver(JFrame, int, Database, MainMenu): + - getFunnyQuote(int): String + - scoreInGroup(List, int, int, int): boolean +} +class Leaderboard { + + Leaderboard(): + + refresh(): void +} +class LeaderboardBarChartPanel { + + LeaderboardBarChartPanel(int, int): + # paintComponent(Graphics): void +} +class LeaderboardByTier { + + LeaderboardByTier(): + + refresh(): void +} +class LeaderboardWorldWide { + + LeaderboardWorldWide(): + - createPlayerPanel(String, int, int): JPanel + - createTopPlayerPanel(String, int, String, boolean): JPanel + - resizeIcon(String, int, int): ImageIcon + + refresh(): void +} +class MainMenu { + + MainMenu(): + - titleLabel: Title + - buttonPanel: ButtonPanel + titleLabel: Title + buttonPanel: ButtonPanel +} +class Reward { + + Reward(String, String, boolean, ImageIcon): + - description: String + - isUnlocked: boolean + - icon: ImageIcon + - name: String + name: String + icon: ImageIcon + description: String + isUnlocked: boolean +} +class SettingsPanel { + + SettingsPanel(MainMenu, JFrame): + - initializeSettingsFrame(): void + - createReturnButtonWithIcon(): JButton + - setupBackground(): void + - createSliderPanel(JSlider): JPanel + - createSoundPanel(String, JSlider, ChangeListener, MuteCheckBoxListener): JPanel + - setupMainPanel(): void + - setupTopPanel(): void + - createGridBagConstraints(int, int, int): GridBagConstraints + # paintComponent(Graphics): void + - createAutoFocusPanel(): JPanel + returnButtonVisible: boolean +} +class Step { + + Step(String, String, String): + - title: String + - imagePath: String + - text: String + text: String + imagePath: String + title: String +} +class TutorialPanel { + + TutorialPanel(List, MainMenu, JFrame): + - updateStepDisplay(): void + - styleButton(JButton): void + - createReturnButtonWithIcon(): JButton + - showPreviousStep(): void + - addLineBreaks(String, int): String + # paintComponent(Graphics): void + - showNextStep(): void } - -class fr.monkhanny.dorfromantik.gui.BarChartPanel { -- List groupAverages -- int highlightedGroup -+ <> BarChartPanel(List,int,JPanel) -# void paintComponent(Graphics) -} - - -class fr.monkhanny.dorfromantik.gui.SettingsPanel { -- MainMenu mainMenu -- JFrame settingsFrame -- JButton returnButton -+ <> SettingsPanel(MainMenu,JFrame) -- void initializeSettingsFrame() -- void setupBackground() -- void setupTopPanel() -+ void setReturnButtonVisible(boolean) -# void paintComponent(Graphics) -- void setupMainPanel() -- JPanel createSoundPanel(String,JSlider,ChangeListener,MuteCheckBoxListener) -- JPanel createAutoFocusPanel() -- JPanel createSliderPanel(JSlider) -- GridBagConstraints createGridBagConstraints(int,int,int) -- JButton createReturnButtonWithIcon() -} - - -class fr.monkhanny.dorfromantik.gui.LeaderboardWorldWide { -+ <> LeaderboardWorldWide() -+ void refresh() -- JPanel createPlayerPanel(String,int,int) -- ImageIcon resizeIcon(String,int,int) -- JPanel createTopPlayerPanel(String,int,String,boolean) -} - -class fr.monkhanny.dorfromantik.gui.ButtonHoverAnimator { -- JButton button -- Color originalColor -- {static} Font originalFont -- Timer animationTimer -+ <> ButtonHoverAnimator(JButton) -+ void startAnimation(boolean) -+ {static} void updateOriginalFont(float) -} - - -class fr.monkhanny.dorfromantik.gui.MainMenu { -- Title titleLabel -- ButtonPanel buttonPanel -- JPanel leaderboardContainer -- Leaderboard currentLeaderboard -+ <> MainMenu() -+ Title getTitleLabel() -+ ButtonPanel getButtonPanel() -} - - -class fr.monkhanny.dorfromantik.gui.GameOver { -- JFrame gameFrame -+ <> GameOver(JFrame,int,Database,MainMenu) -- boolean scoreInGroup(List,int,int,int) -- String getFunnyQuote(int) -} - - -class fr.monkhanny.dorfromantik.gui.LeaderboardByTier { -+ <> LeaderboardByTier() -+ void refresh() -} - -class fr.monkhanny.dorfromantik.gui.Reward { -- String name -- String description -- boolean isUnlocked -- ImageIcon icon -+ <> Reward(String,String,boolean,ImageIcon) -+ String getName() -+ String getDescription() -+ boolean isUnlocked() -+ ImageIcon getIcon() -} - - -class fr.monkhanny.dorfromantik.gui.LeaderboardBarChartPanel { -- int totalPlayers -- int rank -+ <> LeaderboardBarChartPanel(int,int) -# void paintComponent(Graphics) -} - - -class fr.monkhanny.dorfromantik.gui.Step { -- String title -- String text -- String imagePath -+ <> Step(String,String,String) -+ String getText() -+ String getImagePath() -+ String getTitle() -} - - -class fr.monkhanny.dorfromantik.gui.ButtonPanel { -- JButton newGameButton -- JButton howToPlayButton -- JButton settingsButton -- JButton exitButton -+ <> ButtonPanel(float) -+ JButton getNewGameButton() -+ JButton getHowToPlayButton() -+ JButton getSettingsButton() -+ JButton getExitButton() -+ List getButtons() -+ void updateButtonFonts(int) -} - - -class fr.monkhanny.dorfromantik.gui.GameControlsMenu { -- boolean isVisible -- {static} String ICON_PATH -+ <> GameControlsMenu() -- JPanel createPanel(String,String) -- JPanel createPanelWithMultipleIcons(String,String) -- ImageIcon loadIcon(String) -+ void toggleVisibility() -+ void setControlsMenuVisible(boolean) -} - - -abstract class fr.monkhanny.dorfromantik.gui.Leaderboard { -+ <> Leaderboard() -+ {abstract}void refresh() -} - -class fr.monkhanny.dorfromantik.gui.GameModeSelectionPanel { -- JLabel titleLabel -- JTextField seedField -- JButton startButton -- List seriesButtons -- Database database -- JPanel modePanel -- JButton prevButton -- JButton nextButton -- int currentPage -- int itemsPerPage -- JLabel pageLabel -- JSpinner startDateSpinner -- JSpinner endDateSpinner -- ActionListener buttonListener -- JCheckBox developerSeriesCheckBox -+ <> GameModeSelectionPanel(ActionListener,JFrame,MainMenu) -+ void loadSeriesForCurrentPage() -- void updatePageLabelAndButtons(int,int) -- JPanel createDateFilterPanel() -- void stylizeDateSpinner(JSpinner) -- JPanel createPaginationPanel() -- JPanel createTopPanel(JFrame,MainMenu) -- JButton createReturnButtonWithIcon(JFrame,MainMenu) -- JPanel createMainPanel() -- GridBagConstraints createGridBagConstraints(int,int,int) -- JButton createGameModeButton(String,ActionListener) -+ int getCurrentPage() -+ void setCurrentPage(int) -- JPanel createSeedPanel(ActionListener) -+ String getStringSeed() -+ long getLongSeed() -} - - - - -fr.monkhanny.dorfromantik.gui.JPanel <|-- fr.monkhanny.dorfromantik.gui.TutorialPanel -fr.monkhanny.dorfromantik.gui.JPanel <|-- fr.monkhanny.dorfromantik.gui.BarChartPanel -fr.monkhanny.dorfromantik.gui.JPanel <|-- fr.monkhanny.dorfromantik.gui.SettingsPanel -fr.monkhanny.dorfromantik.gui.Leaderboard <|-- fr.monkhanny.dorfromantik.gui.LeaderboardWorldWide -fr.monkhanny.dorfromantik.gui.JFrame <|-- fr.monkhanny.dorfromantik.gui.MainMenu -fr.monkhanny.dorfromantik.gui.JPanel <|-- fr.monkhanny.dorfromantik.gui.GameOver -fr.monkhanny.dorfromantik.gui.Leaderboard <|-- fr.monkhanny.dorfromantik.gui.LeaderboardByTier -fr.monkhanny.dorfromantik.gui.JPanel <|-- fr.monkhanny.dorfromantik.gui.LeaderboardBarChartPanel -fr.monkhanny.dorfromantik.gui.JPanel <|-- fr.monkhanny.dorfromantik.gui.ButtonPanel -fr.monkhanny.dorfromantik.gui.JPanel <|-- fr.monkhanny.dorfromantik.gui.GameControlsMenu -fr.monkhanny.dorfromantik.gui.JPanel <|-- fr.monkhanny.dorfromantik.gui.Leaderboard -fr.monkhanny.dorfromantik.gui.JPanel <|-- fr.monkhanny.dorfromantik.gui.GameModeSelectionPanel +GameOver -[#595959,dashed]-> BarChartPanel : "«create»" +LeaderboardByTier -[#000082,plain]-^ Leaderboard +LeaderboardByTier -[#595959,dashed]-> LeaderboardBarChartPanel : "«create»" +LeaderboardWorldWide -[#000082,plain]-^ Leaderboard +MainMenu "1" *-[#595959,plain]-> "buttonPanel\n1" ButtonPanel +MainMenu -[#595959,dashed]-> ButtonPanel : "«create»" +MainMenu "1" *-[#595959,plain]-> "currentLeaderboard\n1" Leaderboard +MainMenu -[#595959,dashed]-> LeaderboardWorldWide : "«create»" +SettingsPanel "1" *-[#595959,plain]-> "mainMenu\n1" MainMenu +TutorialPanel "1" *-[#595959,plain]-> "mainMenu\n1" MainMenu +TutorialPanel "1" *-[#595959,plain]-> "steps\n*" Step @enduml \ No newline at end of file diff --git a/Documentation/DiagrammeUML/GUI/Diagram_GUI.svg b/Documentation/DiagrammeUML/GUI/Diagram_GUI.svg new file mode 100644 index 0000000..de948de --- /dev/null +++ b/Documentation/DiagrammeUML/GUI/Diagram_GUI.svg @@ -0,0 +1,318 @@ + + +package + + + +BarChartPanel + +BarChartPanel + ++ BarChartPanel(List<Integer>, int, JPanel) : + +# paintComponent(Graphics) : void + + + +ButtonHoverAnimator + +ButtonHoverAnimator + ++ ButtonHoverAnimator(JButton) : + ++ startAnimation(boolean) : void + + updateOriginalFont(float) : void + + + +ButtonPanel + +ButtonPanel + ++ ButtonPanel(float) : + +- howToPlayButton : JButton + - exitButton : JButton + - newGameButton : JButton + - settingsButton : JButton + ++ updateButtonFonts(int) : void + +howToPlayButton : JButton + exitButton : JButton + buttons : List<JButton> + settingsButton : JButton + newGameButton : JButton + + + +GameControlsMenu + +GameControlsMenu + ++ GameControlsMenu() : + +- createPanel(String, String) : JPanel + - loadIcon(String) : ImageIcon + - createPanelWithMultipleIcons(String, String[]) : JPanel + + toggleVisibility() : void + +controlsMenuVisible : boolean + + + +GameModeSelectionPanel + +GameModeSelectionPanel + ++ GameModeSelectionPanel(ActionListener, JFrame, MainMenu) : + +- currentPage : int + +- createTopPanel(JFrame, MainMenu) : JPanel + - createDateFilterPanel() : JPanel + - createSeedPanel(ActionListener) : JPanel + - stylizeDateSpinner(JSpinner) : void + - createPaginationPanel() : JPanel + - createReturnButtonWithIcon(JFrame, MainMenu) : JButton + - createGameModeButton(String, ActionListener) : JButton + + loadSeriesForCurrentPage() : void + - createMainPanel() : JPanel + - updatePageLabelAndButtons(int, int) : void + - createGridBagConstraints(int, int, int) : GridBagConstraints + +longSeed : long + currentPage : int + stringSeed : String + + + +GameOver + +GameOver + ++ GameOver(JFrame, int, Database, MainMenu) : + +- getFunnyQuote(int) : String + - scoreInGroup(List<Integer>, int, int, int) : boolean + + + +GameOver->BarChartPanel + + +«create» + + + +Leaderboard + +Leaderboard + ++ Leaderboard() : + ++ refresh() : void + + + +LeaderboardBarChartPanel + +LeaderboardBarChartPanel + ++ LeaderboardBarChartPanel(int, int) : + +# paintComponent(Graphics) : void + + + +LeaderboardByTier + +LeaderboardByTier + ++ LeaderboardByTier() : + ++ refresh() : void + + + +LeaderboardByTier->Leaderboard + + + + + +LeaderboardByTier->LeaderboardBarChartPanel + + +«create» + + + +LeaderboardWorldWide + +LeaderboardWorldWide + ++ LeaderboardWorldWide() : + +- createPlayerPanel(String, int, int) : JPanel + - createTopPlayerPanel(String, int, String, boolean) : JPanel + - resizeIcon(String, int, int) : ImageIcon + + refresh() : void + + + +LeaderboardWorldWide->Leaderboard + + + + + +MainMenu + +MainMenu + ++ MainMenu() : + +- titleLabel : Title + - buttonPanel : ButtonPanel + +titleLabel : Title + buttonPanel : ButtonPanel + + + +MainMenu->ButtonPanel + + + +buttonPanel +1 +1 + + + +MainMenu->ButtonPanel + + +«create» + + + +MainMenu->Leaderboard + + + +currentLeaderboard +1 +1 + + + +MainMenu->LeaderboardWorldWide + + +«create» + + + +Reward + +Reward + ++ Reward(String, String, boolean, ImageIcon) : + +- description : String + - isUnlocked : boolean + - icon : ImageIcon + - name : String + +name : String + icon : ImageIcon + description : String + isUnlocked : boolean + + + +SettingsPanel + +SettingsPanel + ++ SettingsPanel(MainMenu, JFrame) : + +- initializeSettingsFrame() : void + - createReturnButtonWithIcon() : JButton + - setupBackground() : void + - createSliderPanel(JSlider) : JPanel + - createSoundPanel(String, JSlider, ChangeListener, MuteCheckBoxListener) : JPanel + - setupMainPanel() : void + - setupTopPanel() : void + - createGridBagConstraints(int, int, int) : GridBagConstraints + # paintComponent(Graphics) : void + - createAutoFocusPanel() : JPanel + +returnButtonVisible : boolean + + + +SettingsPanel->MainMenu + + + +mainMenu +1 +1 + + + +Step + +Step + ++ Step(String, String, String) : + +- title : String + - imagePath : String + - text : String + +text : String + imagePath : String + title : String + + + +TutorialPanel + +TutorialPanel + ++ TutorialPanel(List<Step>, MainMenu, JFrame) : + +- updateStepDisplay() : void + - styleButton(JButton) : void + - createReturnButtonWithIcon() : JButton + - showPreviousStep() : void + - addLineBreaks(String, int) : String + # paintComponent(Graphics) : void + - showNextStep() : void + + + +TutorialPanel->MainMenu + + + +mainMenu +1 +1 + + + +TutorialPanel->Step + + + +steps +* +1 + + + \ No newline at end of file diff --git a/Documentation/DiagrammeUML/Game/Diagram_game.png b/Documentation/DiagrammeUML/Game/Diagram_game.png index 2502819..235c6fa 100644 Binary files a/Documentation/DiagrammeUML/Game/Diagram_game.png and b/Documentation/DiagrammeUML/Game/Diagram_game.png differ diff --git a/Documentation/DiagrammeUML/Game/Diagram_game.puml b/Documentation/DiagrammeUML/Game/Diagram_game.puml index 85a4bfc..72555a1 100644 --- a/Documentation/DiagrammeUML/Game/Diagram_game.puml +++ b/Documentation/DiagrammeUML/Game/Diagram_game.puml @@ -1,193 +1,136 @@ -@startuml -class fr.monkhanny.dorfromantik.game.CustomKeyAdapter { -- Board board -+ <> CustomKeyAdapter(Board) -+ void keyPressed(KeyEvent) +@startuml game +!theme plain +top to bottom direction +skinparam linetype ortho + +class Board { + - offsetX: int + - random: Random + - zoomFactor: double + - game: Game + - nextTile: Tile + - offsetY: int + - controlsMenu: GameControlsMenu + + handleSpaceKeyPress(): void + + zoomIn(): void + + moveBoard(int, int): void + + zoomOut(): void + - initializeNextTile(): void + - calculateAvailablePositions(Tile): void + + handleMouseMove(MouseEvent): void + - isTileAtPosition(Point): boolean + + handleMouseClick(MouseEvent): void + + paintComponent(Graphics): void + + autoReFocus(Tile): void + + getTileAt(int, int): Tile + - initializeCentralTile(): void + + placeTileAtPosition(Point): void + + addTile(Tile): void + random: Random + zoomFactor: double + controlsMenu: GameControlsMenu + nextTile: Tile + offsetX: int + game: Game + offsetY: int +} +class Cell { + + radius: int + - board: Board + + setPosition(int, int): void + # paintComponent(Graphics): void + + to360Degrees(double): double + XCoord: int + board: Board + YCoord: int + radius: int +} +class CustomKeyAdapter { + + keyPressed(KeyEvent): void +} +class CustomMouseMotionAdapter { + + mouseMoved(MouseEvent): void +} +class EscapeMenu { + - createButton(String): JButton + menuVisible: boolean + settingsButtonListener: ActionListener + resumeButtonListener: ActionListener + quitButtonListener: ActionListener +} +class Game { + + getRandomInt(int): int +} +class PauseGame { + + keyPressed(KeyEvent): void +} +class Pocket { + - biome: Biome + - tiles: Set + + addTile(Tile): void + tiles: Set + size: int + biome: Biome +} +class RemainingTilesIndicator { + - remainingTiles: int + + draw(Graphics, int, int): void + - createHexagon(int, int, int, int): Polygon + totalHeight: int + remainingTiles: int +} +class ScoreDisplay { + - score: int + + setPosition(int, int): void + + draw(Graphics): void + score: int +} +class ScoreManager { + - currentScore: int + - recalculateScore(): void + - findPocketForTile(Tile, Biome): Pocket? + + addTile(Tile): void + currentScore: int +} +class Tile { + + determineSide(int, int): TileOrientation + + getBiome(TileOrientation): Biome + + getNeighbor(TileOrientation): Tile + + containsBiome(Biome): boolean + + assignRandomBiomes(): void + # drawTileAt(Graphics, int, int, float): void + # paintTile(Graphics, float): void + + isAdjacentTo(Tile): boolean + + rotate(boolean): void + biomes: Biome[] + dominantBiome: Biome +} +class TilePanningTransition { + + start(): void } - -class fr.monkhanny.dorfromantik.game.ScoreManager { -- List pockets -- int currentScore -+ <> ScoreManager() -+ void addTile(Tile) -- Pocket findPocketForTile(Tile,Biome) -- void recalculateScore() -+ int getCurrentScore() -} - - -class fr.monkhanny.dorfromantik.game.EscapeMenu { -- JButton resumeButton -- JButton mainMenuButton -- JButton settingsButton -+ <> EscapeMenu(JFrame,Game) -- JButton createButton(String) -+ void setResumeButtonListener(ActionListener) -+ void setQuitButtonListener(ActionListener) -+ void setSettingsButtonListener(ActionListener) -+ void setMenuVisible(boolean) -} - - -class fr.monkhanny.dorfromantik.game.Cell { -- Board board -+ int x -+ int y -+ int radius -+ <> Cell(Board,int,int,int) -+ Board getBoard() -+ int getXCoord() -+ int getYCoord() -+ int getRadius() -+ {static} double to360Degrees(double) -+ void setPosition(int,int) -# void paintComponent(Graphics) -} - - -class fr.monkhanny.dorfromantik.game.Game { -- Random random -+ <> Game(long) -+ <> Game() -+ int getRandomInt(int) -} - - -class fr.monkhanny.dorfromantik.game.TilePanningTransition { -- Board board -- int targetOffsetX -- int steps -+ <> TilePanningTransition(Board,int,int,int) -+ void start() -} - - -class fr.monkhanny.dorfromantik.game.RemainingTilesIndicator { -- int remainingTiles -- int maxTiles -+ <> RemainingTilesIndicator(int) -+ void setRemainingTiles(int) -+ void draw(Graphics,int,int) -+ int getTotalHeight() -- Polygon createHexagon(int,int,int,int) -} - - -class fr.monkhanny.dorfromantik.game.CustomMouseMotionAdapter { -- Board board -+ <> CustomMouseMotionAdapter(Board) -+ void mouseMoved(MouseEvent) -} - - -class fr.monkhanny.dorfromantik.game.Tile { -- HashMap sideBiomes -+ <> Tile(Board,int,int,int,Biome) -+ <> Tile(Board,int,int,int) -+ <> Tile(Board,Point,int,Biome) -+ <> Tile(Board,Point,int) -+ void setBiomes(Biome) -+ void assignRandomBiomes() -+ Biome getBiome(TileOrientation) -+ Biome getDominantBiome() -+ Biome[] getBiomes() -+ void rotate(boolean) -+ boolean containsBiome(Biome) -+ boolean isAdjacentTo(Tile) -+ Tile getNeighbor(TileOrientation) -+ TileOrientation determineSide(int,int) -# void drawTileAt(Graphics,int,int,float) -# void paintTile(Graphics,float) -} - - -class fr.monkhanny.dorfromantik.game.ScoreDisplay { -- int score -- Font font -- int x -+ <> ScoreDisplay(Font,int,int) -+ void setScore(int) -+ void setPosition(int,int) -+ void draw(Graphics) -} - - -class fr.monkhanny.dorfromantik.game.Pocket { -- Biome biome -- Set tiles -+ <> Pocket(Biome) -+ void addTile(Tile) -+ int getSize() -+ Biome getBiome() -+ Set getTiles() -} - - -class fr.monkhanny.dorfromantik.game.Board { -- List tiles -- List availablePositions -- Random random -- Game game -- JFrame gameFrame -- Tile centralTile -- double zoomFactor -- int offsetX -- int offsetY -- Tile nextTile -- Point mousePosition -- int currentScore -- Database database -- RemainingTilesIndicator remainingTilesIndicator -- GameControlsMenu controlsMenu -- ScoreManager scoreManager -- ScoreDisplay scoreDisplay -+ <> Board(JFrame,long) -+ GameControlsMenu getControlsMenu() -+ void handleMouseMove(java.awt.event.MouseEvent) -- void initializeNextTile() -+ Tile getNextTile() -+ void handleSpaceKeyPress() -+ void handleMouseClick(java.awt.event.MouseEvent) -- void initializeCentralTile() -+ void addTile(Tile) -+ Tile getTileAt(int,int) -+ Random getRandom() -+ Game getGame() -- void calculateAvailablePositions(Tile) -- boolean isTileAtPosition(Point) -+ void placeTileAtPosition(Point) -+ void autoReFocus(Tile) -+ double getZoomFactor() -+ void setZoomFactor(double) -+ int getOffsetX() -+ void setOffsetX(int) -+ int getOffsetY() -+ void setOffsetY(int) -+ void zoomIn() -+ void zoomOut() -+ void moveBoard(int,int) -+ void paintComponent(Graphics) -} - - -class fr.monkhanny.dorfromantik.game.PauseGame { -- EscapeMenu escapeMenu -- GameResumeButtonListener resumeButtonListener -- GameQuitButtonListener quitButtonListener -- GameSettingsButtonListener settingsButtonListener -+ <> PauseGame(JFrame,Game) -+ void keyPressed(KeyEvent) -} - - - - -java.awt.event.KeyAdapter <|-- fr.monkhanny.dorfromantik.game.CustomKeyAdapter -fr.monkhanny.dorfromantik.game.JFrame <|-- fr.monkhanny.dorfromantik.game.EscapeMenu -fr.monkhanny.dorfromantik.game.JComponent <|-- fr.monkhanny.dorfromantik.game.Cell -java.awt.event.MouseMotionAdapter <|-- fr.monkhanny.dorfromantik.game.CustomMouseMotionAdapter -fr.monkhanny.dorfromantik.game.Cell <|-- fr.monkhanny.dorfromantik.game.Tile -fr.monkhanny.dorfromantik.game.JPanel <|-- fr.monkhanny.dorfromantik.game.Board -java.awt.event.KeyAdapter <|-- fr.monkhanny.dorfromantik.game.PauseGame +Board -[#595959,dashed]-> CustomKeyAdapter : "«create»" +Board -[#595959,dashed]-> CustomMouseMotionAdapter : "«create»" +Board "1" *-[#595959,plain]-> "game\n1" Game +Board -[#595959,dashed]-> Game : "«create»" +Board -[#595959,dashed]-> PauseGame : "«create»" +Board -[#595959,dashed]-> RemainingTilesIndicator : "«create»" +Board "1" *-[#595959,plain]-> "remainingTilesIndicator\n1" RemainingTilesIndicator +Board -[#595959,dashed]-> ScoreDisplay : "«create»" +Board "1" *-[#595959,plain]-> "scoreDisplay\n1" ScoreDisplay +Board -[#595959,dashed]-> ScoreManager : "«create»" +Board "1" *-[#595959,plain]-> "scoreManager\n1" ScoreManager +Board "1" *-[#595959,plain]-> "tiles\n*" Tile +Board -[#595959,dashed]-> Tile : "«create»" +Board -[#595959,dashed]-> TilePanningTransition : "«create»" +Cell "1" *-[#595959,plain]-> "board\n1" Board +CustomKeyAdapter "1" *-[#595959,plain]-> "board\n1" Board +CustomMouseMotionAdapter "1" *-[#595959,plain]-> "board\n1" Board +PauseGame "1" *-[#595959,plain]-> "escapeMenu\n1" EscapeMenu +PauseGame -[#595959,dashed]-> EscapeMenu : "«create»" +Pocket "1" *-[#595959,plain]-> "tiles\n*" Tile +ScoreManager -[#595959,dashed]-> Pocket : "«create»" +ScoreManager "1" *-[#595959,plain]-> "pockets\n*" Pocket +Tile -[#000082,plain]-^ Cell +TilePanningTransition "1" *-[#595959,plain]-> "board\n1" Board @enduml \ No newline at end of file diff --git a/Documentation/DiagrammeUML/Game/Diagram_game.svg b/Documentation/DiagrammeUML/Game/Diagram_game.svg new file mode 100644 index 0000000..6f5d2f0 --- /dev/null +++ b/Documentation/DiagrammeUML/Game/Diagram_game.svg @@ -0,0 +1,393 @@ + + +package + + + +Board + +Board + +- offsetX : int + - random : Random + - zoomFactor : double + - game : Game + - nextTile : Tile + - offsetY : int + - controlsMenu : GameControlsMenu + ++ handleSpaceKeyPress() : void + + zoomIn() : void + + moveBoard(int, int) : void + + zoomOut() : void + - initializeNextTile() : void + - calculateAvailablePositions(Tile) : void + + handleMouseMove(MouseEvent) : void + - isTileAtPosition(Point) : boolean + + handleMouseClick(MouseEvent) : void + + paintComponent(Graphics) : void + + autoReFocus(Tile) : void + + getTileAt(int, int) : Tile + - initializeCentralTile() : void + + placeTileAtPosition(Point) : void + + addTile(Tile) : void + +random : Random + zoomFactor : double + controlsMenu : GameControlsMenu + nextTile : Tile + offsetX : int + game : Game + offsetY : int + + + +CustomKeyAdapter + +CustomKeyAdapter + ++ keyPressed(KeyEvent) : void + + + +Board->CustomKeyAdapter + + +«create» + + + +CustomMouseMotionAdapter + +CustomMouseMotionAdapter + ++ mouseMoved(MouseEvent) : void + + + +Board->CustomMouseMotionAdapter + + +«create» + + + +Game + +Game + ++ getRandomInt(int) : int + + + +Board->Game + + + +game +1 +1 + + + +Board->Game + + +«create» + + + +PauseGame + +PauseGame + ++ keyPressed(KeyEvent) : void + + + +Board->PauseGame + + +«create» + + + +RemainingTilesIndicator + +RemainingTilesIndicator + +- remainingTiles : int + ++ draw(Graphics, int, int) : void + - createHexagon(int, int, int, int) : Polygon + +totalHeight : int + remainingTiles : int + + + +Board->RemainingTilesIndicator + + +«create» + + + +Board->RemainingTilesIndicator + + + +remainingTilesIndicator +1 +1 + + + +ScoreDisplay + +ScoreDisplay + +- score : int + ++ setPosition(int, int) : void + + draw(Graphics) : void + +score : int + + + +Board->ScoreDisplay + + +«create» + + + +Board->ScoreDisplay + + + +scoreDisplay +1 +1 + + + +ScoreManager + +ScoreManager + +- currentScore : int + +- recalculateScore() : void + - findPocketForTile(Tile, Biome) : Pocket? + + addTile(Tile) : void + +currentScore : int + + + +Board->ScoreManager + + +«create» + + + +Board->ScoreManager + + + +scoreManager +1 +1 + + + +Tile + +Tile + ++ determineSide(int, int) : TileOrientation + + getBiome(TileOrientation) : Biome + + getNeighbor(TileOrientation) : Tile + + containsBiome(Biome) : boolean + + assignRandomBiomes() : void + # drawTileAt(Graphics, int, int, float) : void + # paintTile(Graphics, float) : void + + isAdjacentTo(Tile) : boolean + + rotate(boolean) : void + +biomes : Biome[] + dominantBiome : Biome + + + +Board->Tile + + + +tiles +* +1 + + + +Board->Tile + + +«create» + + + +TilePanningTransition + +TilePanningTransition + ++ start() : void + + + +Board->TilePanningTransition + + +«create» + + + +Cell + +Cell + ++ radius : int + - board : Board + ++ setPosition(int, int) : void + # paintComponent(Graphics) : void + + to360Degrees(double) : double + +XCoord : int + board : Board + YCoord : int + radius : int + + + +Cell->Board + + + +board +1 +1 + + + +CustomKeyAdapter->Board + + + +board +1 +1 + + + +CustomMouseMotionAdapter->Board + + + +board +1 +1 + + + +EscapeMenu + +EscapeMenu + +- createButton(String) : JButton + +menuVisible : boolean + settingsButtonListener : ActionListener + resumeButtonListener : ActionListener + quitButtonListener : ActionListener + + + +PauseGame->EscapeMenu + + + +escapeMenu +1 +1 + + + +PauseGame->EscapeMenu + + +«create» + + + +Pocket + +Pocket + +- biome : Biome + - tiles : Set<Tile> + ++ addTile(Tile) : void + +tiles : Set<Tile> + size : int + biome : Biome + + + +Pocket->Tile + + + +tiles +* +1 + + + +ScoreManager->Pocket + + +«create» + + + +ScoreManager->Pocket + + + +pockets +* +1 + + + +Tile->Cell + + + + + +TilePanningTransition->Board + + + +board +1 +1 + + + \ No newline at end of file diff --git a/Documentation/DiagrammeUML/Listeners/Diagram_listeners.png b/Documentation/DiagrammeUML/Listeners/Diagram_listeners.png new file mode 100644 index 0000000..dde29c6 Binary files /dev/null and b/Documentation/DiagrammeUML/Listeners/Diagram_listeners.png differ diff --git a/Documentation/DiagrammeUML/Listeners/Diagram_listeners.puml b/Documentation/DiagrammeUML/Listeners/Diagram_listeners.puml new file mode 100644 index 0000000..05b99c6 --- /dev/null +++ b/Documentation/DiagrammeUML/Listeners/Diagram_listeners.puml @@ -0,0 +1,109 @@ +@startuml listeners + +!theme plain +top to bottom direction +skinparam linetype ortho + +class CloseButtonListener { + + CloseButtonListener(MainMenu, JFrame): + + actionPerformed(ActionEvent): void +} +class CloseWindowListener { + + CloseWindowListener(MainMenu, JFrame): + + windowClosing(WindowEvent): void +} +class EscapeMenuCloseListener { + + EscapeMenuCloseListener(): + + windowClosing(WindowEvent): void +} +class GameArrowKeyListener { + + GameArrowKeyListener(Board): + + keyPressed(KeyEvent): void +} +class GameMainMenuButtonListener { + + GameMainMenuButtonListener(JFrame): + + actionPerformed(ActionEvent): void +} +class GameModeFilterButtonActionListener { + + GameModeFilterButtonActionListener(GameModeSelectionPanel): + + actionPerformed(ActionEvent): void +} +class GameModeHoverEffectMouseListener { + + GameModeHoverEffectMouseListener(Color, Color, Color): + + mouseExited(MouseEvent): void + + mousePressed(MouseEvent): void + + mouseReleased(MouseEvent): void + + mouseEntered(MouseEvent): void +} +class GameModeNextButtonActionListener { + + GameModeNextButtonActionListener(GameModeSelectionPanel): + + actionPerformed(ActionEvent): void +} +class GameModePrevButtonActionListener { + + GameModePrevButtonActionListener(GameModeSelectionPanel): + + actionPerformed(ActionEvent): void +} +class GameMouseClickListener { + + GameMouseClickListener(Board): + + mousePressed(MouseEvent): void +} +class GameMouseWheelListener { + + GameMouseWheelListener(Board): + + mouseWheelMoved(MouseWheelEvent): void +} +class GameQuitButtonListener { + + GameQuitButtonListener(): + + actionPerformed(ActionEvent): void +} +class GameResumeButtonListener { + + GameResumeButtonListener(EscapeMenu): + + actionPerformed(ActionEvent): void +} +class GameSettingsButtonListener { + + GameSettingsButtonListener(JFrame, EscapeMenu): + + actionPerformed(ActionEvent): void +} +class GameSettingsWindowListener { + + GameSettingsWindowListener(JFrame): + + windowIconified(WindowEvent): void + + windowDeactivated(WindowEvent): void + + windowDeiconified(WindowEvent): void + + windowOpened(WindowEvent): void + + windowClosing(WindowEvent): void + + windowClosed(WindowEvent): void + + windowActivated(WindowEvent): void +} +class GameSpaceKeyListener { + + GameSpaceKeyListener(Board): + + keyPressed(KeyEvent): void +} +class GameZoomListener { + + GameZoomListener(Board): + + mouseWheelMoved(MouseWheelEvent): void +} +class MusicVolumeChangeListener { + + MusicVolumeChangeListener(JSlider): + + stateChanged(ChangeEvent): void +} +class MuteCheckBoxListener { + + MuteCheckBoxListener(String): + + actionPerformed(ActionEvent): void +} +class SoundsVolumeChangeListener { + + SoundsVolumeChangeListener(JSlider): + + stateChanged(ChangeEvent): void +} +class TilePanningActionListener { + + TilePanningActionListener(Board, int, int, int): + - stopAnimation(): void + + actionPerformed(ActionEvent): void + + startAnimation(): void +} +class TutorialButtonHoverListener { + + TutorialButtonHoverListener(JButton, Color, Color): + + mouseEntered(MouseEvent): void + + mouseExited(MouseEvent): void +} + +GameSettingsButtonListener -[#595959,dashed]-> GameSettingsWindowListener : "«create»" +@enduml diff --git a/Documentation/DiagrammeUML/Listeners/Diagram_listeners.svg b/Documentation/DiagrammeUML/Listeners/Diagram_listeners.svg new file mode 100644 index 0000000..0bc46c5 --- /dev/null +++ b/Documentation/DiagrammeUML/Listeners/Diagram_listeners.svg @@ -0,0 +1,245 @@ + + +package + + + +CloseButtonListener + +CloseButtonListener + ++ CloseButtonListener(MainMenu, JFrame) : + ++ actionPerformed(ActionEvent) : void + + + +CloseWindowListener + +CloseWindowListener + ++ CloseWindowListener(MainMenu, JFrame) : + ++ windowClosing(WindowEvent) : void + + + +EscapeMenuCloseListener + +EscapeMenuCloseListener + ++ EscapeMenuCloseListener() : + ++ windowClosing(WindowEvent) : void + + + +GameArrowKeyListener + +GameArrowKeyListener + ++ GameArrowKeyListener(Board) : + ++ keyPressed(KeyEvent) : void + + + +GameMainMenuButtonListener + +GameMainMenuButtonListener + ++ GameMainMenuButtonListener(JFrame) : + ++ actionPerformed(ActionEvent) : void + + + +GameModeFilterButtonActionListener + +GameModeFilterButtonActionListener + ++ GameModeFilterButtonActionListener(GameModeSelectionPanel) : + ++ actionPerformed(ActionEvent) : void + + + +GameModeHoverEffectMouseListener + +GameModeHoverEffectMouseListener + ++ GameModeHoverEffectMouseListener(Color, Color, Color) : + ++ mouseExited(MouseEvent) : void + + mousePressed(MouseEvent) : void + + mouseReleased(MouseEvent) : void + + mouseEntered(MouseEvent) : void + + + +GameModeNextButtonActionListener + +GameModeNextButtonActionListener + ++ GameModeNextButtonActionListener(GameModeSelectionPanel) : + ++ actionPerformed(ActionEvent) : void + + + +GameModePrevButtonActionListener + +GameModePrevButtonActionListener + ++ GameModePrevButtonActionListener(GameModeSelectionPanel) : + ++ actionPerformed(ActionEvent) : void + + + +GameMouseClickListener + +GameMouseClickListener + ++ GameMouseClickListener(Board) : + ++ mousePressed(MouseEvent) : void + + + +GameMouseWheelListener + +GameMouseWheelListener + ++ GameMouseWheelListener(Board) : + ++ mouseWheelMoved(MouseWheelEvent) : void + + + +GameQuitButtonListener + +GameQuitButtonListener + ++ GameQuitButtonListener() : + ++ actionPerformed(ActionEvent) : void + + + +GameResumeButtonListener + +GameResumeButtonListener + ++ GameResumeButtonListener(EscapeMenu) : + ++ actionPerformed(ActionEvent) : void + + + +GameSettingsButtonListener + +GameSettingsButtonListener + ++ GameSettingsButtonListener(JFrame, EscapeMenu) : + ++ actionPerformed(ActionEvent) : void + + + +GameSettingsWindowListener + +GameSettingsWindowListener + ++ GameSettingsWindowListener(JFrame) : + ++ windowIconified(WindowEvent) : void + + windowDeactivated(WindowEvent) : void + + windowDeiconified(WindowEvent) : void + + windowOpened(WindowEvent) : void + + windowClosing(WindowEvent) : void + + windowClosed(WindowEvent) : void + + windowActivated(WindowEvent) : void + + + +GameSettingsButtonListener->GameSettingsWindowListener + + +«create» + + + +GameSpaceKeyListener + +GameSpaceKeyListener + ++ GameSpaceKeyListener(Board) : + ++ keyPressed(KeyEvent) : void + + + +GameZoomListener + +GameZoomListener + ++ GameZoomListener(Board) : + ++ mouseWheelMoved(MouseWheelEvent) : void + + + +MusicVolumeChangeListener + +MusicVolumeChangeListener + ++ MusicVolumeChangeListener(JSlider) : + ++ stateChanged(ChangeEvent) : void + + + +MuteCheckBoxListener + +MuteCheckBoxListener + ++ MuteCheckBoxListener(String) : + ++ actionPerformed(ActionEvent) : void + + + +SoundsVolumeChangeListener + +SoundsVolumeChangeListener + ++ SoundsVolumeChangeListener(JSlider) : + ++ stateChanged(ChangeEvent) : void + + + +TilePanningActionListener + +TilePanningActionListener + ++ TilePanningActionListener(Board, int, int, int) : + +- stopAnimation() : void + + actionPerformed(ActionEvent) : void + + startAnimation() : void + + + +TutorialButtonHoverListener + +TutorialButtonHoverListener + ++ TutorialButtonHoverListener(JButton, Color, Color) : + ++ mouseEntered(MouseEvent) : void + + mouseExited(MouseEvent) : void + + + \ No newline at end of file diff --git a/Documentation/DiagrammeUML/Utils/Diagram_utils.png b/Documentation/DiagrammeUML/Utils/Diagram_utils.png index b867c20..9e88908 100644 Binary files a/Documentation/DiagrammeUML/Utils/Diagram_utils.png and b/Documentation/DiagrammeUML/Utils/Diagram_utils.png differ diff --git a/Documentation/DiagrammeUML/Utils/Diagram_utils.puml b/Documentation/DiagrammeUML/Utils/Diagram_utils.puml index e57f3a9..b4dc399 100644 --- a/Documentation/DiagrammeUML/Utils/Diagram_utils.puml +++ b/Documentation/DiagrammeUML/Utils/Diagram_utils.puml @@ -1,100 +1,84 @@ -@startuml -class fr.monkhanny.dorfromantik.utils.PlayerScore { -- String serie -- int score -+ <> PlayerScore(String,int) -+ String getSerieName() -+ int getScore() +@startuml utils +!theme plain +top to bottom direction +skinparam linetype ortho + +class Database { + + Database(): + - database: Connection + + addScore(long, int): void + + getSeedBySeriesId(long): long + + countSeriesByDateRange(Date, Date, boolean): int + + getSeriesByDateRange(Date, Date): List + + getScoresBySeriesId(long): List + + getAllScores(long): List + + getSeriesByDateRangePaginated(Date, Date, int, int, boolean): List + + addCustomSeed(long): void + + close(): void + + getSeedByName(String): long + database: Connection + topPlayers: List + allSeries: List +} +class FontLoader { + + FontLoader(): + + loadFont(Fonts): Font +} +class FontManager { + + FontManager(): + - buttonFont: Font + - titleFont: Font + + getTitleFont(float): Font + + loadCustomFont(Fonts): void + + getAdjustedTitleFont(Component, float, float): Font + + getAdjustedButtonFont(Component, float, float): Font + + getButtonFont(float): Font + buttonFont: Font + titleFont: Font +} +class Hexagon { + + Hexagon(int, int, int): + + Hexagon(Point, int): + + Hexagon(Point, int, double): + + Hexagon(int, int, int, double): + - calculateAngle(int, double): double +} +class HexagonDrawer { + + HexagonDrawer(Tile): + + drawHexagon(Graphics2D, double, Point): void + - drawHexagonRow(Graphics2D, double, double, double, int): void +} +class ImageLoader { + + ImageLoader(): + + loadImage(String): Image? +} +class MusicPlayer { + + MusicPlayer(): + - soundClip: Clip + - musicClip: Clip + + loadMusic(Musics): void + + playSound(): void + + pauseMusic(): void + + loadSound(Sounds): void + + setVolume(Clip, int): void + + playMusic(): void + + stopMusic(): void + playingSound: boolean + soundClip: Clip + playingMusic: boolean + musicClip: Clip +} +class PlayerScore { + + PlayerScore(String, int): + - score: int + serieName: String + score: int +} +class SoundLoader { + + SoundLoader(): + + loadMusic(String): Clip? } - -class fr.monkhanny.dorfromantik.utils.Hexagon { -- {static} int ANGLE_BETWEEN_VERTICES -+ <> Hexagon(int,int,int,double) -+ <> Hexagon(Point,int,double) -+ <> Hexagon(int,int,int) -+ <> Hexagon(Point,int) -- double calculateAngle(int,double) -} - - -class fr.monkhanny.dorfromantik.utils.ImageLoader { -+ {static} Image APPLICATION_ICON -+ {static} Image loadImage(String) -} - - -class fr.monkhanny.dorfromantik.utils.FontManager { -- {static} Font titleFont -- {static} Font buttonFont -+ {static} void loadCustomFont(Fonts) -+ {static} Font getTitleFont(float) -+ {static} Font getButtonFont(float) -+ {static} Font getAdjustedTitleFont(Component,float,float) -+ {static} Font getAdjustedButtonFont(Component,float,float) -+ {static} void setTitleFont(Font) -+ {static} void setButtonFont(Font) -} - - -class fr.monkhanny.dorfromantik.utils.HexagonDrawer { -- Tile tile -+ <> HexagonDrawer(Tile) -+ void drawHexagon(Graphics2D,double,Point) -- void drawHexagonRow(Graphics2D,double,double,double,int) -} - - -class fr.monkhanny.dorfromantik.utils.SoundLoader { -+ {static} Clip loadMusic(String) -} - -class fr.monkhanny.dorfromantik.utils.MusicPlayer { -- {static} Clip musicClip -- {static} Clip soundClip -- {static} boolean isPlayingMusic -- {static} boolean isPlayingSound -+ {static} void loadMusic(Musics) -+ {static} void loadSound(Sounds) -+ {static} void playMusic() -+ {static} void playSound() -+ {static} void pauseMusic() -+ {static} void stopMusic() -+ {static} void setVolume(Clip,int) -+ {static} boolean isPlayingMusic() -+ {static} boolean isPlayingSound() -+ {static} Clip getMusicClip() -+ {static} Clip getSoundClip() -} - - -class fr.monkhanny.dorfromantik.utils.FontLoader { -+ {static} Font loadFont(Fonts) -} - -class fr.monkhanny.dorfromantik.utils.Database { -- {static} String URL -- {static} String LOGIN -- {static} String PASSWORD -- Connection database -+ <> Database() -+ Connection getDatabase() -+ long getSeedBySeriesId(long) -+ List getAllScores(long) -+ List getAllSeries() -+ List getSeriesByDateRange(Date,Date) -+ int countSeriesByDateRange(Date,Date,boolean) -+ List getSeriesByDateRangePaginated(Date,Date,int,int,boolean) -+ long getSeedByName(String) -+ void addScore(long,int) -+ void addCustomSeed(long) -+ List getTopPlayers() -+ List getScoresBySeriesId(long) -+ void close() -} - - - - -java.awt.Polygon <|-- fr.monkhanny.dorfromantik.utils.Hexagon +Database -[#595959,dashed]-> PlayerScore : "«create»" +HexagonDrawer -[#595959,dashed]-> Hexagon : "«create»" @enduml \ No newline at end of file diff --git a/Documentation/DiagrammeUML/Utils/Diagram_utils.svg b/Documentation/DiagrammeUML/Utils/Diagram_utils.svg new file mode 100644 index 0000000..7bf200f --- /dev/null +++ b/Documentation/DiagrammeUML/Utils/Diagram_utils.svg @@ -0,0 +1,156 @@ + + +package + + + +Database + +Database + ++ Database() : + +- database : Connection + ++ addScore(long, int) : void + + getSeedBySeriesId(long) : long + + countSeriesByDateRange(Date, Date, boolean) : int + + getSeriesByDateRange(Date, Date) : List<String> + + getScoresBySeriesId(long) : List<Integer> + + getAllScores(long) : List<PlayerScore> + + getSeriesByDateRangePaginated(Date, Date, int, int, boolean) : List<String> + + addCustomSeed(long) : void + + close() : void + + getSeedByName(String) : long + +database : Connection + topPlayers : List<PlayerScore> + allSeries : List<String> + + + +PlayerScore + +PlayerScore + ++ PlayerScore(String, int) : + +- score : int + +serieName : String + score : int + + + +Database->PlayerScore + + +«create» + + + +FontLoader + +FontLoader + ++ FontLoader() : + ++ loadFont(Fonts) : Font + + + +FontManager + +FontManager + ++ FontManager() : + +- buttonFont : Font + - titleFont : Font + ++ getTitleFont(float) : Font + + loadCustomFont(Fonts) : void + + getAdjustedTitleFont(Component, float, float) : Font + + getAdjustedButtonFont(Component, float, float) : Font + + getButtonFont(float) : Font + +buttonFont : Font + titleFont : Font + + + +Hexagon + +Hexagon + ++ Hexagon(int, int, int) : + + Hexagon(Point, int) : + + Hexagon(Point, int, double) : + + Hexagon(int, int, int, double) : + +- calculateAngle(int, double) : double + + + +HexagonDrawer + +HexagonDrawer + ++ HexagonDrawer(Tile) : + ++ drawHexagon(Graphics2D, double, Point) : void + - drawHexagonRow(Graphics2D, double, double, double, int) : void + + + +HexagonDrawer->Hexagon + + +«create» + + + +ImageLoader + +ImageLoader + ++ ImageLoader() : + ++ loadImage(String) : Image? + + + +MusicPlayer + +MusicPlayer + ++ MusicPlayer() : + +- soundClip : Clip + - musicClip : Clip + ++ loadMusic(Musics) : void + + playSound() : void + + pauseMusic() : void + + loadSound(Sounds) : void + + setVolume(Clip, int) : void + + playMusic() : void + + stopMusic() : void + +playingSound : boolean + soundClip : Clip + playingMusic : boolean + musicClip : Clip + + + +SoundLoader + +SoundLoader + ++ SoundLoader() : + ++ loadMusic(String) : Clip? + + + \ No newline at end of file