Skip to content

Commit

Permalink
Update MenuModule docs slightly
Browse files Browse the repository at this point in the history
  • Loading branch information
NuSkooler committed Aug 7, 2022
1 parent d13d90e commit 2cae154
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 4 deletions.
2 changes: 1 addition & 1 deletion core/scanner_tossers/ftn_bso.js
Original file line number Diff line number Diff line change
Expand Up @@ -2775,7 +2775,7 @@ FTNMessageScanTossModule.prototype.startup = function (cb) {
delete: '-',
exists: '=',
}[e] || '';
return `Import/toss due to @watch (${indicator}): ${paths.basename(
return `Import/toss due to @watch [${indicator}]: ${paths.basename(
path
)}`;
};
Expand Down
39 changes: 36 additions & 3 deletions docs/_docs/modding/menu-modules.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,45 @@ layout: page
title: Menu Modules
---
## Menu Modules
Menu entries found within `menu.hjson` are backed by *menu modules*.
All menu entries found within `menu.hjson` are backed by *menu modules*. Menus are any screen or sectionin within the system. A main menu, a door launcher, and MRC chat are all examples of menus. For basic menus, a standard handler is implemented requiring no code. However, if you would like to create a menu that has custom handling, simply inherit from `MenuModule`. More on this below.

> :information_source: Remember that ENiGMA does not impose any stucture to your system! The "flow" of all `menu.hjson` entries is up to you!
## Creating a New Module
TODO
At the highest level, to create a new custom menu or mod, inherit from `MenuModule` and expose it via the `getModule` exported method:

```javascript
// my_fancy_module.js
exports.getModule = class MyFancyModule extends MenuModule {
constructor(options) {
super(options);
}
};
```

## Lifecycle
Below is a very high level diagram showing the basic lifecycle of a menu.

### Lifecycle
![Basic Menu Lifecycle](../../assets/images/basic_menu_lifecycle.png)

Methods indicated above with `()` in their name such as `enter()` are overridable when inheriting form `MenuModule`.

## MenuModule Helper Methods
Many helper methods exist and are available to code inheriting from `MenuModule`. Below are some examples. Poke around at [menu_module.js](../../../core/menu_module.js) to discover more!

* `displayAsset()`
* `prepViewController()`
* `prepViewControllerWithArt()`
* `promptForInput()`
* `displayArtAndPrepViewController()`
* `setViewText()`
* `getView()`
* `updateCustomViewTextsWithFilter()`
* `refreshPredefinedMciViewsByCode()`
* `validateMCIByViewIds()`
* `validateConfigFields()`
* `getDateFormat()`
* `getTimeFormat()`
* `getDateTimeFormat()`

> :information_source: Search the code for the above methods to see how they are used in the base system!

0 comments on commit 2cae154

Please sign in to comment.