Ajouts des bons diagrammes de classe

This commit is contained in:
2024-12-11 09:53:12 +01:00
parent be5b9bf20e
commit 58e0e56a9e
21 changed files with 1936 additions and 655 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 57 KiB

View File

@@ -1,16 +1,18 @@
@startuml
class fr.monkhanny.dorfromantik.components.Title {
+ <<Create>> Title(String,float)
+ <<Create>> 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
@enduml

View File

@@ -0,0 +1,28 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="516pt" height="100pt" viewBox="0.00 0.00 515.94 100.20">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 96.2)">
<title>package</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-96.2 511.94,-96.2 511.94,4 -4,4"/>
<!-- Button -->
<g id="node1" class="node">
<title>Button</title>
<polygon fill="none" stroke="black" points="0,-0.5 0,-91.7 302.3,-91.7 302.3,-0.5 0,-0.5"/>
<text text-anchor="middle" x="151.15" y="-75.1" font-family="Times,serif" font-size="14.00">Button</text>
<polyline fill="none" stroke="black" points="0,-66.9 302.3,-66.9"/>
<text text-anchor="start" x="8" y="-50.3" font-family="Times,serif" font-size="14.00">+ Button() : </text>
<polyline fill="none" stroke="black" points="0,-42.1 302.3,-42.1"/>
<text text-anchor="start" x="8" y="-25.5" font-family="Times,serif" font-size="14.00">+ createCustomIconButton(String) : JButton</text>
<text text-anchor="start" x="8" y="-8.7" font-family="Times,serif" font-size="14.00"> + createCustomTextButton(String, float) : JButton</text>
</g>
<!-- Title -->
<g id="node2" class="node">
<title>Title</title>
<polygon fill="none" stroke="black" points="320.36,-0.5 320.36,-91.7 507.94,-91.7 507.94,-0.5 320.36,-0.5"/>
<text text-anchor="middle" x="414.15" y="-75.1" font-family="Times,serif" font-size="14.00">Title</text>
<polyline fill="none" stroke="black" points="320.36,-66.9 507.94,-66.9"/>
<text text-anchor="start" x="328.36" y="-50.3" font-family="Times,serif" font-size="14.00">+ Title(String, float) : </text>
<text text-anchor="start" x="328.36" y="-33.5" font-family="Times,serif" font-size="14.00"> + Title(String, float, Color) : </text>
<polyline fill="none" stroke="black" points="320.36,-25.3 507.94,-25.3"/>
<text text-anchor="start" x="328.36" y="-8.7" font-family="Times,serif" font-size="14.00">+ updateTitleFont(float) : void</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 KiB

After

Width:  |  Height:  |  Size: 526 KiB

View File

@@ -1,97 +1,59 @@
@startuml
class fr.monkhanny.dorfromantik.controller.MainMenuButtonController {
- MainMenu mainMenu
- JFrame settingsFrame
- JFrame howToPlayFrame
- JFrame gameModeFrame
- JFrame gameFrame
+ <<Create>> 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
+ <<Create>> ButtonHoverListener(ButtonHoverAnimator)
+ void mouseEntered(MouseEvent)
+ void mouseExited(MouseEvent)
}
class fr.monkhanny.dorfromantik.controller.MainMenuMouseController {
- ButtonPanel buttonPanel
+ <<Create>> MainMenuMouseController(ButtonPanel)
- void initMouseListeners()
- void addButtonHoverListener(JButton)
}
class fr.monkhanny.dorfromantik.controller.TutorialController {
- TutorialPanel tutorialPanel
- MainMenu mainMenu
- JFrame tutorialFrame
+ <<Create>> TutorialController(MainMenu,JFrame)
+ JPanel getTutorialPanel()
}
class fr.monkhanny.dorfromantik.controller.GameModeController {
- GameModeSelectionPanel gameModeSelectionPanel
- JFrame gameFrame
- MainMenu mainMenu
- JFrame gameModeFrame
- Database database
- {static} Board board
+ <<Create>> 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
+ <<Create>> 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
+ <<Create>> ButtonHoverAnimationListener(boolean,JButton,Color,Font)
+ void actionPerformed(ActionEvent)
}
class fr.monkhanny.dorfromantik.controller.MainMenuResizeController {
- MainMenu mainMenu
- MainMenuResizeHandler resizeHandler
+ <<Create>> 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
MainMenuMouseController -[#595959,dashed]-> ButtonHoverListener : "«create»"
MainMenuResizeController "1" *-[#595959,plain]-> "resizeHandler\n1" MainMenuResizeHandler
MainMenuResizeController -[#595959,dashed]-> MainMenuResizeHandler : "«create»"
@enduml

View File

@@ -0,0 +1,129 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="2086pt" height="362pt" viewBox="0.00 0.00 2085.80 362.00">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 358)">
<title>package</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-358 2081.8,-358 2081.8,4 -4,4"/>
<!-- ButtonHoverAnimationListener -->
<g id="node1" class="node">
<title>ButtonHoverAnimationListener</title>
<polygon fill="none" stroke="black" points="0,-212.3 0,-286.7 392.91,-286.7 392.91,-212.3 0,-212.3"/>
<text text-anchor="middle" x="196.46" y="-270.1" font-family="Times,serif" font-size="14.00">ButtonHoverAnimationListener</text>
<polyline fill="none" stroke="black" points="0,-261.9 392.91,-261.9"/>
<text text-anchor="start" x="8" y="-245.3" font-family="Times,serif" font-size="14.00">+ ButtonHoverAnimationListener(boolean, JButton, Color, Font) : </text>
<polyline fill="none" stroke="black" points="0,-237.1 392.91,-237.1"/>
<text text-anchor="start" x="8" y="-220.5" font-family="Times,serif" font-size="14.00">+ actionPerformed(ActionEvent) : void</text>
</g>
<!-- ButtonHoverListener -->
<g id="node2" class="node">
<title>ButtonHoverListener</title>
<polygon fill="none" stroke="black" points="401.79,-0.5 401.79,-91.7 695.13,-91.7 695.13,-0.5 401.79,-0.5"/>
<text text-anchor="middle" x="548.46" y="-75.1" font-family="Times,serif" font-size="14.00">ButtonHoverListener</text>
<polyline fill="none" stroke="black" points="401.79,-66.9 695.13,-66.9"/>
<text text-anchor="start" x="409.79" y="-50.3" font-family="Times,serif" font-size="14.00">+ ButtonHoverListener(ButtonHoverAnimator) : </text>
<polyline fill="none" stroke="black" points="401.79,-42.1 695.13,-42.1"/>
<text text-anchor="start" x="409.79" y="-25.5" font-family="Times,serif" font-size="14.00">+ mouseEntered(MouseEvent) : void</text>
<text text-anchor="start" x="409.79" y="-8.7" font-family="Times,serif" font-size="14.00"> + mouseExited(MouseEvent) : void</text>
</g>
<!-- GameModeController -->
<g id="node3" class="node">
<title>GameModeController</title>
<polygon fill="none" stroke="black" points="704.2,-145.5 704.2,-353.5 1034.72,-353.5 1034.72,-145.5 704.2,-145.5"/>
<text text-anchor="middle" x="869.46" y="-336.9" font-family="Times,serif" font-size="14.00">GameModeController</text>
<polyline fill="none" stroke="black" points="704.2,-328.7 1034.72,-328.7"/>
<text text-anchor="start" x="712.2" y="-312.1" font-family="Times,serif" font-size="14.00">+ GameModeController(JFrame, MainMenu, JFrame) : </text>
<polyline fill="none" stroke="black" points="704.2,-303.9 1034.72,-303.9"/>
<text text-anchor="start" x="712.2" y="-287.3" font-family="Times,serif" font-size="14.00">- gameModeSelectionPanel : GameModeSelectionPanel</text>
<polyline fill="none" stroke="black" points="704.2,-279.1 1034.72,-279.1"/>
<text text-anchor="start" x="712.2" y="-262.5" font-family="Times,serif" font-size="14.00">- isDynamicSeries(String) : boolean</text>
<text text-anchor="start" x="712.2" y="-245.7" font-family="Times,serif" font-size="14.00"> - addCustomSeedToDatabase(long) : void</text>
<text text-anchor="start" x="712.2" y="-228.9" font-family="Times,serif" font-size="14.00"> - getSeedFromDatabaseByName(String) : long</text>
<text text-anchor="start" x="712.2" y="-212.1" font-family="Times,serif" font-size="14.00"> + actionPerformed(ActionEvent) : void</text>
<text text-anchor="start" x="712.2" y="-195.3" font-family="Times,serif" font-size="14.00"> - startGame(long) : void</text>
<polyline fill="none" stroke="black" points="704.2,-187.1 1034.72,-187.1"/>
<text text-anchor="start" x="712.2" y="-170.5" font-family="Times,serif" font-size="14.00">gameModeBoard : Board</text>
<text text-anchor="start" x="712.2" y="-153.7" font-family="Times,serif" font-size="14.00"> gameModeSelectionPanel : GameModeSelectionPanel</text>
</g>
<!-- MainMenuButtonController -->
<g id="node4" class="node">
<title>MainMenuButtonController</title>
<polygon fill="none" stroke="black" points="1053.18,-161.9 1053.18,-337.1 1513.73,-337.1 1513.73,-161.9 1053.18,-161.9"/>
<text text-anchor="middle" x="1283.46" y="-320.5" font-family="Times,serif" font-size="14.00">MainMenuButtonController</text>
<polyline fill="none" stroke="black" points="1053.18,-312.3 1513.73,-312.3"/>
<text text-anchor="start" x="1061.18" y="-295.7" font-family="Times,serif" font-size="14.00">+ MainMenuButtonController(MainMenu, JFrame, JFrame, JFrame, JFrame) : </text>
<polyline fill="none" stroke="black" points="1053.18,-287.5 1513.73,-287.5"/>
<text text-anchor="start" x="1061.18" y="-270.9" font-family="Times,serif" font-size="14.00">- adjustFrameDisplay(JFrame) : void</text>
<text text-anchor="start" x="1061.18" y="-254.1" font-family="Times,serif" font-size="14.00"> + actionPerformed(ActionEvent) : void</text>
<text text-anchor="start" x="1061.18" y="-237.3" font-family="Times,serif" font-size="14.00"> - openSettings() : void</text>
<text text-anchor="start" x="1061.18" y="-220.5" font-family="Times,serif" font-size="14.00"> + startNewGame() : void</text>
<text text-anchor="start" x="1061.18" y="-203.7" font-family="Times,serif" font-size="14.00"> + showHowToPlay() : void</text>
<text text-anchor="start" x="1061.18" y="-186.9" font-family="Times,serif" font-size="14.00"> - configureFrame(JFrame) : void</text>
<text text-anchor="start" x="1061.18" y="-170.1" font-family="Times,serif" font-size="14.00"> - exitGame() : void</text>
</g>
<!-- MainMenuMouseController -->
<g id="node5" class="node">
<title>MainMenuMouseController</title>
<polygon fill="none" stroke="black" points="411.11,-203.9 411.11,-295.1 685.81,-295.1 685.81,-203.9 411.11,-203.9"/>
<text text-anchor="middle" x="548.46" y="-278.5" font-family="Times,serif" font-size="14.00">MainMenuMouseController</text>
<polyline fill="none" stroke="black" points="411.11,-270.3 685.81,-270.3"/>
<text text-anchor="start" x="419.11" y="-253.7" font-family="Times,serif" font-size="14.00">+ MainMenuMouseController(ButtonPanel) : </text>
<polyline fill="none" stroke="black" points="411.11,-245.5 685.81,-245.5"/>
<text text-anchor="start" x="419.11" y="-228.9" font-family="Times,serif" font-size="14.00">- initMouseListeners() : void</text>
<text text-anchor="start" x="419.11" y="-212.1" font-family="Times,serif" font-size="14.00"> - addButtonHoverListener(JButton) : void</text>
</g>
<!-- MainMenuMouseController&#45;&gt;ButtonHoverListener -->
<g id="edge1" class="edge">
<title>MainMenuMouseController-&gt;ButtonHoverListener</title>
<path fill="none" stroke="#595959" stroke-dasharray="5,2" d="M548.46,-203.6C548.46,-203.6 548.46,-103.4 548.46,-103.4"/>
<polygon fill="#595959" stroke="#595959" points="548.46,-93.4 552.96,-103.4 548.46,-97.19 548.46,-103.4 548.46,-103.4 548.46,-103.4 548.46,-97.19 543.96,-103.4 548.46,-93.4"/>
<text text-anchor="middle" x="572.16" y="-114.4" font-family="Times,serif" font-size="14.00">«create»</text>
</g>
<!-- MainMenuResizeController -->
<g id="node6" class="node">
<title>MainMenuResizeController</title>
<polygon fill="none" stroke="black" points="1532.01,-212.3 1532.01,-286.7 1798.91,-286.7 1798.91,-212.3 1532.01,-212.3"/>
<text text-anchor="middle" x="1665.46" y="-270.1" font-family="Times,serif" font-size="14.00">MainMenuResizeController</text>
<polyline fill="none" stroke="black" points="1532.01,-261.9 1798.91,-261.9"/>
<text text-anchor="start" x="1540.01" y="-245.3" font-family="Times,serif" font-size="14.00">+ MainMenuResizeController(MainMenu) : </text>
<polyline fill="none" stroke="black" points="1532.01,-237.1 1798.91,-237.1"/>
<text text-anchor="start" x="1540.01" y="-220.5" font-family="Times,serif" font-size="14.00">- addComponentListener() : void</text>
</g>
<!-- MainMenuResizeHandler -->
<g id="node7" class="node">
<title>MainMenuResizeHandler</title>
<polygon fill="none" stroke="black" points="1526.95,-8.9 1526.95,-83.3 1803.96,-83.3 1803.96,-8.9 1526.95,-8.9"/>
<text text-anchor="middle" x="1665.46" y="-66.7" font-family="Times,serif" font-size="14.00">MainMenuResizeHandler</text>
<polyline fill="none" stroke="black" points="1526.95,-58.5 1803.96,-58.5"/>
<text text-anchor="start" x="1534.95" y="-41.9" font-family="Times,serif" font-size="14.00">+ MainMenuResizeHandler(MainMenu) : </text>
<polyline fill="none" stroke="black" points="1526.95,-33.7 1803.96,-33.7"/>
<text text-anchor="start" x="1534.95" y="-17.1" font-family="Times,serif" font-size="14.00">+ componentResized(ComponentEvent) : void</text>
</g>
<!-- MainMenuResizeController&#45;&gt;MainMenuResizeHandler -->
<g id="edge2" class="edge">
<title>MainMenuResizeController-&gt;MainMenuResizeHandler</title>
<path fill="none" stroke="#595959" d="M1620.97,-199.14C1620.97,-199.14 1620.97,-94.73 1620.97,-94.73"/>
<polygon fill="#595959" stroke="#595959" points="1620.97,-199.29 1624.97,-205.29 1620.97,-211.29 1616.97,-205.29 1620.97,-199.29"/>
<polygon fill="#595959" stroke="#595959" points="1620.97,-84.73 1625.47,-94.73 1620.97,-88.51 1620.97,-94.73 1620.97,-94.73 1620.97,-94.73 1620.97,-88.51 1616.47,-94.73 1620.97,-84.73"/>
<text text-anchor="middle" x="1582.11" y="-104.51" font-family="Times,serif" font-size="14.00">resizeHandler</text>
<text text-anchor="middle" x="1582.11" y="-87.71" font-family="Times,serif" font-size="14.00">1</text>
<text text-anchor="middle" x="1617.47" y="-199.59" font-family="Times,serif" font-size="14.00">1</text>
</g>
<!-- MainMenuResizeController&#45;&gt;MainMenuResizeHandler -->
<g id="edge3" class="edge">
<title>MainMenuResizeController-&gt;MainMenuResizeHandler</title>
<path fill="none" stroke="#595959" stroke-dasharray="5,2" d="M1709.94,-212.19C1709.94,-212.19 1709.94,-94.73 1709.94,-94.73"/>
<polygon fill="#595959" stroke="#595959" points="1709.94,-84.73 1714.44,-94.73 1709.94,-88.51 1709.94,-94.73 1709.94,-94.73 1709.94,-94.73 1709.94,-88.51 1705.44,-94.73 1709.94,-84.73"/>
<text text-anchor="middle" x="1705.16" y="-114.4" font-family="Times,serif" font-size="14.00">«create»</text>
</g>
<!-- TutorialController -->
<g id="node8" class="node">
<title>TutorialController</title>
<polygon fill="none" stroke="black" points="1817.12,-199.9 1817.12,-299.1 2077.8,-299.1 2077.8,-199.9 1817.12,-199.9"/>
<text text-anchor="middle" x="1947.46" y="-282.5" font-family="Times,serif" font-size="14.00">TutorialController</text>
<polyline fill="none" stroke="black" points="1817.12,-274.3 2077.8,-274.3"/>
<text text-anchor="start" x="1825.12" y="-257.7" font-family="Times,serif" font-size="14.00">+ TutorialController(MainMenu, JFrame) : </text>
<polyline fill="none" stroke="black" points="1817.12,-249.5 2077.8,-249.5"/>
<text text-anchor="start" x="1825.12" y="-232.9" font-family="Times,serif" font-size="14.00">- tutorialPanel : TutorialPanel</text>
<polyline fill="none" stroke="black" points="1817.12,-224.7 2077.8,-224.7"/>
<text text-anchor="start" x="1825.12" y="-208.1" font-family="Times,serif" font-size="14.00">tutorialPanel : JPanel</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 208 KiB

View File

@@ -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
@enduml

View File

@@ -0,0 +1,90 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1185pt" height="159pt" viewBox="0.00 0.00 1185.44 158.60">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 154.6)">
<title>package</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-154.6 1181.44,-154.6 1181.44,4 -4,4"/>
<!-- Biome -->
<g id="node1" class="node">
<title>Biome</title>
<polygon fill="none" stroke="black" points="0,-8.9 0,-141.7 167.76,-141.7 167.76,-8.9 0,-8.9"/>
<text text-anchor="middle" x="83.88" y="-125.1" font-family="Times,serif" font-size="14.00">&lt;&lt;enumeration&gt;&gt;</text>
<text text-anchor="middle" x="83.88" y="-108.3" font-family="Times,serif" font-size="14.00">Biome</text>
<polyline fill="none" stroke="black" points="0,-100.1 167.76,-100.1"/>
<text text-anchor="start" x="8" y="-83.5" font-family="Times,serif" font-size="14.00">+ Biome() : </text>
<polyline fill="none" stroke="black" points="0,-75.3 167.76,-75.3"/>
<text text-anchor="start" x="8" y="-58.7" font-family="Times,serif" font-size="14.00">+ values() : Biome[]</text>
<text text-anchor="start" x="8" y="-41.9" font-family="Times,serif" font-size="14.00"> + valueOf(String) : Biome</text>
<polyline fill="none" stroke="black" points="0,-33.7 167.76,-33.7"/>
<text text-anchor="start" x="8" y="-17.1" font-family="Times,serif" font-size="14.00">biomeColors : Color[]</text>
</g>
<!-- Fonts -->
<g id="node2" class="node">
<title>Fonts</title>
<polygon fill="none" stroke="black" points="186.1,-0.5 186.1,-150.1 347.65,-150.1 347.65,-0.5 186.1,-0.5"/>
<text text-anchor="middle" x="266.88" y="-133.5" font-family="Times,serif" font-size="14.00">&lt;&lt;enumeration&gt;&gt;</text>
<text text-anchor="middle" x="266.88" y="-116.7" font-family="Times,serif" font-size="14.00">Fonts</text>
<polyline fill="none" stroke="black" points="186.1,-108.5 347.65,-108.5"/>
<text text-anchor="start" x="194.1" y="-91.9" font-family="Times,serif" font-size="14.00">+ Fonts() : </text>
<polyline fill="none" stroke="black" points="186.1,-83.7 347.65,-83.7"/>
<text text-anchor="start" x="194.1" y="-67.1" font-family="Times,serif" font-size="14.00">+ getFont(float) : Font</text>
<text text-anchor="start" x="194.1" y="-50.3" font-family="Times,serif" font-size="14.00"> + valueOf(String) : Fonts</text>
<text text-anchor="start" x="194.1" y="-33.5" font-family="Times,serif" font-size="14.00"> + values() : Fonts[]</text>
<polyline fill="none" stroke="black" points="186.1,-25.3 347.65,-25.3"/>
<text text-anchor="start" x="194.1" y="-8.7" font-family="Times,serif" font-size="14.00">fontPath : String</text>
</g>
<!-- Images -->
<g id="node3" class="node">
<title>Images</title>
<polygon fill="none" stroke="black" points="365.45,-8.9 365.45,-141.7 536.31,-141.7 536.31,-8.9 365.45,-8.9"/>
<text text-anchor="middle" x="450.88" y="-125.1" font-family="Times,serif" font-size="14.00">&lt;&lt;enumeration&gt;&gt;</text>
<text text-anchor="middle" x="450.88" y="-108.3" font-family="Times,serif" font-size="14.00">Images</text>
<polyline fill="none" stroke="black" points="365.45,-100.1 536.31,-100.1"/>
<text text-anchor="start" x="373.45" y="-83.5" font-family="Times,serif" font-size="14.00">+ Images() : </text>
<polyline fill="none" stroke="black" points="365.45,-75.3 536.31,-75.3"/>
<text text-anchor="start" x="373.45" y="-58.7" font-family="Times,serif" font-size="14.00">+ values() : Images[]</text>
<text text-anchor="start" x="373.45" y="-41.9" font-family="Times,serif" font-size="14.00"> + valueOf(String) : Images</text>
<polyline fill="none" stroke="black" points="365.45,-33.7 536.31,-33.7"/>
<text text-anchor="start" x="373.45" y="-17.1" font-family="Times,serif" font-size="14.00">imagePath : String</text>
</g>
<!-- Musics -->
<g id="node4" class="node">
<title>Musics</title>
<polygon fill="none" stroke="black" points="554.44,-8.9 554.44,-141.7 725.32,-141.7 725.32,-8.9 554.44,-8.9"/>
<text text-anchor="middle" x="639.88" y="-125.1" font-family="Times,serif" font-size="14.00">&lt;&lt;enumeration&gt;&gt;</text>
<text text-anchor="middle" x="639.88" y="-108.3" font-family="Times,serif" font-size="14.00">Musics</text>
<polyline fill="none" stroke="black" points="554.44,-100.1 725.32,-100.1"/>
<text text-anchor="start" x="562.44" y="-83.5" font-family="Times,serif" font-size="14.00">+ Musics() : </text>
<polyline fill="none" stroke="black" points="554.44,-75.3 725.32,-75.3"/>
<text text-anchor="start" x="562.44" y="-58.7" font-family="Times,serif" font-size="14.00">+ values() : Musics[]</text>
<text text-anchor="start" x="562.44" y="-41.9" font-family="Times,serif" font-size="14.00"> + valueOf(String) : Musics</text>
<polyline fill="none" stroke="black" points="554.44,-33.7 725.32,-33.7"/>
<text text-anchor="start" x="562.44" y="-17.1" font-family="Times,serif" font-size="14.00">soundsPath : String</text>
</g>
<!-- Sounds -->
<g id="node5" class="node">
<title>Sounds</title>
<polygon fill="none" stroke="black" points="743.05,-8.9 743.05,-141.7 914.71,-141.7 914.71,-8.9 743.05,-8.9"/>
<text text-anchor="middle" x="828.88" y="-125.1" font-family="Times,serif" font-size="14.00">&lt;&lt;enumeration&gt;&gt;</text>
<text text-anchor="middle" x="828.88" y="-108.3" font-family="Times,serif" font-size="14.00">Sounds</text>
<polyline fill="none" stroke="black" points="743.05,-100.1 914.71,-100.1"/>
<text text-anchor="start" x="751.05" y="-83.5" font-family="Times,serif" font-size="14.00">+ Sounds() : </text>
<polyline fill="none" stroke="black" points="743.05,-75.3 914.71,-75.3"/>
<text text-anchor="start" x="751.05" y="-58.7" font-family="Times,serif" font-size="14.00">+ values() : Sounds[]</text>
<text text-anchor="start" x="751.05" y="-41.9" font-family="Times,serif" font-size="14.00"> + valueOf(String) : Sounds</text>
<polyline fill="none" stroke="black" points="743.05,-33.7 914.71,-33.7"/>
<text text-anchor="start" x="751.05" y="-17.1" font-family="Times,serif" font-size="14.00">soundsPath : String</text>
</g>
<!-- TileOrientation -->
<g id="node6" class="node">
<title>TileOrientation</title>
<polygon fill="none" stroke="black" points="932.32,-12.9 932.32,-137.7 1177.44,-137.7 1177.44,-12.9 932.32,-12.9"/>
<text text-anchor="middle" x="1054.88" y="-121.1" font-family="Times,serif" font-size="14.00">&lt;&lt;enumeration&gt;&gt;</text>
<text text-anchor="middle" x="1054.88" y="-104.3" font-family="Times,serif" font-size="14.00">TileOrientation</text>
<polyline fill="none" stroke="black" points="932.32,-96.1 1177.44,-96.1"/>
<text text-anchor="start" x="940.32" y="-79.5" font-family="Times,serif" font-size="14.00">+ TileOrientation() : </text>
<polyline fill="none" stroke="black" points="932.32,-71.3 1177.44,-71.3"/>
<text text-anchor="start" x="940.32" y="-54.7" font-family="Times,serif" font-size="14.00">+ oppositeOrientation() : TileOrientation</text>
<text text-anchor="start" x="940.32" y="-37.9" font-family="Times,serif" font-size="14.00"> + valueOf(String) : TileOrientation</text>
<text text-anchor="start" x="940.32" y="-21.1" font-family="Times,serif" font-size="14.00"> + values() : TileOrientation[]</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 407 KiB

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@@ -1,206 +1,141 @@
@startuml
class fr.monkhanny.dorfromantik.gui.TutorialPanel {
- List<Step> steps
- int currentStepIndex
- Title title
- JLabel stepText
- JLabel stepImage
- JButton nextButton
- JButton prevButton
- MainMenu mainMenu
- JFrame tutorialFrame
+ <<Create>> TutorialPanel(List<Step>,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<Integer>, 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<JButton>
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<Integer>, 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<Step>, 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<Integer> groupAverages
- int highlightedGroup
+ <<Create>> BarChartPanel(List<Integer>,int,JPanel)
# void paintComponent(Graphics)
}
class fr.monkhanny.dorfromantik.gui.SettingsPanel {
- MainMenu mainMenu
- JFrame settingsFrame
- JButton returnButton
+ <<Create>> 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 {
+ <<Create>> 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
+ <<Create>> ButtonHoverAnimator(JButton)
+ void startAnimation(boolean)
+ {static} void updateOriginalFont(float)
}
class fr.monkhanny.dorfromantik.gui.MainMenu {
- Title titleLabel
- ButtonPanel buttonPanel
- JPanel leaderboardContainer
- Leaderboard currentLeaderboard
+ <<Create>> MainMenu()
+ Title getTitleLabel()
+ ButtonPanel getButtonPanel()
}
class fr.monkhanny.dorfromantik.gui.GameOver {
- JFrame gameFrame
+ <<Create>> GameOver(JFrame,int,Database,MainMenu)
- boolean scoreInGroup(List<Integer>,int,int,int)
- String getFunnyQuote(int)
}
class fr.monkhanny.dorfromantik.gui.LeaderboardByTier {
+ <<Create>> LeaderboardByTier()
+ void refresh()
}
class fr.monkhanny.dorfromantik.gui.Reward {
- String name
- String description
- boolean isUnlocked
- ImageIcon icon
+ <<Create>> Reward(String,String,boolean,ImageIcon)
+ String getName()
+ String getDescription()
+ boolean isUnlocked()
+ ImageIcon getIcon()
}
class fr.monkhanny.dorfromantik.gui.LeaderboardBarChartPanel {
- int totalPlayers
- int rank
+ <<Create>> LeaderboardBarChartPanel(int,int)
# void paintComponent(Graphics)
}
class fr.monkhanny.dorfromantik.gui.Step {
- String title
- String text
- String imagePath
+ <<Create>> Step(String,String,String)
+ String getText()
+ String getImagePath()
+ String getTitle()
}
class fr.monkhanny.dorfromantik.gui.ButtonPanel {
- JButton newGameButton
- JButton howToPlayButton
- JButton settingsButton
- JButton exitButton
+ <<Create>> ButtonPanel(float)
+ JButton getNewGameButton()
+ JButton getHowToPlayButton()
+ JButton getSettingsButton()
+ JButton getExitButton()
+ List<JButton> getButtons()
+ void updateButtonFonts(int)
}
class fr.monkhanny.dorfromantik.gui.GameControlsMenu {
- boolean isVisible
- {static} String ICON_PATH
+ <<Create>> GameControlsMenu()
- JPanel createPanel(String,String)
- JPanel createPanelWithMultipleIcons(String,String)
- ImageIcon loadIcon(String)
+ void toggleVisibility()
+ void setControlsMenuVisible(boolean)
}
abstract class fr.monkhanny.dorfromantik.gui.Leaderboard {
+ <<Create>> Leaderboard()
+ {abstract}void refresh()
}
class fr.monkhanny.dorfromantik.gui.GameModeSelectionPanel {
- JLabel titleLabel
- JTextField seedField
- JButton startButton
- List<JButton> seriesButtons
- Database database
- JPanel modePanel
- JButton prevButton
- JButton nextButton
- int currentPage
- int itemsPerPage
- JLabel pageLabel
- JSpinner startDateSpinner
- JSpinner endDateSpinner
- ActionListener buttonListener
- JCheckBox developerSeriesCheckBox
+ <<Create>> 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

View File

@@ -0,0 +1,318 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="2475pt" height="978pt" viewBox="0.00 0.00 2475.25 978.40">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 974.4)">
<title>package</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-974.4 2471.25,-974.4 2471.25,4 -4,4"/>
<!-- BarChartPanel -->
<g id="node1" class="node">
<title>BarChartPanel</title>
<polygon fill="none" stroke="black" points="19.57,-470.1 19.57,-544.5 292.14,-544.5 292.14,-470.1 19.57,-470.1"/>
<text text-anchor="middle" x="155.86" y="-527.9" font-family="Times,serif" font-size="14.00">BarChartPanel</text>
<polyline fill="none" stroke="black" points="19.57,-519.7 292.14,-519.7"/>
<text text-anchor="start" x="27.57" y="-503.1" font-family="Times,serif" font-size="14.00">+ BarChartPanel(List&lt;Integer&gt;, int, JPanel) : </text>
<polyline fill="none" stroke="black" points="19.57,-494.9 292.14,-494.9"/>
<text text-anchor="start" x="27.57" y="-478.3" font-family="Times,serif" font-size="14.00"># paintComponent(Graphics) : void</text>
</g>
<!-- ButtonHoverAnimator -->
<g id="node2" class="node">
<title>ButtonHoverAnimator</title>
<polygon fill="none" stroke="black" points="329.89,-761.5 329.89,-852.7 547.82,-852.7 547.82,-761.5 329.89,-761.5"/>
<text text-anchor="middle" x="438.86" y="-836.1" font-family="Times,serif" font-size="14.00">ButtonHoverAnimator</text>
<polyline fill="none" stroke="black" points="329.89,-827.9 547.82,-827.9"/>
<text text-anchor="start" x="337.89" y="-811.3" font-family="Times,serif" font-size="14.00">+ ButtonHoverAnimator(JButton) : </text>
<polyline fill="none" stroke="black" points="329.89,-803.1 547.82,-803.1"/>
<text text-anchor="start" x="337.89" y="-786.5" font-family="Times,serif" font-size="14.00">+ startAnimation(boolean) : void</text>
<text text-anchor="start" x="337.89" y="-769.7" font-family="Times,serif" font-size="14.00"> + updateOriginalFont(float) : void</text>
</g>
<!-- ButtonPanel -->
<g id="node3" class="node">
<title>ButtonPanel</title>
<polygon fill="none" stroke="black" points="733.94,-128.7 733.94,-370.3 927.78,-370.3 927.78,-128.7 733.94,-128.7"/>
<text text-anchor="middle" x="830.86" y="-353.7" font-family="Times,serif" font-size="14.00">ButtonPanel</text>
<polyline fill="none" stroke="black" points="733.94,-345.5 927.78,-345.5"/>
<text text-anchor="start" x="741.94" y="-328.9" font-family="Times,serif" font-size="14.00">+ ButtonPanel(float) : </text>
<polyline fill="none" stroke="black" points="733.94,-320.7 927.78,-320.7"/>
<text text-anchor="start" x="741.94" y="-304.1" font-family="Times,serif" font-size="14.00">- howToPlayButton : JButton</text>
<text text-anchor="start" x="741.94" y="-287.3" font-family="Times,serif" font-size="14.00"> - exitButton : JButton</text>
<text text-anchor="start" x="741.94" y="-270.5" font-family="Times,serif" font-size="14.00"> - newGameButton : JButton</text>
<text text-anchor="start" x="741.94" y="-253.7" font-family="Times,serif" font-size="14.00"> - settingsButton : JButton</text>
<polyline fill="none" stroke="black" points="733.94,-245.5 927.78,-245.5"/>
<text text-anchor="start" x="741.94" y="-228.9" font-family="Times,serif" font-size="14.00">+ updateButtonFonts(int) : void</text>
<polyline fill="none" stroke="black" points="733.94,-220.7 927.78,-220.7"/>
<text text-anchor="start" x="741.94" y="-204.1" font-family="Times,serif" font-size="14.00">howToPlayButton : JButton</text>
<text text-anchor="start" x="741.94" y="-187.3" font-family="Times,serif" font-size="14.00"> exitButton : JButton</text>
<text text-anchor="start" x="741.94" y="-170.5" font-family="Times,serif" font-size="14.00"> buttons : List&lt;JButton&gt;</text>
<text text-anchor="start" x="741.94" y="-153.7" font-family="Times,serif" font-size="14.00"> settingsButton : JButton</text>
<text text-anchor="start" x="741.94" y="-136.9" font-family="Times,serif" font-size="14.00"> newGameButton : JButton</text>
</g>
<!-- GameControlsMenu -->
<g id="node4" class="node">
<title>GameControlsMenu</title>
<polygon fill="none" stroke="black" points="1407.73,-732.3 1407.73,-881.9 1747.99,-881.9 1747.99,-732.3 1407.73,-732.3"/>
<text text-anchor="middle" x="1577.86" y="-865.3" font-family="Times,serif" font-size="14.00">GameControlsMenu</text>
<polyline fill="none" stroke="black" points="1407.73,-857.1 1747.99,-857.1"/>
<text text-anchor="start" x="1415.73" y="-840.5" font-family="Times,serif" font-size="14.00">+ GameControlsMenu() : </text>
<polyline fill="none" stroke="black" points="1407.73,-832.3 1747.99,-832.3"/>
<text text-anchor="start" x="1415.73" y="-815.7" font-family="Times,serif" font-size="14.00">- createPanel(String, String) : JPanel</text>
<text text-anchor="start" x="1415.73" y="-798.9" font-family="Times,serif" font-size="14.00"> - loadIcon(String) : ImageIcon</text>
<text text-anchor="start" x="1415.73" y="-782.1" font-family="Times,serif" font-size="14.00"> - createPanelWithMultipleIcons(String, String[]) : JPanel</text>
<text text-anchor="start" x="1415.73" y="-765.3" font-family="Times,serif" font-size="14.00"> + toggleVisibility() : void</text>
<polyline fill="none" stroke="black" points="1407.73,-757.1 1747.99,-757.1"/>
<text text-anchor="start" x="1415.73" y="-740.5" font-family="Times,serif" font-size="14.00">controlsMenuVisible : boolean</text>
</g>
<!-- GameModeSelectionPanel -->
<g id="node5" class="node">
<title>GameModeSelectionPanel</title>
<polygon fill="none" stroke="black" points="1765.71,-644.3 1765.71,-969.9 2164.01,-969.9 2164.01,-644.3 1765.71,-644.3"/>
<text text-anchor="middle" x="1964.86" y="-953.3" font-family="Times,serif" font-size="14.00">GameModeSelectionPanel</text>
<polyline fill="none" stroke="black" points="1765.71,-945.1 2164.01,-945.1"/>
<text text-anchor="start" x="1773.71" y="-928.5" font-family="Times,serif" font-size="14.00">+ GameModeSelectionPanel(ActionListener, JFrame, MainMenu) : </text>
<polyline fill="none" stroke="black" points="1765.71,-920.3 2164.01,-920.3"/>
<text text-anchor="start" x="1773.71" y="-903.7" font-family="Times,serif" font-size="14.00">- currentPage : int</text>
<polyline fill="none" stroke="black" points="1765.71,-895.5 2164.01,-895.5"/>
<text text-anchor="start" x="1773.71" y="-878.9" font-family="Times,serif" font-size="14.00">- createTopPanel(JFrame, MainMenu) : JPanel</text>
<text text-anchor="start" x="1773.71" y="-862.1" font-family="Times,serif" font-size="14.00"> - createDateFilterPanel() : JPanel</text>
<text text-anchor="start" x="1773.71" y="-845.3" font-family="Times,serif" font-size="14.00"> - createSeedPanel(ActionListener) : JPanel</text>
<text text-anchor="start" x="1773.71" y="-828.5" font-family="Times,serif" font-size="14.00"> - stylizeDateSpinner(JSpinner) : void</text>
<text text-anchor="start" x="1773.71" y="-811.7" font-family="Times,serif" font-size="14.00"> - createPaginationPanel() : JPanel</text>
<text text-anchor="start" x="1773.71" y="-794.9" font-family="Times,serif" font-size="14.00"> - createReturnButtonWithIcon(JFrame, MainMenu) : JButton</text>
<text text-anchor="start" x="1773.71" y="-778.1" font-family="Times,serif" font-size="14.00"> - createGameModeButton(String, ActionListener) : JButton</text>
<text text-anchor="start" x="1773.71" y="-761.3" font-family="Times,serif" font-size="14.00"> + loadSeriesForCurrentPage() : void</text>
<text text-anchor="start" x="1773.71" y="-744.5" font-family="Times,serif" font-size="14.00"> - createMainPanel() : JPanel</text>
<text text-anchor="start" x="1773.71" y="-727.7" font-family="Times,serif" font-size="14.00"> - updatePageLabelAndButtons(int, int) : void</text>
<text text-anchor="start" x="1773.71" y="-710.9" font-family="Times,serif" font-size="14.00"> - createGridBagConstraints(int, int, int) : GridBagConstraints</text>
<polyline fill="none" stroke="black" points="1765.71,-702.7 2164.01,-702.7"/>
<text text-anchor="start" x="1773.71" y="-686.1" font-family="Times,serif" font-size="14.00">longSeed : long</text>
<text text-anchor="start" x="1773.71" y="-669.3" font-family="Times,serif" font-size="14.00"> currentPage : int</text>
<text text-anchor="start" x="1773.71" y="-652.5" font-family="Times,serif" font-size="14.00"> stringSeed : String</text>
</g>
<!-- GameOver -->
<g id="node6" class="node">
<title>GameOver</title>
<polygon fill="none" stroke="black" points="0,-761.5 0,-852.7 311.72,-852.7 311.72,-761.5 0,-761.5"/>
<text text-anchor="middle" x="155.86" y="-836.1" font-family="Times,serif" font-size="14.00">GameOver</text>
<polyline fill="none" stroke="black" points="0,-827.9 311.72,-827.9"/>
<text text-anchor="start" x="8" y="-811.3" font-family="Times,serif" font-size="14.00">+ GameOver(JFrame, int, Database, MainMenu) : </text>
<polyline fill="none" stroke="black" points="0,-803.1 311.72,-803.1"/>
<text text-anchor="start" x="8" y="-786.5" font-family="Times,serif" font-size="14.00">- getFunnyQuote(int) : String</text>
<text text-anchor="start" x="8" y="-769.7" font-family="Times,serif" font-size="14.00"> - scoreInGroup(List&lt;Integer&gt;, int, int, int) : boolean</text>
</g>
<!-- GameOver&#45;&gt;BarChartPanel -->
<g id="edge1" class="edge">
<title>GameOver-&gt;BarChartPanel</title>
<path fill="none" stroke="#595959" stroke-dasharray="5,2" d="M155.86,-761.24C155.86,-761.24 155.86,-555.85 155.86,-555.85"/>
<polygon fill="#595959" stroke="#595959" points="155.86,-545.85 160.36,-555.85 155.86,-549.63 155.86,-555.85 155.86,-555.85 155.86,-555.85 155.86,-549.63 151.36,-555.85 155.86,-545.85"/>
<text text-anchor="middle" x="179.56" y="-613.2" font-family="Times,serif" font-size="14.00">«create»</text>
</g>
<!-- Leaderboard -->
<g id="node7" class="node">
<title>Leaderboard</title>
<polygon fill="none" stroke="black" points="896.69,-0.5 896.69,-74.9 1015.03,-74.9 1015.03,-0.5 896.69,-0.5"/>
<text text-anchor="middle" x="955.86" y="-58.3" font-family="Times,serif" font-size="14.00">Leaderboard</text>
<polyline fill="none" stroke="black" points="896.69,-50.1 1015.03,-50.1"/>
<text text-anchor="start" x="904.69" y="-33.5" font-family="Times,serif" font-size="14.00">+ Leaderboard() : </text>
<polyline fill="none" stroke="black" points="896.69,-25.3 1015.03,-25.3"/>
<text text-anchor="start" x="904.69" y="-8.7" font-family="Times,serif" font-size="14.00">+ refresh() : void</text>
</g>
<!-- LeaderboardBarChartPanel -->
<g id="node8" class="node">
<title>LeaderboardBarChartPanel</title>
<polygon fill="none" stroke="black" points="518.2,-0.5 518.2,-74.9 755.52,-74.9 755.52,-0.5 518.2,-0.5"/>
<text text-anchor="middle" x="636.86" y="-58.3" font-family="Times,serif" font-size="14.00">LeaderboardBarChartPanel</text>
<polyline fill="none" stroke="black" points="518.2,-50.1 755.52,-50.1"/>
<text text-anchor="start" x="526.2" y="-33.5" font-family="Times,serif" font-size="14.00">+ LeaderboardBarChartPanel(int, int) : </text>
<polyline fill="none" stroke="black" points="518.2,-25.3 755.52,-25.3"/>
<text text-anchor="start" x="526.2" y="-8.7" font-family="Times,serif" font-size="14.00"># paintComponent(Graphics) : void</text>
</g>
<!-- LeaderboardByTier -->
<g id="node9" class="node">
<title>LeaderboardByTier</title>
<polygon fill="none" stroke="black" points="557.86,-212.3 557.86,-286.7 715.86,-286.7 715.86,-212.3 557.86,-212.3"/>
<text text-anchor="middle" x="636.86" y="-270.1" font-family="Times,serif" font-size="14.00">LeaderboardByTier</text>
<polyline fill="none" stroke="black" points="557.86,-261.9 715.86,-261.9"/>
<text text-anchor="start" x="565.86" y="-245.3" font-family="Times,serif" font-size="14.00">+ LeaderboardByTier() : </text>
<polyline fill="none" stroke="black" points="557.86,-237.1 715.86,-237.1"/>
<text text-anchor="start" x="565.86" y="-220.5" font-family="Times,serif" font-size="14.00">+ refresh() : void</text>
</g>
<!-- LeaderboardByTier&#45;&gt;Leaderboard -->
<g id="edge2" class="edge">
<title>LeaderboardByTier-&gt;Leaderboard</title>
<path fill="none" stroke="#000082" d="M663.19,-211.85C663.19,-168.09 663.19,-101.8 663.19,-101.8 663.19,-101.8 912.23,-101.8 912.23,-101.8 912.23,-101.8 912.23,-86.87 912.23,-86.87"/>
<polygon fill="#000082" stroke="#000082" points="915.73,-86.87 912.23,-76.87 908.73,-86.87 915.73,-86.87"/>
</g>
<!-- LeaderboardByTier&#45;&gt;LeaderboardBarChartPanel -->
<g id="edge3" class="edge">
<title>LeaderboardByTier-&gt;LeaderboardBarChartPanel</title>
<path fill="none" stroke="#595959" stroke-dasharray="5,2" d="M610.53,-212.12C610.53,-212.12 610.53,-86.28 610.53,-86.28"/>
<polygon fill="#595959" stroke="#595959" points="610.53,-76.28 615.03,-86.28 610.53,-80.06 610.53,-86.28 610.53,-86.28 610.53,-86.28 610.53,-80.06 606.03,-86.28 610.53,-76.28"/>
<text text-anchor="middle" x="660.56" y="-97.6" font-family="Times,serif" font-size="14.00">«create»</text>
</g>
<!-- LeaderboardWorldWide -->
<g id="node10" class="node">
<title>LeaderboardWorldWide</title>
<polygon fill="none" stroke="black" points="983.95,-187.1 983.95,-311.9 1339.76,-311.9 1339.76,-187.1 983.95,-187.1"/>
<text text-anchor="middle" x="1161.86" y="-295.3" font-family="Times,serif" font-size="14.00">LeaderboardWorldWide</text>
<polyline fill="none" stroke="black" points="983.95,-287.1 1339.76,-287.1"/>
<text text-anchor="start" x="991.95" y="-270.5" font-family="Times,serif" font-size="14.00">+ LeaderboardWorldWide() : </text>
<polyline fill="none" stroke="black" points="983.95,-262.3 1339.76,-262.3"/>
<text text-anchor="start" x="991.95" y="-245.7" font-family="Times,serif" font-size="14.00">- createPlayerPanel(String, int, int) : JPanel</text>
<text text-anchor="start" x="991.95" y="-228.9" font-family="Times,serif" font-size="14.00"> - createTopPlayerPanel(String, int, String, boolean) : JPanel</text>
<text text-anchor="start" x="991.95" y="-212.1" font-family="Times,serif" font-size="14.00"> - resizeIcon(String, int, int) : ImageIcon</text>
<text text-anchor="start" x="991.95" y="-195.3" font-family="Times,serif" font-size="14.00"> + refresh() : void</text>
</g>
<!-- LeaderboardWorldWide&#45;&gt;Leaderboard -->
<g id="edge4" class="edge">
<title>LeaderboardWorldWide-&gt;Leaderboard</title>
<path fill="none" stroke="#000082" d="M999.49,-186.81C999.49,-186.81 999.49,-86.85 999.49,-86.85"/>
<polygon fill="#000082" stroke="#000082" points="1002.99,-86.85 999.49,-76.85 995.99,-86.85 1002.99,-86.85"/>
</g>
<!-- MainMenu -->
<g id="node11" class="node">
<title>MainMenu</title>
<polygon fill="none" stroke="black" points="834.53,-440.9 834.53,-573.7 1009.19,-573.7 1009.19,-440.9 834.53,-440.9"/>
<text text-anchor="middle" x="921.86" y="-557.1" font-family="Times,serif" font-size="14.00">MainMenu</text>
<polyline fill="none" stroke="black" points="834.53,-548.9 1009.19,-548.9"/>
<text text-anchor="start" x="842.53" y="-532.3" font-family="Times,serif" font-size="14.00">+ MainMenu() : </text>
<polyline fill="none" stroke="black" points="834.53,-524.1 1009.19,-524.1"/>
<text text-anchor="start" x="842.53" y="-507.5" font-family="Times,serif" font-size="14.00">- titleLabel : Title</text>
<text text-anchor="start" x="842.53" y="-490.7" font-family="Times,serif" font-size="14.00"> - buttonPanel : ButtonPanel</text>
<polyline fill="none" stroke="black" points="834.53,-482.5 1009.19,-482.5"/>
<text text-anchor="start" x="842.53" y="-465.9" font-family="Times,serif" font-size="14.00">titleLabel : Title</text>
<text text-anchor="start" x="842.53" y="-449.1" font-family="Times,serif" font-size="14.00"> buttonPanel : ButtonPanel</text>
</g>
<!-- MainMenu&#45;&gt;ButtonPanel -->
<g id="edge5" class="edge">
<title>MainMenu-&gt;ButtonPanel</title>
<path fill="none" stroke="#595959" d="M865.61,-427.52C865.61,-427.52 865.61,-381.91 865.61,-381.91"/>
<polygon fill="#595959" stroke="#595959" points="865.61,-427.67 869.61,-433.67 865.61,-439.67 861.61,-433.67 865.61,-427.67"/>
<polygon fill="#595959" stroke="#595959" points="865.61,-371.91 870.11,-381.91 865.61,-375.69 865.61,-381.91 865.61,-381.91 865.61,-381.91 865.61,-375.69 861.11,-381.91 865.61,-371.91"/>
<text text-anchor="middle" x="832.17" y="-391.69" font-family="Times,serif" font-size="14.00">buttonPanel</text>
<text text-anchor="middle" x="832.17" y="-374.89" font-family="Times,serif" font-size="14.00">1</text>
<text text-anchor="middle" x="862.11" y="-427.97" font-family="Times,serif" font-size="14.00">1</text>
</g>
<!-- MainMenu&#45;&gt;ButtonPanel -->
<g id="edge6" class="edge">
<title>MainMenu-&gt;ButtonPanel</title>
<path fill="none" stroke="#595959" stroke-dasharray="5,2" d="M896.69,-440.57C896.69,-440.57 896.69,-381.91 896.69,-381.91"/>
<polygon fill="#595959" stroke="#595959" points="896.69,-371.91 901.19,-381.91 896.69,-375.69 896.69,-381.91 896.69,-381.91 896.69,-381.91 896.69,-375.69 892.19,-381.91 896.69,-371.91"/>
<text text-anchor="middle" x="910.56" y="-393" font-family="Times,serif" font-size="14.00">«create»</text>
</g>
<!-- MainMenu&#45;&gt;Leaderboard -->
<g id="edge7" class="edge">
<title>MainMenu-&gt;Leaderboard</title>
<path fill="none" stroke="#595959" d="M955.87,-427.46C955.87,-427.46 955.87,-86.44 955.87,-86.44"/>
<polygon fill="#595959" stroke="#595959" points="955.87,-427.62 959.87,-433.62 955.87,-439.62 951.87,-433.62 955.87,-427.62"/>
<polygon fill="#595959" stroke="#595959" points="955.87,-76.44 960.37,-86.44 955.87,-80.22 955.87,-86.44 955.87,-86.44 955.87,-86.44 955.87,-80.22 951.37,-86.44 955.87,-76.44"/>
<text text-anchor="middle" x="900.68" y="-96.22" font-family="Times,serif" font-size="14.00">currentLeaderboard</text>
<text text-anchor="middle" x="900.68" y="-79.42" font-family="Times,serif" font-size="14.00">1</text>
<text text-anchor="middle" x="952.37" y="-427.92" font-family="Times,serif" font-size="14.00">1</text>
</g>
<!-- MainMenu&#45;&gt;LeaderboardWorldWide -->
<g id="edge8" class="edge">
<title>MainMenu-&gt;LeaderboardWorldWide</title>
<path fill="none" stroke="#595959" stroke-dasharray="5,2" d="M996.57,-440.57C996.57,-440.57 996.57,-323.62 996.57,-323.62"/>
<polygon fill="#595959" stroke="#595959" points="996.57,-313.62 1001.07,-323.62 996.57,-317.4 996.57,-323.62 996.57,-323.62 996.57,-323.62 996.57,-317.4 992.07,-323.62 996.57,-313.62"/>
<text text-anchor="middle" x="1098.56" y="-393" font-family="Times,serif" font-size="14.00">«create»</text>
</g>
<!-- Reward -->
<g id="node12" class="node">
<title>Reward</title>
<polygon fill="none" stroke="black" points="2182.47,-707.1 2182.47,-907.1 2467.25,-907.1 2467.25,-707.1 2182.47,-707.1"/>
<text text-anchor="middle" x="2324.86" y="-890.5" font-family="Times,serif" font-size="14.00">Reward</text>
<polyline fill="none" stroke="black" points="2182.47,-882.3 2467.25,-882.3"/>
<text text-anchor="start" x="2190.47" y="-865.7" font-family="Times,serif" font-size="14.00">+ Reward(String, String, boolean, ImageIcon) : </text>
<polyline fill="none" stroke="black" points="2182.47,-857.5 2467.25,-857.5"/>
<text text-anchor="start" x="2190.47" y="-840.9" font-family="Times,serif" font-size="14.00">- description : String</text>
<text text-anchor="start" x="2190.47" y="-824.1" font-family="Times,serif" font-size="14.00"> - isUnlocked : boolean</text>
<text text-anchor="start" x="2190.47" y="-807.3" font-family="Times,serif" font-size="14.00"> - icon : ImageIcon</text>
<text text-anchor="start" x="2190.47" y="-790.5" font-family="Times,serif" font-size="14.00"> - name : String</text>
<polyline fill="none" stroke="black" points="2182.47,-782.3 2467.25,-782.3"/>
<text text-anchor="start" x="2190.47" y="-765.7" font-family="Times,serif" font-size="14.00">name : String</text>
<text text-anchor="start" x="2190.47" y="-748.9" font-family="Times,serif" font-size="14.00"> icon : ImageIcon</text>
<text text-anchor="start" x="2190.47" y="-732.1" font-family="Times,serif" font-size="14.00"> description : String</text>
<text text-anchor="start" x="2190.47" y="-715.3" font-family="Times,serif" font-size="14.00"> isUnlocked : boolean</text>
</g>
<!-- SettingsPanel -->
<g id="node13" class="node">
<title>SettingsPanel</title>
<polygon fill="none" stroke="black" points="565.86,-681.9 565.86,-932.3 1067.86,-932.3 1067.86,-681.9 565.86,-681.9"/>
<text text-anchor="middle" x="816.86" y="-915.7" font-family="Times,serif" font-size="14.00">SettingsPanel</text>
<polyline fill="none" stroke="black" points="565.86,-907.5 1067.86,-907.5"/>
<text text-anchor="start" x="573.86" y="-890.9" font-family="Times,serif" font-size="14.00">+ SettingsPanel(MainMenu, JFrame) : </text>
<polyline fill="none" stroke="black" points="565.86,-882.7 1067.86,-882.7"/>
<text text-anchor="start" x="573.86" y="-866.1" font-family="Times,serif" font-size="14.00">- initializeSettingsFrame() : void</text>
<text text-anchor="start" x="573.86" y="-849.3" font-family="Times,serif" font-size="14.00"> - createReturnButtonWithIcon() : JButton</text>
<text text-anchor="start" x="573.86" y="-832.5" font-family="Times,serif" font-size="14.00"> - setupBackground() : void</text>
<text text-anchor="start" x="573.86" y="-815.7" font-family="Times,serif" font-size="14.00"> - createSliderPanel(JSlider) : JPanel</text>
<text text-anchor="start" x="573.86" y="-798.9" font-family="Times,serif" font-size="14.00"> - createSoundPanel(String, JSlider, ChangeListener, MuteCheckBoxListener) : JPanel</text>
<text text-anchor="start" x="573.86" y="-782.1" font-family="Times,serif" font-size="14.00"> - setupMainPanel() : void</text>
<text text-anchor="start" x="573.86" y="-765.3" font-family="Times,serif" font-size="14.00"> - setupTopPanel() : void</text>
<text text-anchor="start" x="573.86" y="-748.5" font-family="Times,serif" font-size="14.00"> - createGridBagConstraints(int, int, int) : GridBagConstraints</text>
<text text-anchor="start" x="573.86" y="-731.7" font-family="Times,serif" font-size="14.00"> # paintComponent(Graphics) : void</text>
<text text-anchor="start" x="573.86" y="-714.9" font-family="Times,serif" font-size="14.00"> - createAutoFocusPanel() : JPanel</text>
<polyline fill="none" stroke="black" points="565.86,-706.7 1067.86,-706.7"/>
<text text-anchor="start" x="573.86" y="-690.1" font-family="Times,serif" font-size="14.00">returnButtonVisible : boolean</text>
</g>
<!-- SettingsPanel&#45;&gt;MainMenu -->
<g id="edge9" class="edge">
<title>SettingsPanel-&gt;MainMenu</title>
<path fill="none" stroke="#595959" d="M921.86,-668.64C921.86,-668.64 921.86,-585.37 921.86,-585.37"/>
<polygon fill="#595959" stroke="#595959" points="921.86,-668.79 925.86,-674.79 921.86,-680.79 917.86,-674.79 921.86,-668.79"/>
<polygon fill="#595959" stroke="#595959" points="921.86,-575.37 926.36,-585.37 921.86,-579.15 921.86,-585.37 921.86,-585.37 921.86,-585.37 921.86,-579.15 917.36,-585.37 921.86,-575.37"/>
<text text-anchor="middle" x="891.53" y="-595.15" font-family="Times,serif" font-size="14.00">mainMenu</text>
<text text-anchor="middle" x="891.53" y="-578.35" font-family="Times,serif" font-size="14.00">1</text>
<text text-anchor="middle" x="918.36" y="-669.09" font-family="Times,serif" font-size="14.00">1</text>
</g>
<!-- Step -->
<g id="node14" class="node">
<title>Step</title>
<polygon fill="none" stroke="black" points="1143.27,-424.1 1143.27,-590.5 1332.45,-590.5 1332.45,-424.1 1143.27,-424.1"/>
<text text-anchor="middle" x="1237.86" y="-573.9" font-family="Times,serif" font-size="14.00">Step</text>
<polyline fill="none" stroke="black" points="1143.27,-565.7 1332.45,-565.7"/>
<text text-anchor="start" x="1151.27" y="-549.1" font-family="Times,serif" font-size="14.00">+ Step(String, String, String) : </text>
<polyline fill="none" stroke="black" points="1143.27,-540.9 1332.45,-540.9"/>
<text text-anchor="start" x="1151.27" y="-524.3" font-family="Times,serif" font-size="14.00">- title : String</text>
<text text-anchor="start" x="1151.27" y="-507.5" font-family="Times,serif" font-size="14.00"> - imagePath : String</text>
<text text-anchor="start" x="1151.27" y="-490.7" font-family="Times,serif" font-size="14.00"> - text : String</text>
<polyline fill="none" stroke="black" points="1143.27,-482.5 1332.45,-482.5"/>
<text text-anchor="start" x="1151.27" y="-465.9" font-family="Times,serif" font-size="14.00">text : String</text>
<text text-anchor="start" x="1151.27" y="-449.1" font-family="Times,serif" font-size="14.00"> imagePath : String</text>
<text text-anchor="start" x="1151.27" y="-432.3" font-family="Times,serif" font-size="14.00"> title : String</text>
</g>
<!-- TutorialPanel -->
<g id="node15" class="node">
<title>TutorialPanel</title>
<polygon fill="none" stroke="black" points="1086.01,-719.5 1086.01,-894.7 1389.71,-894.7 1389.71,-719.5 1086.01,-719.5"/>
<text text-anchor="middle" x="1237.86" y="-878.1" font-family="Times,serif" font-size="14.00">TutorialPanel</text>
<polyline fill="none" stroke="black" points="1086.01,-869.9 1389.71,-869.9"/>
<text text-anchor="start" x="1094.01" y="-853.3" font-family="Times,serif" font-size="14.00">+ TutorialPanel(List&lt;Step&gt;, MainMenu, JFrame) : </text>
<polyline fill="none" stroke="black" points="1086.01,-845.1 1389.71,-845.1"/>
<text text-anchor="start" x="1094.01" y="-828.5" font-family="Times,serif" font-size="14.00">- updateStepDisplay() : void</text>
<text text-anchor="start" x="1094.01" y="-811.7" font-family="Times,serif" font-size="14.00"> - styleButton(JButton) : void</text>
<text text-anchor="start" x="1094.01" y="-794.9" font-family="Times,serif" font-size="14.00"> - createReturnButtonWithIcon() : JButton</text>
<text text-anchor="start" x="1094.01" y="-778.1" font-family="Times,serif" font-size="14.00"> - showPreviousStep() : void</text>
<text text-anchor="start" x="1094.01" y="-761.3" font-family="Times,serif" font-size="14.00"> - addLineBreaks(String, int) : String</text>
<text text-anchor="start" x="1094.01" y="-744.5" font-family="Times,serif" font-size="14.00"> # paintComponent(Graphics) : void</text>
<text text-anchor="start" x="1094.01" y="-727.7" font-family="Times,serif" font-size="14.00"> - showNextStep() : void</text>
</g>
<!-- TutorialPanel&#45;&gt;MainMenu -->
<g id="edge10" class="edge">
<title>TutorialPanel-&gt;MainMenu</title>
<path fill="none" stroke="#595959" d="M1114.64,-706.12C1114.64,-706.12 1114.64,-507.3 1114.64,-507.3 1114.64,-507.3 1020.72,-507.3 1020.72,-507.3"/>
<polygon fill="#595959" stroke="#595959" points="1114.64,-706.27 1118.64,-712.27 1114.64,-718.27 1110.64,-712.27 1114.64,-706.27"/>
<polygon fill="#595959" stroke="#595959" points="1010.72,-507.3 1020.72,-502.8 1014.5,-507.3 1020.72,-507.3 1020.72,-507.3 1020.72,-507.3 1014.5,-507.3 1020.72,-511.8 1010.72,-507.3"/>
<text text-anchor="middle" x="1039.83" y="-528.3" font-family="Times,serif" font-size="14.00">mainMenu</text>
<text text-anchor="middle" x="1039.83" y="-511.5" font-family="Times,serif" font-size="14.00">1</text>
<text text-anchor="middle" x="1111.14" y="-706.58" font-family="Times,serif" font-size="14.00">1</text>
</g>
<!-- TutorialPanel&#45;&gt;Step -->
<g id="edge11" class="edge">
<title>TutorialPanel-&gt;Step</title>
<path fill="none" stroke="#595959" d="M1237.86,-706.12C1237.86,-706.12 1237.86,-602.06 1237.86,-602.06"/>
<polygon fill="#595959" stroke="#595959" points="1237.86,-706.27 1241.86,-712.27 1237.86,-718.27 1233.86,-712.27 1237.86,-706.27"/>
<polygon fill="#595959" stroke="#595959" points="1237.86,-592.06 1242.36,-602.06 1237.86,-595.85 1237.86,-602.06 1237.86,-602.06 1237.86,-602.06 1237.86,-595.85 1233.36,-602.06 1237.86,-592.06"/>
<text text-anchor="middle" x="1223.86" y="-611.85" font-family="Times,serif" font-size="14.00">steps</text>
<text text-anchor="middle" x="1223.86" y="-595.05" font-family="Times,serif" font-size="14.00">*</text>
<text text-anchor="middle" x="1234.36" y="-706.58" font-family="Times,serif" font-size="14.00">1</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

@@ -1,193 +1,136 @@
@startuml
class fr.monkhanny.dorfromantik.game.CustomKeyAdapter {
- Board board
+ <<Create>> 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<Tile>
+ addTile(Tile): void
tiles: Set<Tile>
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<Pocket> pockets
- int currentScore
+ <<Create>> ScoreManager()
+ void addTile(Tile)
- Pocket findPocketForTile(Tile,Biome)
- void recalculateScore()
+ int getCurrentScore()
}
class fr.monkhanny.dorfromantik.game.EscapeMenu {
- JButton resumeButton
- JButton mainMenuButton
- JButton settingsButton
+ <<Create>> 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
+ <<Create>> 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
+ <<Create>> Game(long)
+ <<Create>> Game()
+ int getRandomInt(int)
}
class fr.monkhanny.dorfromantik.game.TilePanningTransition {
- Board board
- int targetOffsetX
- int steps
+ <<Create>> TilePanningTransition(Board,int,int,int)
+ void start()
}
class fr.monkhanny.dorfromantik.game.RemainingTilesIndicator {
- int remainingTiles
- int maxTiles
+ <<Create>> 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
+ <<Create>> CustomMouseMotionAdapter(Board)
+ void mouseMoved(MouseEvent)
}
class fr.monkhanny.dorfromantik.game.Tile {
- HashMap<TileOrientation,Biome> sideBiomes
+ <<Create>> Tile(Board,int,int,int,Biome)
+ <<Create>> Tile(Board,int,int,int)
+ <<Create>> Tile(Board,Point,int,Biome)
+ <<Create>> 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
+ <<Create>> ScoreDisplay(Font,int,int)
+ void setScore(int)
+ void setPosition(int,int)
+ void draw(Graphics)
}
class fr.monkhanny.dorfromantik.game.Pocket {
- Biome biome
- Set<Tile> tiles
+ <<Create>> Pocket(Biome)
+ void addTile(Tile)
+ int getSize()
+ Biome getBiome()
+ Set<Tile> getTiles()
}
class fr.monkhanny.dorfromantik.game.Board {
- List<Tile> tiles
- List<Point> 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
+ <<Create>> 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
+ <<Create>> 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

View File

@@ -0,0 +1,393 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1840pt" height="1437pt" viewBox="0.00 0.00 1840.22 1436.60">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1432.6)">
<title>package</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-1432.6 1836.22,-1432.6 1836.22,4 -4,4"/>
<!-- Board -->
<g id="node1" class="node">
<title>Board</title>
<polygon fill="none" stroke="black" points="978.31,-892.1 978.31,-1428.1 1233.16,-1428.1 1233.16,-892.1 978.31,-892.1"/>
<text text-anchor="middle" x="1105.73" y="-1411.5" font-family="Times,serif" font-size="14.00">Board</text>
<polyline fill="none" stroke="black" points="978.31,-1403.3 1233.16,-1403.3"/>
<text text-anchor="start" x="986.31" y="-1386.7" font-family="Times,serif" font-size="14.00">- offsetX : int</text>
<text text-anchor="start" x="986.31" y="-1369.9" font-family="Times,serif" font-size="14.00"> - random : Random</text>
<text text-anchor="start" x="986.31" y="-1353.1" font-family="Times,serif" font-size="14.00"> - zoomFactor : double</text>
<text text-anchor="start" x="986.31" y="-1336.3" font-family="Times,serif" font-size="14.00"> - game : Game</text>
<text text-anchor="start" x="986.31" y="-1319.5" font-family="Times,serif" font-size="14.00"> - nextTile : Tile</text>
<text text-anchor="start" x="986.31" y="-1302.7" font-family="Times,serif" font-size="14.00"> - offsetY : int</text>
<text text-anchor="start" x="986.31" y="-1285.9" font-family="Times,serif" font-size="14.00"> - controlsMenu : GameControlsMenu</text>
<polyline fill="none" stroke="black" points="978.31,-1277.7 1233.16,-1277.7"/>
<text text-anchor="start" x="986.31" y="-1261.1" font-family="Times,serif" font-size="14.00">+ handleSpaceKeyPress() : void</text>
<text text-anchor="start" x="986.31" y="-1244.3" font-family="Times,serif" font-size="14.00"> + zoomIn() : void</text>
<text text-anchor="start" x="986.31" y="-1227.5" font-family="Times,serif" font-size="14.00"> + moveBoard(int, int) : void</text>
<text text-anchor="start" x="986.31" y="-1210.7" font-family="Times,serif" font-size="14.00"> + zoomOut() : void</text>
<text text-anchor="start" x="986.31" y="-1193.9" font-family="Times,serif" font-size="14.00"> - initializeNextTile() : void</text>
<text text-anchor="start" x="986.31" y="-1177.1" font-family="Times,serif" font-size="14.00"> - calculateAvailablePositions(Tile) : void</text>
<text text-anchor="start" x="986.31" y="-1160.3" font-family="Times,serif" font-size="14.00"> + handleMouseMove(MouseEvent) : void</text>
<text text-anchor="start" x="986.31" y="-1143.5" font-family="Times,serif" font-size="14.00"> - isTileAtPosition(Point) : boolean</text>
<text text-anchor="start" x="986.31" y="-1126.7" font-family="Times,serif" font-size="14.00"> + handleMouseClick(MouseEvent) : void</text>
<text text-anchor="start" x="986.31" y="-1109.9" font-family="Times,serif" font-size="14.00"> + paintComponent(Graphics) : void</text>
<text text-anchor="start" x="986.31" y="-1093.1" font-family="Times,serif" font-size="14.00"> + autoReFocus(Tile) : void</text>
<text text-anchor="start" x="986.31" y="-1076.3" font-family="Times,serif" font-size="14.00"> + getTileAt(int, int) : Tile</text>
<text text-anchor="start" x="986.31" y="-1059.5" font-family="Times,serif" font-size="14.00"> - initializeCentralTile() : void</text>
<text text-anchor="start" x="986.31" y="-1042.7" font-family="Times,serif" font-size="14.00"> + placeTileAtPosition(Point) : void</text>
<text text-anchor="start" x="986.31" y="-1025.9" font-family="Times,serif" font-size="14.00"> + addTile(Tile) : void</text>
<polyline fill="none" stroke="black" points="978.31,-1017.7 1233.16,-1017.7"/>
<text text-anchor="start" x="986.31" y="-1001.1" font-family="Times,serif" font-size="14.00">random : Random</text>
<text text-anchor="start" x="986.31" y="-984.3" font-family="Times,serif" font-size="14.00"> zoomFactor : double</text>
<text text-anchor="start" x="986.31" y="-967.5" font-family="Times,serif" font-size="14.00"> controlsMenu : GameControlsMenu</text>
<text text-anchor="start" x="986.31" y="-950.7" font-family="Times,serif" font-size="14.00"> nextTile : Tile</text>
<text text-anchor="start" x="986.31" y="-933.9" font-family="Times,serif" font-size="14.00"> offsetX : int</text>
<text text-anchor="start" x="986.31" y="-917.1" font-family="Times,serif" font-size="14.00"> game : Game</text>
<text text-anchor="start" x="986.31" y="-900.3" font-family="Times,serif" font-size="14.00"> offsetY : int</text>
</g>
<!-- CustomKeyAdapter -->
<g id="node3" class="node">
<title>CustomKeyAdapter</title>
<polygon fill="none" stroke="black" points="0,-747.1 0,-796.7 191.46,-796.7 191.46,-747.1 0,-747.1"/>
<text text-anchor="middle" x="95.73" y="-780.1" font-family="Times,serif" font-size="14.00">CustomKeyAdapter</text>
<polyline fill="none" stroke="black" points="0,-771.9 191.46,-771.9"/>
<text text-anchor="start" x="8" y="-755.3" font-family="Times,serif" font-size="14.00">+ keyPressed(KeyEvent) : void</text>
</g>
<!-- Board&#45;&gt;CustomKeyAdapter -->
<g id="edge1" class="edge">
<title>Board-&gt;CustomKeyAdapter</title>
<path fill="none" stroke="#595959" stroke-dasharray="5,2" d="M977.97,-1361.48C699.75,-1361.48 63.82,-1361.48 63.82,-1361.48 63.82,-1361.48 63.82,-808.08 63.82,-808.08"/>
<polygon fill="#595959" stroke="#595959" points="63.82,-798.08 68.32,-808.08 63.82,-801.86 63.82,-808.08 63.82,-808.08 63.82,-808.08 63.82,-801.86 59.32,-808.08 63.82,-798.08"/>
<text text-anchor="middle" x="126.44" y="-861" font-family="Times,serif" font-size="14.00">«create»</text>
</g>
<!-- CustomMouseMotionAdapter -->
<g id="node4" class="node">
<title>CustomMouseMotionAdapter</title>
<polygon fill="none" stroke="black" points="208.99,-747.1 208.99,-796.7 428.47,-796.7 428.47,-747.1 208.99,-747.1"/>
<text text-anchor="middle" x="318.73" y="-780.1" font-family="Times,serif" font-size="14.00">CustomMouseMotionAdapter</text>
<polyline fill="none" stroke="black" points="208.99,-771.9 428.47,-771.9"/>
<text text-anchor="start" x="216.99" y="-755.3" font-family="Times,serif" font-size="14.00">+ mouseMoved(MouseEvent) : void</text>
</g>
<!-- Board&#45;&gt;CustomMouseMotionAdapter -->
<g id="edge2" class="edge">
<title>Board-&gt;CustomMouseMotionAdapter</title>
<path fill="none" stroke="#595959" stroke-dasharray="5,2" d="M977.95,-1227.23C746.62,-1227.23 282.15,-1227.23 282.15,-1227.23 282.15,-1227.23 282.15,-808.25 282.15,-808.25"/>
<polygon fill="#595959" stroke="#595959" points="282.15,-798.25 286.65,-808.25 282.15,-802.03 282.15,-808.25 282.15,-808.25 282.15,-808.25 282.15,-802.03 277.65,-808.25 282.15,-798.25"/>
<text text-anchor="middle" x="602.44" y="-861" font-family="Times,serif" font-size="14.00">«create»</text>
</g>
<!-- Game -->
<g id="node6" class="node">
<title>Game</title>
<polygon fill="none" stroke="black" points="446.1,-747.1 446.1,-796.7 603.36,-796.7 603.36,-747.1 446.1,-747.1"/>
<text text-anchor="middle" x="524.73" y="-780.1" font-family="Times,serif" font-size="14.00">Game</text>
<polyline fill="none" stroke="black" points="446.1,-771.9 603.36,-771.9"/>
<text text-anchor="start" x="454.1" y="-755.3" font-family="Times,serif" font-size="14.00">+ getRandomInt(int) : int</text>
</g>
<!-- Board&#45;&gt;Game -->
<g id="edge3" class="edge">
<title>Board-&gt;Game</title>
<path fill="none" stroke="#595959" d="M965.05,-1025.85C965.05,-1025.85 550.94,-1025.85 550.94,-1025.85 550.94,-1025.85 550.94,-808.4 550.94,-808.4"/>
<polygon fill="#595959" stroke="#595959" points="965.2,-1025.85 971.2,-1021.85 977.2,-1025.85 971.2,-1029.85 965.2,-1025.85"/>
<polygon fill="#595959" stroke="#595959" points="550.94,-798.4 555.44,-808.4 550.94,-802.18 550.94,-808.4 550.94,-808.4 550.94,-808.4 550.94,-802.18 546.44,-808.4 550.94,-798.4"/>
<text text-anchor="middle" x="535.78" y="-818.18" font-family="Times,serif" font-size="14.00">game</text>
<text text-anchor="middle" x="535.78" y="-801.38" font-family="Times,serif" font-size="14.00">1</text>
<text text-anchor="middle" x="974.6" y="-1030.05" font-family="Times,serif" font-size="14.00">1</text>
</g>
<!-- Board&#45;&gt;Game -->
<g id="edge4" class="edge">
<title>Board-&gt;Game</title>
<path fill="none" stroke="#595959" stroke-dasharray="5,2" d="M978.07,-1092.98C799.97,-1092.98 498.52,-1092.98 498.52,-1092.98 498.52,-1092.98 498.52,-808.31 498.52,-808.31"/>
<polygon fill="#595959" stroke="#595959" points="498.52,-798.31 503.02,-808.31 498.52,-802.09 498.52,-808.31 498.52,-808.31 498.52,-808.31 498.52,-802.09 494.02,-808.31 498.52,-798.31"/>
<text text-anchor="middle" x="834.44" y="-861" font-family="Times,serif" font-size="14.00">«create»</text>
</g>
<!-- PauseGame -->
<g id="node7" class="node">
<title>PauseGame</title>
<polygon fill="none" stroke="black" points="621,-747.1 621,-796.7 812.46,-796.7 812.46,-747.1 621,-747.1"/>
<text text-anchor="middle" x="716.73" y="-780.1" font-family="Times,serif" font-size="14.00">PauseGame</text>
<polyline fill="none" stroke="black" points="621,-771.9 812.46,-771.9"/>
<text text-anchor="start" x="629" y="-755.3" font-family="Times,serif" font-size="14.00">+ keyPressed(KeyEvent) : void</text>
</g>
<!-- Board&#45;&gt;PauseGame -->
<g id="edge5" class="edge">
<title>Board-&gt;PauseGame</title>
<path fill="none" stroke="#595959" stroke-dasharray="5,2" d="M977.82,-958.73C864.44,-958.73 716.73,-958.73 716.73,-958.73 716.73,-958.73 716.73,-808.31 716.73,-808.31"/>
<polygon fill="#595959" stroke="#595959" points="716.73,-798.31 721.23,-808.31 716.73,-802.1 716.73,-808.31 716.73,-808.31 716.73,-808.31 716.73,-802.1 712.23,-808.31 716.73,-798.31"/>
<text text-anchor="middle" x="912.44" y="-861" font-family="Times,serif" font-size="14.00">«create»</text>
</g>
<!-- RemainingTilesIndicator -->
<g id="node9" class="node">
<title>RemainingTilesIndicator</title>
<polygon fill="none" stroke="black" points="830.43,-705.5 830.43,-838.3 1089.04,-838.3 1089.04,-705.5 830.43,-705.5"/>
<text text-anchor="middle" x="959.73" y="-821.7" font-family="Times,serif" font-size="14.00">RemainingTilesIndicator</text>
<polyline fill="none" stroke="black" points="830.43,-813.5 1089.04,-813.5"/>
<text text-anchor="start" x="838.43" y="-796.9" font-family="Times,serif" font-size="14.00">- remainingTiles : int</text>
<polyline fill="none" stroke="black" points="830.43,-788.7 1089.04,-788.7"/>
<text text-anchor="start" x="838.43" y="-772.1" font-family="Times,serif" font-size="14.00">+ draw(Graphics, int, int) : void</text>
<text text-anchor="start" x="838.43" y="-755.3" font-family="Times,serif" font-size="14.00"> - createHexagon(int, int, int, int) : Polygon</text>
<polyline fill="none" stroke="black" points="830.43,-747.1 1089.04,-747.1"/>
<text text-anchor="start" x="838.43" y="-730.5" font-family="Times,serif" font-size="14.00">totalHeight : int</text>
<text text-anchor="start" x="838.43" y="-713.7" font-family="Times,serif" font-size="14.00"> remainingTiles : int</text>
</g>
<!-- Board&#45;&gt;RemainingTilesIndicator -->
<g id="edge6" class="edge">
<title>Board-&gt;RemainingTilesIndicator</title>
<path fill="none" stroke="#595959" stroke-dasharray="5,2" d="M1052.13,-891.81C1052.13,-891.81 1052.13,-849.78 1052.13,-849.78"/>
<polygon fill="#595959" stroke="#595959" points="1052.13,-839.78 1056.63,-849.78 1052.13,-843.56 1052.13,-849.78 1052.13,-849.78 1052.13,-849.78 1052.13,-843.56 1047.63,-849.78 1052.13,-839.78"/>
<text text-anchor="middle" x="986.44" y="-861" font-family="Times,serif" font-size="14.00">«create»</text>
</g>
<!-- Board&#45;&gt;RemainingTilesIndicator -->
<g id="edge7" class="edge">
<title>Board-&gt;RemainingTilesIndicator</title>
<path fill="none" stroke="#595959" d="M1015.22,-878.75C1015.22,-878.75 1015.22,-849.78 1015.22,-849.78"/>
<polygon fill="#595959" stroke="#595959" points="1015.22,-878.9 1019.22,-884.9 1015.22,-890.9 1011.22,-884.9 1015.22,-878.9"/>
<polygon fill="#595959" stroke="#595959" points="1015.22,-839.78 1019.72,-849.78 1015.22,-843.56 1015.22,-849.78 1015.22,-849.78 1015.22,-849.78 1015.22,-843.56 1010.72,-849.78 1015.22,-839.78"/>
<text text-anchor="middle" x="1082.86" y="-859.56" font-family="Times,serif" font-size="14.00">remainingTilesIndicator</text>
<text text-anchor="middle" x="1082.86" y="-842.76" font-family="Times,serif" font-size="14.00">1</text>
<text text-anchor="middle" x="1011.72" y="-879.21" font-family="Times,serif" font-size="14.00">1</text>
</g>
<!-- ScoreDisplay -->
<g id="node10" class="node">
<title>ScoreDisplay</title>
<polygon fill="none" stroke="black" points="1107.48,-713.9 1107.48,-829.9 1277.99,-829.9 1277.99,-713.9 1107.48,-713.9"/>
<text text-anchor="middle" x="1192.73" y="-813.3" font-family="Times,serif" font-size="14.00">ScoreDisplay</text>
<polyline fill="none" stroke="black" points="1107.48,-805.1 1277.99,-805.1"/>
<text text-anchor="start" x="1115.48" y="-788.5" font-family="Times,serif" font-size="14.00">- score : int</text>
<polyline fill="none" stroke="black" points="1107.48,-780.3 1277.99,-780.3"/>
<text text-anchor="start" x="1115.48" y="-763.7" font-family="Times,serif" font-size="14.00">+ setPosition(int, int) : void</text>
<text text-anchor="start" x="1115.48" y="-746.9" font-family="Times,serif" font-size="14.00"> + draw(Graphics) : void</text>
<polyline fill="none" stroke="black" points="1107.48,-738.7 1277.99,-738.7"/>
<text text-anchor="start" x="1115.48" y="-722.1" font-family="Times,serif" font-size="14.00">score : int</text>
</g>
<!-- Board&#45;&gt;ScoreDisplay -->
<g id="edge8" class="edge">
<title>Board-&gt;ScoreDisplay</title>
<path fill="none" stroke="#595959" stroke-dasharray="5,2" d="M1170.32,-891.81C1170.32,-891.81 1170.32,-841.49 1170.32,-841.49"/>
<polygon fill="#595959" stroke="#595959" points="1170.32,-831.49 1174.82,-841.49 1170.32,-835.27 1170.32,-841.49 1170.32,-841.49 1170.32,-841.49 1170.32,-835.27 1165.82,-841.49 1170.32,-831.49"/>
<text text-anchor="middle" x="1133.44" y="-861" font-family="Times,serif" font-size="14.00">«create»</text>
</g>
<!-- Board&#45;&gt;ScoreDisplay -->
<g id="edge9" class="edge">
<title>Board-&gt;ScoreDisplay</title>
<path fill="none" stroke="#595959" d="M1138.9,-878.75C1138.9,-878.75 1138.9,-841.49 1138.9,-841.49"/>
<polygon fill="#595959" stroke="#595959" points="1138.9,-878.9 1142.9,-884.9 1138.9,-890.9 1134.9,-884.9 1138.9,-878.9"/>
<polygon fill="#595959" stroke="#595959" points="1138.9,-831.49 1143.4,-841.49 1138.9,-835.27 1138.9,-841.49 1138.9,-841.49 1138.9,-841.49 1138.9,-835.27 1134.4,-841.49 1138.9,-831.49"/>
<text text-anchor="middle" x="1175.44" y="-851.27" font-family="Times,serif" font-size="14.00">scoreDisplay</text>
<text text-anchor="middle" x="1175.44" y="-834.47" font-family="Times,serif" font-size="14.00">1</text>
<text text-anchor="middle" x="1135.4" y="-879.21" font-family="Times,serif" font-size="14.00">1</text>
</g>
<!-- ScoreManager -->
<g id="node11" class="node">
<title>ScoreManager</title>
<polygon fill="none" stroke="black" points="1295.87,-705.5 1295.87,-838.3 1557.59,-838.3 1557.59,-705.5 1295.87,-705.5"/>
<text text-anchor="middle" x="1426.73" y="-821.7" font-family="Times,serif" font-size="14.00">ScoreManager</text>
<polyline fill="none" stroke="black" points="1295.87,-813.5 1557.59,-813.5"/>
<text text-anchor="start" x="1303.87" y="-796.9" font-family="Times,serif" font-size="14.00">- currentScore : int</text>
<polyline fill="none" stroke="black" points="1295.87,-788.7 1557.59,-788.7"/>
<text text-anchor="start" x="1303.87" y="-772.1" font-family="Times,serif" font-size="14.00">- recalculateScore() : void</text>
<text text-anchor="start" x="1303.87" y="-755.3" font-family="Times,serif" font-size="14.00"> - findPocketForTile(Tile, Biome) : Pocket?</text>
<text text-anchor="start" x="1303.87" y="-738.5" font-family="Times,serif" font-size="14.00"> + addTile(Tile) : void</text>
<polyline fill="none" stroke="black" points="1295.87,-730.3 1557.59,-730.3"/>
<text text-anchor="start" x="1303.87" y="-713.7" font-family="Times,serif" font-size="14.00">currentScore : int</text>
</g>
<!-- Board&#45;&gt;ScoreManager -->
<g id="edge10" class="edge">
<title>Board-&gt;ScoreManager</title>
<path fill="none" stroke="#595959" stroke-dasharray="5,2" d="M1201.74,-891.71C1201.74,-858.53 1201.74,-836 1201.74,-836 1201.74,-836 1284.31,-836 1284.31,-836"/>
<polygon fill="#595959" stroke="#595959" points="1294.31,-836 1284.31,-840.5 1290.53,-836 1284.31,-836 1284.31,-836 1284.31,-836 1290.53,-836 1284.31,-831.5 1294.31,-836"/>
<text text-anchor="middle" x="1274.44" y="-861" font-family="Times,serif" font-size="14.00">«create»</text>
</g>
<!-- Board&#45;&gt;ScoreManager -->
<g id="edge11" class="edge">
<title>Board-&gt;ScoreManager</title>
<path fill="none" stroke="#595959" d="M1103.79,-878.59C1103.79,-878.59 1103.79,-833.2 1103.79,-833.2 1103.79,-833.2 1284.16,-833.2 1284.16,-833.2"/>
<polygon fill="#595959" stroke="#595959" points="1103.79,-878.74 1107.79,-884.74 1103.79,-890.74 1099.79,-884.74 1103.79,-878.74"/>
<polygon fill="#595959" stroke="#595959" points="1294.16,-833.2 1284.16,-837.7 1290.38,-833.2 1284.16,-833.2 1284.16,-833.2 1284.16,-833.2 1290.38,-833.2 1284.16,-828.7 1294.16,-833.2"/>
<text text-anchor="middle" x="1255.73" y="-854.2" font-family="Times,serif" font-size="14.00">scoreManager</text>
<text text-anchor="middle" x="1255.73" y="-837.4" font-family="Times,serif" font-size="14.00">1</text>
<text text-anchor="middle" x="1100.29" y="-879.04" font-family="Times,serif" font-size="14.00">1</text>
</g>
<!-- Tile -->
<g id="node12" class="node">
<title>Tile</title>
<polygon fill="none" stroke="black" points="1471.54,-238.5 1471.54,-464.1 1737.93,-464.1 1737.93,-238.5 1471.54,-238.5"/>
<text text-anchor="middle" x="1604.73" y="-447.5" font-family="Times,serif" font-size="14.00">Tile</text>
<polyline fill="none" stroke="black" points="1471.54,-439.3 1737.93,-439.3"/>
<text text-anchor="start" x="1479.54" y="-422.7" font-family="Times,serif" font-size="14.00">+ determineSide(int, int) : TileOrientation</text>
<text text-anchor="start" x="1479.54" y="-405.9" font-family="Times,serif" font-size="14.00"> + getBiome(TileOrientation) : Biome</text>
<text text-anchor="start" x="1479.54" y="-389.1" font-family="Times,serif" font-size="14.00"> + getNeighbor(TileOrientation) : Tile</text>
<text text-anchor="start" x="1479.54" y="-372.3" font-family="Times,serif" font-size="14.00"> + containsBiome(Biome) : boolean</text>
<text text-anchor="start" x="1479.54" y="-355.5" font-family="Times,serif" font-size="14.00"> + assignRandomBiomes() : void</text>
<text text-anchor="start" x="1479.54" y="-338.7" font-family="Times,serif" font-size="14.00"> # drawTileAt(Graphics, int, int, float) : void</text>
<text text-anchor="start" x="1479.54" y="-321.9" font-family="Times,serif" font-size="14.00"> # paintTile(Graphics, float) : void</text>
<text text-anchor="start" x="1479.54" y="-305.1" font-family="Times,serif" font-size="14.00"> + isAdjacentTo(Tile) : boolean</text>
<text text-anchor="start" x="1479.54" y="-288.3" font-family="Times,serif" font-size="14.00"> + rotate(boolean) : void</text>
<polyline fill="none" stroke="black" points="1471.54,-280.1 1737.93,-280.1"/>
<text text-anchor="start" x="1479.54" y="-263.5" font-family="Times,serif" font-size="14.00">biomes : Biome[]</text>
<text text-anchor="start" x="1479.54" y="-246.7" font-family="Times,serif" font-size="14.00"> dominantBiome : Biome</text>
</g>
<!-- Board&#45;&gt;Tile -->
<g id="edge12" class="edge">
<title>Board-&gt;Tile</title>
<path fill="none" stroke="#595959" d="M1096.41,-878.61C1096.41,-878.61 1096.41,-313.53 1096.41,-313.53 1096.41,-313.53 1096.41,-302.31 1096.41,-302.31"/>
<polygon fill="#595959" stroke="#595959" points="1096.41,-878.76 1100.41,-884.76 1096.41,-890.76 1092.41,-884.76 1096.41,-878.76"/>
<polygon fill="#595959" stroke="#595959" points="1469.96,-313.5 1459.83,-317.7 1466.18,-313.38 1459.96,-313.2 1459.96,-313.2 1459.96,-313.2 1466.18,-313.38 1460.1,-308.7 1469.96,-313.5"/>
<text text-anchor="middle" x="1459.51" y="-334.53" font-family="Times,serif" font-size="14.00">tiles</text>
<text text-anchor="middle" x="1459.51" y="-317.73" font-family="Times,serif" font-size="14.00">*</text>
<text text-anchor="middle" x="1092.91" y="-879.06" font-family="Times,serif" font-size="14.00">1</text>
</g>
<!-- Board&#45;&gt;Tile -->
<g id="edge13" class="edge">
<title>Board-&gt;Tile</title>
<path fill="none" stroke="#595959" stroke-dasharray="5,2" d="M1100.1,-891.78C1100.1,-669.22 1100.1,-389.07 1100.1,-389.07 1100.1,-389.07 1459.94,-389.07 1459.94,-389.07"/>
<polygon fill="#595959" stroke="#595959" points="1469.94,-389.07 1459.94,-393.57 1466.16,-389.07 1459.94,-389.07 1459.94,-389.07 1459.94,-389.07 1466.16,-389.07 1459.94,-384.57 1469.94,-389.07"/>
<text text-anchor="middle" x="1647.44" y="-674.4" font-family="Times,serif" font-size="14.00">«create»</text>
</g>
<!-- TilePanningTransition -->
<g id="node13" class="node">
<title>TilePanningTransition</title>
<polygon fill="none" stroke="black" points="1651.74,-747.1 1651.74,-796.7 1793.72,-796.7 1793.72,-747.1 1651.74,-747.1"/>
<text text-anchor="middle" x="1722.73" y="-780.1" font-family="Times,serif" font-size="14.00">TilePanningTransition</text>
<polyline fill="none" stroke="black" points="1651.74,-771.9 1793.72,-771.9"/>
<text text-anchor="start" x="1659.74" y="-755.3" font-family="Times,serif" font-size="14.00">+ start() : void</text>
</g>
<!-- Board&#45;&gt;TilePanningTransition -->
<g id="edge14" class="edge">
<title>Board-&gt;TilePanningTransition</title>
<path fill="none" stroke="#595959" stroke-dasharray="5,2" d="M1233.46,-1249.6C1420.36,-1249.6 1746.4,-1249.6 1746.4,-1249.6 1746.4,-1249.6 1746.4,-808.13 1746.4,-808.13"/>
<polygon fill="#595959" stroke="#595959" points="1746.4,-798.13 1750.9,-808.13 1746.4,-801.91 1746.4,-808.13 1746.4,-808.13 1746.4,-808.13 1746.4,-801.91 1741.9,-808.13 1746.4,-798.13"/>
<text text-anchor="middle" x="1681.44" y="-861" font-family="Times,serif" font-size="14.00">«create»</text>
</g>
<!-- Cell -->
<g id="node2" class="node">
<title>Cell</title>
<polygon fill="none" stroke="black" points="1613.25,-0.5 1613.25,-200.5 1832.22,-200.5 1832.22,-0.5 1613.25,-0.5"/>
<text text-anchor="middle" x="1722.73" y="-183.9" font-family="Times,serif" font-size="14.00">Cell</text>
<polyline fill="none" stroke="black" points="1613.25,-175.7 1832.22,-175.7"/>
<text text-anchor="start" x="1621.25" y="-159.1" font-family="Times,serif" font-size="14.00">+ radius : int</text>
<text text-anchor="start" x="1621.25" y="-142.3" font-family="Times,serif" font-size="14.00"> - board : Board</text>
<polyline fill="none" stroke="black" points="1613.25,-134.1 1832.22,-134.1"/>
<text text-anchor="start" x="1621.25" y="-117.5" font-family="Times,serif" font-size="14.00">+ setPosition(int, int) : void</text>
<text text-anchor="start" x="1621.25" y="-100.7" font-family="Times,serif" font-size="14.00"> # paintComponent(Graphics) : void</text>
<text text-anchor="start" x="1621.25" y="-83.9" font-family="Times,serif" font-size="14.00"> + to360Degrees(double) : double</text>
<polyline fill="none" stroke="black" points="1613.25,-75.7 1832.22,-75.7"/>
<text text-anchor="start" x="1621.25" y="-59.1" font-family="Times,serif" font-size="14.00">XCoord : int</text>
<text text-anchor="start" x="1621.25" y="-42.3" font-family="Times,serif" font-size="14.00"> board : Board</text>
<text text-anchor="start" x="1621.25" y="-25.5" font-family="Times,serif" font-size="14.00"> YCoord : int</text>
<text text-anchor="start" x="1621.25" y="-8.7" font-family="Times,serif" font-size="14.00"> radius : int</text>
</g>
<!-- Cell&#45;&gt;Board -->
<g id="edge15" class="edge">
<title>Cell-&gt;Board</title>
<path fill="none" stroke="#595959" d="M1599.94,-100.5C1599.94,-100.5 1092.73,-100.5 1092.73,-100.5 1092.73,-100.5 1092.73,-880.47 1092.73,-880.47"/>
<polygon fill="#595959" stroke="#595959" points="1600.09,-100.5 1606.09,-96.5 1612.09,-100.5 1606.09,-104.5 1600.09,-100.5"/>
<polygon fill="#595959" stroke="#595959" points="1092.73,-890.47 1088.23,-880.47 1092.73,-886.69 1092.73,-880.47 1092.73,-880.47 1092.73,-880.47 1092.73,-886.69 1097.23,-880.47 1092.73,-890.47"/>
<text text-anchor="middle" x="1076.79" y="-879.09" font-family="Times,serif" font-size="14.00">board</text>
<text text-anchor="middle" x="1076.79" y="-862.29" font-family="Times,serif" font-size="14.00">1</text>
<text text-anchor="middle" x="1609.49" y="-104.7" font-family="Times,serif" font-size="14.00">1</text>
</g>
<!-- CustomKeyAdapter&#45;&gt;Board -->
<g id="edge16" class="edge">
<title>CustomKeyAdapter-&gt;Board</title>
<path fill="none" stroke="#595959" d="M127.64,-810.15C127.64,-810.15 127.64,-1294.35 127.64,-1294.35 127.64,-1294.35 966.65,-1294.35 966.65,-1294.35"/>
<polygon fill="#595959" stroke="#595959" points="127.64,-810 123.64,-804 127.64,-798 131.64,-804 127.64,-810"/>
<polygon fill="#595959" stroke="#595959" points="976.65,-1294.35 966.65,-1298.85 972.86,-1294.35 966.65,-1294.35 966.65,-1294.35 966.65,-1294.35 972.86,-1294.35 966.65,-1289.85 976.65,-1294.35"/>
<text text-anchor="middle" x="961.93" y="-1315.35" font-family="Times,serif" font-size="14.00">board</text>
<text text-anchor="middle" x="961.93" y="-1298.55" font-family="Times,serif" font-size="14.00">1</text>
<text text-anchor="middle" x="124.14" y="-801.3" font-family="Times,serif" font-size="14.00">1</text>
</g>
<!-- CustomMouseMotionAdapter&#45;&gt;Board -->
<g id="edge17" class="edge">
<title>CustomMouseMotionAdapter-&gt;Board</title>
<path fill="none" stroke="#595959" d="M355.31,-810.12C355.31,-810.12 355.31,-1160.1 355.31,-1160.1 355.31,-1160.1 966.79,-1160.1 966.79,-1160.1"/>
<polygon fill="#595959" stroke="#595959" points="355.31,-809.97 351.31,-803.97 355.31,-797.97 359.31,-803.97 355.31,-809.97"/>
<polygon fill="#595959" stroke="#595959" points="976.79,-1160.1 966.79,-1164.6 973.01,-1160.1 966.79,-1160.1 966.79,-1160.1 966.79,-1160.1 973.01,-1160.1 966.79,-1155.6 976.79,-1160.1"/>
<text text-anchor="middle" x="962.07" y="-1181.1" font-family="Times,serif" font-size="14.00">board</text>
<text text-anchor="middle" x="962.07" y="-1164.3" font-family="Times,serif" font-size="14.00">1</text>
<text text-anchor="middle" x="351.81" y="-801.27" font-family="Times,serif" font-size="14.00">1</text>
</g>
<!-- EscapeMenu -->
<g id="node5" class="node">
<title>EscapeMenu</title>
<polygon fill="none" stroke="black" points="597.17,-514.5 597.17,-639.3 838.3,-639.3 838.3,-514.5 597.17,-514.5"/>
<text text-anchor="middle" x="717.73" y="-622.7" font-family="Times,serif" font-size="14.00">EscapeMenu</text>
<polyline fill="none" stroke="black" points="597.17,-614.5 838.3,-614.5"/>
<text text-anchor="start" x="605.17" y="-597.9" font-family="Times,serif" font-size="14.00">- createButton(String) : JButton</text>
<polyline fill="none" stroke="black" points="597.17,-589.7 838.3,-589.7"/>
<text text-anchor="start" x="605.17" y="-573.1" font-family="Times,serif" font-size="14.00">menuVisible : boolean</text>
<text text-anchor="start" x="605.17" y="-556.3" font-family="Times,serif" font-size="14.00"> settingsButtonListener : ActionListener</text>
<text text-anchor="start" x="605.17" y="-539.5" font-family="Times,serif" font-size="14.00"> resumeButtonListener : ActionListener</text>
<text text-anchor="start" x="605.17" y="-522.7" font-family="Times,serif" font-size="14.00"> quitButtonListener : ActionListener</text>
</g>
<!-- PauseGame&#45;&gt;EscapeMenu -->
<g id="edge18" class="edge">
<title>PauseGame-&gt;EscapeMenu</title>
<path fill="none" stroke="#595959" d="M684.82,-733.75C684.82,-733.75 684.82,-650.81 684.82,-650.81"/>
<polygon fill="#595959" stroke="#595959" points="684.82,-733.9 688.82,-739.91 684.82,-745.9 680.82,-739.9 684.82,-733.9"/>
<polygon fill="#595959" stroke="#595959" points="684.82,-640.81 689.32,-650.81 684.82,-644.59 684.82,-650.81 684.82,-650.81 684.82,-650.81 684.82,-644.59 680.32,-650.81 684.82,-640.81"/>
<text text-anchor="middle" x="649.84" y="-660.59" font-family="Times,serif" font-size="14.00">escapeMenu</text>
<text text-anchor="middle" x="649.84" y="-643.79" font-family="Times,serif" font-size="14.00">1</text>
<text text-anchor="middle" x="681.32" y="-734.21" font-family="Times,serif" font-size="14.00">1</text>
</g>
<!-- PauseGame&#45;&gt;EscapeMenu -->
<g id="edge19" class="edge">
<title>PauseGame-&gt;EscapeMenu</title>
<path fill="none" stroke="#595959" stroke-dasharray="5,2" d="M748.64,-746.81C748.64,-746.81 748.64,-650.81 748.64,-650.81"/>
<polygon fill="#595959" stroke="#595959" points="748.64,-640.81 753.14,-650.81 748.64,-644.59 748.64,-650.81 748.64,-650.81 748.64,-650.81 748.64,-644.59 744.14,-650.81 748.64,-640.81"/>
<text text-anchor="middle" x="757.44" y="-674.4" font-family="Times,serif" font-size="14.00">«create»</text>
</g>
<!-- Pocket -->
<g id="node8" class="node">
<title>Pocket</title>
<polygon fill="none" stroke="black" points="1419.83,-502.1 1419.83,-651.7 1557.63,-651.7 1557.63,-502.1 1419.83,-502.1"/>
<text text-anchor="middle" x="1488.73" y="-635.1" font-family="Times,serif" font-size="14.00">Pocket</text>
<polyline fill="none" stroke="black" points="1419.83,-626.9 1557.63,-626.9"/>
<text text-anchor="start" x="1427.83" y="-610.3" font-family="Times,serif" font-size="14.00">- biome : Biome</text>
<text text-anchor="start" x="1427.83" y="-593.5" font-family="Times,serif" font-size="14.00"> - tiles : Set&lt;Tile&gt;</text>
<polyline fill="none" stroke="black" points="1419.83,-585.3 1557.63,-585.3"/>
<text text-anchor="start" x="1427.83" y="-568.7" font-family="Times,serif" font-size="14.00">+ addTile(Tile) : void</text>
<polyline fill="none" stroke="black" points="1419.83,-560.5 1557.63,-560.5"/>
<text text-anchor="start" x="1427.83" y="-543.9" font-family="Times,serif" font-size="14.00">tiles : Set&lt;Tile&gt;</text>
<text text-anchor="start" x="1427.83" y="-527.1" font-family="Times,serif" font-size="14.00"> size : int</text>
<text text-anchor="start" x="1427.83" y="-510.3" font-family="Times,serif" font-size="14.00"> biome : Biome</text>
</g>
<!-- Pocket&#45;&gt;Tile -->
<g id="edge20" class="edge">
<title>Pocket-&gt;Tile</title>
<path fill="none" stroke="#595959" d="M1514.59,-488.73C1514.59,-488.73 1514.59,-475.55 1514.59,-475.55"/>
<polygon fill="#595959" stroke="#595959" points="1514.59,-488.88 1518.59,-494.88 1514.59,-500.88 1510.59,-494.88 1514.59,-488.88"/>
<polygon fill="#595959" stroke="#595959" points="1514.59,-465.55 1519.09,-475.55 1514.59,-469.33 1514.59,-475.55 1514.59,-475.55 1514.59,-475.55 1514.59,-469.33 1510.09,-475.55 1514.59,-465.55"/>
<text text-anchor="middle" x="1526.25" y="-485.33" font-family="Times,serif" font-size="14.00">tiles</text>
<text text-anchor="middle" x="1526.25" y="-468.53" font-family="Times,serif" font-size="14.00">*</text>
<text text-anchor="middle" x="1511.09" y="-489.18" font-family="Times,serif" font-size="14.00">1</text>
</g>
<!-- ScoreManager&#45;&gt;Pocket -->
<g id="edge21" class="edge">
<title>ScoreManager-&gt;Pocket</title>
<path fill="none" stroke="#595959" stroke-dasharray="5,2" d="M1511.67,-705.06C1511.67,-705.06 1511.67,-663.23 1511.67,-663.23"/>
<polygon fill="#595959" stroke="#595959" points="1511.67,-653.23 1516.17,-663.23 1511.67,-657.01 1511.67,-663.23 1511.67,-663.23 1511.67,-663.23 1511.67,-657.01 1507.17,-663.23 1511.67,-653.23"/>
<text text-anchor="middle" x="1450.44" y="-674.4" font-family="Times,serif" font-size="14.00">«create»</text>
</g>
<!-- ScoreManager&#45;&gt;Pocket -->
<g id="edge22" class="edge">
<title>ScoreManager-&gt;Pocket</title>
<path fill="none" stroke="#595959" d="M1465.75,-692.01C1465.75,-692.01 1465.75,-663.23 1465.75,-663.23"/>
<polygon fill="#595959" stroke="#595959" points="1465.75,-692.16 1469.75,-698.16 1465.75,-704.16 1461.75,-698.16 1465.75,-692.16"/>
<polygon fill="#595959" stroke="#595959" points="1465.75,-653.23 1470.25,-663.23 1465.75,-657.01 1465.75,-663.23 1465.75,-663.23 1465.75,-663.23 1465.75,-657.01 1461.25,-663.23 1465.75,-653.23"/>
<text text-anchor="middle" x="1487.13" y="-673.01" font-family="Times,serif" font-size="14.00">pockets</text>
<text text-anchor="middle" x="1487.13" y="-656.21" font-family="Times,serif" font-size="14.00">*</text>
<text text-anchor="middle" x="1462.25" y="-692.46" font-family="Times,serif" font-size="14.00">1</text>
</g>
<!-- Tile&#45;&gt;Cell -->
<g id="edge23" class="edge">
<title>Tile-&gt;Cell</title>
<path fill="none" stroke="#000082" d="M1675.59,-238.01C1675.59,-238.01 1675.59,-212.15 1675.59,-212.15"/>
<polygon fill="#000082" stroke="#000082" points="1679.09,-212.15 1675.59,-202.15 1672.09,-212.15 1679.09,-212.15"/>
</g>
<!-- TilePanningTransition&#45;&gt;Board -->
<g id="edge24" class="edge">
<title>TilePanningTransition-&gt;Board</title>
<path fill="none" stroke="#595959" d="M1699.07,-810.16C1699.07,-810.16 1699.07,-1070.6 1699.07,-1070.6 1699.07,-1070.6 1244.6,-1070.6 1244.6,-1070.6"/>
<polygon fill="#595959" stroke="#595959" points="1699.07,-810.01 1695.07,-804.01 1699.07,-798.01 1703.07,-804.01 1699.07,-810.01"/>
<polygon fill="#595959" stroke="#595959" points="1234.6,-1070.6 1244.6,-1066.1 1238.38,-1070.6 1244.6,-1070.6 1244.6,-1070.6 1244.6,-1070.6 1238.38,-1070.6 1244.6,-1075.1 1234.6,-1070.6"/>
<text text-anchor="middle" x="1249.32" y="-1091.6" font-family="Times,serif" font-size="14.00">board</text>
<text text-anchor="middle" x="1249.32" y="-1074.8" font-family="Times,serif" font-size="14.00">1</text>
<text text-anchor="middle" x="1695.57" y="-801.31" font-family="Times,serif" font-size="14.00">1</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 874 KiB

View File

@@ -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

View File

@@ -0,0 +1,245 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1183pt" height="995pt" viewBox="0.00 0.00 1182.64 995.40">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 991.4)">
<title>package</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-991.4 1178.64,-991.4 1178.64,4 -4,4"/>
<!-- CloseButtonListener -->
<g id="node1" class="node">
<title>CloseButtonListener</title>
<polygon fill="none" stroke="black" points="873.98,-836.5 873.98,-910.9 1147.89,-910.9 1147.89,-836.5 873.98,-836.5"/>
<text text-anchor="middle" x="1010.94" y="-894.3" font-family="Times,serif" font-size="14.00">CloseButtonListener</text>
<polyline fill="none" stroke="black" points="873.98,-886.1 1147.89,-886.1"/>
<text text-anchor="start" x="881.98" y="-869.5" font-family="Times,serif" font-size="14.00">+ CloseButtonListener(MainMenu, JFrame) : </text>
<polyline fill="none" stroke="black" points="873.98,-861.3 1147.89,-861.3"/>
<text text-anchor="start" x="881.98" y="-844.7" font-family="Times,serif" font-size="14.00">+ actionPerformed(ActionEvent) : void</text>
</g>
<!-- CloseWindowListener -->
<g id="node2" class="node">
<title>CloseWindowListener</title>
<polygon fill="none" stroke="black" points="474.93,-114.5 474.93,-188.9 758.94,-188.9 758.94,-114.5 474.93,-114.5"/>
<text text-anchor="middle" x="616.94" y="-172.3" font-family="Times,serif" font-size="14.00">CloseWindowListener</text>
<polyline fill="none" stroke="black" points="474.93,-164.1 758.94,-164.1"/>
<text text-anchor="start" x="482.93" y="-147.5" font-family="Times,serif" font-size="14.00">+ CloseWindowListener(MainMenu, JFrame) : </text>
<polyline fill="none" stroke="black" points="474.93,-139.3 758.94,-139.3"/>
<text text-anchor="start" x="482.93" y="-122.7" font-family="Times,serif" font-size="14.00">+ windowClosing(WindowEvent) : void</text>
</g>
<!-- EscapeMenuCloseListener -->
<g id="node3" class="node">
<title>EscapeMenuCloseListener</title>
<polygon fill="none" stroke="black" points="474.91,-0.5 474.91,-74.9 716.96,-74.9 716.96,-0.5 474.91,-0.5"/>
<text text-anchor="middle" x="595.94" y="-58.3" font-family="Times,serif" font-size="14.00">EscapeMenuCloseListener</text>
<polyline fill="none" stroke="black" points="474.91,-50.1 716.96,-50.1"/>
<text text-anchor="start" x="482.91" y="-33.5" font-family="Times,serif" font-size="14.00">+ EscapeMenuCloseListener() : </text>
<polyline fill="none" stroke="black" points="474.91,-25.3 716.96,-25.3"/>
<text text-anchor="start" x="482.91" y="-8.7" font-family="Times,serif" font-size="14.00">+ windowClosing(WindowEvent) : void</text>
</g>
<!-- GameArrowKeyListener -->
<g id="node4" class="node">
<title>GameArrowKeyListener</title>
<polygon fill="none" stroke="black" points="37.44,-722.5 37.44,-796.9 258.43,-796.9 258.43,-722.5 37.44,-722.5"/>
<text text-anchor="middle" x="147.94" y="-780.3" font-family="Times,serif" font-size="14.00">GameArrowKeyListener</text>
<polyline fill="none" stroke="black" points="37.44,-772.1 258.43,-772.1"/>
<text text-anchor="start" x="45.44" y="-755.5" font-family="Times,serif" font-size="14.00">+ GameArrowKeyListener(Board) : </text>
<polyline fill="none" stroke="black" points="37.44,-747.3 258.43,-747.3"/>
<text text-anchor="start" x="45.44" y="-730.7" font-family="Times,serif" font-size="14.00">+ keyPressed(KeyEvent) : void</text>
</g>
<!-- GameMainMenuButtonListener -->
<g id="node5" class="node">
<title>GameMainMenuButtonListener</title>
<polygon fill="none" stroke="black" points="151.71,-114.5 151.71,-188.9 420.16,-188.9 420.16,-114.5 151.71,-114.5"/>
<text text-anchor="middle" x="285.94" y="-172.3" font-family="Times,serif" font-size="14.00">GameMainMenuButtonListener</text>
<polyline fill="none" stroke="black" points="151.71,-164.1 420.16,-164.1"/>
<text text-anchor="start" x="159.71" y="-147.5" font-family="Times,serif" font-size="14.00">+ GameMainMenuButtonListener(JFrame) : </text>
<polyline fill="none" stroke="black" points="151.71,-139.3 420.16,-139.3"/>
<text text-anchor="start" x="159.71" y="-122.7" font-family="Times,serif" font-size="14.00">+ actionPerformed(ActionEvent) : void</text>
</g>
<!-- GameModeFilterButtonActionListener -->
<g id="node6" class="node">
<title>GameModeFilterButtonActionListener</title>
<polygon fill="none" stroke="black" points="759.23,-722.5 759.23,-796.9 1174.64,-796.9 1174.64,-722.5 759.23,-722.5"/>
<text text-anchor="middle" x="966.94" y="-780.3" font-family="Times,serif" font-size="14.00">GameModeFilterButtonActionListener</text>
<polyline fill="none" stroke="black" points="759.23,-772.1 1174.64,-772.1"/>
<text text-anchor="start" x="767.23" y="-755.5" font-family="Times,serif" font-size="14.00">+ GameModeFilterButtonActionListener(GameModeSelectionPanel) : </text>
<polyline fill="none" stroke="black" points="759.23,-747.3 1174.64,-747.3"/>
<text text-anchor="start" x="767.23" y="-730.7" font-family="Times,serif" font-size="14.00">+ actionPerformed(ActionEvent) : void</text>
</g>
<!-- GameModeHoverEffectMouseListener -->
<g id="node7" class="node">
<title>GameModeHoverEffectMouseListener</title>
<polygon fill="none" stroke="black" points="588.67,-551.3 588.67,-676.1 965.2,-676.1 965.2,-551.3 588.67,-551.3"/>
<text text-anchor="middle" x="776.94" y="-659.5" font-family="Times,serif" font-size="14.00">GameModeHoverEffectMouseListener</text>
<polyline fill="none" stroke="black" points="588.67,-651.3 965.2,-651.3"/>
<text text-anchor="start" x="596.67" y="-634.7" font-family="Times,serif" font-size="14.00">+ GameModeHoverEffectMouseListener(Color, Color, Color) : </text>
<polyline fill="none" stroke="black" points="588.67,-626.5 965.2,-626.5"/>
<text text-anchor="start" x="596.67" y="-609.9" font-family="Times,serif" font-size="14.00">+ mouseExited(MouseEvent) : void</text>
<text text-anchor="start" x="596.67" y="-593.1" font-family="Times,serif" font-size="14.00"> + mousePressed(MouseEvent) : void</text>
<text text-anchor="start" x="596.67" y="-576.3" font-family="Times,serif" font-size="14.00"> + mouseReleased(MouseEvent) : void</text>
<text text-anchor="start" x="596.67" y="-559.5" font-family="Times,serif" font-size="14.00"> + mouseEntered(MouseEvent) : void</text>
</g>
<!-- GameModeNextButtonActionListener -->
<g id="node8" class="node">
<title>GameModeNextButtonActionListener</title>
<polygon fill="none" stroke="black" points="303.79,-722.5 303.79,-796.9 716.08,-796.9 716.08,-722.5 303.79,-722.5"/>
<text text-anchor="middle" x="509.94" y="-780.3" font-family="Times,serif" font-size="14.00">GameModeNextButtonActionListener</text>
<polyline fill="none" stroke="black" points="303.79,-772.1 716.08,-772.1"/>
<text text-anchor="start" x="311.79" y="-755.5" font-family="Times,serif" font-size="14.00">+ GameModeNextButtonActionListener(GameModeSelectionPanel) : </text>
<polyline fill="none" stroke="black" points="303.79,-747.3 716.08,-747.3"/>
<text text-anchor="start" x="311.79" y="-730.7" font-family="Times,serif" font-size="14.00">+ actionPerformed(ActionEvent) : void</text>
</g>
<!-- GameModePrevButtonActionListener -->
<g id="node9" class="node">
<title>GameModePrevButtonActionListener</title>
<polygon fill="none" stroke="black" points="474.57,-228.5 474.57,-302.9 885.31,-302.9 885.31,-228.5 474.57,-228.5"/>
<text text-anchor="middle" x="679.94" y="-286.3" font-family="Times,serif" font-size="14.00">GameModePrevButtonActionListener</text>
<polyline fill="none" stroke="black" points="474.57,-278.1 885.31,-278.1"/>
<text text-anchor="start" x="482.57" y="-261.5" font-family="Times,serif" font-size="14.00">+ GameModePrevButtonActionListener(GameModeSelectionPanel) : </text>
<polyline fill="none" stroke="black" points="474.57,-253.3 885.31,-253.3"/>
<text text-anchor="start" x="482.57" y="-236.7" font-family="Times,serif" font-size="14.00">+ actionPerformed(ActionEvent) : void</text>
</g>
<!-- GameMouseClickListener -->
<g id="node10" class="node">
<title>GameMouseClickListener</title>
<polygon fill="none" stroke="black" points="760.16,-0.5 760.16,-74.9 989.72,-74.9 989.72,-0.5 760.16,-0.5"/>
<text text-anchor="middle" x="874.94" y="-58.3" font-family="Times,serif" font-size="14.00">GameMouseClickListener</text>
<polyline fill="none" stroke="black" points="760.16,-50.1 989.72,-50.1"/>
<text text-anchor="start" x="768.16" y="-33.5" font-family="Times,serif" font-size="14.00">+ GameMouseClickListener(Board) : </text>
<polyline fill="none" stroke="black" points="760.16,-25.3 989.72,-25.3"/>
<text text-anchor="start" x="768.16" y="-8.7" font-family="Times,serif" font-size="14.00">+ mousePressed(MouseEvent) : void</text>
</g>
<!-- GameMouseWheelListener -->
<g id="node11" class="node">
<title>GameMouseWheelListener</title>
<polygon fill="none" stroke="black" points="797.67,-114.5 797.67,-188.9 1090.21,-188.9 1090.21,-114.5 797.67,-114.5"/>
<text text-anchor="middle" x="943.94" y="-172.3" font-family="Times,serif" font-size="14.00">GameMouseWheelListener</text>
<polyline fill="none" stroke="black" points="797.67,-164.1 1090.21,-164.1"/>
<text text-anchor="start" x="805.67" y="-147.5" font-family="Times,serif" font-size="14.00">+ GameMouseWheelListener(Board) : </text>
<polyline fill="none" stroke="black" points="797.67,-139.3 1090.21,-139.3"/>
<text text-anchor="start" x="805.67" y="-122.7" font-family="Times,serif" font-size="14.00">+ mouseWheelMoved(MouseWheelEvent) : void</text>
</g>
<!-- GameQuitButtonListener -->
<g id="node12" class="node">
<title>GameQuitButtonListener</title>
<polygon fill="none" stroke="black" points="37.66,-0.5 37.66,-74.9 274.21,-74.9 274.21,-0.5 37.66,-0.5"/>
<text text-anchor="middle" x="155.94" y="-58.3" font-family="Times,serif" font-size="14.00">GameQuitButtonListener</text>
<polyline fill="none" stroke="black" points="37.66,-50.1 274.21,-50.1"/>
<text text-anchor="start" x="45.66" y="-33.5" font-family="Times,serif" font-size="14.00">+ GameQuitButtonListener() : </text>
<polyline fill="none" stroke="black" points="37.66,-25.3 274.21,-25.3"/>
<text text-anchor="start" x="45.66" y="-8.7" font-family="Times,serif" font-size="14.00">+ actionPerformed(ActionEvent) : void</text>
</g>
<!-- GameResumeButtonListener -->
<g id="node13" class="node">
<title>GameResumeButtonListener</title>
<polygon fill="none" stroke="black" points="151.72,-228.5 151.72,-302.9 434.15,-302.9 434.15,-228.5 151.72,-228.5"/>
<text text-anchor="middle" x="292.94" y="-286.3" font-family="Times,serif" font-size="14.00">GameResumeButtonListener</text>
<polyline fill="none" stroke="black" points="151.72,-278.1 434.15,-278.1"/>
<text text-anchor="start" x="159.72" y="-261.5" font-family="Times,serif" font-size="14.00">+ GameResumeButtonListener(EscapeMenu) : </text>
<polyline fill="none" stroke="black" points="151.72,-253.3 434.15,-253.3"/>
<text text-anchor="start" x="159.72" y="-236.7" font-family="Times,serif" font-size="14.00">+ actionPerformed(ActionEvent) : void</text>
</g>
<!-- GameSettingsButtonListener -->
<g id="node14" class="node">
<title>GameSettingsButtonListener</title>
<polygon fill="none" stroke="black" points="170.73,-439.58 170.73,-513.98 501.39,-513.98 501.39,-439.58 170.73,-439.58"/>
<text text-anchor="middle" x="336.06" y="-497.38" font-family="Times,serif" font-size="14.00">GameSettingsButtonListener</text>
<polyline fill="none" stroke="black" points="170.73,-489.18 501.39,-489.18"/>
<text text-anchor="start" x="178.73" y="-472.58" font-family="Times,serif" font-size="14.00">+ GameSettingsButtonListener(JFrame, EscapeMenu) : </text>
<polyline fill="none" stroke="black" points="170.73,-464.38 501.39,-464.38"/>
<text text-anchor="start" x="178.73" y="-447.78" font-family="Times,serif" font-size="14.00">+ actionPerformed(ActionEvent) : void</text>
</g>
<!-- GameSettingsWindowListener -->
<g id="node15" class="node">
<title>GameSettingsWindowListener</title>
<polygon fill="none" stroke="black" points="513.19,-342.63 513.19,-517.83 782.02,-517.83 782.02,-342.63 513.19,-342.63"/>
<text text-anchor="middle" x="647.61" y="-501.23" font-family="Times,serif" font-size="14.00">GameSettingsWindowListener</text>
<polyline fill="none" stroke="black" points="513.19,-493.03 782.02,-493.03"/>
<text text-anchor="start" x="521.19" y="-476.43" font-family="Times,serif" font-size="14.00">+ GameSettingsWindowListener(JFrame) : </text>
<polyline fill="none" stroke="black" points="513.19,-468.23 782.02,-468.23"/>
<text text-anchor="start" x="521.19" y="-451.63" font-family="Times,serif" font-size="14.00">+ windowIconified(WindowEvent) : void</text>
<text text-anchor="start" x="521.19" y="-434.83" font-family="Times,serif" font-size="14.00"> + windowDeactivated(WindowEvent) : void</text>
<text text-anchor="start" x="521.19" y="-418.03" font-family="Times,serif" font-size="14.00"> + windowDeiconified(WindowEvent) : void</text>
<text text-anchor="start" x="521.19" y="-401.23" font-family="Times,serif" font-size="14.00"> + windowOpened(WindowEvent) : void</text>
<text text-anchor="start" x="521.19" y="-384.43" font-family="Times,serif" font-size="14.00"> + windowClosing(WindowEvent) : void</text>
<text text-anchor="start" x="521.19" y="-367.63" font-family="Times,serif" font-size="14.00"> + windowClosed(WindowEvent) : void</text>
<text text-anchor="start" x="521.19" y="-350.83" font-family="Times,serif" font-size="14.00"> + windowActivated(WindowEvent) : void</text>
</g>
<!-- GameSettingsButtonListener&#45;&gt;GameSettingsWindowListener -->
<g id="edge1" class="edge">
<title>GameSettingsButtonListener-&gt;GameSettingsWindowListener</title>
<path fill="none" stroke="#595959" stroke-dasharray="5,2" d="M501.87,-476.78C501.87,-476.78 502.95,-476.78 502.95,-476.78"/>
<polygon fill="#595959" stroke="#595959" points="511.52,-476.78 501.52,-481.28 507.73,-476.78 501.52,-476.78 501.52,-476.78 501.52,-476.78 507.73,-476.78 501.52,-472.28 511.52,-476.78"/>
<text text-anchor="middle" x="526.11" y="-480.98" font-family="Times,serif" font-size="14.00">«create»</text>
</g>
<!-- GameSpaceKeyListener -->
<g id="node16" class="node">
<title>GameSpaceKeyListener</title>
<polygon fill="none" stroke="black" points="0,-912.5 0,-986.9 217.87,-986.9 217.87,-912.5 0,-912.5"/>
<text text-anchor="middle" x="108.94" y="-970.3" font-family="Times,serif" font-size="14.00">GameSpaceKeyListener</text>
<polyline fill="none" stroke="black" points="0,-962.1 217.87,-962.1"/>
<text text-anchor="start" x="8" y="-945.5" font-family="Times,serif" font-size="14.00">+ GameSpaceKeyListener(Board) : </text>
<polyline fill="none" stroke="black" points="0,-937.3 217.87,-937.3"/>
<text text-anchor="start" x="8" y="-920.7" font-family="Times,serif" font-size="14.00">+ keyPressed(KeyEvent) : void</text>
</g>
<!-- GameZoomListener -->
<g id="node17" class="node">
<title>GameZoomListener</title>
<polygon fill="none" stroke="black" points="189.67,-342.5 189.67,-416.9 482.21,-416.9 482.21,-342.5 189.67,-342.5"/>
<text text-anchor="middle" x="335.94" y="-400.3" font-family="Times,serif" font-size="14.00">GameZoomListener</text>
<polyline fill="none" stroke="black" points="189.67,-392.1 482.21,-392.1"/>
<text text-anchor="start" x="197.67" y="-375.5" font-family="Times,serif" font-size="14.00">+ GameZoomListener(Board) : </text>
<polyline fill="none" stroke="black" points="189.67,-367.3 482.21,-367.3"/>
<text text-anchor="start" x="197.67" y="-350.7" font-family="Times,serif" font-size="14.00">+ mouseWheelMoved(MouseWheelEvent) : void</text>
</g>
<!-- MusicVolumeChangeListener -->
<g id="node18" class="node">
<title>MusicVolumeChangeListener</title>
<polygon fill="none" stroke="black" points="265.32,-836.5 265.32,-910.9 520.55,-910.9 520.55,-836.5 265.32,-836.5"/>
<text text-anchor="middle" x="392.94" y="-894.3" font-family="Times,serif" font-size="14.00">MusicVolumeChangeListener</text>
<polyline fill="none" stroke="black" points="265.32,-886.1 520.55,-886.1"/>
<text text-anchor="start" x="273.32" y="-869.5" font-family="Times,serif" font-size="14.00">+ MusicVolumeChangeListener(JSlider) : </text>
<polyline fill="none" stroke="black" points="265.32,-861.3 520.55,-861.3"/>
<text text-anchor="start" x="273.32" y="-844.7" font-family="Times,serif" font-size="14.00">+ stateChanged(ChangeEvent) : void</text>
</g>
<!-- MuteCheckBoxListener -->
<g id="node19" class="node">
<title>MuteCheckBoxListener</title>
<polygon fill="none" stroke="black" points="930.66,-228.5 930.66,-302.9 1167.21,-302.9 1167.21,-228.5 930.66,-228.5"/>
<text text-anchor="middle" x="1048.94" y="-286.3" font-family="Times,serif" font-size="14.00">MuteCheckBoxListener</text>
<polyline fill="none" stroke="black" points="930.66,-278.1 1167.21,-278.1"/>
<text text-anchor="start" x="938.66" y="-261.5" font-family="Times,serif" font-size="14.00">+ MuteCheckBoxListener(String) : </text>
<polyline fill="none" stroke="black" points="930.66,-253.3 1167.21,-253.3"/>
<text text-anchor="start" x="938.66" y="-236.7" font-family="Times,serif" font-size="14.00">+ actionPerformed(ActionEvent) : void</text>
</g>
<!-- SoundsVolumeChangeListener -->
<g id="node20" class="node">
<title>SoundsVolumeChangeListener</title>
<polygon fill="none" stroke="black" points="569.2,-836.5 569.2,-910.9 830.67,-910.9 830.67,-836.5 569.2,-836.5"/>
<text text-anchor="middle" x="699.94" y="-894.3" font-family="Times,serif" font-size="14.00">SoundsVolumeChangeListener</text>
<polyline fill="none" stroke="black" points="569.2,-886.1 830.67,-886.1"/>
<text text-anchor="start" x="577.2" y="-869.5" font-family="Times,serif" font-size="14.00">+ SoundsVolumeChangeListener(JSlider) : </text>
<polyline fill="none" stroke="black" points="569.2,-861.3 830.67,-861.3"/>
<text text-anchor="start" x="577.2" y="-844.7" font-family="Times,serif" font-size="14.00">+ stateChanged(ChangeEvent) : void</text>
</g>
<!-- TilePanningActionListener -->
<g id="node21" class="node">
<title>TilePanningActionListener</title>
<polygon fill="none" stroke="black" points="817.15,-342.7 817.15,-450.7 1116.72,-450.7 1116.72,-342.7 817.15,-342.7"/>
<text text-anchor="middle" x="966.94" y="-434.1" font-family="Times,serif" font-size="14.00">TilePanningActionListener</text>
<polyline fill="none" stroke="black" points="817.15,-425.9 1116.72,-425.9"/>
<text text-anchor="start" x="825.15" y="-409.3" font-family="Times,serif" font-size="14.00">+ TilePanningActionListener(Board, int, int, int) : </text>
<polyline fill="none" stroke="black" points="817.15,-401.1 1116.72,-401.1"/>
<text text-anchor="start" x="825.15" y="-384.5" font-family="Times,serif" font-size="14.00">- stopAnimation() : void</text>
<text text-anchor="start" x="825.15" y="-367.7" font-family="Times,serif" font-size="14.00"> + actionPerformed(ActionEvent) : void</text>
<text text-anchor="start" x="825.15" y="-350.9" font-family="Times,serif" font-size="14.00"> + startAnimation() : void</text>
</g>
<!-- TutorialButtonHoverListener -->
<g id="node22" class="node">
<title>TutorialButtonHoverListener</title>
<polygon fill="none" stroke="black" points="208.42,-589.1 208.42,-680.3 541.45,-680.3 541.45,-589.1 208.42,-589.1"/>
<text text-anchor="middle" x="374.94" y="-663.7" font-family="Times,serif" font-size="14.00">TutorialButtonHoverListener</text>
<polyline fill="none" stroke="black" points="208.42,-655.5 541.45,-655.5"/>
<text text-anchor="start" x="216.42" y="-638.9" font-family="Times,serif" font-size="14.00">+ TutorialButtonHoverListener(JButton, Color, Color) : </text>
<polyline fill="none" stroke="black" points="208.42,-630.7 541.45,-630.7"/>
<text text-anchor="start" x="216.42" y="-614.1" font-family="Times,serif" font-size="14.00">+ mouseEntered(MouseEvent) : void</text>
<text text-anchor="start" x="216.42" y="-597.3" font-family="Times,serif" font-size="14.00"> + mouseExited(MouseEvent) : void</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 KiB

After

Width:  |  Height:  |  Size: 658 KiB

View File

@@ -1,100 +1,84 @@
@startuml
class fr.monkhanny.dorfromantik.utils.PlayerScore {
- String serie
- int score
+ <<Create>> 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<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>
}
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
+ <<Create>> Hexagon(int,int,int,double)
+ <<Create>> Hexagon(Point,int,double)
+ <<Create>> Hexagon(int,int,int)
+ <<Create>> 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
+ <<Create>> 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
+ <<Create>> Database()
+ Connection getDatabase()
+ long getSeedBySeriesId(long)
+ List<PlayerScore> getAllScores(long)
+ List<String> getAllSeries()
+ List<String> getSeriesByDateRange(Date,Date)
+ int countSeriesByDateRange(Date,Date,boolean)
+ List<String> getSeriesByDateRangePaginated(Date,Date,int,int,boolean)
+ long getSeedByName(String)
+ void addScore(long,int)
+ void addCustomSeed(long)
+ List<PlayerScore> getTopPlayers()
+ List<Integer> getScoresBySeriesId(long)
+ void close()
}
java.awt.Polygon <|-- fr.monkhanny.dorfromantik.utils.Hexagon
Database -[#595959,dashed]-> PlayerScore : "«create»"
HexagonDrawer -[#595959,dashed]-> Hexagon : "«create»"
@enduml

View File

@@ -0,0 +1,156 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="2010pt" height="496pt" viewBox="0.00 0.00 2009.98 496.40">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 492.4)">
<title>package</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-492.4 2005.98,-492.4 2005.98,4 -4,4"/>
<!-- Database -->
<g id="node1" class="node">
<title>Database</title>
<polygon fill="none" stroke="black" points="0,-179.1 0,-487.9 462.69,-487.9 462.69,-179.1 0,-179.1"/>
<text text-anchor="middle" x="231.35" y="-471.3" font-family="Times,serif" font-size="14.00">Database</text>
<polyline fill="none" stroke="black" points="0,-463.1 462.69,-463.1"/>
<text text-anchor="start" x="8" y="-446.5" font-family="Times,serif" font-size="14.00">+ Database() : </text>
<polyline fill="none" stroke="black" points="0,-438.3 462.69,-438.3"/>
<text text-anchor="start" x="8" y="-421.7" font-family="Times,serif" font-size="14.00">- database : Connection</text>
<polyline fill="none" stroke="black" points="0,-413.5 462.69,-413.5"/>
<text text-anchor="start" x="8" y="-396.9" font-family="Times,serif" font-size="14.00">+ addScore(long, int) : void</text>
<text text-anchor="start" x="8" y="-380.1" font-family="Times,serif" font-size="14.00"> + getSeedBySeriesId(long) : long</text>
<text text-anchor="start" x="8" y="-363.3" font-family="Times,serif" font-size="14.00"> + countSeriesByDateRange(Date, Date, boolean) : int</text>
<text text-anchor="start" x="8" y="-346.5" font-family="Times,serif" font-size="14.00"> + getSeriesByDateRange(Date, Date) : List&lt;String&gt;</text>
<text text-anchor="start" x="8" y="-329.7" font-family="Times,serif" font-size="14.00"> + getScoresBySeriesId(long) : List&lt;Integer&gt;</text>
<text text-anchor="start" x="8" y="-312.9" font-family="Times,serif" font-size="14.00"> + getAllScores(long) : List&lt;PlayerScore&gt;</text>
<text text-anchor="start" x="8" y="-296.1" font-family="Times,serif" font-size="14.00"> + getSeriesByDateRangePaginated(Date, Date, int, int, boolean) : List&lt;String&gt;</text>
<text text-anchor="start" x="8" y="-279.3" font-family="Times,serif" font-size="14.00"> + addCustomSeed(long) : void</text>
<text text-anchor="start" x="8" y="-262.5" font-family="Times,serif" font-size="14.00"> + close() : void</text>
<text text-anchor="start" x="8" y="-245.7" font-family="Times,serif" font-size="14.00"> + getSeedByName(String) : long</text>
<polyline fill="none" stroke="black" points="0,-237.5 462.69,-237.5"/>
<text text-anchor="start" x="8" y="-220.9" font-family="Times,serif" font-size="14.00">database : Connection</text>
<text text-anchor="start" x="8" y="-204.1" font-family="Times,serif" font-size="14.00"> topPlayers : List&lt;PlayerScore&gt;</text>
<text text-anchor="start" x="8" y="-187.3" font-family="Times,serif" font-size="14.00"> allSeries : List&lt;String&gt;</text>
</g>
<!-- PlayerScore -->
<g id="node8" class="node">
<title>PlayerScore</title>
<polygon fill="none" stroke="black" points="145.72,-4.9 145.72,-120.9 316.98,-120.9 316.98,-4.9 145.72,-4.9"/>
<text text-anchor="middle" x="231.35" y="-104.3" font-family="Times,serif" font-size="14.00">PlayerScore</text>
<polyline fill="none" stroke="black" points="145.72,-96.1 316.98,-96.1"/>
<text text-anchor="start" x="153.72" y="-79.5" font-family="Times,serif" font-size="14.00">+ PlayerScore(String, int) : </text>
<polyline fill="none" stroke="black" points="145.72,-71.3 316.98,-71.3"/>
<text text-anchor="start" x="153.72" y="-54.7" font-family="Times,serif" font-size="14.00">- score : int</text>
<polyline fill="none" stroke="black" points="145.72,-46.5 316.98,-46.5"/>
<text text-anchor="start" x="153.72" y="-29.9" font-family="Times,serif" font-size="14.00">serieName : String</text>
<text text-anchor="start" x="153.72" y="-13.1" font-family="Times,serif" font-size="14.00"> score : int</text>
</g>
<!-- Database&#45;&gt;PlayerScore -->
<g id="edge1" class="edge">
<title>Database-&gt;PlayerScore</title>
<path fill="none" stroke="#595959" stroke-dasharray="5,2" d="M231.35,-178.84C231.35,-178.84 231.35,-132.35 231.35,-132.35"/>
<polygon fill="#595959" stroke="#595959" points="231.35,-122.35 235.85,-132.35 231.35,-126.14 231.35,-132.35 231.35,-132.35 231.35,-132.35 231.35,-126.14 226.85,-132.35 231.35,-122.35"/>
<text text-anchor="middle" x="255.05" y="-148" font-family="Times,serif" font-size="14.00">«create»</text>
</g>
<!-- FontLoader -->
<g id="node2" class="node">
<title>FontLoader</title>
<polygon fill="none" stroke="black" points="480.25,-296.3 480.25,-370.7 634.44,-370.7 634.44,-296.3 480.25,-296.3"/>
<text text-anchor="middle" x="557.35" y="-354.1" font-family="Times,serif" font-size="14.00">FontLoader</text>
<polyline fill="none" stroke="black" points="480.25,-345.9 634.44,-345.9"/>
<text text-anchor="start" x="488.25" y="-329.3" font-family="Times,serif" font-size="14.00">+ FontLoader() : </text>
<polyline fill="none" stroke="black" points="480.25,-321.1 634.44,-321.1"/>
<text text-anchor="start" x="488.25" y="-304.5" font-family="Times,serif" font-size="14.00">+ loadFont(Fonts) : Font</text>
</g>
<!-- FontManager -->
<g id="node3" class="node">
<title>FontManager</title>
<polygon fill="none" stroke="black" points="652.91,-221.1 652.91,-445.9 991.78,-445.9 991.78,-221.1 652.91,-221.1"/>
<text text-anchor="middle" x="822.35" y="-429.3" font-family="Times,serif" font-size="14.00">FontManager</text>
<polyline fill="none" stroke="black" points="652.91,-421.1 991.78,-421.1"/>
<text text-anchor="start" x="660.91" y="-404.5" font-family="Times,serif" font-size="14.00">+ FontManager() : </text>
<polyline fill="none" stroke="black" points="652.91,-396.3 991.78,-396.3"/>
<text text-anchor="start" x="660.91" y="-379.7" font-family="Times,serif" font-size="14.00">- buttonFont : Font</text>
<text text-anchor="start" x="660.91" y="-362.9" font-family="Times,serif" font-size="14.00"> - titleFont : Font</text>
<polyline fill="none" stroke="black" points="652.91,-354.7 991.78,-354.7"/>
<text text-anchor="start" x="660.91" y="-338.1" font-family="Times,serif" font-size="14.00">+ getTitleFont(float) : Font</text>
<text text-anchor="start" x="660.91" y="-321.3" font-family="Times,serif" font-size="14.00"> + loadCustomFont(Fonts) : void</text>
<text text-anchor="start" x="660.91" y="-304.5" font-family="Times,serif" font-size="14.00"> + getAdjustedTitleFont(Component, float, float) : Font</text>
<text text-anchor="start" x="660.91" y="-287.7" font-family="Times,serif" font-size="14.00"> + getAdjustedButtonFont(Component, float, float) : Font</text>
<text text-anchor="start" x="660.91" y="-270.9" font-family="Times,serif" font-size="14.00"> + getButtonFont(float) : Font</text>
<polyline fill="none" stroke="black" points="652.91,-262.7 991.78,-262.7"/>
<text text-anchor="start" x="660.91" y="-246.1" font-family="Times,serif" font-size="14.00">buttonFont : Font</text>
<text text-anchor="start" x="660.91" y="-229.3" font-family="Times,serif" font-size="14.00"> titleFont : Font</text>
</g>
<!-- Hexagon -->
<g id="node4" class="node">
<title>Hexagon</title>
<polygon fill="none" stroke="black" points="1098.19,-0.5 1098.19,-125.3 1324.5,-125.3 1324.5,-0.5 1098.19,-0.5"/>
<text text-anchor="middle" x="1211.35" y="-108.7" font-family="Times,serif" font-size="14.00">Hexagon</text>
<polyline fill="none" stroke="black" points="1098.19,-100.5 1324.5,-100.5"/>
<text text-anchor="start" x="1106.19" y="-83.9" font-family="Times,serif" font-size="14.00">+ Hexagon(int, int, int) : </text>
<text text-anchor="start" x="1106.19" y="-67.1" font-family="Times,serif" font-size="14.00"> + Hexagon(Point, int) : </text>
<text text-anchor="start" x="1106.19" y="-50.3" font-family="Times,serif" font-size="14.00"> + Hexagon(Point, int, double) : </text>
<text text-anchor="start" x="1106.19" y="-33.5" font-family="Times,serif" font-size="14.00"> + Hexagon(int, int, int, double) : </text>
<polyline fill="none" stroke="black" points="1098.19,-25.3 1324.5,-25.3"/>
<text text-anchor="start" x="1106.19" y="-8.7" font-family="Times,serif" font-size="14.00">- calculateAngle(int, double) : double</text>
</g>
<!-- HexagonDrawer -->
<g id="node5" class="node">
<title>HexagonDrawer</title>
<polygon fill="none" stroke="black" points="1010.11,-287.9 1010.11,-379.1 1412.59,-379.1 1412.59,-287.9 1010.11,-287.9"/>
<text text-anchor="middle" x="1211.35" y="-362.5" font-family="Times,serif" font-size="14.00">HexagonDrawer</text>
<polyline fill="none" stroke="black" points="1010.11,-354.3 1412.59,-354.3"/>
<text text-anchor="start" x="1018.11" y="-337.7" font-family="Times,serif" font-size="14.00">+ HexagonDrawer(Tile) : </text>
<polyline fill="none" stroke="black" points="1010.11,-329.5 1412.59,-329.5"/>
<text text-anchor="start" x="1018.11" y="-312.9" font-family="Times,serif" font-size="14.00">+ drawHexagon(Graphics2D, double, Point) : void</text>
<text text-anchor="start" x="1018.11" y="-296.1" font-family="Times,serif" font-size="14.00"> - drawHexagonRow(Graphics2D, double, double, double, int) : void</text>
</g>
<!-- HexagonDrawer&#45;&gt;Hexagon -->
<g id="edge2" class="edge">
<title>HexagonDrawer-&gt;Hexagon</title>
<path fill="none" stroke="#595959" stroke-dasharray="5,2" d="M1211.35,-287.6C1211.35,-287.6 1211.35,-136.77 1211.35,-136.77"/>
<polygon fill="#595959" stroke="#595959" points="1211.35,-126.77 1215.85,-136.77 1211.35,-130.55 1211.35,-136.77 1211.35,-136.77 1211.35,-136.77 1211.35,-130.55 1206.85,-136.77 1211.35,-126.77"/>
<text text-anchor="middle" x="1235.05" y="-148" font-family="Times,serif" font-size="14.00">«create»</text>
</g>
<!-- ImageLoader -->
<g id="node6" class="node">
<title>ImageLoader</title>
<polygon fill="none" stroke="black" points="1430.29,-296.3 1430.29,-370.7 1612.4,-370.7 1612.4,-296.3 1430.29,-296.3"/>
<text text-anchor="middle" x="1521.35" y="-354.1" font-family="Times,serif" font-size="14.00">ImageLoader</text>
<polyline fill="none" stroke="black" points="1430.29,-345.9 1612.4,-345.9"/>
<text text-anchor="start" x="1438.29" y="-329.3" font-family="Times,serif" font-size="14.00">+ ImageLoader() : </text>
<polyline fill="none" stroke="black" points="1430.29,-321.1 1612.4,-321.1"/>
<text text-anchor="start" x="1438.29" y="-304.5" font-family="Times,serif" font-size="14.00">+ loadImage(String) : Image?</text>
</g>
<!-- MusicPlayer -->
<g id="node7" class="node">
<title>MusicPlayer</title>
<polygon fill="none" stroke="black" points="1630.07,-187.5 1630.07,-479.5 1812.62,-479.5 1812.62,-187.5 1630.07,-187.5"/>
<text text-anchor="middle" x="1721.35" y="-462.9" font-family="Times,serif" font-size="14.00">MusicPlayer</text>
<polyline fill="none" stroke="black" points="1630.07,-454.7 1812.62,-454.7"/>
<text text-anchor="start" x="1638.07" y="-438.1" font-family="Times,serif" font-size="14.00">+ MusicPlayer() : </text>
<polyline fill="none" stroke="black" points="1630.07,-429.9 1812.62,-429.9"/>
<text text-anchor="start" x="1638.07" y="-413.3" font-family="Times,serif" font-size="14.00">- soundClip : Clip</text>
<text text-anchor="start" x="1638.07" y="-396.5" font-family="Times,serif" font-size="14.00"> - musicClip : Clip</text>
<polyline fill="none" stroke="black" points="1630.07,-388.3 1812.62,-388.3"/>
<text text-anchor="start" x="1638.07" y="-371.7" font-family="Times,serif" font-size="14.00">+ loadMusic(Musics) : void</text>
<text text-anchor="start" x="1638.07" y="-354.9" font-family="Times,serif" font-size="14.00"> + playSound() : void</text>
<text text-anchor="start" x="1638.07" y="-338.1" font-family="Times,serif" font-size="14.00"> + pauseMusic() : void</text>
<text text-anchor="start" x="1638.07" y="-321.3" font-family="Times,serif" font-size="14.00"> + loadSound(Sounds) : void</text>
<text text-anchor="start" x="1638.07" y="-304.5" font-family="Times,serif" font-size="14.00"> + setVolume(Clip, int) : void</text>
<text text-anchor="start" x="1638.07" y="-287.7" font-family="Times,serif" font-size="14.00"> + playMusic() : void</text>
<text text-anchor="start" x="1638.07" y="-270.9" font-family="Times,serif" font-size="14.00"> + stopMusic() : void</text>
<polyline fill="none" stroke="black" points="1630.07,-262.7 1812.62,-262.7"/>
<text text-anchor="start" x="1638.07" y="-246.1" font-family="Times,serif" font-size="14.00">playingSound : boolean</text>
<text text-anchor="start" x="1638.07" y="-229.3" font-family="Times,serif" font-size="14.00"> soundClip : Clip</text>
<text text-anchor="start" x="1638.07" y="-212.5" font-family="Times,serif" font-size="14.00"> playingMusic : boolean</text>
<text text-anchor="start" x="1638.07" y="-195.7" font-family="Times,serif" font-size="14.00"> musicClip : Clip</text>
</g>
<!-- SoundLoader -->
<g id="node9" class="node">
<title>SoundLoader</title>
<polygon fill="none" stroke="black" points="1830.71,-296.3 1830.71,-370.7 2001.98,-370.7 2001.98,-296.3 1830.71,-296.3"/>
<text text-anchor="middle" x="1916.35" y="-354.1" font-family="Times,serif" font-size="14.00">SoundLoader</text>
<polyline fill="none" stroke="black" points="1830.71,-345.9 2001.98,-345.9"/>
<text text-anchor="start" x="1838.71" y="-329.3" font-family="Times,serif" font-size="14.00">+ SoundLoader() : </text>
<polyline fill="none" stroke="black" points="1830.71,-321.1 2001.98,-321.1"/>
<text text-anchor="start" x="1838.71" y="-304.5" font-family="Times,serif" font-size="14.00">+ loadMusic(String) : Clip?</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB