raze/wadsrc/static/zscript/engine/ui/menu/reverbedit.zs
2020-10-31 13:20:54 +01:00

258 lines
5.8 KiB
Text

class ReverbEdit : OptionMenu
{
static native double GetValue(int index);
static native double SetValue(int index, double value);
static native bool GrayCheck();
static native string, int GetSelectedEnvironment();
static native void FillSelectMenu(String ccmd, OptionMenuDescriptor desc);
static native void FillSaveMenu(OptionMenuDescriptor desc);
static native int GetSaveSelection(int num);
static native void ToggleSaveSelection(int num);
override void Init(Menu parent, OptionMenuDescriptor desc)
{
super.Init(parent, desc);
OnReturn();
}
override void OnReturn()
{
string env;
int id;
[env, id] = GetSelectedEnvironment();
let li = GetItem('EvironmentName');
if (li != NULL)
{
if (id != -1)
{
li.SetValue(0, 1);
li.SetString(0, env);
}
else
{
li.SetValue(0, 0);
}
}
li = GetItem('EvironmentID');
if (li != NULL)
{
if (id != -1)
{
li.SetValue(0, 1);
li.SetString(0, String.Format("%d, %d", (id >> 8) & 255, id & 255));
}
else
{
li.SetValue(0, 0);
}
}
}
}
class ReverbSelect : OptionMenu
{
//=============================================================================
//
//
//
//=============================================================================
override void Init(Menu parent, OptionMenuDescriptor desc)
{
ReverbEdit.FillSelectMenu("selectenvironment", desc);
super.Init(parent, desc);
}
}
class ReverbSave : OptionMenu
{
//=============================================================================
//
//
//
//=============================================================================
override void Init(Menu parent, OptionMenuDescriptor desc)
{
ReverbEdit.FillSaveMenu(desc);
super.Init(parent, desc);
}
}
//=============================================================================
//
// Change a CVAR, command is the CVAR name
//
//=============================================================================
class OptionMenuItemReverbSaveSelect : OptionMenuItemOptionBase
{
int mValIndex;
OptionMenuItemReverbSaveSelect Init(String label, int index, Name values)
{
Super.Init(label, 'None', values, null, 0);
mValIndex = index;
return self;
}
//=============================================================================
override int GetSelection()
{
return ReverbEdit.GetSaveSelection(mValIndex);
}
override void SetSelection(int Selection)
{
ReverbEdit.ToggleSaveSelection(mValIndex);
}
}
//=============================================================================
//
// opens a submenu, command is a submenu name
//
//=============================================================================
class OptionMenuItemReverbSelect : OptionMenuItemSubMenu
{
OptionMenuItemReverbSelect Init(String label, Name command)
{
Super.init(label, command, 0, false);
return self;
}
override int Draw(OptionMenuDescriptor desc, int y, int indent, bool selected)
{
int x = drawLabel(indent, y, selected? OptionMenuSettings.mFontColorSelection : OptionMenuSettings.mFontColor);
String text = ReverbEdit.GetSelectedEnvironment();
drawValue(indent, y, OptionMenuSettings.mFontColorValue, text);
return indent;
}
}
//=============================================================================
//
//
//
//=============================================================================
class OptionMenuItemReverbOption : OptionMenuItemOptionBase
{
int mValIndex;
OptionMenuItemReverbOption Init(String label, int valindex, Name values)
{
Super.Init(label, "", values, null, false);
mValIndex = valindex;
return self;
}
override bool isGrayed()
{
return ReverbEdit.GrayCheck();
}
override int GetSelection()
{
return int(ReverbEdit.GetValue(mValIndex));
}
override void SetSelection(int Selection)
{
ReverbEdit.SetValue(mValIndex, Selection);
}
}
//=============================================================================
//
//
//
//=============================================================================
class OptionMenuItemSliderReverbEditOption : OptionMenuSliderBase
{
int mValIndex;
String mEditValue;
TextEnterMenu mEnter;
OptionMenuItemSliderReverbEditOption Init(String label, double min, double max, double step, int showval, int valindex)
{
Super.Init(label, min, max, step, showval);
mValIndex = valindex;
mEnter = null;
return self;
}
override double GetSliderValue()
{
return ReverbEdit.GetValue(mValIndex);
}
override void SetSliderValue(double val)
{
ReverbEdit.SetValue(mValIndex, val);
}
override bool Selectable()
{
return !ReverbEdit.GrayCheck();
}
virtual String Represent()
{
return mEnter.GetText() .. Menu.OptionFont().GetCursor();
}
//=============================================================================
override int Draw(OptionMenuDescriptor desc, int y, int indent, bool selected)
{
drawLabel(indent, y, selected ? OptionMenuSettings.mFontColorSelection : OptionMenuSettings.mFontColor, ReverbEdit.GrayCheck());
mDrawX = indent + CursorSpace();
if (mEnter)
{
drawText(mDrawX, y, OptionMenuSettings.mFontColorValue, Represent());
}
else
{
DrawSlider (mDrawX, y, mMin, mMax, GetSliderValue(), mShowValue, indent);
}
return indent;
}
override bool MenuEvent (int mkey, bool fromcontroller)
{
if (mkey == Menu.MKEY_Enter)
{
Menu.MenuSound("menu/choose");
mEnter = TextEnterMenu.OpenTextEnter(Menu.GetCurrentMenu(), Menu.OptionFont(), String.Format("%.3f", GetSliderValue()), -1, fromcontroller);
mEnter.ActivateMenu();
return true;
}
else if (mkey == Menu.MKEY_Input)
{
String val = mEnter.GetText();
SetSliderValue(val.toDouble());
mEnter = null;
return true;
}
else if (mkey == Menu.MKEY_Abort)
{
mEnter = null;
return true;
}
return Super.MenuEvent(mkey, fromcontroller);
}
}