I’m doing a retake on Emily Short’s venerable Menus extension. My rewrite is pretty much a total overhaul which is going to be a new extension I hope people will want to use. I’ll tell you about it and then see if you have any comments.
Its overriding principle is - no more moving a cursor up and down to choose things. Every choice on the screen should be chooseable in 1 keypress. I had the beginnings of this system in Six’s help menu.
The default choices are labelled 1-9 (EDIT: and 0) then QWERTYUIOP (first row of letters). This is because I hate extra keypresses, and it’s also friendlier to anyone trying to do it by voice, sparing you from saying things like ‘up arrow, up arrow, up arrow, up arrow, up arrow, up arrow, enter, (GAAAAASP!)’. That means there are 20 choices by default, which I think is a lot. I haven’t seen a game with that many on one screen. If you want more, you’re also allowed to configure more letter keys to be more topics, though some are reserved for the control keys. F is always Forward, for instance, B is back, etc.
It introduces a pages concept. At boot time, all pages of text in your menus are number from 1-n, like pages of a book. You just have to decide where the divisions are as you build the menus. It’s easy to insert, move and remove entries later because you don’t have to number anything. Pages within topics are also numbered locally, so if you open a chapter in-game, you can see how many pages are in it. You can also see how many pages are in the whole volume at the start, if you want.
The menu structure mimics i7’s. Volume is the top menu, then there can be books, parts, chapters, sections. This means unlike Emily’s extension, you can’t have infinite levels - you can have 5. Though I’d suggest if you nest more than 5 levels in help menus, you might be going the wrong way.
There’s a breadcrumb trail showing your position in the system. You can also jump to the top menu level in one move at anytime, which was not possible with the old extension. But here you can switch to global mode on the fly, in which you can just move forward and back through the globally numbered pages without seeing any menus, like reading a kindle or something, if you want. Also you can switch back from global mode at any time and your position within the menu hierarchy will be reconstructed.
Contextually sensitive instructions appear in the status window depending on where you are.
This is about 90% programmed. I would make it z8 friendly except z8 seems to throw VMPrintBuffer errors really easily on even moderately long text strings appearing in the status line, and I can’t afford that (and depending on what people put in the menu system and their config choices, I can’t control it, either) so I expect to make this extension glulx only.
Something I haven’t done but am starting to consider is recreating the ‘one hint at a time’ mode from the old menus extension. It’s hard for me to do this because it’s my least favourite way of reading hints in the world and I just wish everyone would stop doing it, waaaah! That said, I understand this system may have a decade of useage and people might not want to see it disappear. Atm you can reproduce it in my system by putting hints on consecutive pages, but to reproduce the effect of listing them cumulatively, you would manually have to put the accumulated hints on each page (EG page 3 would contain the text of hints 1, 2 and 3. Obviously this is also wasteful in reproducing text.) Maybe I could add a flag that will print the preceding page’s content as well, hm…
Anyway, any thoughts about stuff that bugs you in theory about this extension, or that you think is awesome, or about VMPrintBuffer errors and z8 compatibility?
EDIT: Also, to try to help with namespace clashes, all the extensions new actions and variables have a prefix, like mc_ (for menu content). I might try to keep any variables that were also in Emily’s extension named the same as they were there for compatibility reasons.