mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-23 04:22:34 +00:00
- scripted color picker fully working.
This commit is contained in:
parent
dbf3530696
commit
f0e925c5a7
9 changed files with 186 additions and 189 deletions
|
@ -839,7 +839,6 @@ set( FASTMATH_PCH_SOURCES
|
|||
SkylineBinPack.cpp
|
||||
intermission/intermission.cpp
|
||||
intermission/intermission_parse.cpp
|
||||
menu/colorpickermenu.cpp
|
||||
menu/joystickmenu.cpp
|
||||
menu/listmenu.cpp
|
||||
menu/loadsavemenu.cpp
|
||||
|
|
|
@ -1,151 +0,0 @@
|
|||
/*
|
||||
** colorpickermenu.cpp
|
||||
** The color picker menu
|
||||
**
|
||||
**---------------------------------------------------------------------------
|
||||
** Copyright 2010 Christoph Oelckers
|
||||
** All rights reserved.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions
|
||||
** are met:
|
||||
**
|
||||
** 1. Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** 2. Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in the
|
||||
** documentation and/or other materials provided with the distribution.
|
||||
** 3. The name of the author may not be used to endorse or promote products
|
||||
** derived from this software without specific prior written permission.
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
**---------------------------------------------------------------------------
|
||||
**
|
||||
*/
|
||||
#include <float.h>
|
||||
|
||||
#include "menu/menu.h"
|
||||
#include "c_dispatch.h"
|
||||
#include "w_wad.h"
|
||||
#include "sc_man.h"
|
||||
#include "v_font.h"
|
||||
#include "g_level.h"
|
||||
#include "d_player.h"
|
||||
#include "v_video.h"
|
||||
#include "gi.h"
|
||||
#include "i_system.h"
|
||||
#include "c_bind.h"
|
||||
#include "v_palette.h"
|
||||
#include "d_event.h"
|
||||
#include "d_gui.h"
|
||||
|
||||
class DColorPickerMenu : public DOptionMenu
|
||||
{
|
||||
DECLARE_CLASS(DColorPickerMenu, DOptionMenu)
|
||||
|
||||
public:
|
||||
|
||||
float mRed;
|
||||
float mGreen;
|
||||
float mBlue;
|
||||
|
||||
int mGridPosX;
|
||||
int mGridPosY;
|
||||
|
||||
int mStartItem;
|
||||
|
||||
FColorCVar *mCVar;
|
||||
|
||||
DColorPickerMenu(DMenu *parent, const char *name, DOptionMenuDescriptor *desc, FColorCVar *cvar)
|
||||
{
|
||||
mStartItem = desc->mItems.Size();
|
||||
mRed = (float)RPART(DWORD(*cvar));
|
||||
mGreen = (float)GPART(DWORD(*cvar));
|
||||
mBlue = (float)BPART(DWORD(*cvar));
|
||||
mGridPosX = 0;
|
||||
mGridPosY = 0;
|
||||
mCVar = cvar;
|
||||
|
||||
// This menu uses some featurs that are hard to implement in an external control lump
|
||||
// so it creates its own list of menu items.
|
||||
desc->mItems.Resize(mStartItem+8);
|
||||
desc->mItems[mStartItem+0] = CreateOptionMenuItemStaticText(name, false);
|
||||
desc->mItems[mStartItem+1] = CreateOptionMenuItemStaticText(" ", false);
|
||||
desc->mItems[mStartItem+2] = CreateOptionMenuSliderVar("Red", 0, 0, 255, 15, 0);
|
||||
desc->mItems[mStartItem+3] = CreateOptionMenuSliderVar("Green", 1, 0, 255, 15, 0);
|
||||
desc->mItems[mStartItem+4] = CreateOptionMenuSliderVar("Blue", 2, 0, 255, 15, 0);
|
||||
desc->mItems[mStartItem+5] = CreateOptionMenuItemStaticText(" ", false);
|
||||
desc->mItems[mStartItem+6] = CreateOptionMenuItemCommand("Undo changes", "undocolorpic");
|
||||
desc->mItems[mStartItem+7] = CreateOptionMenuItemStaticText(" ", false);
|
||||
for (auto &p : desc->mItems)
|
||||
{
|
||||
GC::WriteBarrier(p);
|
||||
}
|
||||
desc->mSelectedItem = mStartItem + 2;
|
||||
Init(parent, desc);
|
||||
desc->mIndent = 0;
|
||||
desc->CalcIndent();
|
||||
}
|
||||
|
||||
void OnDestroy() override
|
||||
{
|
||||
if (mStartItem >= 0)
|
||||
{
|
||||
mDesc->mItems.Resize(mStartItem);
|
||||
UCVarValue val;
|
||||
val.Int = MAKERGB(int(mRed), int(mGreen), int(mBlue));
|
||||
if (mCVar != NULL) mCVar->SetGenericRep (val, CVAR_Int);
|
||||
mStartItem = -1;
|
||||
}
|
||||
}
|
||||
|
||||
void Reset()
|
||||
{
|
||||
mRed = (float)RPART(DWORD(*mCVar));
|
||||
mGreen = (float)GPART(DWORD(*mCVar));
|
||||
mBlue = (float)BPART(DWORD(*mCVar));
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
IMPLEMENT_CLASS(DColorPickerMenu, true, false)
|
||||
|
||||
CCMD(undocolorpic)
|
||||
{
|
||||
if (DMenu::CurrentMenu != NULL && DMenu::CurrentMenu->IsKindOf(RUNTIME_CLASS(DColorPickerMenu)))
|
||||
{
|
||||
static_cast<DColorPickerMenu*>(DMenu::CurrentMenu)->Reset();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DMenu *StartPickerMenu(DMenu *parent, const char *name, FColorCVar *cvar)
|
||||
{
|
||||
DMenuDescriptor **desc = MenuDescriptors.CheckKey(NAME_Colorpickermenu);
|
||||
if (desc != NULL && (*desc)->IsKindOf(RUNTIME_CLASS(DOptionMenuDescriptor)))
|
||||
{
|
||||
return new DColorPickerMenu(parent, name, (DOptionMenuDescriptor*)(*desc), cvar);
|
||||
}
|
||||
else
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DEFINE_FIELD(DColorPickerMenu, mRed);
|
||||
DEFINE_FIELD(DColorPickerMenu, mGreen);
|
||||
DEFINE_FIELD(DColorPickerMenu, mBlue);
|
||||
DEFINE_FIELD(DColorPickerMenu, mGridPosX);
|
||||
DEFINE_FIELD(DColorPickerMenu, mGridPosY);
|
||||
DEFINE_FIELD(DColorPickerMenu, mStartItem);
|
||||
DEFINE_FIELD(DColorPickerMenu, mCVar);
|
|
@ -107,6 +107,14 @@ IMPLEMENT_CLASS(DMenuDescriptor, false, false)
|
|||
IMPLEMENT_CLASS(DListMenuDescriptor, false, false)
|
||||
IMPLEMENT_CLASS(DOptionMenuDescriptor, false, false)
|
||||
|
||||
DEFINE_ACTION_FUNCTION(DMenuDescriptor, GetDescriptor)
|
||||
{
|
||||
PARAM_PROLOGUE;
|
||||
PARAM_NAME(name);
|
||||
DMenuDescriptor **desc = MenuDescriptors.CheckKey(name);
|
||||
auto retn = desc ? *desc : nullptr;
|
||||
ACTION_RETURN_POINTER(retn);
|
||||
}
|
||||
|
||||
size_t DListMenuDescriptor::PropagateMark()
|
||||
{
|
||||
|
@ -1139,6 +1147,21 @@ CCMD(reset2saved)
|
|||
}
|
||||
|
||||
|
||||
// This really should be in the script but we can't do scripted CCMDs yet.
|
||||
CCMD(undocolorpic)
|
||||
{
|
||||
if (DMenu::CurrentMenu != NULL)
|
||||
{
|
||||
IFVIRTUALPTR(DMenu::CurrentMenu, DMenu, ResetColor)
|
||||
{
|
||||
VMValue params[] = { (DObject*)DMenu::CurrentMenu };
|
||||
GlobalVMStack.Call(func, params, countof(params), nullptr, 0, nullptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//native void OptionMenuDescriptor.CalcIndent();
|
||||
//native OptionMenuItem OptionMenuDescriptor.GetItem(Name iname);
|
||||
|
|
|
@ -487,6 +487,13 @@ void DOptionMenuDescriptor::CalcIndent()
|
|||
mIndent = widest + 4;
|
||||
}
|
||||
|
||||
DEFINE_ACTION_FUNCTION(DOptionMenuDescriptor, CalcIndent)
|
||||
{
|
||||
PARAM_SELF_PROLOGUE(DOptionMenuDescriptor);
|
||||
self->CalcIndent();
|
||||
return 0;
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
//
|
||||
|
|
|
@ -589,6 +589,7 @@ void ZCCCompiler::CreateClassTypes()
|
|||
{
|
||||
Error(c->cls, "Class name %s already exists", c->NodeName().GetChars());
|
||||
}
|
||||
else DPrintf(DMSG_SPAMMY, "Created class %s with parent %s\n", c->Type()->TypeName.GetChars(), c->Type()->ParentClass->TypeName.GetChars());
|
||||
}
|
||||
catch (CRecoverableError &err)
|
||||
{
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include "zscript/menu/menu.txt"
|
||||
#include "zscript/menu/listmenuitems.txt"
|
||||
#include "zscript/menu/optionmenuitems.txt"
|
||||
#include "zscript/menu/colorpickermenu.txt"
|
||||
#include "zscript/menu/joystickmenu.txt"
|
||||
#include "zscript/menu/playerdisplay.txt"
|
||||
#include "zscript/menu/playermenu.txt"
|
||||
|
|
|
@ -43,10 +43,11 @@ class OptionMenuSliderVar : OptionMenuSliderBase
|
|||
{
|
||||
int mIndex;
|
||||
|
||||
void Init(String label, int index, double min, double max, double step, int showval)
|
||||
OptionMenuSliderVar Init(String label, int index, double min, double max, double step, int showval)
|
||||
{
|
||||
Super.Init(label, min, max, step, showval);
|
||||
mIndex = index;
|
||||
return self;
|
||||
}
|
||||
|
||||
override double GetSliderValue()
|
||||
|
@ -60,19 +61,18 @@ class OptionMenuSliderVar : OptionMenuSliderBase
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
class ColorpickerMenu : Menu native
|
||||
class ColorpickerMenu : OptionMenu
|
||||
{
|
||||
native float mRed;
|
||||
native float mGreen;
|
||||
native float mBlue;
|
||||
float mRed;
|
||||
float mGreen;
|
||||
float mBlue;
|
||||
|
||||
native int mGridPosX;
|
||||
native int mGridPosY;
|
||||
int mGridPosX;
|
||||
int mGridPosY;
|
||||
|
||||
native int mStartItem;
|
||||
int mStartItem;
|
||||
|
||||
native CVar mCVar;
|
||||
CVar mCVar;
|
||||
|
||||
double GetColor(int index)
|
||||
{
|
||||
|
@ -86,6 +86,40 @@ class ColorpickerMenu : Menu native
|
|||
else if (index == 1) mGreen = val;
|
||||
else mBlue = val;
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
//
|
||||
//
|
||||
//=============================================================================
|
||||
|
||||
void Init(Menu parent, String name, OptionMenuDescriptor desc, CVar cv)
|
||||
{
|
||||
Super.Init(parent, desc);
|
||||
|
||||
mStartItem = mDesc.mItems.Size();
|
||||
mCVar = cv;
|
||||
|
||||
ResetColor();
|
||||
mGridPosX = 0;
|
||||
mGridPosY = 0;
|
||||
|
||||
// This menu uses some features that are hard to implement in an external control lump
|
||||
// so it creates its own list of menu items.
|
||||
mDesc.mItems.Resize(mStartItem+8);
|
||||
mDesc.mItems[mStartItem+0] = new ("OptionMenuItemStaticText").Init(name, false);
|
||||
mDesc.mItems[mStartItem+1] = new ("OptionMenuItemStaticText").Init(" ", false);
|
||||
mDesc.mItems[mStartItem+2] = new ("OptionMenuSliderVar").Init("Red", 0, 0, 255, 15, 0);
|
||||
mDesc.mItems[mStartItem+3] = new ("OptionMenuSliderVar").Init("Green", 1, 0, 255, 15, 0);
|
||||
mDesc.mItems[mStartItem+4] = new ("OptionMenuSliderVar").Init("Blue", 2, 0, 255, 15, 0);
|
||||
mDesc.mItems[mStartItem+5] = new ("OptionMenuItemStaticText").Init(" ", false);
|
||||
mDesc.mItems[mStartItem+6] = new ("OptionMenuItemCommand").Init("Undo changes", "undocolorpic");
|
||||
mDesc.mItems[mStartItem+7] = new ("OptionMenuItemStaticText").Init(" ", false);
|
||||
mDesc.mSelectedItem = mStartItem + 2;
|
||||
mDesc.mIndent = 0;
|
||||
mDesc.CalcIndent();
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
//
|
||||
|
@ -297,5 +331,24 @@ class ColorpickerMenu : Menu native
|
|||
screen.DrawText (SmallFont, Font.CR_WHITE, x+(48+24-SmallFont.StringWidth("New")/2)*CleanXfac_1, y, "New", DTA_CleanNoMove_1, true);
|
||||
}
|
||||
|
||||
|
||||
override void OnDestroy()
|
||||
{
|
||||
if (mStartItem >= 0)
|
||||
{
|
||||
mDesc.mItems.Resize(mStartItem);
|
||||
if (mCVar != null) mCVar.SetInt(Color(int(mRed), int(mGreen), int(mBlue)));
|
||||
mStartItem = -1;
|
||||
}
|
||||
}
|
||||
|
||||
override void ResetColor()
|
||||
{
|
||||
if (mCVar != null)
|
||||
{
|
||||
Color clr = Color(mCVar.GetInt());
|
||||
mRed = clr.r;
|
||||
mGreen = clr.g;
|
||||
mBlue = clr.b;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -99,6 +99,7 @@ class Menu : Object native
|
|||
virtual void SetFocus(MenuItemBase fc) {}
|
||||
virtual bool CheckFocus(MenuItemBase fc) { return false; }
|
||||
virtual void ReleaseFocus() {}
|
||||
virtual void ResetColor() {}
|
||||
|
||||
native virtual bool Responder(InputEvent ev);
|
||||
native virtual bool MenuEvent (int mkey, bool fromcontroller);
|
||||
|
@ -125,6 +126,8 @@ class MenuDescriptor : Object native
|
|||
native Name mMenuName;
|
||||
native String mNetgameMessage;
|
||||
native Class<Menu> mClass;
|
||||
|
||||
native static MenuDescriptor GetDescriptor(Name n);
|
||||
}
|
||||
|
||||
class ListMenuDescriptor : MenuDescriptor native
|
||||
|
@ -185,7 +188,7 @@ class OptionMenuDescriptor : MenuDescriptor native
|
|||
native int mPosition;
|
||||
native bool mDontDim;
|
||||
|
||||
//native void CalcIndent();
|
||||
native void CalcIndent();
|
||||
//native OptionMenuItem GetItem(Name iname);
|
||||
void Reset()
|
||||
{
|
||||
|
@ -199,24 +202,64 @@ class OptionMenuDescriptor : MenuDescriptor native
|
|||
|
||||
class OptionMenu : Menu native
|
||||
{
|
||||
native OptionMenuDescriptor mDesc;
|
||||
native bool CanScrollUp;
|
||||
native bool CanScrollDown;
|
||||
native int VisBottom;
|
||||
native OptionMenuItem mFocusControl;
|
||||
native OptionMenuDescriptor mDesc;
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
//
|
||||
//
|
||||
//=============================================================================
|
||||
|
||||
void Init(Menu parent, OptionMenuDescriptor desc)
|
||||
{
|
||||
mParentMenu = parent;
|
||||
mDesc = desc;
|
||||
if (mDesc != NULL && mDesc.mSelectedItem == -1) mDesc.mSelectedItem = FirstSelectable();
|
||||
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
//
|
||||
//
|
||||
//=============================================================================
|
||||
|
||||
int FirstSelectable()
|
||||
{
|
||||
if (mDesc != NULL)
|
||||
{
|
||||
// Go down to the first selectable item
|
||||
int i = -1;
|
||||
do
|
||||
{
|
||||
i++;
|
||||
}
|
||||
while (i < mDesc.mItems.Size() && !mDesc.mItems[i].Selectable());
|
||||
if (i>=0 && i < mDesc.mItems.Size()) return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
override void SetFocus(MenuItemBase fc)
|
||||
{
|
||||
mFocusControl = OptionMenuItem(fc);
|
||||
}
|
||||
|
||||
override bool CheckFocus(MenuItemBase fc)
|
||||
{
|
||||
return mFocusControl == fc;
|
||||
}
|
||||
|
||||
override void ReleaseFocus()
|
||||
{
|
||||
mFocusControl = NULL;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ class OptionMenuItem : MenuItemBase
|
|||
String mLabel;
|
||||
bool mCentered;
|
||||
|
||||
void Init(String label, String command, bool center = false)
|
||||
protected void Init(String label, String command, bool center = false)
|
||||
{
|
||||
Super.Init(0, 0, command);
|
||||
mLabel = label;
|
||||
|
@ -92,10 +92,11 @@ class OptionMenuItem : MenuItemBase
|
|||
class OptionMenuItemSubmenu : OptionMenuItem
|
||||
{
|
||||
int mParam;
|
||||
void Init(String label, Name command, int param = 0)
|
||||
OptionMenuItemSubmenu Init(String label, Name command, int param = 0)
|
||||
{
|
||||
Super.init(label, command);
|
||||
mParam = param;
|
||||
return self;
|
||||
}
|
||||
|
||||
override int Draw(OptionMenuDescriptor desc, int y, int indent, bool selected)
|
||||
|
@ -120,9 +121,10 @@ class OptionMenuItemSubmenu : OptionMenuItem
|
|||
|
||||
class OptionMenuItemCommand : OptionMenuItemSubmenu
|
||||
{
|
||||
void Init(String label, Name command)
|
||||
OptionMenuItemCommand Init(String label, Name command)
|
||||
{
|
||||
Super.Init(label, command);
|
||||
return self;
|
||||
}
|
||||
|
||||
override bool Activate()
|
||||
|
@ -145,10 +147,11 @@ class OptionMenuItemSafeCommand : OptionMenuItemCommand
|
|||
String mPrompt;
|
||||
|
||||
|
||||
void Init(String label, Name command, String prompt = "")
|
||||
OptionMenuItemSafeCommand Init(String label, Name command, String prompt = "")
|
||||
{
|
||||
Super.Init(label, command);
|
||||
mPrompt = prompt;
|
||||
return self;
|
||||
}
|
||||
|
||||
override bool MenuEvent (int mkey, bool fromcontroller)
|
||||
|
@ -289,10 +292,11 @@ class OptionMenuItemOption : OptionMenuItemOptionBase
|
|||
{
|
||||
CVar mCVar;
|
||||
|
||||
void Init(String label, Name command, Name values, CVar graycheck = null, int center = 0)
|
||||
OptionMenuItemOption Init(String label, Name command, Name values, CVar graycheck = null, int center = 0)
|
||||
{
|
||||
Super.Init(label, command, values, graycheck, center);
|
||||
mCVar = CVar.FindCVar(mAction);
|
||||
return self;
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
|
@ -417,7 +421,7 @@ class OptionMenuItemControlBase : OptionMenuItem
|
|||
int mInput;
|
||||
bool mWaiting;
|
||||
|
||||
void Init(String label, Name command, KeyBindings bindings)
|
||||
protected void Init(String label, Name command, KeyBindings bindings)
|
||||
{
|
||||
Super.init(label, command);
|
||||
mBindings = bindings;
|
||||
|
@ -486,17 +490,19 @@ class OptionMenuItemControlBase : OptionMenuItem
|
|||
|
||||
class OptionMenuItemControl : OptionMenuItemControlBase
|
||||
{
|
||||
void Init(String label, Name command)
|
||||
OptionMenuItemControl Init(String label, Name command)
|
||||
{
|
||||
Super.Init(label, command, Bindings);
|
||||
return self;
|
||||
}
|
||||
}
|
||||
|
||||
class OptionMenuItemMapControl : OptionMenuItemControlBase
|
||||
{
|
||||
void Init(String label, Name command)
|
||||
OptionMenuItemMapControl Init(String label, Name command)
|
||||
{
|
||||
Super.Init(label, command, AutomapBindings);
|
||||
return self;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -511,18 +517,20 @@ class OptionMenuItemStaticText : OptionMenuItem
|
|||
int mColor;
|
||||
|
||||
// this function is only for use from MENUDEF, it needs to do some strange things with the color for backwards compatibility.
|
||||
void Init(String label, int cr = -1)
|
||||
OptionMenuItemStaticText Init(String label, int cr = -1)
|
||||
{
|
||||
Super.Init(label, 'None', true);
|
||||
mColor = OptionMenuSettings.mFontColor;
|
||||
if ((cr & 0xffff0000) == 0x12340000) mColor = cr & 0xffff;
|
||||
else if (cr > 0) mColor = OptionMenuSettings.mFontColorHeader;
|
||||
return self;
|
||||
}
|
||||
|
||||
void InitDirect(String label, int cr)
|
||||
OptionMenuItemStaticText InitDirect(String label, int cr)
|
||||
{
|
||||
Super.Init(label, 'None', true);
|
||||
mColor = cr;
|
||||
return self;
|
||||
}
|
||||
|
||||
override int Draw(OptionMenuDescriptor desc, int y, int indent, bool selected)
|
||||
|
@ -551,7 +559,7 @@ class OptionMenuItemStaticTextSwitchable : OptionMenuItem
|
|||
int mCurrent;
|
||||
|
||||
// this function is only for use from MENUDEF, it needs to do some strange things with the color for backwards compatibility.
|
||||
void Init(String label, String label2, Name command, int cr = -1)
|
||||
OptionMenuItemStaticTextSwitchable Init(String label, String label2, Name command, int cr = -1)
|
||||
{
|
||||
Super.Init(label, command, true);
|
||||
mAltText = label2;
|
||||
|
@ -560,14 +568,16 @@ class OptionMenuItemStaticTextSwitchable : OptionMenuItem
|
|||
mColor = OptionMenuSettings.mFontColor;
|
||||
if ((cr & 0xffff0000) == 0x12340000) mColor = cr & 0xffff;
|
||||
else if (cr > 0) mColor = OptionMenuSettings.mFontColorHeader;
|
||||
return self;
|
||||
}
|
||||
|
||||
void InitDirect(String label, String label2, Name command, int cr)
|
||||
OptionMenuItemStaticTextSwitchable InitDirect(String label, String label2, Name command, int cr)
|
||||
{
|
||||
Super.Init(label, command, true);
|
||||
mColor = cr;
|
||||
mAltText = label2;
|
||||
mCurrent = 0;
|
||||
return self;
|
||||
}
|
||||
|
||||
override int Draw(OptionMenuDescriptor desc, int y, int indent, bool selected)
|
||||
|
@ -764,10 +774,11 @@ class OptionMenuItemSlider : OptionMenuSliderBase
|
|||
{
|
||||
CVar mCVar;
|
||||
|
||||
void Init(String label, Name command, double min, double max, double step, int showval = 1)
|
||||
OptionMenuItemSlider Init(String label, Name command, double min, double max, double step, int showval = 1)
|
||||
{
|
||||
Super.Init(label, min, max, step, showval);
|
||||
mCVar =CVar.FindCVar(command);
|
||||
return self;
|
||||
}
|
||||
|
||||
override double GetSliderValue()
|
||||
|
@ -803,12 +814,13 @@ class OptionMenuItemColorPicker : OptionMenuItem
|
|||
|
||||
const CPF_RESET = 0x20001;
|
||||
|
||||
void Init(String label, Name command)
|
||||
OptionMenuItemColorPicker Init(String label, Name command)
|
||||
{
|
||||
Super.Init(label, command);
|
||||
CVar cv = CVar.FindCVar(command);
|
||||
if (cv != null && cv.GetRealType() != CVar.CVAR_Color) cv = null;
|
||||
mCVar = cv;
|
||||
return self;
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
|
@ -840,20 +852,26 @@ class OptionMenuItemColorPicker : OptionMenuItem
|
|||
if (mCVar != null)
|
||||
{
|
||||
Menu.MenuSound("menu/choose");
|
||||
/*
|
||||
Menu *picker = StartPickerMenu(Menu.CurrentMenu, mLabel, mCVar);
|
||||
if (picker != null)
|
||||
let desc = MenuDescriptor.GetDescriptor('Colorpickermenu');
|
||||
// New color pickers must inherit from the internal one to work here.
|
||||
if (desc != NULL && (desc.mClass == null || desc.mClass is "ColorPickerMenu"))
|
||||
{
|
||||
M_ActivateMenu(picker);
|
||||
return true;
|
||||
let odesc = OptionMenuDescriptor(desc);
|
||||
if (odesc != null)
|
||||
{
|
||||
let cls = desc.mClass;
|
||||
if (cls == null) cls = "ColorpickerMenu";
|
||||
let picker = ColorpickerMenu(new(cls));
|
||||
picker.Init(Menu.GetCurrentMenu(), mLabel, odesc, mCVar);
|
||||
picker.ActivateMenu();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class OptionMenuItemScreenResolution : OptionMenuItem
|
||||
{
|
||||
String mResTexts[3];
|
||||
|
@ -868,11 +886,12 @@ class OptionMenuItemScreenResolution : OptionMenuItem
|
|||
SRL_HIGHLIGHT = 0x30004,
|
||||
};
|
||||
|
||||
void Init(String command)
|
||||
OptionMenuItemScreenResolution Init(String command)
|
||||
{
|
||||
Super.Init("", command);
|
||||
mSelection = 0;
|
||||
mHighlight = -1;
|
||||
return self;
|
||||
}
|
||||
|
||||
override bool SetValue(int i, int v)
|
||||
|
@ -1064,10 +1083,11 @@ class OptionMenuFieldBase : OptionMenuItem
|
|||
|
||||
class OptionMenuItemTextField : OptionMenuFieldBase
|
||||
{
|
||||
void Init (String label, Name command, CVar graycheck = null)
|
||||
OptionMenuItemTextField Init (String label, Name command, CVar graycheck = null)
|
||||
{
|
||||
Super.Init(label, command, graycheck);
|
||||
mEntering = false;
|
||||
return self;
|
||||
}
|
||||
|
||||
override String Represent()
|
||||
|
@ -1132,12 +1152,13 @@ class OptionMenuItemTextField : OptionMenuFieldBase
|
|||
|
||||
class OptionMenuItemNumberField : OptionMenuFieldBase
|
||||
{
|
||||
void Init (String label, Name command, float minimum = 0, float maximum = 100, float step = 1, CVar graycheck = null)
|
||||
OptionMenuItemNumberField Init (String label, Name command, float minimum = 0, float maximum = 100, float step = 1, CVar graycheck = null)
|
||||
{
|
||||
Super.Init(label, command, graycheck);
|
||||
mMinimum = min(minimum, maximum);
|
||||
mMaximum = max(minimum, maximum);
|
||||
mStep = max(1, step);
|
||||
return self;
|
||||
}
|
||||
|
||||
override String Represent()
|
||||
|
|
Loading…
Reference in a new issue