# gondosd/thepharmadillo_public_code_sample architecture

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

## Overview

The tree identifies ThePharmadillo as an Unreal Engine gameplay project with an in-game frontend. The principal evidenced workflow is player input triggering gameplay UI or nearby interactions, with inventory actions updating inventory components. Dialogue, area travel, AI chatter, save/load, and options are represented as product capabilities visible in the tree, but their wiring is not inferred. The README is empty, and sampled source is limited, so several subsystem relationships are intentionally omitted.

Main entry points: [`Source/ThePharmadillo/Private/FrameworkClasses/GD_GameplayPlayerController.cpp`](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/FrameworkClasses/GD_GameplayPlayerController.cpp) (Gameplay Controller), [`Source/ThePharmadillo/Private/Actors/Volumes/GD_TravelVolume_Base.cpp`](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Actors/Volumes/GD_TravelVolume_Base.cpp) (Travel Volume), [`Source/ThePharmadillo/Private/FrameworkClasses/GD_PlayerController.cpp`](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/FrameworkClasses/GD_PlayerController.cpp) (Base Controller), [`Source/ThePharmadillo/Private/Characters/CharacterComponents/GD_InteractionHandlerComponent.cpp`](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Characters/CharacterComponents/GD_InteractionHandlerComponent.cpp) (Interaction Handler)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_gameplay["Gameplay World"]
  node_interaction_component["Interactable Component"]
  node_area_subsystem["Game Area Subsystem"]
  node_travel_subsystem["Level Transition"]
  node_collectable["Collectable Actor"]
  node_travel_volume["Travel Volume"]
end

subgraph group_player["Player Systems"]
  node_game_controller["Gameplay Controller"]
  node_player_controller["Base Controller"]
  node_interaction_handler["Interaction Handler"]
  node_inventory_component["Inventory Component"]
end

subgraph group_frontend["Frontend UI"]
  node_storage_button["Storage Item Button"]
  node_storage_widget["Storage Inventory"]
  node_ui_subsystem["UI Subsystem"]
  node_audio_subsystem["Audio Subsystem"]
  node_primary_layout["Primary Layout"]
  node_hud_widget["Gameplay HUD<br/>[Widget_HUD.cpp]"]
end

subgraph group_settings["Player Settings"]
  node_options_registry["Options Registry"]
  node_options_screen["Options Screen"]
  node_user_settings["Game User Settings"]
end

subgraph group_narrative["Dialogue And AI"]
  node_dialogue_action["Dialogue Push Action"]
  node_dialogue_widget["Dialogue Screen"]
  node_dialogue_data["Dialogue Data"]
  node_chatter_component["Chatter Component"]
  node_npc_ai["NPC AI Chatter"]
end

node_player_actor(("Player"))

node_player_actor -->|"uses controls"| node_game_controller
node_game_controller -->|"pushes pause UI"| node_ui_subsystem
node_game_controller -->|"pauses music"| node_audio_subsystem
node_game_controller -->|"activates inventory"| node_hud_widget
node_player_controller -->|"applies settings"| node_user_settings
node_interaction_handler -->|"tracks and interacts"| node_interaction_component
node_storage_button -->|"transfers or removes"| node_inventory_component
node_storage_widget -->|"selects inventory focus"| node_player_actor
node_npc_ai -->|"triggers chatter"| node_chatter_component
node_travel_volume -->|"requests transition"| node_travel_subsystem
node_dialogue_action -->|"uses dialogue data"| node_dialogue_data

click node_game_controller "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/FrameworkClasses/GD_GameplayPlayerController.cpp"
click node_player_controller "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/FrameworkClasses/GD_PlayerController.cpp"
click node_interaction_handler "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Characters/CharacterComponents/GD_InteractionHandlerComponent.cpp"
click node_interaction_component "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Actors/ActorComponents/GD_InteractionComponent.cpp"
click node_inventory_component "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Characters/CharacterComponents/GD_InventoryComponent.cpp"
click node_storage_button "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Widgets/Components/Buttons/GD_StorageInventoryButton.cpp"
click node_storage_widget "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Widgets/Inventory/Widget_StorageInventory.cpp"
click node_ui_subsystem "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Subsystems/FrontendUISubsystem.cpp"
click node_audio_subsystem "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Subsystems/FrontendAudioSubsystem.cpp"
click node_primary_layout "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Widgets/Widget_PrimaryLayout.cpp"
click node_hud_widget "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Widgets/HUD/Widget_HUD.cpp"
click node_options_registry "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Widgets/Options/OptionsDataRegistry.cpp"
click node_options_screen "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Widgets/Options/Widget_OptionsScreen.cpp"
click node_user_settings "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/FrontendSettings/FrontendGameUserSettings.cpp"
click node_area_subsystem "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Subsystems/GD_GameAreaSubsystem.cpp"
click node_travel_subsystem "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Subsystems/GD_LevelTransitionSubsystem.cpp"
click node_dialogue_action "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/AsyncActions/GD_AsyncAction_Push_DialogueScreen.cpp"
click node_dialogue_widget "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Widgets/Widget_DialogueScreen.cpp"
click node_dialogue_data "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/DataAssets/GD_DialogueDataAsset.cpp"
click node_chatter_component "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Characters/CharacterComponents/GD_ChatterBoxComponent.cpp"
click node_npc_ai "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Characters/AI/Services/GD_BTS_TriggerChatter.cpp"
click node_collectable "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Actors/GD_CollectableActor_Base.cpp"
click node_travel_volume "https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Actors/Volumes/GD_TravelVolume_Base.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_interaction_component,node_area_subsystem,node_travel_subsystem,node_collectable,node_travel_volume toneBlue
class node_game_controller,node_player_controller,node_interaction_handler,node_inventory_component toneAmber
class node_storage_button,node_storage_widget,node_ui_subsystem,node_audio_subsystem,node_primary_layout,node_hud_widget toneMint
class node_options_registry,node_options_screen,node_user_settings toneRose
class node_dialogue_action,node_dialogue_widget,node_dialogue_data,node_chatter_component,node_npc_ai,node_player_actor toneIndigo
```

## Components

### Gameplay World

- [Interactable Component](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Actors/ActorComponents/GD_InteractionComponent.cpp): `Source/ThePharmadillo/Private/Actors/ActorComponents/GD_InteractionComponent.cpp`
- [Game Area Subsystem](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Subsystems/GD_GameAreaSubsystem.cpp): `Source/ThePharmadillo/Private/Subsystems/GD_GameAreaSubsystem.cpp`
- [Level Transition](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Subsystems/GD_LevelTransitionSubsystem.cpp): `Source/ThePharmadillo/Private/Subsystems/GD_LevelTransitionSubsystem.cpp`
- [Collectable Actor](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Actors/GD_CollectableActor_Base.cpp): `Source/ThePharmadillo/Private/Actors/GD_CollectableActor_Base.cpp`
- [Travel Volume](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Actors/Volumes/GD_TravelVolume_Base.cpp): `Source/ThePharmadillo/Private/Actors/Volumes/GD_TravelVolume_Base.cpp`

### Player Systems

- [Gameplay Controller](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/FrameworkClasses/GD_GameplayPlayerController.cpp): `Source/ThePharmadillo/Private/FrameworkClasses/GD_GameplayPlayerController.cpp`
- [Base Controller](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/FrameworkClasses/GD_PlayerController.cpp): `Source/ThePharmadillo/Private/FrameworkClasses/GD_PlayerController.cpp`
- [Interaction Handler](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Characters/CharacterComponents/GD_InteractionHandlerComponent.cpp): `Source/ThePharmadillo/Private/Characters/CharacterComponents/GD_InteractionHandlerComponent.cpp`
- [Inventory Component](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Characters/CharacterComponents/GD_InventoryComponent.cpp): `Source/ThePharmadillo/Private/Characters/CharacterComponents/GD_InventoryComponent.cpp`

### Frontend UI

- [Storage Item Button](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Widgets/Components/Buttons/GD_StorageInventoryButton.cpp): `Source/ThePharmadillo/Private/Widgets/Components/Buttons/GD_StorageInventoryButton.cpp`
- [Storage Inventory](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Widgets/Inventory/Widget_StorageInventory.cpp): `Source/ThePharmadillo/Private/Widgets/Inventory/Widget_StorageInventory.cpp`
- [UI Subsystem](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Subsystems/FrontendUISubsystem.cpp): `Source/ThePharmadillo/Private/Subsystems/FrontendUISubsystem.cpp`
- [Audio Subsystem](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Subsystems/FrontendAudioSubsystem.cpp): `Source/ThePharmadillo/Private/Subsystems/FrontendAudioSubsystem.cpp`
- [Primary Layout](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Widgets/Widget_PrimaryLayout.cpp): `Source/ThePharmadillo/Private/Widgets/Widget_PrimaryLayout.cpp`
- [Gameplay HUD](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Widgets/HUD/Widget_HUD.cpp): `Source/ThePharmadillo/Private/Widgets/HUD/Widget_HUD.cpp`

### Player Settings

- [Options Registry](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Widgets/Options/OptionsDataRegistry.cpp): `Source/ThePharmadillo/Private/Widgets/Options/OptionsDataRegistry.cpp`
- [Options Screen](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Widgets/Options/Widget_OptionsScreen.cpp): `Source/ThePharmadillo/Private/Widgets/Options/Widget_OptionsScreen.cpp`
- [Game User Settings](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/FrontendSettings/FrontendGameUserSettings.cpp): `Source/ThePharmadillo/Private/FrontendSettings/FrontendGameUserSettings.cpp`

### Dialogue And AI

- [Dialogue Push Action](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/AsyncActions/GD_AsyncAction_Push_DialogueScreen.cpp): `Source/ThePharmadillo/Private/AsyncActions/GD_AsyncAction_Push_DialogueScreen.cpp`
- [Dialogue Screen](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Widgets/Widget_DialogueScreen.cpp): `Source/ThePharmadillo/Private/Widgets/Widget_DialogueScreen.cpp`
- [Dialogue Data](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/DataAssets/GD_DialogueDataAsset.cpp): `Source/ThePharmadillo/Private/DataAssets/GD_DialogueDataAsset.cpp`
- [Chatter Component](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Characters/CharacterComponents/GD_ChatterBoxComponent.cpp): `Source/ThePharmadillo/Private/Characters/CharacterComponents/GD_ChatterBoxComponent.cpp`
- [NPC AI Chatter](https://github.com/gondosd/thepharmadillo_public_code_sample/blob/main/Source/ThePharmadillo/Private/Characters/AI/Services/GD_BTS_TriggerChatter.cpp): `Source/ThePharmadillo/Private/Characters/AI/Services/GD_BTS_TriggerChatter.cpp`

### Other components

- **Player**

## Connections

- Player → Gameplay Controller: uses controls
- Gameplay Controller → UI Subsystem: pushes pause UI
- Gameplay Controller → Audio Subsystem: pauses music
- Gameplay Controller → Gameplay HUD: activates inventory
- Base Controller → Game User Settings: applies settings
- Interaction Handler → Interactable Component: tracks and interacts
- Storage Item Button → Inventory Component: transfers or removes
- Storage Inventory → Player: selects inventory focus
- NPC AI Chatter → Chatter Component: triggers chatter
- Travel Volume → Level Transition: requests transition
- Dialogue Push Action → Dialogue Data: uses dialogue data
