# tonidietzel/arcaneassistantapplication architecture

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

- Interactive diagram: https://gitdiagram.com/tonidietzel/arcaneassistantapplication
- Repository: https://github.com/tonidietzel/arcaneassistantapplication

## Overview

Arcane Assistant is a Windows console companion for tabletop role-playing games. Its principal workflow starts at the console menu, where a user can roll dice or generate and inspect a character, then optionally save or load that character from one of nine local slots. Other menu branches provide personalized greetings, jokes, and credits. The README places the application logic in Program.cs; the source excerpts confirm startup, dice rolling, joke selection, and character-slot handling. Other feature links follow documented behavior, not inspected implementations.

Main entry points: [`ArcaneAssistantApplication/Program.cs`](https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs) (Program and menus)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Console application"]
  node_program["Program and menus<br/>[Program.cs]"]
  node_console["Console interface<br/>[Program.cs]"]
  node_greeting["User greeting<br/>[Program.cs]"]
end

subgraph group_characters["Character workflows"]
  node_characterflow["Character generation<br/>[Program.cs]"]
  node_character["Character model<br/>[Program.cs]"]
  node_fantasydata["Fantasy data<br/>[Program.cs]"]
  node_characterdisplay["Character details<br/>[Program.cs]"]
  node_slotmenu["Save and load slots<br/>[Program.cs]"]
end

subgraph group_storage["Local persistence"]
  node_userfile[("User name file<br/>[Program.cs]")]
  node_serialization["Character serialization<br/>[Program.cs]"]
  node_savefile[("Character save file<br/>[Program.cs]")]
end

subgraph group_extras["Other utilities"]
  node_dice["Dice roller<br/>[Program.cs]"]
  node_jokes["Fantasy jokes<br/>[Program.cs]"]
  node_credits["Credits screen<br/>[Program.cs]"]
end

node_player(("Player"))

node_player -->|"uses"| node_console
node_console -->|"input"| node_program
node_program -->|"renders"| node_console
node_program -->|"loads greeting"| node_greeting
node_greeting -->|"reads or writes"| node_userfile
node_program -->|"dispatches"| node_dice
node_program -->|"dispatches"| node_characterflow
node_program -->|"dispatches"| node_jokes
node_program -->|"dispatches"| node_credits
node_characterflow -->|"uses"| node_fantasydata
node_characterflow -->|"generates"| node_character
node_characterflow -->|"displays"| node_characterdisplay
node_characterflow -->|"opens"| node_slotmenu
node_slotmenu -->|"serializes"| node_serialization
node_serialization -->|"reads or writes"| node_savefile

click node_program "https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs"
click node_console "https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs"
click node_greeting "https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs"
click node_userfile "https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs"
click node_characterflow "https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs"
click node_character "https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs"
click node_fantasydata "https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs"
click node_characterdisplay "https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs"
click node_slotmenu "https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs"
click node_serialization "https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs"
click node_savefile "https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs"
click node_dice "https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs"
click node_jokes "https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs"
click node_credits "https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs"

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_program,node_console,node_greeting toneBlue
class node_characterflow,node_character,node_fantasydata,node_characterdisplay,node_slotmenu toneAmber
class node_userfile,node_serialization,node_savefile toneMint
class node_dice,node_jokes,node_credits toneRose
class node_player toneIndigo
```

## Components

### Console application

- [Program and menus](https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs): `ArcaneAssistantApplication/Program.cs`
- [Console interface](https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs): `ArcaneAssistantApplication/Program.cs`
- [User greeting](https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs): `ArcaneAssistantApplication/Program.cs`

### Character workflows

- [Character generation](https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs): `ArcaneAssistantApplication/Program.cs`
- [Character model](https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs): `ArcaneAssistantApplication/Program.cs`
- [Fantasy data](https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs): `ArcaneAssistantApplication/Program.cs`
- [Character details](https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs): `ArcaneAssistantApplication/Program.cs`
- [Save and load slots](https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs): `ArcaneAssistantApplication/Program.cs`

### Local persistence

- [User name file](https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs): `ArcaneAssistantApplication/Program.cs`
- [Character serialization](https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs): `ArcaneAssistantApplication/Program.cs`
- [Character save file](https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs): `ArcaneAssistantApplication/Program.cs`

### Other utilities

- [Dice roller](https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs): `ArcaneAssistantApplication/Program.cs`
- [Fantasy jokes](https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs): `ArcaneAssistantApplication/Program.cs`
- [Credits screen](https://github.com/tonidietzel/arcaneassistantapplication/blob/main/ArcaneAssistantApplication/Program.cs): `ArcaneAssistantApplication/Program.cs`

### Other components

- **Player**

## Connections

- Player → Console interface: uses
- Console interface → Program and menus: input
- Program and menus → Console interface: renders
- Program and menus → User greeting: loads greeting
- User greeting → User name file: reads or writes
- Program and menus → Dice roller: dispatches
- Program and menus → Character generation: dispatches
- Program and menus → Fantasy jokes: dispatches
- Program and menus → Credits screen: dispatches
- Character generation → Fantasy data: uses
- Character generation → Character model: generates
- Character generation → Character details: displays
- Character generation → Save and load slots: opens
- Save and load slots → Character serialization: serializes
- Character serialization → Character save file: reads or writes
