Router : uses
AppFrame o--> AppMenuBar : creates
AppFrame o--> AppPopupMenu : creates
AppMenuBar ..> SystemActions: performs
AppPopupMenu ..> SystemActions : performs
Router --* IllegalRouteException : throws
Router --* RouterConfigException : throw
AppFrame ..> AppCfg : uses
AppCfg ..> DefaultCfg : uses
DefaultCfg <|-- GameConfig : extends
class AppFrame {
- AppMenuBar menuBar
- AppPopupMenu popupMenu
- SystemActions systemActions
+ getAppMenuBar() AppMenuBar
+ getAppPopupMenu() AppPopupMenu
+ getSystemActions() SystemActions
+ initSize() void
+ initTitle() void
+ initFrame() void
+ initMacOSMenus() void
+ initIcon() void
+ initMenuBar() void
}
class AppCfg
class DefaultCfg
class GameConfig {
<%%{init: {"theme": "default"}%%
classDiagram
direction LR
AppFrame o--> Router : uses
AppFrame o--> AppMenuBar : creates
AppFrame o--> AppPopupMenu : creates
AppMenuBar ..> SystemActions: performs
AppPopupMenu ..> SystemActions : performs
Router --* IllegalRouteException : throws
Router --* RouterConfigException : throw
AppFrame ..> AppCfg : uses
AppCfg ..> DefaultCfg : uses
DefaultCfg <|-- GameConfig : extends
class AppFrame {
- AppMenuBar menuBar
- AppPopupMenu popupMenu
- SystemActions systemActions
+ getAppMenuBar() AppMenuBar
+ getAppPopupMenu() AppPopupMenu
+ getSystemActions() SystemActions
+ initSize() void
+ initTitle() void
+ initFrame() void
+ initMacOSMenus() void
+ initIcon() void
+ initMenuBar() void
}
class AppCfg
class DefaultCfg
class GameConfig {
<<abstract>>
}
class AppMenuBar {
- AppFrame appFrame
+ JMenu mainMenu;
+ JMenuItem aboutMenuItem;
+ JMenuItem preferencesMenuItem;
+ JMenuItem quitMenuItem;
+ JMenu gameMenu;
+ JMenuItem pauseResumeMenuItem;
+ JMenuItem newGameMenuItem;
+ JMenuItem saveExitMenuItem;
+ JMenuItem exitMenuItem;
+ JMenu helpMenu;
+ JMenuItem helpMenuItem;
+ JMenu githubMenu;
+ JMenuItem githubMenuItem;
- setupMacOS() void
- initMenus() void
}
class AppPopupMenu {
- AppFrame appFrame
+ MenuItem menuAbout
- initMenuItems() void
}
class IllegalRouteException
class RouterConfigException
class Router {
- ViewController controller
- boolean isDefault
- Class<ViewController> viewType
- ViewPanel<ViewController> view
+ isDefault() boolean
+ createView() ViewPanel
+ setViewType(viewType) void
+ setControllerType(controllerType) void
+ createController() ViewController
+ preloadView() void
+ getController(Object... args) ViewController
+ setRoute(Router router, Object... args) void
+ update() void
+ rebuild() void
+ getView() ViewController
}
class SystemActions {
- AppFrame appFrame
+ openAboutDialog() void
+ quitApp() void
+ openGithubLink() void
+ openPreferencesDialog() void
+ openHelpDialog() void
+ openNotImplemented() void
}
%%{init: {"theme": "default"}%%
classDiagram
direction LR
Game "1" --> "1" GameMap : contains
Game "1" --> "*" Player : contains
Game "1" --> "1" Dice : contains
Game "1" --> "1" Deck : contains
class Game {
|| Attributes ||
- config GameConfig
- mapState MapState
- map GameMap
- players List<Player>
- playerCount int
- Phase phase
- currentplayer Player
- phaseCounter int
- turnCounter int
- roundCounter int
- draftArmies int
- currentcard ChanceCard
- initialTerrDistrubution ArrayList<TerritoryState>
- roundCount int
|| Methods ||
+ nextPhase() void
+ getInstance() Game
+ getPlayerCount() int
+ getPhase() Phase
+ initializePlayers() void
+ doDraftPhase() void
+ getDraftArmies() int
+ setDraftArmies(TerritoryState state) void
+ createGameMap() void
+ addPlayer() Player
+ getPlayers() List<Player>
+ getPlayersCount() int
+ shufflePlayers() void
+ shareTerritories() void
+ getInitialArmies() int
+ attackPhase(TerritoryState startLocation, TerritoryState attackLocation) void
+ fortifyPhase(TerritoryState stateToSendArmiesFrom, TerritoryState stateToSendArmiesTo, int amount) void
+ findAndSetConfig() void
}
class Dice {
- sides int
+ roll() int
+ roll(int times) int
}
ChanceCardFactory --> ChanceCard : creates
ArmyCardFactory --> ArmyCard : creates
TerritoryCardFactory --> TerritoryCard : creates
class ArmyLabel {
- armyCount int
- color Color
+ setArmyCount(int armyCount) void
+ setColor(Color color) void
+ getArmyCount() int
- paintComponent(Graphics g) void
}
Army *--> ArmyType
class ArmyType {
<<enumeration>>
Infantry
Cavalry
Artillery
Mercenary
}
ArmyCard --|> Card : extends
TerritoryCard --|> Card : extends
ChanceCard --|> Card : extends
class Card {
- CardType type
}
class TerritoryCard {
- name String
- owner Player
- territory TerritoryType
- continent ContinentType
- cardType CardType
- description String
- imageUrl String
- canBeTraded boolean
- tradeValue int
+ getName() String
+ getDescription() String
+ canBeTraded() boolean
+ isOwned() boolean
+ setOwner(Player owner) void
+ setOwned(boolean owned) void
+ getOwner() Player
}
class ArmyCard {
- type ArmyType
}
class ChanceCard {
- type Type
+ Type enum
+ withEffects Type[]
+ getType() Type
+ toString() String
+ hasEffect() boolean
+ getRandomType() Type
+ typeToString(Type type) String
}
Card *--> CardType
class CardType {
<<enumeration>>
Army
Territory
Chance
}
ChanceCard *--> ChanceType
class ChanceType {
+ <<enumeration>>
Revolt
NuclearStrike
Sabotage
DiplomaticImmunity
Mercenaries
Revolution
Draft
Bombardment
Reinforcements
+ withEffects Type[]
- type Type
+ toString() String
+ hasEffect() boolean
+ getEffect() Type
+ getRandomType() Type
+ typeToString(Type type) String
}