# solvius19/crossfire architecture

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

- Interactive diagram: https://gitdiagram.com/solvius19/crossfire
- Repository: https://github.com/solvius19/crossfire

## Overview

Crossfire is a local, turn-based multiplayer trivia game. The documented play loop is players answering trivia questions while using attacks that affect later turns or questions; OpenTDB supplies trivia content. The tree indicates an entry point, controller, game services, domain models, and views. Source excerpts were not available, so internal call wiring is uncertain; the graph shows only the documented OpenTDB relationship and avoids asserting specific calls between repository modules.

Main entry points: [`src/main/java/org/example/Main.java`](https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/Main.java) (Application entry), [`src/main/java/org/example/controller/TriviaController.java`](https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/controller/TriviaController.java) (Trivia controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_gameplay["Game flow"]
  node_main["Application entry<br/>[Main.java]"]
  node_controller["Trivia controller"]
  node_board_engine["Board builder"]
  node_attack_service["Attack service<br/>[Attack.java]"]
end

subgraph group_domain["Game state"]
  node_attack_type["Attack types<br/>[AttackType.java]"]
  node_game["Game<br/>[Game.java]"]
  node_board["Board<br/>[Board.java]"]
  node_player["Player<br/>[Player.java]"]
end

subgraph group_content["Trivia content"]
  node_question["Question<br/>[Question.java]"]
  node_opentdb[("OpenTDB")]
end

subgraph group_presentation["Presentation"]
  node_trivia_view["Trivia view<br/>[TriviaView.java]"]
  node_output_util["Output utility<br/>[OutputUtil.java]"]
end

node_players(("Players"))

node_players -->|"start game"| node_main
node_main -->|"launches"| node_controller
node_controller -->|"gets trivia"| node_opentdb

click node_main "https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/Main.java"
click node_controller "https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/controller/TriviaController.java"
click node_board_engine "https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/service/BoardBuildEngine.java"
click node_attack_service "https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/service/Attack.java"
click node_attack_type "https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/model/AttackType.java"
click node_game "https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/model/Game.java"
click node_board "https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/model/Board.java"
click node_player "https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/model/Player.java"
click node_question "https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/model/Question.java"
click node_trivia_view "https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/view/TriviaView.java"
click node_output_util "https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/view/OutputUtil.java"

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_main,node_controller,node_board_engine,node_attack_service toneBlue
class node_attack_type,node_game,node_board,node_player toneAmber
class node_question,node_opentdb toneMint
class node_trivia_view,node_output_util toneRose
class node_players toneIndigo
```

## Components

### Game flow

- [Application entry](https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/Main.java): `src/main/java/org/example/Main.java`
- [Trivia controller](https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/controller/TriviaController.java): `src/main/java/org/example/controller/TriviaController.java`
- [Board builder](https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/service/BoardBuildEngine.java): `src/main/java/org/example/service/BoardBuildEngine.java`
- [Attack service](https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/service/Attack.java): `src/main/java/org/example/service/Attack.java`

### Game state

- [Attack types](https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/model/AttackType.java): `src/main/java/org/example/model/AttackType.java`
- [Game](https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/model/Game.java): `src/main/java/org/example/model/Game.java`
- [Board](https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/model/Board.java): `src/main/java/org/example/model/Board.java`
- [Player](https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/model/Player.java): `src/main/java/org/example/model/Player.java`

### Trivia content

- [Question](https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/model/Question.java): `src/main/java/org/example/model/Question.java`
- **OpenTDB**

### Presentation

- [Trivia view](https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/view/TriviaView.java): `src/main/java/org/example/view/TriviaView.java`
- [Output utility](https://github.com/solvius19/crossfire/blob/main/src/main/java/org/example/view/OutputUtil.java): `src/main/java/org/example/view/OutputUtil.java`

### Other components

- **Players**

## Connections

- Players → Application entry: start game
- Application entry → Trivia controller: launches
- Trivia controller → OpenTDB: gets trivia
