diff --git a/Documentation/DiagrammeUML/Components/Diagram_Components.png b/Documentation/DiagrammeUML/Components/Diagram_Components.png new file mode 100644 index 0000000..f71b64a Binary files /dev/null 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 new file mode 100644 index 0000000..33a482a --- /dev/null +++ b/Documentation/DiagrammeUML/Components/Diagram_Components.puml @@ -0,0 +1,16 @@ +@startuml +class fr.monkhanny.dorfromantik.components.Title { ++ <> Title(String,float) ++ <> Title(String,float,Color) ++ void updateTitleFont(float) +} + +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 diff --git a/Documentation/DiagrammeUML/Controller/Diagram_controller.png b/Documentation/DiagrammeUML/Controller/Diagram_controller.png new file mode 100644 index 0000000..9c8961c Binary files /dev/null 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 new file mode 100644 index 0000000..9579bc2 --- /dev/null +++ b/Documentation/DiagrammeUML/Controller/Diagram_controller.puml @@ -0,0 +1,97 @@ +@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) +} + + +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 diff --git a/Documentation/DiagrammeUML/Enums/Diagram_enums.png b/Documentation/DiagrammeUML/Enums/Diagram_enums.png new file mode 100644 index 0000000..63f4b30 Binary files /dev/null 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 new file mode 100644 index 0000000..53e6ba5 --- /dev/null +++ b/Documentation/DiagrammeUML/Enums/Diagram_enums.puml @@ -0,0 +1,58 @@ +@startuml +enum fr.monkhanny.dorfromantik.enums.TileOrientation { ++ NORTH ++ NORTH_EAST ++ SOUTH_EAST ++ SOUTH ++ SOUTH_WEST ++ NORTH_WEST ++ TileOrientation oppositeOrientation() +} + + +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 diff --git a/Documentation/DiagrammeUML/GUI/Diagram_GUI.png b/Documentation/DiagrammeUML/GUI/Diagram_GUI.png new file mode 100644 index 0000000..f3411bb Binary files /dev/null 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 new file mode 100644 index 0000000..05db353 --- /dev/null +++ b/Documentation/DiagrammeUML/GUI/Diagram_GUI.puml @@ -0,0 +1,206 @@ +@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) +} + + +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 +@enduml \ No newline at end of file diff --git a/Documentation/DiagrammeUML/Game/Diagram_game.png b/Documentation/DiagrammeUML/Game/Diagram_game.png new file mode 100644 index 0000000..2502819 Binary files /dev/null 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 new file mode 100644 index 0000000..85a4bfc --- /dev/null +++ b/Documentation/DiagrammeUML/Game/Diagram_game.puml @@ -0,0 +1,193 @@ +@startuml +class fr.monkhanny.dorfromantik.game.CustomKeyAdapter { +- Board board ++ <> CustomKeyAdapter(Board) ++ void keyPressed(KeyEvent) +} + + +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 +@enduml \ No newline at end of file diff --git a/Documentation/DiagrammeUML/Utils/Diagram_utils.png b/Documentation/DiagrammeUML/Utils/Diagram_utils.png new file mode 100644 index 0000000..b867c20 Binary files /dev/null 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 new file mode 100644 index 0000000..e57f3a9 --- /dev/null +++ b/Documentation/DiagrammeUML/Utils/Diagram_utils.puml @@ -0,0 +1,100 @@ +@startuml +class fr.monkhanny.dorfromantik.utils.PlayerScore { +- String serie +- int score ++ <> PlayerScore(String,int) ++ String getSerieName() ++ int getScore() +} + + +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 +@enduml \ No newline at end of file