Files
gregWiki/docs/contributors/repo-inventory.md
Marvin e3d5f22aec docs: update repo-inventory documentation for accuracy and clarity
- Revised plugin naming conventions in the repo-inventory.md to reflect the transition from `FFM.Plugin.*` to `greg.Plugin.*`.
- Enhanced descriptions of event sources and registry details, including updates to the native pipeline and legacy spellings.
- Improved overall structure and clarity of the documentation to facilitate better understanding of the repository layout and components.

This commit aims to ensure the documentation accurately represents the current state of the project and improves usability for contributors.
2026-04-10 04:34:55 +02:00

6.8 KiB
Raw Permalink Blame History

id, title, sidebar_label, description
id title sidebar_label description
repo-inventory Repository inventory Repo inventory Current monorepo layout, projects, and known solution drift (contributors).

Repository inventory

This page is the source of truth snapshot for how the gregFramework workspace (split repositories on disk) is organized today. Use it before large refactors or when onboarding.

Top-level workspace (gregFramework/)

These folders typically sit next to each other in a developer workspace (see also intro):

Area Path (on disk) Role
Framework core gregCore/ Runtime, hooks, Harmony, bridge — build gregCore/FrikaMF.sln; main project gregCore/framework/FrikaMF.csproj; templates under gregCore/Templates/
Mods (split repos) gregMod.<Name>/ (directly under gregFramework/) Standalone gameplay mods (FMF.* assemblies); not nested under a gregMods/ umbrella
Extensions / framework plugins (split repos) gregExt.<Name>/ (directly under gregFramework/) FFM framework plugins (FFM.Plugin.*); not under legacy StandaloneMods/ paths
Documentation gregWiki/ (mleem97/gregWiki) This site: Docusaurus app at repo root, all authored pages under docs/
Workshop / Modmanager gregModmanager/ Gregtools Modmanager (MAUI; WorkshopUploader.csprojWorkshopUploader.exe)
Exporter & templates gregDataCenterExporter/ DC exporter, FrikaModFramework/ assets, shared templates
Mod store (optional clone) gregStore/ Web/modstore stack when the private repo is present
IPAM / DHCP tooling gregIPAM/ e.g. DHCPSwitches.csproj
References gregReferences/ IL2CPP unpack, baseline refs
Meta / internal gregMeta/, gregInternalDocs/ Notes and non-public docs
Examples exGregFramework/ Sample workspace layout
Other siblingRepos/, … Helper scripts and side repos

Canonical code locations (split repos)

Concern Where to look
Framework .csproj gregCore/framework/FrikaMF.csproj (see gregCore/FrikaMF.sln; a root gregCore/FrikaMF.csproj may exist for alternate layouts)
Plugins (FFM.Plugin.*) — authoring gregExt.<Name>/ (e.g. gregExt.AssetExporter/)
Plugins — optional mirrors gregCore/plugins/greg.Plugin.* (und ältere FFM.Plugin.*-Spiegel je nach Branch)
Mod sources (FMF.*) gregMod.<Name>/
Templates gregCore/Templates/
Wiki content gregWiki/docs/

Wiki import (legacy)

Documentation is maintained in this repository under docs/; historical GitHub Wiki content has been retired in favor of curated guides and reference pages.

.NET projects on disk (*.csproj)

  • Framework: gregCore/framework/FrikaMF.csproj via gregCore/FrikaMF.sln.
  • Plugins: primary checkouts gregExt.<Name>/ (assembly FFM.Plugin.*.dll); duplicates under gregCore/plugins/ for all-in-one builds.
  • Mods: gregMod.<Name>/ at workspace root (FMF.*.csproj names vary).
  • GregModManager: gregModmanager/WorkshopUploader.csproj (separate from the MelonLoader framework solution).

Build status (framework project)

  • gregCore/framework/FrikaMF.csproj does not compile the WorkshopManager app; that builds from gregModmanager/WorkshopUploader.csproj.
  • dotnet build on the framework solution (when present under gregCore/) builds core + optional gregCore/plugins/*not split-repo gregExt.* / gregMod.* folders unless you add them to the solution.

FrikaMF.sln drift (action items)

  1. Mods outside solution: Standalone mod projects under gregMod.* are usually not in FrikaMF.sln; build them per repo or add them if you want one dotnet build for everything.

  2. Templates vs framework visibility: Template projects under gregCore/Templates/ may fail dotnet build with CS0122 if internal API visibility does not match template expectations — treat templates as samples until the project graph is aligned.

Documentation (Docusaurus)

Hook / event sources of truth (code)

Debugging (MelonLoader, IL2CPP, Unity)

  • Build first: dotnet build gregCore/FrikaMF.sln -c Debug (requires MelonLoader + IL2CPP interop under MelonLoader/ for your game install, or lib/references/MelonLoader — see tools/refresh_refs.py).
  • Attach: Run Data Center with MelonLoader, then attach your IDEs .NET / CoreCLR debugger to the game process (process name usually matches the game executable). Breakpoints hit in Debug builds of mods/plugins copied into Mods/.
  • FFM.Plugin.AssetExporter: The project links framework/Main.cs (and related files) and references FrikaMF.csproj, which would normally produce CS0436 duplicate-type warnings. Those are suppressed in the plugin .csproj (NoWarn); do not remove the project reference without linking the rest of the FrikaMF sources.