mirror of
https://github.com/ZDoom/gzdoom.git
synced 2025-02-27 22:31:02 +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;
|
static bool MenuEnabled = true;
|
||||||
DMenu *CurrentMenu;
|
DMenu *CurrentMenu;
|
||||||
int MenuTime;
|
int MenuTime;
|
||||||
|
DObject* menuCustomizer;
|
||||||
|
|
||||||
|
|
||||||
extern PClass *DefaultListMenuClass;
|
extern PClass *DefaultListMenuClass;
|
||||||
extern PClass *DefaultOptionMenuClass;
|
extern PClass *DefaultOptionMenuClass;
|
||||||
|
@ -190,7 +192,9 @@ void M_MarkMenus()
|
||||||
GC::Mark(pair->Value);
|
GC::Mark(pair->Value);
|
||||||
}
|
}
|
||||||
GC::Mark(CurrentMenu);
|
GC::Mark(CurrentMenu);
|
||||||
|
GC::Mark(menuCustomizer);
|
||||||
}
|
}
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
//
|
//
|
||||||
// DMenu base class
|
// DMenu base class
|
||||||
|
@ -884,6 +888,7 @@ DEFINE_GLOBAL(menuactive)
|
||||||
DEFINE_GLOBAL(BackbuttonTime)
|
DEFINE_GLOBAL(BackbuttonTime)
|
||||||
DEFINE_GLOBAL(BackbuttonAlpha)
|
DEFINE_GLOBAL(BackbuttonAlpha)
|
||||||
DEFINE_GLOBAL(GameTicRate)
|
DEFINE_GLOBAL(GameTicRate)
|
||||||
|
DEFINE_GLOBAL(menuCustomizer)
|
||||||
|
|
||||||
DEFINE_FIELD(DMenu, mParentMenu)
|
DEFINE_FIELD(DMenu, mParentMenu)
|
||||||
DEFINE_FIELD(DMenu, mMouseCapture);
|
DEFINE_FIELD(DMenu, mMouseCapture);
|
||||||
|
|
|
@ -47,6 +47,7 @@ class DMenu;
|
||||||
extern DMenu *CurrentMenu;
|
extern DMenu *CurrentMenu;
|
||||||
extern int MenuTime;
|
extern int MenuTime;
|
||||||
class DMenuItemBase;
|
class DMenuItemBase;
|
||||||
|
extern DObject* menuCustomizer;
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
//
|
//
|
||||||
|
|
|
@ -151,6 +151,11 @@ void DeinitMenus()
|
||||||
}
|
}
|
||||||
MenuDescriptors.Clear();
|
MenuDescriptors.Clear();
|
||||||
OptionValues.Clear();
|
OptionValues.Clear();
|
||||||
|
if (menuCustomizer)
|
||||||
|
{
|
||||||
|
menuCustomizer->Destroy();
|
||||||
|
menuCustomizer = nullptr;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FTextureID GetMenuTexture(const char* const name)
|
FTextureID GetMenuTexture(const char* const name)
|
||||||
|
|
|
@ -1261,6 +1261,9 @@ void SetDefaultMenuColors()
|
||||||
OptionSettings.mFontColorHeader = V_FindFontColor(gameinfo.mFontColorHeader);
|
OptionSettings.mFontColorHeader = V_FindFontColor(gameinfo.mFontColorHeader);
|
||||||
OptionSettings.mFontColorHighlight = V_FindFontColor(gameinfo.mFontColorHighlight);
|
OptionSettings.mFontColorHighlight = V_FindFontColor(gameinfo.mFontColorHighlight);
|
||||||
OptionSettings.mFontColorSelection = V_FindFontColor(gameinfo.mFontColorSelection);
|
OptionSettings.mFontColorSelection = V_FindFontColor(gameinfo.mFontColorSelection);
|
||||||
|
|
||||||
|
auto cls = PClass::FindClass("MenuCustomize");
|
||||||
|
menuCustomizer = cls->CreateNew();
|
||||||
}
|
}
|
||||||
|
|
||||||
CCMD (menu_main)
|
CCMD (menu_main)
|
||||||
|
|
|
@ -257,6 +257,7 @@ version "4.5"
|
||||||
#include "zscript/ui/menu/readthis.zs"
|
#include "zscript/ui/menu/readthis.zs"
|
||||||
#include "zscript/ui/menu/reverbedit.zs"
|
#include "zscript/ui/menu/reverbedit.zs"
|
||||||
#include "zscript/ui/menu/textentermenu.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/menu.zs"
|
||||||
#include "zscript/ui/menu/search/searchfield.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 @MusPlayingInfo musplaying;
|
||||||
native readonly bool generic_ui;
|
native readonly bool generic_ui;
|
||||||
native readonly int GameTicRate;
|
native readonly int GameTicRate;
|
||||||
|
native MenuCustomize menuCustomizer;
|
||||||
|
|
||||||
// sandbox state in multi-level setups:
|
// 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;
|
let font = generic_ui || !mDesc.mFont ? NewSmallFont : mDesc.mFont;
|
||||||
if (font && mDesc.mTitle.Length() > 0)
|
if (font && mDesc.mTitle.Length() > 0)
|
||||||
{
|
{
|
||||||
let font = generic_ui || !mDesc.mFont ? NewSmallFont : mDesc.mFont;
|
return menuCustomizer.DrawCaption(title, font, y, drawit);
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue