# ellisia-chan/activity-5-game-database-connectivity-prototype architecture

> Architecture diagram of the GitHub repository ellisia-chan/activity-5-game-database-connectivity-prototype, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-02). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ellisia-chan/activity-5-game-database-connectivity-prototype
- Repository: https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype

## Overview

Catch Moko is a Unity 2D time-attack game: the player moves a plate to catch falling items, earns tiered points, charges and activates a speed skill, and races a 60-second timer. The graph groups gameplay, player/item mechanics, shared runtime systems, and presentation. The README documents the gameplay relationships, but no source excerpts were provided, so implementation-level calls and event routing cannot be verified; the graph therefore shows only documented relationships.

Main entry points: [`Assets/Scripts/Core/Inputsystem/InputManager.cs`](https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Core/Inputsystem/InputManager.cs) (Input handling), [`Assets/Scripts/Features/Player/PlayerCollector.cs`](https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/Player/PlayerCollector.cs) (Player collector), [`Assets/Scripts/Features/Player/PlayerMovement.cs`](https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/Player/PlayerMovement.cs) (Player), [`Assets/Scripts/Features/Player/PlayerSkill.cs`](https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/Player/PlayerSkill.cs) (Speed skill)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_gameplay["Game flow"]
  node_score["Scoring<br/>[ScoreManager.cs]"]
  node_game["Game management<br/>[GameManager.cs]"]
  node_state["Game states<br/>[FSM_GameState.cs]"]
end

subgraph group_play["Player and items"]
  node_player["Player<br/>[PlayerMovement.cs]"]
  node_skill["Speed skill<br/>[PlayerSkill.cs]"]
  node_collector["Player collector<br/>[PlayerCollector.cs]"]
  node_spawner["Item spawning<br/>[ItemSpawner.cs]"]
  node_item["Collectible items<br/>[ItemController.cs]"]
end

subgraph group_runtime["Core runtime"]
  node_input["Input handling<br/>[InputManager.cs]"]
  node_scene["Scene management<br/>[SceneManager.cs]"]
  node_pool["Object pooling"]
  node_events["Event bus<br/>[EventBus.cs]"]
end

subgraph group_presentation["Presentation"]
  node_ui["Game UI<br/>[ScoreUI.cs]"]
  node_timer["Timer UI<br/>[TimerUI.cs]"]
end

node_actor(("Player"))

node_actor -->|"provides controls"| node_input
node_input -->|"moves plate"| node_player
node_input -->|"activates skill"| node_skill
node_input -->|"pauses game"| node_ui
node_spawner -->|"drops items"| node_item
node_player -->|"catches items"| node_collector
node_collector -->|"awards points"| node_score
node_collector -->|"charges energy"| node_skill
node_skill -->|"boosts movement"| node_player
node_game -.->|"manages round"| node_state
node_score -.->|"shows score"| node_ui
node_game -.->|"tracks round time"| node_timer

click node_player "https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/Player/PlayerMovement.cs"
click node_input "https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Core/Inputsystem/InputManager.cs"
click node_skill "https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/Player/PlayerSkill.cs"
click node_collector "https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/Player/PlayerCollector.cs"
click node_spawner "https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/ItemSpawner/ItemSpawner.cs"
click node_item "https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/Item/ItemController.cs"
click node_score "https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/ScoreSystem/ScoreManager.cs"
click node_game "https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/GameSystem/GameManager.cs"
click node_state "https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/GameSystem/FSM_GameState.cs"
click node_scene "https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Core/SceneSystem/SceneManager.cs"
click node_pool "https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Core/PoolSystem/PoolRuntimeSystem.cs"
click node_events "https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Core/EventSystem/EventBus.cs"
click node_ui "https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/UI/ScoreUI.cs"
click node_timer "https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/UI/TimerUI.cs"

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_score,node_game,node_state toneBlue
class node_player,node_skill,node_collector,node_spawner,node_item toneAmber
class node_input,node_scene,node_pool,node_events toneMint
class node_ui,node_timer toneRose
class node_actor toneIndigo
```

## Components

### Game flow

- [Scoring](https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/ScoreSystem/ScoreManager.cs): `Assets/Scripts/Features/ScoreSystem/ScoreManager.cs`
- [Game management](https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/GameSystem/GameManager.cs): `Assets/Scripts/Features/GameSystem/GameManager.cs`
- [Game states](https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/GameSystem/FSM_GameState.cs): `Assets/Scripts/Features/GameSystem/FSM_GameState.cs`

### Player and items

- [Player](https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/Player/PlayerMovement.cs): `Assets/Scripts/Features/Player/PlayerMovement.cs`
- [Speed skill](https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/Player/PlayerSkill.cs): `Assets/Scripts/Features/Player/PlayerSkill.cs`
- [Player collector](https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/Player/PlayerCollector.cs): `Assets/Scripts/Features/Player/PlayerCollector.cs`
- [Item spawning](https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/ItemSpawner/ItemSpawner.cs): `Assets/Scripts/Features/ItemSpawner/ItemSpawner.cs`
- [Collectible items](https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/Item/ItemController.cs): `Assets/Scripts/Features/Item/ItemController.cs`

### Core runtime

- [Input handling](https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Core/Inputsystem/InputManager.cs): `Assets/Scripts/Core/Inputsystem/InputManager.cs`
- [Scene management](https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Core/SceneSystem/SceneManager.cs): `Assets/Scripts/Core/SceneSystem/SceneManager.cs`
- [Object pooling](https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Core/PoolSystem/PoolRuntimeSystem.cs): `Assets/Scripts/Core/PoolSystem/PoolRuntimeSystem.cs`
- [Event bus](https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Core/EventSystem/EventBus.cs): `Assets/Scripts/Core/EventSystem/EventBus.cs`

### Presentation

- [Game UI](https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/UI/ScoreUI.cs): `Assets/Scripts/Features/UI/ScoreUI.cs`
- [Timer UI](https://github.com/ellisia-chan/activity-5-game-database-connectivity-prototype/blob/main/Assets/Scripts/Features/UI/TimerUI.cs): `Assets/Scripts/Features/UI/TimerUI.cs`

### Other components

- **Player**

## Connections

- Player → Input handling: provides controls (evidence: `README.md`)
- Input handling → Player: moves plate (evidence: `README.md`)
- Input handling → Speed skill: activates skill (evidence: `README.md`)
- Input handling → Game UI: pauses game (evidence: `README.md`)
- Item spawning → Collectible items: drops items (evidence: `README.md`)
- Player → Player collector: catches items (evidence: `README.md`)
- Player collector → Scoring: awards points (evidence: `README.md`)
- Player collector → Speed skill: charges energy (evidence: `README.md`)
- Speed skill → Player: boosts movement (evidence: `README.md`)
- Game management → Game states: manages round
- Scoring → Game UI: shows score
- Game management → Timer UI: tracks round time
