Draft: Some Lua interactions with menus
It is pretty much half-baked support, at most visual. I want to tackle again the custom console variable menu later. This is more so for those wanting to overhaul visually the menus.
menuitem_t
got exposed, partially -> only as read only int status
; string patch
; string text
; int alphaKey
; not the call function.
Due to status
being also exposed, menu item flags were also exposed as constants -> at the end of the merge description.
Hooked in the M_Drawer
->
hud.add(function(v, *int* menu_id, *int* item_on, *table huditem_t* items), "menu")
While menu_id
is not actually specific, as it uses already exposed menu id constants https://wiki.srb2.org/wiki/Constants#Menu_types_(MN_*), at least it is something for orientation as exposing menu_t
definitions is not a good idea to be precise for location in the tree. items
is lua table with all menuitems_t in the current menu array. It is only active when the menu is active which should include an escape menu from ingame.
As well as menu item hud_menu
internally, which can be disabled/enabled with the "menu"
string. Making a game not draw the menu, would allow for modders to create visually their own menu.
Added MenuChange
ordinary hook, into both M_SetupNextMenu
and M_StartControlPanel
to make sure. It does nothing really in both of these functions, it merely activates.
addHook("MenuChange", function(int currentmenu, int previousmenu))
Both integers derive from the same constants that were already exposed and were partially documented on the wiki. They return nothing. Mainly created it because disabling the menu hud item in the hud hook is tic late.
flags |
---|
IT_TYPE |
IT_CALL |
IT_SPACE |
IT_ARROWS |
IT_KEYHANDLER |
IT_SUBMENU |
IT_CVAR |
IT_PAIR |
IT_MSGHANDLER |
IT_DISPLAY |
IT_NOTHING |
IT_PATCH |
IT_STRING |
IT_WHITESTRING |
IT_DYBIGSPACE |
IT_DYLITLSPACE |
IT_STRING2 |
IT_GRAYPATCH |
IT_BIGSLIDER |
IT_TRANSTEXT |
IT_TRANSTEXT2 |
IT_HEADERTEXT |
IT_QUESTIONMARKS |
IT_CENTER |
IT_CVARTYPE |
IT_CV_NORMAL |
IT_CV_SLIDER |
IT_CV_STRING |
IT_CV_NOPRINT |
IT_CV_NOMOD |
IT_CV_INVISSLIDER |
IT_CV_INTEGERSTEP |
IT_CV_FLOATSLIDER |
IT_CALLTYPE |
IT_CALL_NORMAL |
IT_CALL_NOTMODIFIED |
IT_BIGSPACE |
IT_LITLSPACE |
IT_CONTROL |
IT_CVARMAX |
IT_DISABLED |
IT_GRAYEDOUT |
IT_GRAYEDOUT2 |
IT_HEADER |
IT_SECRET |