Someone posted today that Enigma has a scripting language in order for any sysOp's to create add-ons or mods. Even though I think this is a dumb question, I'm asking what that language is??
Anyway, how do Enigma sysOps extend or create mods for the software?
Everything you interact with on a enig system is really just a mod when
it comes down to it. If you look at a menu.hjson many of them will have
a entry like:
module: some_mod
In general this means that "menu" is backed by some_mod.js. The base
class for *most* things you'd want to do is MenuModule, so you'd do something like:
class MyMod extends MenuModule {
...
}
Also, the mrc.js is a good example because people could look there to see how a complete new functionality IS programmed in .js under Enigma.
I know the concept of async scares some people that don't have much experience in it. I'll always say: Once you go async you never go back (you'll want this concept for everything...). But with that said, you
can also still avoid it with enigma if you want to just create a mod
as a "door". By launching a separate process from enigma you don't
need to worry about anything being async and can really do whatever
you want.
Concurrency was one of the things that drew me to Go (golang). One of its principles was making concurrency part of the programming language, rather than a module that sits on top of it or binding to a callback. I've started messing around with Goroutines in a crappy little door program I'm writing and it's pretty cool. A countdown timer that triggers its own events, writes to stdout, even when a user is typing an input. Everyone gets a channel!
than callback hell. Just takes a bit to wrap your head around.
Sysop: | Eric Oulashin |
---|---|
Location: | Beaverton, Oregon, USA |
Users: | 91 |
Nodes: | 16 (0 / 16) |
Uptime: | 16:57:20 |
Calls: | 5,074 |
Calls today: | 6 |
Files: | 8,491 |
Messages: | 352,920 |
Posted today: | 1 |