# correspondenceadg-cmyk/redaffair architecture

> Architecture diagram of the GitHub repository correspondenceadg-cmyk/redaffair, 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/correspondenceadg-cmyk/redaffair
- Repository: https://github.com/correspondenceadg-cmyk/redaffair

## Overview

RedAffair is a text-based detective adventure presented through a Kivy app. The player enters the game through the app’s screen flow; the app connects to a monolithic game engine, whose command-driven investigation covers locations, evidence, suspects, and multiple endings. The app also provides settings, palette, cheats, and sound-test screens. The source excerpts show UI and engine responsibilities, but omit some runtime wiring, so uncertain internal calls are not drawn.

Main entry points: [`src/redaffair/app.py`](https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/app.py) (Kivy app), [`src/redaffair/game.py`](https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/game.py) (Adventure engine), [`src/redaffair/__main__.py`](https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/__main__.py) (Package entry), [`src/redaffair/audio`](https://github.com/correspondenceadg-cmyk/redaffair/tree/main/src/redaffair/audio) (Audio assets)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["App runtime"]
  node_package_entry["Package entry<br/>[__main__.py]"]
  node_app["Kivy app<br/>[app.py]"]
  node_game_screen["Game screen<br/>[app.py]"]
  node_game_ui["Game UI<br/>[app.py]"]
  node_game_io["Game I/O<br/>[app.py]"]
end

subgraph group_gameplay["Detective game"]
  node_engine["Adventure engine<br/>[game.py]"]
  node_exploration["Location exploration<br/>[game.py]"]
  node_investigation["Evidence investigation<br/>[game.py]"]
  node_suspects["Suspect actions<br/>[game.py]"]
  node_resolution["Case endings<br/>[game.py]"]
end

subgraph group_customization["Player options"]
  node_menu_screens["Menu and info<br/>[app.py]"]
  node_settings["Settings and palette<br/>[app.py]"]
  node_cheats["Cheats screen<br/>[app.py]"]
  node_sound_test["Sound test<br/>[app.py]"]
end

subgraph group_media["Game media"]
  node_sfx_manager["Sound effects<br/>[app.py]"]
  node_audio_assets["Audio assets"]
end

node_player(("Player"))

node_player -->|"uses"| node_app
node_package_entry -->|"starts"| node_app
node_app -->|"registers"| node_game_screen
node_game_screen -->|"creates"| node_game_ui
node_game_screen -->|"starts game"| node_game_ui
node_app -->|"imports"| node_engine
node_game_ui -->|"uses"| node_game_io
node_game_ui -.->|"connects game"| node_engine
node_engine -.->|"implements"| node_exploration
node_engine -.->|"implements"| node_investigation
node_engine -.->|"implements"| node_suspects
node_engine -.->|"implements"| node_resolution
node_app -->|"registers screens"| node_menu_screens
node_app -->|"registers screens"| node_settings
node_app -->|"registers screen"| node_cheats
node_app -->|"registers screen"| node_sound_test
node_sfx_manager -->|"loads sounds"| node_audio_assets

click node_package_entry "https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/__main__.py"
click node_app "https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/app.py"
click node_game_screen "https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/app.py"
click node_game_ui "https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/app.py"
click node_game_io "https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/app.py"
click node_engine "https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/game.py"
click node_exploration "https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/game.py"
click node_investigation "https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/game.py"
click node_suspects "https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/game.py"
click node_resolution "https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/game.py"
click node_menu_screens "https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/app.py"
click node_settings "https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/app.py"
click node_cheats "https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/app.py"
click node_sound_test "https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/app.py"
click node_sfx_manager "https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/app.py"
click node_audio_assets "https://github.com/correspondenceadg-cmyk/redaffair/tree/main/src/redaffair/audio"

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_package_entry,node_app,node_game_screen,node_game_ui,node_game_io toneBlue
class node_engine,node_exploration,node_investigation,node_suspects,node_resolution toneAmber
class node_menu_screens,node_settings,node_cheats,node_sound_test toneMint
class node_sfx_manager,node_audio_assets toneRose
class node_player toneIndigo
```

## Components

### App runtime

- [Package entry](https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/__main__.py): `src/redaffair/__main__.py`
- [Kivy app](https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/app.py): `src/redaffair/app.py`
- [Game screen](https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/app.py): `src/redaffair/app.py`
- [Game UI](https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/app.py): `src/redaffair/app.py`
- [Game I/O](https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/app.py): `src/redaffair/app.py`

### Detective game

- [Adventure engine](https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/game.py): `src/redaffair/game.py`
- [Location exploration](https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/game.py): `src/redaffair/game.py`
- [Evidence investigation](https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/game.py): `src/redaffair/game.py`
- [Suspect actions](https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/game.py): `src/redaffair/game.py`
- [Case endings](https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/game.py): `src/redaffair/game.py`

### Player options

- [Menu and info](https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/app.py): `src/redaffair/app.py`
- [Settings and palette](https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/app.py): `src/redaffair/app.py`
- [Cheats screen](https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/app.py): `src/redaffair/app.py`
- [Sound test](https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/app.py): `src/redaffair/app.py`

### Game media

- [Sound effects](https://github.com/correspondenceadg-cmyk/redaffair/blob/main/src/redaffair/app.py): `src/redaffair/app.py`
- [Audio assets](https://github.com/correspondenceadg-cmyk/redaffair/tree/main/src/redaffair/audio): `src/redaffair/audio`

### Other components

- **Player**

## Connections

- Player → Kivy app: uses (evidence: `src/redaffair/app.py`)
- Package entry → Kivy app: starts (evidence: `src/redaffair/__main__.py`)
- Kivy app → Game screen: registers (evidence: `src/redaffair/app.py`)
- Game screen → Game UI: creates (evidence: `src/redaffair/app.py`)
- Game screen → Game UI: starts game (evidence: `src/redaffair/app.py`)
- Kivy app → Adventure engine: imports (evidence: `src/redaffair/app.py`)
- Game UI → Game I/O: uses (evidence: `src/redaffair/app.py`)
- Game UI → Adventure engine: connects game (evidence: `src/redaffair/app.py`)
- Adventure engine → Location exploration: implements (evidence: `src/redaffair/game.py`)
- Adventure engine → Evidence investigation: implements (evidence: `src/redaffair/game.py`)
- Adventure engine → Suspect actions: implements (evidence: `src/redaffair/game.py`)
- Adventure engine → Case endings: implements (evidence: `src/redaffair/game.py`)
- Kivy app → Menu and info: registers screens (evidence: `src/redaffair/app.py`)
- Kivy app → Settings and palette: registers screens (evidence: `src/redaffair/app.py`)
- Kivy app → Cheats screen: registers screen (evidence: `src/redaffair/app.py`)
- Kivy app → Sound test: registers screen (evidence: `src/redaffair/app.py`)
- Sound effects → Audio assets: loads sounds (evidence: `src/redaffair/app.py`)
