# costards2/causa_ganha_-vn_minigame- architecture

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

- Interactive diagram: https://gitdiagram.com/costards2/causa_ganha_-vn_minigame-
- Repository: https://github.com/costards2/causa_ganha_-vn_minigame-

## Overview

This is a browser-based Portuguese legal-training visual novel: the learner reads a client scenario, answers a quiz question, receives feedback, and progresses toward a score-based ending. The main runtime is in `js/script.js`; the supplied excerpts show question loading, dialogue, quiz, timer, sprites, and partial-progress reporting. Some wiring and completion behavior are unsampled, so the graph omits uncertain links.

Main entry points: [`js/script.js`](https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/js/script.js) (Game controller), [`index.html`](https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/index.html) (Game page), [`js/platform-bridge.js`](https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/js/platform-bridge.js) (Cayres bridge), [`css/styles.css`](https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/css/styles.css) (Visual styling)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_gameplay["Game flow"]
  node_page["Game page<br/>[index.html]"]
  node_engine["Game controller<br/>[script.js]"]
  node_dialogue["Dialogue scenes<br/>[script.js]"]
  node_quiz["Quiz questions<br/>[script.js]"]
  node_feedback["Answer feedback<br/>[script.js]"]
  node_timer["Timer and score<br/>[script.js]"]
  node_ending["Game ending<br/>[script.js]"]
end

subgraph group_presentation["Presentation"]
  node_styles["Visual styling<br/>[styles.css]"]
  node_sprites["Character sprites"]
  node_internsprites["Intern sprites"]
  node_clicksound["Click sound<br/>[click.mp3]"]
  node_correctsound["Correct sound<br/>[acerto.mp3]"]
  node_errorsound["Incorrect sound<br/>[erro.mp3]"]
end

subgraph group_content["Game content"]
  node_questiondata["Question data<br/>[questions.json]"]
end

subgraph group_integration["Platform integration"]
  node_bridge["Cayres bridge<br/>[platform-bridge.js]"]
  node_sdk["Platform SDK"]
end

node_learner(("Learner"))

node_learner -->|"opens and plays"| node_page
node_page -->|"loads"| node_engine
node_engine -->|"fetches"| node_questiondata
node_engine -->|"loads scene"| node_dialogue
node_dialogue -->|"advances to"| node_quiz
node_quiz -->|"checks answer"| node_feedback
node_engine -->|"updates"| node_timer
node_engine -->|"ends game"| node_ending
node_engine -->|"reports progress"| node_bridge
node_bridge -->|"updates progress"| node_sdk
node_engine -->|"uses"| node_styles
node_engine -->|"loads"| node_sprites
node_engine -->|"loads"| node_internsprites
node_engine -->|"plays"| node_clicksound
node_quiz -->|"plays on correct"| node_correctsound
node_quiz -->|"plays on incorrect"| node_errorsound

click node_page "https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/index.html"
click node_engine "https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/js/script.js"
click node_dialogue "https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/js/script.js"
click node_quiz "https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/js/script.js"
click node_feedback "https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/js/script.js"
click node_timer "https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/js/script.js"
click node_ending "https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/js/script.js"
click node_styles "https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/css/styles.css"
click node_sprites "https://github.com/costards2/causa_ganha_-vn_minigame-/tree/main/img/adv%20sprites"
click node_internsprites "https://github.com/costards2/causa_ganha_-vn_minigame-/tree/main/img/stg%20sprites"
click node_clicksound "https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/audio/click.mp3"
click node_correctsound "https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/audio/acerto.mp3"
click node_errorsound "https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/audio/erro.mp3"
click node_questiondata "https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/data/questions.json"
click node_bridge "https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/js/platform-bridge.js"

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_page,node_engine,node_dialogue,node_quiz,node_feedback,node_timer,node_ending toneBlue
class node_styles,node_sprites,node_internsprites,node_clicksound,node_correctsound,node_errorsound toneAmber
class node_questiondata toneMint
class node_bridge,node_sdk toneRose
class node_learner toneIndigo
```

## Components

### Game flow

- [Game page](https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/index.html): `index.html`
- [Game controller](https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/js/script.js): `js/script.js`
- [Dialogue scenes](https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/js/script.js): `js/script.js`
- [Quiz questions](https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/js/script.js): `js/script.js`
- [Answer feedback](https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/js/script.js): `js/script.js`
- [Timer and score](https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/js/script.js): `js/script.js`
- [Game ending](https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/js/script.js): `js/script.js`

### Presentation

- [Visual styling](https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/css/styles.css): `css/styles.css`
- [Character sprites](https://github.com/costards2/causa_ganha_-vn_minigame-/tree/main/img/adv%20sprites): `img/adv sprites`
- [Intern sprites](https://github.com/costards2/causa_ganha_-vn_minigame-/tree/main/img/stg%20sprites): `img/stg sprites`
- [Click sound](https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/audio/click.mp3): `audio/click.mp3`
- [Correct sound](https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/audio/acerto.mp3): `audio/acerto.mp3`
- [Incorrect sound](https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/audio/erro.mp3): `audio/erro.mp3`

### Game content

- [Question data](https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/data/questions.json): `data/questions.json`

### Platform integration

- [Cayres bridge](https://github.com/costards2/causa_ganha_-vn_minigame-/blob/main/js/platform-bridge.js): `js/platform-bridge.js`
- **Platform SDK**

### Other components

- **Learner**

## Connections

- Learner → Game page: opens and plays
- Game page → Game controller: loads
- Game controller → Question data: fetches
- Game controller → Dialogue scenes: loads scene
- Dialogue scenes → Quiz questions: advances to
- Quiz questions → Answer feedback: checks answer
- Game controller → Timer and score: updates
- Game controller → Game ending: ends game
- Game controller → Cayres bridge: reports progress
- Cayres bridge → Platform SDK: updates progress
- Game controller → Visual styling: uses
- Game controller → Character sprites: loads
- Game controller → Intern sprites: loads
- Game controller → Click sound: plays
- Quiz questions → Correct sound: plays on correct
- Quiz questions → Incorrect sound: plays on incorrect
