Files
gregWiki/docs/contributors/repo-inventory.md
Marvin fcac837bd9 docs: update references from FrikaMF to gregCore throughout documentation
Revised multiple documentation files to replace instances of "FrikaMF" with "gregCore," reflecting the updated naming conventions and project structure. This change enhances consistency and clarity across the documentation, ensuring that users and contributors have accurate information regarding the framework and its components.
2026-04-10 18:28:55 +02:00

8.0 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/gregCore.sln; main project gregCore/framework/gregCore.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/gregCore.csproj (solution: gregCore/gregCore.sln)
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/gregCore.csproj via gregCore/gregCore.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/gregCore.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.

gregCore.sln drift (action items)

  1. Mods outside solution: Standalone mod projects under gregMod.* are usually not in gregCore.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)

Language bridges (code)

  • Bridge host: gregCore/framework/ModLoader/LanguageBridges/GregLanguageBridgeHost.cs — creates and orchestrates all bridges.
  • Lua VM: gregCore/framework/ModLoader/LanguageBridges/LuaLanguageBridge.cs — MoonSharp integration, script discovery, lifecycle dispatch (on_update, on_scene, on_gui).
  • Lua API modules: gregCore/framework/ModLoader/LanguageBridges/LuaModules/
    • GregHooksLuaModule.csgreg.on(), greg.hook.before/after() (connects to GregEventDispatcher and HookBinder)
    • GregUnityLuaModule.csgreg.unity.* (handle-based Unity object manipulation, TMPro, TextMesh, physics, materials, transforms)
    • GregIoLuaModule.csgreg.io.* (file read/write, directory listing)
    • GregInputLuaModule.csgreg.input.* (keyboard via InputSystem)
    • LuaObjectHandleRegistry.cs — thread-safe int→object handle registry for Il2Cpp objects
  • Module interface: gregCore/framework/ModLoader/LanguageBridges/IGregLuaModule.cs
  • Rust adapter: gregCore/framework/ModLoader/LanguageBridges/RustLanguageBridgeAdapter.cs (delegates to FFIBridge)
  • FFI bridge: gregCore/framework/ModLoader/FfiBridge.cs — native DLL loading, C ABI lifecycle

Hook / event sources of truth (code)

Debugging (MelonLoader, IL2CPP, Unity)

  • Build first: dotnet build gregCore/gregCore.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 gregCore.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 gregCore sources.