mirror of
https://github.com/mleem97/gregWiki.git
synced 2026-04-11 03:29:19 +02:00
- Move markdown and wiki-import tree into docs/; keep app shell at repo root - Point docusaurus docs path to docs/; edit links to mleem97/gregWiki - Sync and i18n scripts use gregWiki root and ../.wiki under gregFramework - Sidebars: workspace layout from root docs ids; plugins under mods/extensions - Fix redirects, module catalog URLs, release note paths, and wiki-import category keys - Update repo inventory for split repos; Dockerfile for single-repo context Made-with: Cursor
2.8 KiB
2.8 KiB
id, title, slug, description
| id | title | slug | description |
|---|---|---|---|
| fmf-hook-naming | FMF hook and event naming | /reference/fmf-hook-naming | 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:
FMF.<Domain>.<EventOrHook>
FMF— Fixed prefix (Frika Mod Framework).<Domain>— Uppercase domain from the approved domain list. Describes where the signal belongs in the game (player, rack, server, economy, …).<EventOrHook>—PascalCasesegment(s), usuallyOnSomethingfor 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 |
Legacy: FFM.* strings in code
The runtime currently maps numeric event IDs to FFM.* string constants in 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 toFMF.*; otherwise keepFFM.*until a planned major version bump documents a rename map. - The generated hook catalog 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 (generated)
- Legacy wiki: HOOK-NAMING-CONVENTION (extended examples)