# raduwolf12/7-wonders-duel architecture

> Architecture diagram of the GitHub repository raduwolf12/7-wonders-duel, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/raduwolf12/7-wonders-duel
- Repository: https://github.com/raduwolf12/7-wonders-duel

## Overview

This is a C++ remake of 7 Wonders Duel with two modes: a console game and a graphical game against a basic AI. The user selects a mode in the executable entry point; the console path runs turn-based game logic, while the graphical path runs a stateful SFML game interface. The domain includes age-specific card decks, wonders, progress tokens, player resources, and victory conditions. The excerpts support the entry-point dispatch and some game-to-mechanics dependencies; links for unsampled graphical and AI behavior are omitted or marked unverified.

Main entry points: [`7 Wonders Duel/7 Wonders Duel/GameLogic.cpp`](https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/GameLogic.cpp) (Console Game), [`7 Wonders Duel/7 Wonders Duel/GameState.cpp`](https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/GameState.cpp) (Graphical Game), [`7 Wonders Duel/7 Wonders Duel/main.cpp`](https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/main.cpp) (Mode Selector), [`7 Wonders Duel/7 Wonders Duel/GameMechanics.cpp`](https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/GameMechanics.cpp) (Game Mechanics)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Entry and Modes"]
  node_entrypoint["Mode Selector<br/>[main.cpp]"]
  node_console["Console Game<br/>[GameLogic.cpp]"]
  node_visual["Graphical Game<br/>[GameState.cpp]"]
end

subgraph group_rules["Game Rules"]
  node_rules["Game Logic<br/>[GameLogic.cpp]"]
  node_mechanics["Game Mechanics<br/>[GameMechanics.cpp]"]
end

subgraph group_domain["Game Domain"]
  node_board["Conflict Board<br/>[Board.cpp]"]
  node_playerstate["Player State<br/>[Player.cpp]"]
  node_age1["Age I Cards<br/>[AgeICards.cpp]"]
  node_age2["Age II Deck<br/>[Age2Deck.cpp]"]
  node_age3["Age III Deck<br/>[Age3Deck.cpp]"]
  node_wonderdeck["Wonder Deck<br/>[WonderCardDeck.cpp]"]
  node_wondermodel["Wonder Model"]
  node_tokens["Progress Tokens"]
  node_card["Card Model<br/>[Card.cpp]"]
end

subgraph group_interface["Graphical Interface"]
  node_menus["Menu States<br/>[MainMenuState.cpp]"]
  node_ai["AI Utilities<br/>[BotUtils.cpp]"]
  node_render["Card Rendering<br/>[CardRender.cpp]"]
end

node_user(("Player"))

node_user -->|"chooses mode"| node_entrypoint
node_entrypoint -->|"runs console"| node_console
node_entrypoint -->|"runs graphical"| node_visual
node_console -.->|"sets up players"| node_playerstate
node_console -->|"checks victories"| node_board
node_console -->|"selects wonders"| node_wonderdeck
node_console -->|"discards tokens"| node_tokens
node_console -->|"uses age deck"| node_age1
node_console -->|"uses age deck"| node_age2
node_console -->|"uses age deck"| node_age3
node_console -->|"uses rules"| node_mechanics
node_mechanics -->|"updates players"| node_playerstate
node_visual -->|"counts resources"| node_mechanics
node_visual -.->|"updates display"| node_render
node_visual -.->|"uses AI helpers"| node_ai
node_playerstate -->|"stores wonders"| node_wondermodel
node_wonderdeck -->|"holds models"| node_wondermodel
node_age1 -->|"holds cards"| node_card
node_age2 -->|"holds cards"| node_card
node_age3 -->|"holds cards"| node_card
node_menus -.->|"starts game"| node_visual

click node_entrypoint "https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/main.cpp"
click node_console "https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/GameLogic.cpp"
click node_visual "https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/GameState.cpp"
click node_rules "https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/GameLogic.cpp"
click node_mechanics "https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/GameMechanics.cpp"
click node_board "https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/Board.cpp"
click node_playerstate "https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/Player.cpp"
click node_age1 "https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/AgeICards.cpp"
click node_age2 "https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/Age2Deck.cpp"
click node_age3 "https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/Age3Deck.cpp"
click node_wonderdeck "https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/WonderCardDeck.cpp"
click node_wondermodel "https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/WonderCardModel.cpp"
click node_tokens "https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/ActiveProgressTokens.cpp"
click node_card "https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/Card.cpp"
click node_menus "https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/MainMenuState.cpp"
click node_ai "https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/BotUtils.cpp"
click node_render "https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/CardRender.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_entrypoint,node_console,node_visual toneBlue
class node_rules,node_mechanics toneAmber
class node_board,node_playerstate,node_age1,node_age2,node_age3,node_wonderdeck,node_wondermodel,node_tokens,node_card toneMint
class node_menus,node_ai,node_render toneRose
class node_user toneIndigo
```

## Components

### Entry and Modes

- [Mode Selector](https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/main.cpp): `7 Wonders Duel/7 Wonders Duel/main.cpp`
- [Console Game](https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/GameLogic.cpp): `7 Wonders Duel/7 Wonders Duel/GameLogic.cpp`
- [Graphical Game](https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/GameState.cpp): `7 Wonders Duel/7 Wonders Duel/GameState.cpp`

### Game Rules

- [Game Logic](https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/GameLogic.cpp): `7 Wonders Duel/7 Wonders Duel/GameLogic.cpp`
- [Game Mechanics](https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/GameMechanics.cpp): `7 Wonders Duel/7 Wonders Duel/GameMechanics.cpp`

### Game Domain

- [Conflict Board](https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/Board.cpp): `7 Wonders Duel/7 Wonders Duel/Board.cpp`
- [Player State](https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/Player.cpp): `7 Wonders Duel/7 Wonders Duel/Player.cpp`
- [Age I Cards](https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/AgeICards.cpp): `7 Wonders Duel/7 Wonders Duel/AgeICards.cpp`
- [Age II Deck](https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/Age2Deck.cpp): `7 Wonders Duel/7 Wonders Duel/Age2Deck.cpp`
- [Age III Deck](https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/Age3Deck.cpp): `7 Wonders Duel/7 Wonders Duel/Age3Deck.cpp`
- [Wonder Deck](https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/WonderCardDeck.cpp): `7 Wonders Duel/7 Wonders Duel/WonderCardDeck.cpp`
- [Wonder Model](https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/WonderCardModel.cpp): `7 Wonders Duel/7 Wonders Duel/WonderCardModel.cpp`
- [Progress Tokens](https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/ActiveProgressTokens.cpp): `7 Wonders Duel/7 Wonders Duel/ActiveProgressTokens.cpp`
- [Card Model](https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/Card.cpp): `7 Wonders Duel/7 Wonders Duel/Card.cpp`

### Graphical Interface

- [Menu States](https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/MainMenuState.cpp): `7 Wonders Duel/7 Wonders Duel/MainMenuState.cpp`
- [AI Utilities](https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/BotUtils.cpp): `7 Wonders Duel/7 Wonders Duel/BotUtils.cpp`
- [Card Rendering](https://github.com/raduwolf12/7-wonders-duel/blob/main/7%20Wonders%20Duel/7%20Wonders%20Duel/CardRender.cpp): `7 Wonders Duel/7 Wonders Duel/CardRender.cpp`

### Other components

- **Player**

## Connections

- Player → Mode Selector: chooses mode (evidence: `7 Wonders Duel/7 Wonders Duel/main.cpp`)
- Mode Selector → Console Game: runs console (evidence: `7 Wonders Duel/7 Wonders Duel/main.cpp`)
- Mode Selector → Graphical Game: runs graphical (evidence: `7 Wonders Duel/7 Wonders Duel/main.cpp`)
- Console Game → Player State: sets up players
- Console Game → Conflict Board: checks victories (evidence: `7 Wonders Duel/7 Wonders Duel/GameLogic.cpp`)
- Console Game → Wonder Deck: selects wonders (evidence: `7 Wonders Duel/7 Wonders Duel/GameLogic.cpp`)
- Console Game → Progress Tokens: discards tokens (evidence: `7 Wonders Duel/7 Wonders Duel/GameLogic.cpp`)
- Console Game → Age I Cards: uses age deck (evidence: `7 Wonders Duel/7 Wonders Duel/GameLogic.cpp`)
- Console Game → Age II Deck: uses age deck (evidence: `7 Wonders Duel/7 Wonders Duel/GameLogic.cpp`)
- Console Game → Age III Deck: uses age deck (evidence: `7 Wonders Duel/7 Wonders Duel/GameLogic.cpp`)
- Console Game → Game Mechanics: uses rules (evidence: `7 Wonders Duel/7 Wonders Duel/GameLogic.cpp`)
- Game Mechanics → Player State: updates players
- Graphical Game → Game Mechanics: counts resources (evidence: `7 Wonders Duel/7 Wonders Duel/GameState.cpp`)
- Graphical Game → Card Rendering: updates display
- Graphical Game → AI Utilities: uses AI helpers
- Player State → Wonder Model: stores wonders
- Wonder Deck → Wonder Model: holds models
- Age I Cards → Card Model: holds cards
- Age II Deck → Card Model: holds cards
- Age III Deck → Card Model: holds cards
- Menu States → Graphical Game: starts game
