Skip to content

DLL Modding

Nicolas Suarez edited this page Nov 3, 2022 · 22 revisions

This page is about using doorways functionality to make your own DLL mod

Categorical Overview

The doorways namespace sh.monty.doorways is separated into several sub-namespaces each with their own category of utilities. The type of functionality a class exposes will be based on which category it's in:

  • sh.monty.doorways: The root namespace, contains Doorways initialization code, Logging utilities, the Resource Loader, and the Doorways Options Tab manager.
  • sh.monty.doorways.Engine: This module contains implementations for the Doorways JSON mod engine. It will generally be of little use to DLL modders, since all this module does is call into other Doorways modules to implement their functionality for non-DLL Doorways mods.
  • sh.monty.doorways.Engine.Crucible: Bridges with Mothtools at runtime.
  • sh.monty.doorways.CoreExtensions: Allows mods to safely modify how the base game engine works.
  • sh.monty.doorways.UIExtensions: Allows mods to safely modify game UI.
  • sh.monty.doorways.Patches: Most of this module is marked internal, which means your Doorways-enabled DLL mod won't be able to use these classes. It's generally unsafe to use these anyways, since they expose mostly unchecked hooks into the base game's code. All functionality they would expose is exposed more safely by CoreExtensions or UIExtensions, and if you find a use case that they don't cover it's generally better to create a new feature request issue on this repository.
  • sh.monty.doorways.Patches.SecretHistories: Patches that specifically alter game behavior, instead of simply acting as hooks. The single exception is the CoreEvents class, which any other mod may access in order to subscribe to events which will be run at various times in the game.
Clone this wiki locally