# menker-cs/elixir architecture

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

- Interactive diagram: https://gitdiagram.com/menker-cs/elixir
- Repository: https://github.com/menker-cs/elixir

## Overview

Elixir is a BepInEx Gorilla Tag mod menu. The documented user flow is to open the in-game menu, navigate categories and pages, and activate a mod; the code excerpt shows menu rendering and toggled actions, while the button manager excerpt shows player and enabled-mod category refresh. The tree and README indicate broader gameplay-mod and patch subsystems; their links are limited to documented scope because their source was not sampled.

Main entry points: [`Menu/Module.cs`](https://github.com/menker-cs/elixir/blob/main/Menu/Module.cs) (Mod action model), [`Menu/Menu.cs`](https://github.com/menker-cs/elixir/blob/main/Menu/Menu.cs) (Menu controller), [`Plugin.cs`](https://github.com/menker-cs/elixir/blob/main/Plugin.cs) (Plugin lifecycle), [`Mods/Playerr.cs`](https://github.com/menker-cs/elixir/blob/main/Mods/Playerr.cs) (Player mods)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Plugin runtime"]
  node_plugin["Plugin lifecycle<br/>[Plugin.cs]"]
  node_kill["Remote kill switch<br/>[Plugin.cs]"]
  node_coroutines["Coroutine runner"]
end

subgraph group_menu["Menu interaction"]
  node_menu["Menu controller<br/>[Menu.cs]"]
  node_gui["Console and HUD<br/>[GUIHandler.cs]"]
  node_buttons["Menu button controls<br/>[Buttons.cs]"]
  node_category["Category model<br/>[Categiry.cs]"]
  node_module["Mod action model<br/>[Module.cs]"]
  node_refresh["Category refresh<br/>[ButtonManager.cs]"]
end

subgraph group_mods["Gameplay mods"]
  node_settings["Settings mods<br/>[Settings.cs]"]
  node_movement["Movement mods<br/>[Movement.cs]"]
  node_visuals["Visual mods<br/>[Visuals.cs]"]
  node_players["Player mods<br/>[Playerr.cs]"]
  node_world["World mods<br/>[World.cs]"]
  node_room["Room mods<br/>[Room.cs]"]
  node_fun["Fun mods<br/>[Fun.cs]"]
end

subgraph group_integration["Game integration"]
  node_patches["Harmony patches<br/>[HarmonyPatch.cs]"]
  node_anticheat["Report and disconnect patches"]
  node_rig["Rig and player lookup<br/>[RigManager.cs]"]
  node_input["Controller input"]
  node_gun["Targeting tools<br/>[Gun.cs]"]
  node_notifications["Notifications<br/>[Library.cs]"]
end

node_player(("Player"))
node_game["Gorilla Tag"]
node_network["Photon networking"]

node_player -->|"opens and navigates"| node_menu
node_plugin -->|"checks at startup"| node_kill
node_plugin -->|"starts and updates"| node_menu
node_plugin -->|"applies and removes"| node_patches
node_plugin -->|"starts routines"| node_coroutines
node_menu -->|"renders categories"| node_category
node_menu -->|"renders and toggles"| node_module
node_menu -->|"handles controls"| node_buttons
node_menu -->|"refreshes categories"| node_refresh
node_refresh -->|"builds entries"| node_module
node_refresh -->|"reads player rigs"| node_rig
node_gui -->|"displays overlay"| node_player
node_menu -->|"sends feedback"| node_notifications
node_plugin -->|"loads preferences"| node_settings
node_plugin -->|"initializes mod state"| node_game
node_module -->|"invokes actions"| node_movement
node_module -->|"invokes actions"| node_visuals
node_module -->|"invokes actions"| node_players
node_module -->|"invokes actions"| node_world
node_module -->|"invokes actions"| node_room
node_module -->|"invokes actions"| node_fun
node_movement -->|"reads controls"| node_input
node_players -->|"uses targeting"| node_gun
node_players -->|"resolves rigs"| node_rig
node_visuals -->|"resolves player data"| node_rig
node_rig -->|"reads player state"| node_network
node_players -->|"sends game commands"| node_network
node_patches -->|"registers patches"| node_anticheat
node_anticheat -->|"intercepts checks"| node_game
node_notifications -->|"schedules display"| node_coroutines

click node_plugin "https://github.com/menker-cs/elixir/blob/main/Plugin.cs"
click node_kill "https://github.com/menker-cs/elixir/blob/main/Plugin.cs"
click node_menu "https://github.com/menker-cs/elixir/blob/main/Menu/Menu.cs"
click node_gui "https://github.com/menker-cs/elixir/blob/main/Components/GUIHandler.cs"
click node_buttons "https://github.com/menker-cs/elixir/blob/main/Menu/Buttons.cs"
click node_category "https://github.com/menker-cs/elixir/blob/main/Menu/Categiry.cs"
click node_module "https://github.com/menker-cs/elixir/blob/main/Menu/Module.cs"
click node_refresh "https://github.com/menker-cs/elixir/blob/main/Utilities/ButtonManager.cs"
click node_settings "https://github.com/menker-cs/elixir/blob/main/Mods/Settings.cs"
click node_movement "https://github.com/menker-cs/elixir/blob/main/Mods/Movement.cs"
click node_visuals "https://github.com/menker-cs/elixir/blob/main/Mods/Visuals.cs"
click node_players "https://github.com/menker-cs/elixir/blob/main/Mods/Playerr.cs"
click node_world "https://github.com/menker-cs/elixir/blob/main/Mods/World.cs"
click node_room "https://github.com/menker-cs/elixir/blob/main/Mods/Room.cs"
click node_fun "https://github.com/menker-cs/elixir/blob/main/Mods/Fun.cs"
click node_patches "https://github.com/menker-cs/elixir/blob/main/Patches/HarmonyPatch.cs"
click node_anticheat "https://github.com/menker-cs/elixir/blob/main/Patches/AntiCheatPatches.cs"
click node_rig "https://github.com/menker-cs/elixir/blob/main/Utilities/RigManager.cs"
click node_input "https://github.com/menker-cs/elixir/blob/main/Utilities/ControllerInputLibrary.cs"
click node_gun "https://github.com/menker-cs/elixir/blob/main/Utilities/Gun.cs"
click node_notifications "https://github.com/menker-cs/elixir/blob/main/Utilities/Notifs/Library.cs"
click node_coroutines "https://github.com/menker-cs/elixir/blob/main/Components/CoroutineHandler.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_kill,node_coroutines toneBlue
class node_menu,node_gui,node_buttons,node_category,node_module,node_refresh toneAmber
class node_settings,node_movement,node_visuals,node_players,node_world,node_room,node_fun toneMint
class node_patches,node_anticheat,node_rig,node_input,node_gun,node_notifications toneRose
class node_player,node_game,node_network toneIndigo
```

## Components

### Plugin runtime

- [Plugin lifecycle](https://github.com/menker-cs/elixir/blob/main/Plugin.cs): `Plugin.cs`
- [Remote kill switch](https://github.com/menker-cs/elixir/blob/main/Plugin.cs): `Plugin.cs`
- [Coroutine runner](https://github.com/menker-cs/elixir/blob/main/Components/CoroutineHandler.cs): `Components/CoroutineHandler.cs`

### Menu interaction

- [Menu controller](https://github.com/menker-cs/elixir/blob/main/Menu/Menu.cs): `Menu/Menu.cs`
- [Console and HUD](https://github.com/menker-cs/elixir/blob/main/Components/GUIHandler.cs): `Components/GUIHandler.cs`
- [Menu button controls](https://github.com/menker-cs/elixir/blob/main/Menu/Buttons.cs): `Menu/Buttons.cs`
- [Category model](https://github.com/menker-cs/elixir/blob/main/Menu/Categiry.cs): `Menu/Categiry.cs`
- [Mod action model](https://github.com/menker-cs/elixir/blob/main/Menu/Module.cs): `Menu/Module.cs`
- [Category refresh](https://github.com/menker-cs/elixir/blob/main/Utilities/ButtonManager.cs): `Utilities/ButtonManager.cs`

### Gameplay mods

- [Settings mods](https://github.com/menker-cs/elixir/blob/main/Mods/Settings.cs): `Mods/Settings.cs`
- [Movement mods](https://github.com/menker-cs/elixir/blob/main/Mods/Movement.cs): `Mods/Movement.cs`
- [Visual mods](https://github.com/menker-cs/elixir/blob/main/Mods/Visuals.cs): `Mods/Visuals.cs`
- [Player mods](https://github.com/menker-cs/elixir/blob/main/Mods/Playerr.cs): `Mods/Playerr.cs`
- [World mods](https://github.com/menker-cs/elixir/blob/main/Mods/World.cs): `Mods/World.cs`
- [Room mods](https://github.com/menker-cs/elixir/blob/main/Mods/Room.cs): `Mods/Room.cs`
- [Fun mods](https://github.com/menker-cs/elixir/blob/main/Mods/Fun.cs): `Mods/Fun.cs`

### Game integration

- [Harmony patches](https://github.com/menker-cs/elixir/blob/main/Patches/HarmonyPatch.cs): `Patches/HarmonyPatch.cs`
- [Report and disconnect patches](https://github.com/menker-cs/elixir/blob/main/Patches/AntiCheatPatches.cs): `Patches/AntiCheatPatches.cs`
- [Rig and player lookup](https://github.com/menker-cs/elixir/blob/main/Utilities/RigManager.cs): `Utilities/RigManager.cs`
- [Controller input](https://github.com/menker-cs/elixir/blob/main/Utilities/ControllerInputLibrary.cs): `Utilities/ControllerInputLibrary.cs`
- [Targeting tools](https://github.com/menker-cs/elixir/blob/main/Utilities/Gun.cs): `Utilities/Gun.cs`
- [Notifications](https://github.com/menker-cs/elixir/blob/main/Utilities/Notifs/Library.cs): `Utilities/Notifs/Library.cs`

### Other components

- **Player**
- **Gorilla Tag**
- **Photon networking**

## Connections

- Player → Menu controller: opens and navigates
- Plugin lifecycle → Remote kill switch: checks at startup
- Plugin lifecycle → Menu controller: starts and updates
- Plugin lifecycle → Harmony patches: applies and removes
- Plugin lifecycle → Coroutine runner: starts routines
- Menu controller → Category model: renders categories
- Menu controller → Mod action model: renders and toggles
- Menu controller → Menu button controls: handles controls
- Menu controller → Category refresh: refreshes categories
- Category refresh → Mod action model: builds entries
- Category refresh → Rig and player lookup: reads player rigs
- Console and HUD → Player: displays overlay
- Menu controller → Notifications: sends feedback
- Plugin lifecycle → Settings mods: loads preferences
- Plugin lifecycle → Gorilla Tag: initializes mod state
- Mod action model → Movement mods: invokes actions
- Mod action model → Visual mods: invokes actions
- Mod action model → Player mods: invokes actions
- Mod action model → World mods: invokes actions
- Mod action model → Room mods: invokes actions
- Mod action model → Fun mods: invokes actions
- Movement mods → Controller input: reads controls
- Player mods → Targeting tools: uses targeting
- Player mods → Rig and player lookup: resolves rigs
- Visual mods → Rig and player lookup: resolves player data
- Rig and player lookup → Photon networking: reads player state
- Player mods → Photon networking: sends game commands
- Harmony patches → Report and disconnect patches: registers patches
- Report and disconnect patches → Gorilla Tag: intercepts checks
- Notifications → Coroutine runner: schedules display
