Runtime Data Flow

Overview

This page outlines how runtime data flows through core components of the DnD Project. The system is split into layers for clarity:

  • User Interaction Flow – GUI-driven events

  • Trigger & Reaction Flow – Event-based logic execution

  • Data I/O Flow – Map loading, saving, exporting

  • World & Entity State – In-memory data interactions

User Interaction Flow

        sequenceDiagram
  participant User
  participant MapEditor
  participant Entity
  participant EventBus
  participant Trigger

  User->>MapEditor: Clicks Tile
  MapEditor->>Entity: Fires ENTER_TILE event
  Entity->>EventBus: emit("ENTER_TILE", event_data)
  EventBus->>Trigger: check_and_react()
  Trigger->>Entity: Reaction applies effect
    

Trigger & Reaction Flow

        sequenceDiagram
  participant Trigger
  participant Condition
  participant Reaction
  participant TurnManager
  participant NextTrigger

  Trigger->>Condition: Evaluate with event_data
  alt Success (or fail for SkillCheck)
    Condition-->>Trigger: True
    Trigger->>Reaction: Execute(event_data)
    Reaction->>Entity/World: Modify state
    Reaction->>NextTrigger: Check and react (if chained)
  else Fail
    Condition-->>Trigger: False (abort)
  end
  Trigger->>TurnManager: Update cooldown
    

Data I/O Flow

        graph TD
  A[User Action] -->|Save| SaveSystem
  SaveSystem -->|Write| MapFile
  SaveSystem -->|Backup| BackupManager
  A2[AutoSave] --> SaveSystem
  B[Load Map] -->|Parse| JSON
  JSON -->|Rebuild| TileManager
  JSON -->|Rebuild| Entities
  ExportManager -->|Zip| ExportBundle
  ExportBundle --> Media
  ExportBundle --> Profiles
  ExportBundle --> Map
    

World & Entity State

        graph TD
  MapEditor --> TileManager
  TileManager --> Tile
  Tile --> Entity
  Entity --> Stats
  Entity --> Inventory
  Entity --> Triggers
  EventBus -->|Updates| Entity
  Trigger -->|Modify| Tile
  Trigger -->|Modify| Entity
  Trigger -->|Modify| World
  TurnManager -->|Advances| Triggers
  TurnManager -->|Advances| Cooldowns