mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-29 23:33:00 +00:00
- added a customization hook class for the menu.
Currently the only thing it does is abstracting the menu caption, but more can be added here. Not exposed to modding yet, though, that's for later.
This commit is contained in:
parent
35ff0a42a6
commit
a08d87beb3
8 changed files with 27 additions and 9 deletions
|
@ -100,6 +100,8 @@ float BackbuttonAlpha;
|
|||
static bool MenuEnabled = true;
|
||||
DMenu *CurrentMenu;
|
||||
int MenuTime;
|
||||
DObject* menuCustomizer;
|
||||
|
||||
|
||||
extern PClass *DefaultListMenuClass;
|
||||
extern PClass *DefaultOptionMenuClass;
|
||||
|
@ -190,7 +192,9 @@ void M_MarkMenus()
|
|||
GC::Mark(pair->Value);
|
||||
}
|
||||
GC::Mark(CurrentMenu);
|
||||
GC::Mark(menuCustomizer);
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// DMenu base class
|
||||
|
@ -884,6 +888,7 @@ DEFINE_GLOBAL(menuactive)
|
|||
DEFINE_GLOBAL(BackbuttonTime)
|
||||
DEFINE_GLOBAL(BackbuttonAlpha)
|
||||
DEFINE_GLOBAL(GameTicRate)
|
||||
DEFINE_GLOBAL(menuCustomizer)
|
||||
|
||||
DEFINE_FIELD(DMenu, mParentMenu)
|
||||
DEFINE_FIELD(DMenu, mMouseCapture);
|
||||
|
|
|
@ -47,6 +47,7 @@ class DMenu;
|
|||
extern DMenu *CurrentMenu;
|
||||
extern int MenuTime;
|
||||
class DMenuItemBase;
|
||||
extern DObject* menuCustomizer;
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
|
|
|
@ -151,6 +151,11 @@ void DeinitMenus()
|
|||
}
|
||||
MenuDescriptors.Clear();
|
||||
OptionValues.Clear();
|
||||
if (menuCustomizer)
|
||||
{
|
||||
menuCustomizer->Destroy();
|
||||
menuCustomizer = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
FTextureID GetMenuTexture(const char* const name)
|
||||
|
|
|
@ -1261,6 +1261,9 @@ void SetDefaultMenuColors()
|
|||
OptionSettings.mFontColorHeader = V_FindFontColor(gameinfo.mFontColorHeader);
|
||||
OptionSettings.mFontColorHighlight = V_FindFontColor(gameinfo.mFontColorHighlight);
|
||||
OptionSettings.mFontColorSelection = V_FindFontColor(gameinfo.mFontColorSelection);
|
||||
|
||||
auto cls = PClass::FindClass("MenuCustomize");
|
||||
menuCustomizer = cls->CreateNew();
|
||||
}
|
||||
|
||||
CCMD (menu_main)
|
||||
|
|
|
@ -257,6 +257,7 @@ version "4.5"
|
|||
#include "zscript/ui/menu/readthis.zs"
|
||||
#include "zscript/ui/menu/reverbedit.zs"
|
||||
#include "zscript/ui/menu/textentermenu.zs"
|
||||
#include "zscript/ui/menu/menucustomize.zs"
|
||||
|
||||
#include "zscript/ui/menu/search/menu.zs"
|
||||
#include "zscript/ui/menu/search/searchfield.zs"
|
||||
|
|
|
@ -50,6 +50,7 @@ struct _ native // These are the global variables, the struct is only here to av
|
|||
native readonly @MusPlayingInfo musplaying;
|
||||
native readonly bool generic_ui;
|
||||
native readonly int GameTicRate;
|
||||
native MenuCustomize menuCustomizer;
|
||||
|
||||
// sandbox state in multi-level setups:
|
||||
|
||||
|
|
10
wadsrc/static/zscript/ui/menu/menucustomize.zs
Normal file
10
wadsrc/static/zscript/ui/menu/menucustomize.zs
Normal file
|
@ -0,0 +1,10 @@
|
|||
// This class allows global customization of certain menu aspects, e.g. replacing the menu caption.
|
||||
|
||||
class MenuCustomize
|
||||
{
|
||||
virtual int DrawCaption(String title, Font fnt, int y, bool drawit)
|
||||
{
|
||||
screen.DrawText(fnt, OptionMenuSettings.mTitleColor, (screen.GetWidth() - fnt.StringWidth(title) * CleanXfac_1) / 2, 10 * CleanYfac_1, title, DTA_CleanNoMove_1, true);
|
||||
return y + fnt.GetHeight();
|
||||
}
|
||||
}
|
|
@ -433,15 +433,7 @@ class OptionMenu : Menu
|
|||
let font = generic_ui || !mDesc.mFont ? NewSmallFont : mDesc.mFont;
|
||||
if (font && mDesc.mTitle.Length() > 0)
|
||||
{
|
||||
let font = generic_ui || !mDesc.mFont ? NewSmallFont : mDesc.mFont;
|
||||
if (drawit)
|
||||
{
|
||||
let tt = Stringtable.Localize(title);
|
||||
screen.DrawText(font, OptionMenuSettings.mTitleColor,
|
||||
(screen.GetWidth() - font.StringWidth(tt) * CleanXfac_1) / 2, 10 * CleanYfac_1,
|
||||
tt, DTA_CleanNoMove_1, true);
|
||||
}
|
||||
return y + font.GetHeight();
|
||||
return menuCustomizer.DrawCaption(title, font, y, drawit);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue