# minchara/bengaluru-rush architecture

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

- Interactive diagram: https://gitdiagram.com/minchara/bengaluru-rush
- Repository: https://github.com/minchara/bengaluru-rush

## Overview

NEXUS DRIVE is a JavaFX arcade racing game set in Bengaluru. Players navigate menus to choose a location, mode, and car, then race through traffic using driving, nitro, rewind, and weather mechanics; results and garage progress persist in a profile. The graph preserves the documented location, mode, traffic, and progression capabilities. Several subsystem links are shown as unverified because their implementation files were not sampled; edges otherwise reflect visible wiring or documented behavior.

Main entry points: [`src/main/java/com/nexusdrive/GameEngine.java`](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/GameEngine.java) (Game Engine), [`src/main/java/com/nexusdrive/Main.java`](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/Main.java) (Application), [`src/main/java/com/nexusdrive/entity/PlayerCar.java`](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/entity/PlayerCar.java) (Player Car), [`src/main/java/com/nexusdrive/ui/GarageScreen.java`](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/ui/GarageScreen.java) (Garage Screen)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App and Menus"]
  node_main["Application<br/>[Main.java]"]
  node_menu["Menu Navigation"]
  node_scene["Scene Contract<br/>[SceneManager.java]"]
  node_selection["Location and Mode Selection"]
  node_garageui["Garage Screen<br/>[GarageScreen.java]"]
  node_otherui["Achievements and Settings"]
end

subgraph group_race["Race Simulation"]
  node_engine["Game Engine<br/>[GameEngine.java]"]
  node_input["Keyboard Input<br/>[InputHandler.java]"]
  node_car["Player Car<br/>[PlayerCar.java]"]
  node_traffic["Traffic AI<br/>[AITraffic.java]"]
  node_trafficmgr["Traffic Manager"]
  node_collision["Collision Detection"]
  node_nearmiss["Near-Miss Detection"]
  node_nitro["Nitro Boost<br/>[NitroSystem.java]"]
  node_rewind["Time Rewind"]
  node_score["Score and Combos<br/>[ScoreManager.java]"]
  node_hud["Race HUD<br/>[GameHUD.java]"]
  node_audio["Sound Effects<br/>[SoundManager.java]"]
  node_modes["Game Modes<br/>[GameMode.java]"]
end

subgraph group_world["World and Rendering"]
  node_map["Bengaluru Locations<br/>[BengaluruMap.java]"]
  node_road["Road Projection<br/>[RoadRenderer.java]"]
  node_background["Background Rendering"]
  node_weather["Weather System<br/>[WeatherSystem.java]"]
  node_segments["Road Segments<br/>[RoadSegment.java]"]
  node_locations["Location Types<br/>[LocationType.java]"]
  node_sprites["Pixel Art Sprites<br/>[PixelSprites.java]"]
end

subgraph group_progress["Progression and Data"]
  node_definitions["Car Definitions<br/>[CarDefinition.java]"]
  node_profile["Player Profile<br/>[PlayerProfile.java]"]
  node_save["JSON Save Manager<br/>[SaveManager.java]"]
  node_achievements["Achievements"]
end

node_player(("Player"))

node_player -->|"launches"| node_main
node_main -->|"loads profile"| node_save
node_main -->|"creates"| node_menu
node_main -->|"opens"| node_garageui
node_main -->|"starts session"| node_engine
node_main -.->|"navigates"| node_selection
node_main -.->|"opens"| node_otherui
node_engine -->|"sets up traffic"| node_trafficmgr
node_engine -->|"configures car"| node_car
node_engine -->|"applies rewind"| node_rewind
node_engine -->|"saves profile"| node_save
node_engine -.->|"reads controls"| node_input
node_engine -.->|"uses map"| node_map
node_engine -.->|"updates weather"| node_weather
node_engine -.->|"checks collisions"| node_collision
node_engine -.->|"updates nitro"| node_nitro
node_engine -.->|"updates score"| node_score
node_engine -.->|"checks near misses"| node_nearmiss
node_engine -.->|"renders road"| node_road
node_engine -.->|"renders scenery"| node_background
node_collision -->|"checks overlap"| node_car
node_collision -->|"checks overlap"| node_traffic
node_rewind -->|"restores state"| node_car
node_rewind -->|"restores state"| node_traffic
node_road -->|"draws vehicles"| node_traffic
node_road -->|"projects segments"| node_map
node_road -->|"uses sprites"| node_sprites
node_map -->|"builds road"| node_segments
node_map -->|"uses location"| node_locations
node_car -->|"reads controls"| node_input
node_car -->|"applies physics"| node_weather
node_car -->|"uses stats"| node_definitions
node_garageui -->|"lists cars"| node_definitions
node_garageui -->|"reads choices"| node_profile
node_garageui -->|"previews cars"| node_sprites
node_save -->|"serializes"| node_profile
node_profile -.->|"delegates save"| node_save
node_engine -.->|"feeds race state"| node_hud
node_engine -.->|"plays effects"| node_audio
node_scene -.->|"starts game"| node_engine
node_menu -.->|"navigates via"| node_scene
node_selection -.->|"chooses session"| node_scene
node_otherui -.->|"navigates via"| node_scene
node_engine -.->|"checks unlocks"| node_achievements

click node_main "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/Main.java"
click node_menu "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/ui/MainMenuController.java"
click node_scene "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/ui/SceneManager.java"
click node_selection "https://github.com/minchara/bengaluru-rush/tree/main/src/main/java/com/nexusdrive/ui"
click node_garageui "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/ui/GarageScreen.java"
click node_otherui "https://github.com/minchara/bengaluru-rush/tree/main/src/main/java/com/nexusdrive/ui"
click node_engine "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/GameEngine.java"
click node_input "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/InputHandler.java"
click node_car "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/entity/PlayerCar.java"
click node_traffic "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/entity/AITraffic.java"
click node_trafficmgr "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/entity/TrafficManager.java"
click node_collision "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/system/CollisionManager.java"
click node_nearmiss "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/system/NearMissDetector.java"
click node_nitro "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/system/NitroSystem.java"
click node_rewind "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/system/TimeRewindManager.java"
click node_score "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/system/ScoreManager.java"
click node_hud "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/ui/GameHUD.java"
click node_audio "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/audio/SoundManager.java"
click node_map "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/world/BengaluruMap.java"
click node_road "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/world/RoadRenderer.java"
click node_background "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/world/BackgroundRenderer.java"
click node_weather "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/world/WeatherSystem.java"
click node_segments "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/world/RoadSegment.java"
click node_locations "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/world/LocationType.java"
click node_sprites "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/entity/PixelSprites.java"
click node_modes "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/GameMode.java"
click node_definitions "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/data/CarDefinition.java"
click node_profile "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/data/PlayerProfile.java"
click node_save "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/data/SaveManager.java"
click node_achievements "https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/ui/AchievementsScreen.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_menu,node_scene,node_selection,node_garageui,node_otherui toneBlue
class node_engine,node_input,node_car,node_traffic,node_trafficmgr,node_collision,node_nearmiss,node_nitro,node_rewind,node_score,node_hud,node_audio,node_modes toneAmber
class node_map,node_road,node_background,node_weather,node_segments,node_locations,node_sprites toneMint
class node_definitions,node_profile,node_save,node_achievements toneRose
class node_player toneIndigo
```

## Components

### App and Menus

- [Application](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/Main.java): `src/main/java/com/nexusdrive/Main.java`
- [Menu Navigation](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/ui/MainMenuController.java): `src/main/java/com/nexusdrive/ui/MainMenuController.java`
- [Scene Contract](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/ui/SceneManager.java): `src/main/java/com/nexusdrive/ui/SceneManager.java`
- [Location and Mode Selection](https://github.com/minchara/bengaluru-rush/tree/main/src/main/java/com/nexusdrive/ui): `src/main/java/com/nexusdrive/ui`
- [Garage Screen](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/ui/GarageScreen.java): `src/main/java/com/nexusdrive/ui/GarageScreen.java`
- [Achievements and Settings](https://github.com/minchara/bengaluru-rush/tree/main/src/main/java/com/nexusdrive/ui): `src/main/java/com/nexusdrive/ui`

### Race Simulation

- [Game Engine](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/GameEngine.java): `src/main/java/com/nexusdrive/GameEngine.java`
- [Keyboard Input](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/InputHandler.java): `src/main/java/com/nexusdrive/InputHandler.java`
- [Player Car](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/entity/PlayerCar.java): `src/main/java/com/nexusdrive/entity/PlayerCar.java`
- [Traffic AI](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/entity/AITraffic.java): `src/main/java/com/nexusdrive/entity/AITraffic.java`
- [Traffic Manager](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/entity/TrafficManager.java): `src/main/java/com/nexusdrive/entity/TrafficManager.java`
- [Collision Detection](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/system/CollisionManager.java): `src/main/java/com/nexusdrive/system/CollisionManager.java`
- [Near-Miss Detection](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/system/NearMissDetector.java): `src/main/java/com/nexusdrive/system/NearMissDetector.java`
- [Nitro Boost](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/system/NitroSystem.java): `src/main/java/com/nexusdrive/system/NitroSystem.java`
- [Time Rewind](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/system/TimeRewindManager.java): `src/main/java/com/nexusdrive/system/TimeRewindManager.java`
- [Score and Combos](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/system/ScoreManager.java): `src/main/java/com/nexusdrive/system/ScoreManager.java`
- [Race HUD](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/ui/GameHUD.java): `src/main/java/com/nexusdrive/ui/GameHUD.java`
- [Sound Effects](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/audio/SoundManager.java): `src/main/java/com/nexusdrive/audio/SoundManager.java`
- [Game Modes](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/GameMode.java): `src/main/java/com/nexusdrive/GameMode.java`

### World and Rendering

- [Bengaluru Locations](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/world/BengaluruMap.java): `src/main/java/com/nexusdrive/world/BengaluruMap.java`
- [Road Projection](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/world/RoadRenderer.java): `src/main/java/com/nexusdrive/world/RoadRenderer.java`
- [Background Rendering](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/world/BackgroundRenderer.java): `src/main/java/com/nexusdrive/world/BackgroundRenderer.java`
- [Weather System](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/world/WeatherSystem.java): `src/main/java/com/nexusdrive/world/WeatherSystem.java`
- [Road Segments](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/world/RoadSegment.java): `src/main/java/com/nexusdrive/world/RoadSegment.java`
- [Location Types](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/world/LocationType.java): `src/main/java/com/nexusdrive/world/LocationType.java`
- [Pixel Art Sprites](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/entity/PixelSprites.java): `src/main/java/com/nexusdrive/entity/PixelSprites.java`

### Progression and Data

- [Car Definitions](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/data/CarDefinition.java): `src/main/java/com/nexusdrive/data/CarDefinition.java`
- [Player Profile](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/data/PlayerProfile.java): `src/main/java/com/nexusdrive/data/PlayerProfile.java`
- [JSON Save Manager](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/data/SaveManager.java): `src/main/java/com/nexusdrive/data/SaveManager.java`
- [Achievements](https://github.com/minchara/bengaluru-rush/blob/main/src/main/java/com/nexusdrive/ui/AchievementsScreen.java): `src/main/java/com/nexusdrive/ui/AchievementsScreen.java`

### Other components

- **Player**

## Connections

- Player → Application: launches (evidence: `src/main/java/com/nexusdrive/Main.java`)
- Application → JSON Save Manager: loads profile (evidence: `src/main/java/com/nexusdrive/Main.java`)
- Application → Menu Navigation: creates (evidence: `src/main/java/com/nexusdrive/Main.java`)
- Application → Garage Screen: opens (evidence: `src/main/java/com/nexusdrive/Main.java`)
- Application → Game Engine: starts session (evidence: `src/main/java/com/nexusdrive/Main.java`)
- Application → Location and Mode Selection: navigates (evidence: `src/main/java/com/nexusdrive/Main.java`)
- Application → Achievements and Settings: opens (evidence: `src/main/java/com/nexusdrive/Main.java`)
- Game Engine → Traffic Manager: sets up traffic (evidence: `src/main/java/com/nexusdrive/GameEngine.java`)
- Game Engine → Player Car: configures car (evidence: `src/main/java/com/nexusdrive/GameEngine.java`)
- Game Engine → Time Rewind: applies rewind (evidence: `src/main/java/com/nexusdrive/GameEngine.java`)
- Game Engine → JSON Save Manager: saves profile (evidence: `src/main/java/com/nexusdrive/GameEngine.java`)
- Game Engine → Keyboard Input: reads controls (evidence: `src/main/java/com/nexusdrive/GameEngine.java`)
- Game Engine → Bengaluru Locations: uses map (evidence: `src/main/java/com/nexusdrive/GameEngine.java`)
- Game Engine → Weather System: updates weather (evidence: `src/main/java/com/nexusdrive/GameEngine.java`)
- Game Engine → Collision Detection: checks collisions (evidence: `src/main/java/com/nexusdrive/GameEngine.java`)
- Game Engine → Nitro Boost: updates nitro (evidence: `src/main/java/com/nexusdrive/GameEngine.java`)
- Game Engine → Score and Combos: updates score (evidence: `src/main/java/com/nexusdrive/GameEngine.java`)
- Game Engine → Near-Miss Detection: checks near misses (evidence: `src/main/java/com/nexusdrive/GameEngine.java`)
- Game Engine → Road Projection: renders road (evidence: `src/main/java/com/nexusdrive/GameEngine.java`)
- Game Engine → Background Rendering: renders scenery (evidence: `src/main/java/com/nexusdrive/GameEngine.java`)
- Collision Detection → Player Car: checks overlap (evidence: `src/main/java/com/nexusdrive/system/CollisionManager.java`)
- Collision Detection → Traffic AI: checks overlap (evidence: `src/main/java/com/nexusdrive/system/CollisionManager.java`)
- Time Rewind → Player Car: restores state (evidence: `src/main/java/com/nexusdrive/system/TimeRewindManager.java`)
- Time Rewind → Traffic AI: restores state (evidence: `src/main/java/com/nexusdrive/system/TimeRewindManager.java`)
- Road Projection → Traffic AI: draws vehicles (evidence: `src/main/java/com/nexusdrive/world/RoadRenderer.java`)
- Road Projection → Bengaluru Locations: projects segments (evidence: `src/main/java/com/nexusdrive/world/RoadRenderer.java`)
- Road Projection → Pixel Art Sprites: uses sprites (evidence: `src/main/java/com/nexusdrive/world/RoadRenderer.java`)
- Bengaluru Locations → Road Segments: builds road (evidence: `src/main/java/com/nexusdrive/world/BengaluruMap.java`)
- Bengaluru Locations → Location Types: uses location (evidence: `src/main/java/com/nexusdrive/world/BengaluruMap.java`)
- Player Car → Keyboard Input: reads controls (evidence: `src/main/java/com/nexusdrive/entity/PlayerCar.java`)
- Player Car → Weather System: applies physics (evidence: `src/main/java/com/nexusdrive/entity/PlayerCar.java`)
- Player Car → Car Definitions: uses stats (evidence: `src/main/java/com/nexusdrive/entity/PlayerCar.java`)
- Garage Screen → Car Definitions: lists cars (evidence: `src/main/java/com/nexusdrive/ui/GarageScreen.java`)
- Garage Screen → Player Profile: reads choices (evidence: `src/main/java/com/nexusdrive/ui/GarageScreen.java`)
- Garage Screen → Pixel Art Sprites: previews cars (evidence: `src/main/java/com/nexusdrive/ui/GarageScreen.java`)
- JSON Save Manager → Player Profile: serializes (evidence: `src/main/java/com/nexusdrive/data/SaveManager.java`)
- Player Profile → JSON Save Manager: delegates save (evidence: `src/main/java/com/nexusdrive/data/PlayerProfile.java`)
- Game Engine → Race HUD: feeds race state (evidence: `src/main/java/com/nexusdrive/GameEngine.java`)
- Game Engine → Sound Effects: plays effects (evidence: `src/main/java/com/nexusdrive/GameEngine.java`)
- Scene Contract → Game Engine: starts game (evidence: `src/main/java/com/nexusdrive/GameEngine.java`)
- Menu Navigation → Scene Contract: navigates via
- Location and Mode Selection → Scene Contract: chooses session (evidence: `src/main/java/com/nexusdrive/ui/GarageScreen.java`)
- Achievements and Settings → Scene Contract: navigates via (evidence: `src/main/java/com/nexusdrive/ui/GarageScreen.java`)
- Game Engine → Achievements: checks unlocks
