mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-15 08:51:24 +00:00
- renamed the Customizer to 'Delegate' because this works very much like a delegate in Objective-C.
- route menu sound calls through the delegate to better deal with differences between games.
This commit is contained in:
parent
603c3b50ec
commit
0968a9d97e
19 changed files with 86 additions and 50 deletions
|
@ -87,7 +87,7 @@ static void drawTextScreenBackground(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// One these screens get scriptified this should use the version in menuCustomizerBlood.
|
// One these screens get scriptified this should use the version in BloodMenuDelegate.
|
||||||
static void DrawCaption(const char* text)
|
static void DrawCaption(const char* text)
|
||||||
{
|
{
|
||||||
double scalex = 1.; // Expand the box if the text is longer
|
double scalex = 1.; // Expand the box if the text is longer
|
||||||
|
|
|
@ -1086,3 +1086,11 @@ xx(wrapwidth)
|
||||||
xx(scalefactorx)
|
xx(scalefactorx)
|
||||||
xx(scalefactory)
|
xx(scalefactory)
|
||||||
xx(scalemode)
|
xx(scalemode)
|
||||||
|
|
||||||
|
xy(menu_cursor, "menu/cursor")
|
||||||
|
xy(menu_choose, "menu/choose")
|
||||||
|
xy(menu_backup, "menu/backup")
|
||||||
|
xy(menu_clear, "menu/clear")
|
||||||
|
xy(menu_dismiss, "menu/dismiss")
|
||||||
|
xy(menu_change, "menu/change")
|
||||||
|
xy(menu_advance, "menu/advance")
|
||||||
|
|
|
@ -100,7 +100,7 @@ float BackbuttonAlpha;
|
||||||
static bool MenuEnabled = true;
|
static bool MenuEnabled = true;
|
||||||
DMenu *CurrentMenu;
|
DMenu *CurrentMenu;
|
||||||
int MenuTime;
|
int MenuTime;
|
||||||
DObject* menuCustomizer;
|
DObject* menuDelegate;
|
||||||
|
|
||||||
|
|
||||||
extern PClass *DefaultListMenuClass;
|
extern PClass *DefaultListMenuClass;
|
||||||
|
@ -192,7 +192,7 @@ void M_MarkMenus()
|
||||||
GC::Mark(pair->Value);
|
GC::Mark(pair->Value);
|
||||||
}
|
}
|
||||||
GC::Mark(CurrentMenu);
|
GC::Mark(CurrentMenu);
|
||||||
GC::Mark(menuCustomizer);
|
GC::Mark(menuDelegate);
|
||||||
}
|
}
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
@ -888,7 +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_GLOBAL(menuDelegate)
|
||||||
|
|
||||||
DEFINE_FIELD(DMenu, mParentMenu)
|
DEFINE_FIELD(DMenu, mParentMenu)
|
||||||
DEFINE_FIELD(DMenu, mMouseCapture);
|
DEFINE_FIELD(DMenu, mMouseCapture);
|
||||||
|
|
|
@ -47,7 +47,7 @@ class DMenu;
|
||||||
extern DMenu *CurrentMenu;
|
extern DMenu *CurrentMenu;
|
||||||
extern int MenuTime;
|
extern int MenuTime;
|
||||||
class DMenuItemBase;
|
class DMenuItemBase;
|
||||||
extern DObject* menuCustomizer;
|
extern DObject* menuDelegate;
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
//
|
//
|
||||||
|
|
|
@ -151,10 +151,10 @@ void DeinitMenus()
|
||||||
}
|
}
|
||||||
MenuDescriptors.Clear();
|
MenuDescriptors.Clear();
|
||||||
OptionValues.Clear();
|
OptionValues.Clear();
|
||||||
if (menuCustomizer)
|
if (menuDelegate)
|
||||||
{
|
{
|
||||||
menuCustomizer->Destroy();
|
menuDelegate->Destroy();
|
||||||
menuCustomizer = nullptr;
|
menuDelegate = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -73,8 +73,10 @@ bool FName::NameManager::Inited;
|
||||||
static const char *PredefinedNames[] =
|
static const char *PredefinedNames[] =
|
||||||
{
|
{
|
||||||
#define xx(n) #n,
|
#define xx(n) #n,
|
||||||
|
#define xy(n, s) s,
|
||||||
#include "namedef.h"
|
#include "namedef.h"
|
||||||
#undef xx
|
#undef xx
|
||||||
|
#undef xy
|
||||||
};
|
};
|
||||||
|
|
||||||
// CODE --------------------------------------------------------------------
|
// CODE --------------------------------------------------------------------
|
||||||
|
|
|
@ -40,8 +40,10 @@
|
||||||
enum ENamedName
|
enum ENamedName
|
||||||
{
|
{
|
||||||
#define xx(n) NAME_##n,
|
#define xx(n) NAME_##n,
|
||||||
|
#define xy(n, s) NAME_##n,
|
||||||
#include "namedef.h"
|
#include "namedef.h"
|
||||||
#undef xx
|
#undef xx
|
||||||
|
#undef xy
|
||||||
};
|
};
|
||||||
|
|
||||||
class FString;
|
class FString;
|
||||||
|
|
|
@ -58,18 +58,7 @@
|
||||||
#include "gamecontrol.h"
|
#include "gamecontrol.h"
|
||||||
#include "raze_sound.h"
|
#include "raze_sound.h"
|
||||||
#include "gamestruct.h"
|
#include "gamestruct.h"
|
||||||
|
#include "razemenu.h"
|
||||||
enum EMenuSounds : int
|
|
||||||
{
|
|
||||||
ActivateSound,
|
|
||||||
CursorSound,
|
|
||||||
AdvanceSound,
|
|
||||||
BackSound,
|
|
||||||
CloseSound,
|
|
||||||
PageSound,
|
|
||||||
ChangeSound,
|
|
||||||
ChooseSound
|
|
||||||
};
|
|
||||||
|
|
||||||
EXTERN_CVAR(Int, cl_gfxlocalization)
|
EXTERN_CVAR(Int, cl_gfxlocalization)
|
||||||
EXTERN_CVAR(Bool, m_quickexit)
|
EXTERN_CVAR(Bool, m_quickexit)
|
||||||
|
@ -173,17 +162,6 @@ bool M_SetSpecialMenu(FName& menu, int param)
|
||||||
//
|
//
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
|
||||||
void M_MenuSound(EMenuSounds snd)
|
|
||||||
{
|
|
||||||
if (menu_sounds) gi->MenuSound(snd);
|
|
||||||
}
|
|
||||||
|
|
||||||
//=============================================================================
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//=============================================================================
|
|
||||||
|
|
||||||
void M_StartControlPanel(bool makeSound, bool)
|
void M_StartControlPanel(bool makeSound, bool)
|
||||||
{
|
{
|
||||||
static bool created = false;
|
static bool created = false;
|
||||||
|
@ -198,7 +176,7 @@ void M_StartControlPanel(bool makeSound, bool)
|
||||||
}
|
}
|
||||||
GSnd->SetSfxPaused(true, PAUSESFX_MENU);
|
GSnd->SetSfxPaused(true, PAUSESFX_MENU);
|
||||||
gi->MenuOpened();
|
gi->MenuOpened();
|
||||||
if (makeSound) M_MenuSound(ActivateSound);
|
if (makeSound && menu_sounds) gi->MenuSound(ActivateSound);
|
||||||
M_DoStartControlPanel(false);
|
M_DoStartControlPanel(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1149,13 +1127,13 @@ void SetDefaultMenuColors()
|
||||||
OptionSettings.mFontColorHeader = CR_DARKGRAY;
|
OptionSettings.mFontColorHeader = CR_DARKGRAY;
|
||||||
OptionSettings.mFontColorHighlight = CR_WHITE;
|
OptionSettings.mFontColorHighlight = CR_WHITE;
|
||||||
OptionSettings.mFontColorSelection = CR_DARKRED;
|
OptionSettings.mFontColorSelection = CR_DARKRED;
|
||||||
cls = PClass::FindClass("MenuCustomizerBlood");
|
cls = PClass::FindClass("BloodMenuDelegate");
|
||||||
}
|
}
|
||||||
else if (g_gameType & GAMEFLAG_SW)
|
else if (g_gameType & GAMEFLAG_SW)
|
||||||
{
|
{
|
||||||
OptionSettings.mFontColorHeader = CR_DARKRED;
|
OptionSettings.mFontColorHeader = CR_DARKRED;
|
||||||
OptionSettings.mFontColorHighlight = CR_WHITE;
|
OptionSettings.mFontColorHighlight = CR_WHITE;
|
||||||
cls = PClass::FindClass("MenuCustomizerSW");
|
cls = PClass::FindClass("SWMenuDelegate");
|
||||||
}
|
}
|
||||||
else if (g_gameType & GAMEFLAG_PSEXHUMED)
|
else if (g_gameType & GAMEFLAG_PSEXHUMED)
|
||||||
{
|
{
|
||||||
|
@ -1163,7 +1141,7 @@ void SetDefaultMenuColors()
|
||||||
OptionSettings.mFontColorHighlight = CR_SAPPHIRE;
|
OptionSettings.mFontColorHighlight = CR_SAPPHIRE;
|
||||||
OptionSettings.mFontColorSelection = CR_ORANGE;
|
OptionSettings.mFontColorSelection = CR_ORANGE;
|
||||||
OptionSettings.mFontColor = CR_FIRE;
|
OptionSettings.mFontColor = CR_FIRE;
|
||||||
cls = PClass::FindClass("MenuCustomizerExhumed");
|
cls = PClass::FindClass("ExhumedMenuDelegate");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1181,9 +1159,50 @@ void SetDefaultMenuColors()
|
||||||
OptionSettings.mFontColorHighlight = CR_ORANGE;
|
OptionSettings.mFontColorHighlight = CR_ORANGE;
|
||||||
OptionSettings.mFontColorSelection = CR_TAN;
|
OptionSettings.mFontColorSelection = CR_TAN;
|
||||||
}
|
}
|
||||||
cls = PClass::FindClass("MenuCustomizerDuke");
|
cls = PClass::FindClass("DukeMenuDelegate");
|
||||||
}
|
}
|
||||||
if (!cls) cls = PClass::FindClass("MenuCustomize");
|
if (!cls) cls = PClass::FindClass("RazeMenuDelegate");
|
||||||
if (cls) menuCustomizer = cls->CreateNew();
|
if (cls) menuDelegate = cls->CreateNew();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The sound system is not yet capable of resolving this properly.
|
||||||
|
DEFINE_ACTION_FUNCTION(_RazeMenuDelegate, PlaySound)
|
||||||
|
{
|
||||||
|
PARAM_SELF_STRUCT_PROLOGUE(void);
|
||||||
|
PARAM_NAME(name);
|
||||||
|
EMenuSounds soundindex;
|
||||||
|
|
||||||
|
switch (name.GetIndex())
|
||||||
|
{
|
||||||
|
case NAME_menu_cursor:
|
||||||
|
soundindex = CursorSound;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case NAME_menu_choose:
|
||||||
|
soundindex = ChooseSound;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case NAME_menu_backup:
|
||||||
|
soundindex = BackSound;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case NAME_menu_clear:
|
||||||
|
case NAME_menu_dismiss:
|
||||||
|
soundindex = CloseSound;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case NAME_menu_change:
|
||||||
|
soundindex = ChangeSound;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case NAME_menu_advance:
|
||||||
|
soundindex = AdvanceSound;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
gi->MenuSound(soundindex);
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -176,7 +176,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;
|
native MenuDelegateBase menuDelegate;
|
||||||
native readonly int consoleplayer;
|
native readonly int consoleplayer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
//
|
//
|
||||||
//-------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
class MenuCustomizerBlood : MenuCustomize
|
class BloodMenuDelegate : RazeMenuDelegate
|
||||||
{
|
{
|
||||||
override int DrawCaption(String title, Font fnt, int y, bool drawit)
|
override int DrawCaption(String title, Font fnt, int y, bool drawit)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
class MenuCustomizerDuke : MenuCustomize
|
class DukeMenuDelegate : RazeMenuDelegate
|
||||||
{
|
{
|
||||||
override int DrawCaption(String title, Font fnt, int y, bool drawit)
|
override int DrawCaption(String title, Font fnt, int y, bool drawit)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
class MenuCustomizerExhumed : MenuCustomize
|
class ExhumedMenuDelegate : RazeMenuDelegate
|
||||||
{
|
{
|
||||||
override int DrawCaption(String title, Font fnt, int y, bool drawit)
|
override int DrawCaption(String title, Font fnt, int y, bool drawit)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
class MenuCustomizerSW : MenuCustomize
|
class SWMenuDelegate : RazeMenuDelegate
|
||||||
{
|
{
|
||||||
override int DrawCaption(String title, Font fnt, int y, bool drawit)
|
override int DrawCaption(String title, Font fnt, int y, bool drawit)
|
||||||
{
|
{
|
||||||
|
|
|
@ -39,3 +39,9 @@ struct TileFiles
|
||||||
native static TextureID GetTexture(int tile, bool animate = false);
|
native static TextureID GetTexture(int tile, bool animate = false);
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
class RazeMenuDelegate : MenuDelegateBase
|
||||||
|
{
|
||||||
|
// Todo: Fix this so that it can be done outside the games' sound modules.
|
||||||
|
native override void PlaySound(name sname);
|
||||||
|
}
|
||||||
|
|
|
@ -172,7 +172,7 @@ class ListMenu : Menu
|
||||||
case MKEY_Enter:
|
case MKEY_Enter:
|
||||||
if (mDesc.mSelectedItem >= 0 && mDesc.mItems[mDesc.mSelectedItem].Activate())
|
if (mDesc.mSelectedItem >= 0 && mDesc.mItems[mDesc.mSelectedItem].Activate())
|
||||||
{
|
{
|
||||||
MenuSound("menu/choose");
|
MenuSound("menu/advance");
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
@ -269,7 +269,7 @@ class ListMenu : Menu
|
||||||
}
|
}
|
||||||
if (mDesc.mSelectedItem >= 0 && mDesc.mSelectedItem < mDesc.mItems.Size())
|
if (mDesc.mSelectedItem >= 0 && mDesc.mSelectedItem < mDesc.mItems.Size())
|
||||||
{
|
{
|
||||||
if (!menuCustomizer.DrawSelector(mDesc))
|
if (!menuDelegate.DrawSelector(mDesc))
|
||||||
mDesc.mItems[mDesc.mSelectedItem].DrawSelector(mDesc.mSelectOfsX, mDesc.mSelectOfsY, mDesc.mSelector, mDesc);
|
mDesc.mItems[mDesc.mSelectedItem].DrawSelector(mDesc.mSelectOfsX, mDesc.mSelectOfsY, mDesc.mSelector, mDesc);
|
||||||
}
|
}
|
||||||
Super.Drawer();
|
Super.Drawer();
|
||||||
|
|
|
@ -363,7 +363,7 @@ class ListMenuItemCaptionItem : ListMenuItem
|
||||||
let font = generic_ui || !desc.mFont ? NewSmallFont : desc.mFont;
|
let font = generic_ui || !desc.mFont ? NewSmallFont : desc.mFont;
|
||||||
if (font && mText.Length() > 0)
|
if (font && mText.Length() > 0)
|
||||||
{
|
{
|
||||||
menuCustomizer.DrawCaption(mText, font, 0, true);
|
menuDelegate.DrawCaption(mText, font, 0, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -285,8 +285,7 @@ class Menu : Object native ui version("2.4")
|
||||||
|
|
||||||
static void MenuSound(Name snd)
|
static void MenuSound(Name snd)
|
||||||
{
|
{
|
||||||
// todo: Cannot use game specific IDs here - sound also may be set up too late by the games
|
menuDelegate.PlaySound(snd);
|
||||||
//S_StartSound (snd, CHAN_VOICE, CHANF_MAYBE_LOCAL|CHAN_UI, snd_menuvolume, ATTN_NONE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
deprecated("4.0") static void DrawConText (int color, int x, int y, String str)
|
deprecated("4.0") static void DrawConText (int color, int x, int y, String str)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This class allows global customization of certain menu aspects, e.g. replacing the menu caption.
|
// This class allows global customization of certain menu aspects, e.g. replacing the menu caption.
|
||||||
|
|
||||||
class MenuCustomize
|
class MenuDelegateBase
|
||||||
{
|
{
|
||||||
virtual int DrawCaption(String title, Font fnt, int y, bool drawit)
|
virtual int DrawCaption(String title, Font fnt, int y, bool drawit)
|
||||||
{
|
{
|
||||||
|
|
|
@ -433,7 +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)
|
||||||
{
|
{
|
||||||
return menuCustomizer.DrawCaption(title, font, y, drawit);
|
return menuDelegate.DrawCaption(title, font, y, drawit);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue