mirror of
https://github.com/mleem97/gregWiki.git
synced 2026-04-11 03:29:19 +02:00
- Added new items to the sidebar for 'greg-hooks-and-events' and 'greg-hooks-registry' under the Framework and Reference categories, respectively. - Enhanced the documentation layout by including references to the greg hooks registry in various guides and topics, improving accessibility to hook-related information. - Updated descriptions in the documentation to clarify the purpose and usage of the greg hooks and their registry. This commit aims to improve the visibility and usability of the greg hooks registry within the documentation.
75 lines
3.3 KiB
Markdown
75 lines
3.3 KiB
Markdown
---
|
|
id: fmf-hook-naming
|
|
title: FMF hook and event naming
|
|
slug: /reference/fmf-hook-naming
|
|
description: Canonical naming for hooks, events, and cross-language documentation stubs.
|
|
---
|
|
|
|
# FMF hook and event naming
|
|
|
|
## Target format
|
|
|
|
All **new** public hook and event identifiers should follow:
|
|
|
|
```text
|
|
FMF.<Domain>.<EventOrHook>
|
|
```
|
|
|
|
- **`FMF`** — Fixed prefix (Greg Mod Framework / **gregFramework** hook namespace).
|
|
- **`<Domain>`** — Uppercase domain from the [approved domain list](#approved-domain-segments). Describes *where* the signal belongs in the game (player, rack, server, economy, …).
|
|
- **`<EventOrHook>`** — `PascalCase` segment(s), usually `OnSomething` for events or a verb phrase for commands.
|
|
|
|
Examples (illustrative): `FMF.RACK.CableSpinnerColorResolved`, `FMF.PLAYER.InputPoll`, `FMF.NETWORK.Cable.OnConnected`.
|
|
|
|
## Approved domain segments
|
|
|
|
Domains are **closed by default**. Add a new domain only via changelog + maintainer review.
|
|
|
|
| Domain | Scope |
|
|
|--------|--------|
|
|
| `GAMEPLAY` | Rules, scoring, simulation beats not covered elsewhere |
|
|
| `PLAYER` | Local player input, camera, UI focus |
|
|
| `EMPLOYEE` | NPC staff, hiring, schedules |
|
|
| `CUSTOMER` | Contracts, SLA, satisfaction |
|
|
| `SERVER` | In-game server racks, VMs, power |
|
|
| `RACK` | Physical rack placement, mounting |
|
|
| `NETWORK` | Cables, switches, traffic |
|
|
| `STORE` | Shop cart, checkout |
|
|
| `WORLD` | Rooms, expansion, walls |
|
|
| `UI` | HUD overlays, menus (when not `PLAYER`) |
|
|
| `SAVE` | Save/load lifecycle |
|
|
| `FRAMEWORK` | Loader, bridge, diagnostics |
|
|
|
|
## Runtime IL2CPP (MelonLoader): `greg.*`
|
|
|
|
Harmony patches in **gregFramework** emit stable **`greg.<DOMAIN>.<Action>`** strings via `GregHookName` / `GregEventDispatcher`. That surface is documented in **[greg hooks registry (IL2CPP)](/wiki/reference/greg-hooks-registry)** (`greg_hooks.json`, regeneration, overlap with hand-written `HarmonyPatches`). It is separate from the `FMF.*` / `FFM.*` documentation constants below.
|
|
|
|
## Legacy: `FFM.*` strings in code
|
|
|
|
The runtime currently maps numeric event IDs to **`FFM.*`** string constants in [`FrikaMF/HookNames.cs`](https://github.com/mleem97/gregFramework/blob/master/FrikaMF/HookNames.cs) (e.g. `FFM.Economy.Balance.OnChanged`). That is **legacy naming** (four segments after `FFM`).
|
|
|
|
**Policy**
|
|
|
|
- New documentation and greenfield APIs should use **`FMF.<Domain>.*`** as above.
|
|
- When touching `HookNames.cs`, prefer aligning new entries to **`FMF.*`**; otherwise keep **`FFM.*`** until a planned major version bump documents a rename map.
|
|
- The [generated hook catalog](./fmf-hooks-catalog.md) lists **what the code emits today** (including `FFM.*`).
|
|
|
|
## Cross-language stubs (documentation)
|
|
|
|
For each canonical hook, the wiki may add **non-normative** snippets:
|
|
|
|
| Language | Convention |
|
|
|----------|------------|
|
|
| C# | `FMF.Domain.OnSomething.Subscribe(...)` or string literal |
|
|
| Lua | `FMF.Domain.OnSomething:subscribe(...)` |
|
|
| Rust | `fmf::domain::on_something::subscribe(...)` |
|
|
| Python | `fmf.domain.on_something.subscribe(...)` |
|
|
| TypeScript | `FMF.Domain.OnSomething.subscribe(...)` |
|
|
|
|
Bindings are **not** auto-generated for all languages; stubs are for contributor clarity.
|
|
|
|
## Related
|
|
|
|
- [FMF hooks catalog](./fmf-hooks-catalog.md) (generated)
|
|
- [FMF hooks](/wiki/framework/fmf-hooks) — generated hook surface and categories
|