# amir16yp/territorycontrolmod architecture

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

- Interactive diagram: https://gitdiagram.com/amir16yp/territorycontrolmod
- Repository: https://github.com/amir16yp/territorycontrolmod

## Overview

TerritoryControlMod is a BepInEx game mod that adds team-unit and territorial-control overlays to the game minimap. On plugin startup it loads configuration and installs Harmony patches; the minimap patch initializes territory state, periodically derives influence from actors and vehicles, and renders unit and territory overlays. TerritoryControl computes control and boundaries, while Core supplies team flag textures. The excerpts show these key links; other game-event and rendering details are not fully sampled.

Main entry points: [`MinimapUiPatch.cs`](https://github.com/amir16yp/territorycontrolmod/blob/master/MinimapUiPatch.cs) (Minimap patch), [`TerritoryControl.cs`](https://github.com/amir16yp/territorycontrolmod/blob/master/TerritoryControl.cs) (Influence and control), [`Core.cs`](https://github.com/amir16yp/territorycontrolmod/blob/master/Core.cs) (Plugin lifecycle), [`ModConfig.cs`](https://github.com/amir16yp/territorycontrolmod/blob/master/ModConfig.cs) (Display configuration)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_startup["Plugin startup"]
  node_plugin["Plugin lifecycle<br/>[Core.cs]"]
  node_flag_textures["Team flag textures<br/>[Core.cs]"]
end

subgraph group_settings["Display settings"]
  node_display_config["Display configuration<br/>[ModConfig.cs]"]
end

subgraph group_territory["Territory calculation"]
  node_territory_state["Influence and control"]
  node_territory_boundaries["Boundary polygons"]
end

subgraph group_minimap["Minimap overlays"]
  node_minimap_patch["Minimap patch<br/>[MinimapUiPatch.cs]"]
  node_unit_overlay["Unit overlay<br/>[MinimapUiPatch.cs]"]
  node_territory_overlay["Territory overlay<br/>[MinimapUiPatch.cs]"]
  node_combined_overlay["Combined overlay<br/>[MinimapUiPatch.cs]"]
end

node_game_player(("Game player"))
node_game_runtime["Game runtime"]
node_ravenm["RavenM assembly"]

node_plugin -->|"initializes"| node_display_config
node_plugin -->|"installs patches"| node_minimap_patch
node_display_config -->|"detects assemblies"| node_ravenm
node_game_player -.->|"views minimap"| node_minimap_patch
node_minimap_patch -->|"initializes"| node_territory_state
node_minimap_patch -->|"adds influence"| node_territory_state
node_minimap_patch -->|"updates control"| node_territory_state
node_territory_state -->|"derives boundaries"| node_territory_boundaries
node_minimap_patch -->|"starts updates"| node_unit_overlay
node_minimap_patch -->|"starts updates"| node_territory_overlay
node_minimap_patch -->|"starts updates"| node_combined_overlay
node_territory_overlay -->|"reads maps"| node_territory_state
node_territory_overlay -->|"renders boundaries"| node_territory_boundaries
node_combined_overlay -->|"reads maps"| node_territory_state
node_combined_overlay -->|"renders boundaries"| node_territory_boundaries
node_minimap_patch -->|"checks visibility"| node_display_config
node_territory_state -->|"loads team flags"| node_flag_textures
node_plugin -->|"hooks scenes"| node_game_runtime
node_minimap_patch -->|"reads actors"| node_game_runtime

click node_plugin "https://github.com/amir16yp/territorycontrolmod/blob/master/Core.cs"
click node_flag_textures "https://github.com/amir16yp/territorycontrolmod/blob/master/Core.cs"
click node_display_config "https://github.com/amir16yp/territorycontrolmod/blob/master/ModConfig.cs"
click node_territory_state "https://github.com/amir16yp/territorycontrolmod/blob/master/TerritoryControl.cs"
click node_territory_boundaries "https://github.com/amir16yp/territorycontrolmod/blob/master/TerritoryControl.cs"
click node_minimap_patch "https://github.com/amir16yp/territorycontrolmod/blob/master/MinimapUiPatch.cs"
click node_unit_overlay "https://github.com/amir16yp/territorycontrolmod/blob/master/MinimapUiPatch.cs"
click node_territory_overlay "https://github.com/amir16yp/territorycontrolmod/blob/master/MinimapUiPatch.cs"
click node_combined_overlay "https://github.com/amir16yp/territorycontrolmod/blob/master/MinimapUiPatch.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_plugin,node_flag_textures toneBlue
class node_display_config toneAmber
class node_territory_state,node_territory_boundaries toneMint
class node_minimap_patch,node_unit_overlay,node_territory_overlay,node_combined_overlay toneRose
class node_game_player,node_game_runtime,node_ravenm toneIndigo
```

## Components

### Plugin startup

- [Plugin lifecycle](https://github.com/amir16yp/territorycontrolmod/blob/master/Core.cs): `Core.cs`
- [Team flag textures](https://github.com/amir16yp/territorycontrolmod/blob/master/Core.cs): `Core.cs`

### Display settings

- [Display configuration](https://github.com/amir16yp/territorycontrolmod/blob/master/ModConfig.cs): `ModConfig.cs`

### Territory calculation

- [Influence and control](https://github.com/amir16yp/territorycontrolmod/blob/master/TerritoryControl.cs): `TerritoryControl.cs`
- [Boundary polygons](https://github.com/amir16yp/territorycontrolmod/blob/master/TerritoryControl.cs): `TerritoryControl.cs`

### Minimap overlays

- [Minimap patch](https://github.com/amir16yp/territorycontrolmod/blob/master/MinimapUiPatch.cs): `MinimapUiPatch.cs`
- [Unit overlay](https://github.com/amir16yp/territorycontrolmod/blob/master/MinimapUiPatch.cs): `MinimapUiPatch.cs`
- [Territory overlay](https://github.com/amir16yp/territorycontrolmod/blob/master/MinimapUiPatch.cs): `MinimapUiPatch.cs`
- [Combined overlay](https://github.com/amir16yp/territorycontrolmod/blob/master/MinimapUiPatch.cs): `MinimapUiPatch.cs`

### Other components

- **Game player**
- **Game runtime**
- **RavenM assembly**

## Connections

- Plugin lifecycle → Display configuration: initializes (evidence: `Core.cs`)
- Plugin lifecycle → Minimap patch: installs patches (evidence: `Core.cs`)
- Display configuration → RavenM assembly: detects assemblies (evidence: `ModConfig.cs`)
- Game player → Minimap patch: views minimap
- Minimap patch → Influence and control: initializes (evidence: `MinimapUiPatch.cs`)
- Minimap patch → Influence and control: adds influence (evidence: `MinimapUiPatch.cs`)
- Minimap patch → Influence and control: updates control (evidence: `MinimapUiPatch.cs`)
- Influence and control → Boundary polygons: derives boundaries (evidence: `TerritoryControl.cs`)
- Minimap patch → Unit overlay: starts updates (evidence: `MinimapUiPatch.cs`)
- Minimap patch → Territory overlay: starts updates (evidence: `MinimapUiPatch.cs`)
- Minimap patch → Combined overlay: starts updates (evidence: `MinimapUiPatch.cs`)
- Territory overlay → Influence and control: reads maps (evidence: `MinimapUiPatch.cs`)
- Territory overlay → Boundary polygons: renders boundaries (evidence: `MinimapUiPatch.cs`)
- Combined overlay → Influence and control: reads maps (evidence: `MinimapUiPatch.cs`)
- Combined overlay → Boundary polygons: renders boundaries (evidence: `MinimapUiPatch.cs`)
- Minimap patch → Display configuration: checks visibility (evidence: `MinimapUiPatch.cs`)
- Influence and control → Team flag textures: loads team flags (evidence: `TerritoryControl.cs`)
- Plugin lifecycle → Game runtime: hooks scenes (evidence: `Core.cs`)
- Minimap patch → Game runtime: reads actors (evidence: `MinimapUiPatch.cs`)
