- everything compiles and mostly works again.

This commit is contained in:
Christoph Oelckers 2017-02-12 14:04:48 +01:00
parent ee1217c8c7
commit bb6def820f
12 changed files with 119 additions and 77 deletions

View file

@ -848,7 +848,6 @@ set( FASTMATH_PCH_SOURCES
menu/menuinput.cpp menu/menuinput.cpp
menu/messagebox.cpp menu/messagebox.cpp
menu/optionmenu.cpp menu/optionmenu.cpp
menu/playerdisplay.cpp
menu/playermenu.cpp menu/playermenu.cpp
menu/readthis.cpp menu/readthis.cpp
menu/videomenu.cpp menu/videomenu.cpp

View file

@ -1985,7 +1985,7 @@ void PDynArray::DestroyValue(void *addr) const
void PDynArray::SetDefaultValue(void *base, unsigned offset, TArray<FTypeAndOffset> *special) const void PDynArray::SetDefaultValue(void *base, unsigned offset, TArray<FTypeAndOffset> *special) const
{ {
memset((char*)base + offset, 0, sizeof(FArray)); // same as constructing an empty array. if (base != nullptr) memset((char*)base + offset, 0, sizeof(FArray)); // same as constructing an empty array.
if (special != nullptr) if (special != nullptr)
{ {
special->Push(std::make_pair(this, offset)); special->Push(std::make_pair(this, offset));
@ -3047,6 +3047,10 @@ DObject *PClass::CreateNew() const
else else
memset (mem, 0, Size); memset (mem, 0, Size);
if (ConstructNative == nullptr)
{
I_Error("Attempt to instantiate abstract class %s.", TypeName.GetChars());
}
ConstructNative (mem); ConstructNative (mem);
((DObject *)mem)->SetClass (const_cast<PClass *>(this)); ((DObject *)mem)->SetClass (const_cast<PClass *>(this));
InitializeSpecials(mem, Defaults); InitializeSpecials(mem, Defaults);
@ -3165,16 +3169,12 @@ void PClass::InitializeDefaults()
{ {
// Copy parent values from the parent defaults. // Copy parent values from the parent defaults.
assert(ParentClass != nullptr); assert(ParentClass != nullptr);
ParentClass->InitializeSpecials(Defaults, ParentClass->Defaults); if (Defaults != nullptr) ParentClass->InitializeSpecials(Defaults, ParentClass->Defaults);
for (const PField *field : Fields)
if (Defaults != nullptr)
{ {
for (const PField *field : Fields) if (!(field->Flags & VARF_Native))
{ {
if (!(field->Flags & VARF_Native)) field->Type->SetDefaultValue(Defaults, unsigned(field->Offset), &SpecialInits);
{
field->Type->SetDefaultValue(Defaults, unsigned(field->Offset), &SpecialInits);
}
} }
} }
} }

View file

@ -278,4 +278,4 @@ void DListMenu::Drawer ()
// base class for menu items // base class for menu items
// //
//============================================================================= //=============================================================================
IMPLEMENT_CLASS(DMenuItemBase, true, false) IMPLEMENT_CLASS(DMenuItemBase, false, false)

View file

@ -1130,9 +1130,6 @@ DEFINE_FIELD(DOptionMenuDescriptor, mIndent)
DEFINE_FIELD(DOptionMenuDescriptor, mPosition) DEFINE_FIELD(DOptionMenuDescriptor, mPosition)
DEFINE_FIELD(DOptionMenuDescriptor, mDontDim) DEFINE_FIELD(DOptionMenuDescriptor, mDontDim)
//DEFINE_FIELD(DMenuItemBase, mLabel)
//DEFINE_FIELD(DMenuItemBase, mCentered)
DEFINE_FIELD(DOptionMenu, CanScrollUp) DEFINE_FIELD(DOptionMenu, CanScrollUp)
DEFINE_FIELD(DOptionMenu, CanScrollDown) DEFINE_FIELD(DOptionMenu, CanScrollDown)
DEFINE_FIELD(DOptionMenu, VisBottom) DEFINE_FIELD(DOptionMenu, VisBottom)
@ -1272,7 +1269,7 @@ DMenuItemBase * CreateOptionMenuItemControl(const char *label, FName cmd, FKeyBi
DMenuItemBase * CreateListMenuItemPatch(int x, int y, int height, int hotkey, FTextureID tex, FName command, int param) DMenuItemBase * CreateListMenuItemPatch(int x, int y, int height, int hotkey, FTextureID tex, FName command, int param)
{ {
auto c = PClass::FindClass("ListMenuItemPatch"); auto c = PClass::FindClass("ListMenuItemPatchItem");
auto p = c->CreateNew(); auto p = c->CreateNew();
VMValue params[] = { p, x, y, height, tex.GetIndex(), hotkey, command.GetIndex(), param }; VMValue params[] = { p, x, y, height, tex.GetIndex(), hotkey, command.GetIndex(), param };
auto f = dyn_cast<PFunction>(c->Symbols.FindSymbol("InitDirect", false)); auto f = dyn_cast<PFunction>(c->Symbols.FindSymbol("InitDirect", false));
@ -1282,7 +1279,7 @@ DMenuItemBase * CreateListMenuItemPatch(int x, int y, int height, int hotkey, FT
DMenuItemBase * CreateListMenuItemText(int x, int y, int height, int hotkey, const char *text, FFont *font, PalEntry color1, PalEntry color2, FName command, int param) DMenuItemBase * CreateListMenuItemText(int x, int y, int height, int hotkey, const char *text, FFont *font, PalEntry color1, PalEntry color2, FName command, int param)
{ {
auto c = PClass::FindClass("ListMenuItemText"); auto c = PClass::FindClass("ListMenuItemTextItem");
auto p = c->CreateNew(); auto p = c->CreateNew();
VMValue params[] = { p, x, y, height, hotkey, text, font, int(color1.d), int(color2.d), command.GetIndex(), param }; VMValue params[] = { p, x, y, height, hotkey, text, font, int(color1.d), int(color2.d), command.GetIndex(), param };
auto f = dyn_cast<PFunction>(c->Symbols.FindSymbol("InitDirect", false)); auto f = dyn_cast<PFunction>(c->Symbols.FindSymbol("InitDirect", false));
@ -1314,7 +1311,7 @@ void DMenuItemBase::Ticker()
void DMenuItemBase::Drawer(bool selected) void DMenuItemBase::Drawer(bool selected)
{ {
IFVIRTUAL(DMenuItemBase, Ticker) IFVIRTUAL(DMenuItemBase, Drawer)
{ {
VMValue params[] = { (DObject*)this, selected }; VMValue params[] = { (DObject*)this, selected };
GlobalVMStack.Call(func, params, countof(params), nullptr, 0, nullptr); GlobalVMStack.Call(func, params, countof(params), nullptr, 0, nullptr);

View file

@ -384,12 +384,12 @@ static void ParseListMenuBody(FScanner &sc, DListMenuDescriptor *desc)
} }
auto TypeCVar = NewPointer(NewNativeStruct("CVar", nullptr)); auto TypeCVar = NewPointer(NewNativeStruct("CVar", nullptr));
for (unsigned i = 1; i < args.Size(); i++) for (unsigned i = start; i < args.Size(); i++)
{ {
sc.MustGetString(); sc.MustGetString();
if (args[i] == TypeString) if (args[i] == TypeString)
{ {
params.Push(sc.String); params.Push(FString(sc.String));
} }
else if (args[i] == TypeName) else if (args[i] == TypeName)
{ {
@ -401,7 +401,21 @@ static void ParseListMenuBody(FScanner &sc, DListMenuDescriptor *desc)
} }
else if (args[i] == TypeFont) else if (args[i] == TypeFont)
{ {
params.Push(FFont::FindFont(sc.String)); auto f = FFont::FindFont(sc.String);
if (f == nullptr)
{
sc.ScriptError("Unknown font %s", sc.String);
}
params.Push(f);
}
else if (args[i] == TypeTextureID)
{
auto f = TexMan.CheckForTexture(sc.String, FTexture::TEX_MiscPatch);
if (!f.isValid())
{
sc.ScriptError("Unknown texture %s", sc.String);
}
params.Push(f.GetIndex());
} }
else if (args[i]->IsKindOf(RUNTIME_CLASS(PInt))) else if (args[i]->IsKindOf(RUNTIME_CLASS(PInt)))
{ {
@ -459,12 +473,11 @@ static void ParseListMenuBody(FScanner &sc, DListMenuDescriptor *desc)
break; break;
} }
} }
/*
DMenuItemBase *item = (DMenuItemBase*)cls->CreateNew(); DMenuItemBase *item = (DMenuItemBase*)cls->CreateNew();
params[0] = item; params[0] = item;
GlobalVMStack.Call(func->Variants[0].Implementation, &params[0], params.Size(), nullptr, 0); GlobalVMStack.Call(func->Variants[0].Implementation, &params[0], params.Size(), nullptr, 0);
desc->mItems.Push((DMenuItemBase*)item); desc->mItems.Push((DMenuItemBase*)item);
*/
if (cls->IsDescendantOf("ListMenuItemSelectable")) if (cls->IsDescendantOf("ListMenuItemSelectable"))
{ {
desc->mYpos += desc->mLinespacing; desc->mYpos += desc->mLinespacing;
@ -477,11 +490,6 @@ static void ParseListMenuBody(FScanner &sc, DListMenuDescriptor *desc)
{ {
sc.ScriptError("Unknown keyword '%s'", sc.String); sc.ScriptError("Unknown keyword '%s'", sc.String);
} }
}
{
sc.ScriptError("Unknown keyword '%s'", sc.String);
} }
} }
for (auto &p : desc->mItems) for (auto &p : desc->mItems)
@ -664,21 +672,6 @@ static void ParseOptionSettings(FScanner &sc)
// //
//============================================================================= //=============================================================================
static EColorRange ParseOptionColor(FScanner &sc, DOptionMenuDescriptor *desc)
{
EColorRange cr = OptionSettings.mFontColor;
if (sc.CheckString(","))
{
sc.MustGetString();
cr = V_FindFontColor(sc.String);
if (cr == CR_UNTRANSLATED && !sc.Compare("untranslated") && isdigit(sc.String[0]))
{
if (strtoll(sc.String, nullptr, 0)) cr = OptionSettings.mFontColorHeader;
}
}
return cr;
}
static void ParseOptionMenuBody(FScanner &sc, DOptionMenuDescriptor *desc) static void ParseOptionMenuBody(FScanner &sc, DOptionMenuDescriptor *desc)
{ {
sc.MustGetStringName("{"); sc.MustGetStringName("{");
@ -745,7 +738,6 @@ static void ParseOptionMenuBody(FScanner &sc, DOptionMenuDescriptor *desc)
bool success = false; bool success = false;
FStringf buildname("OptionMenuItem%s", sc.String); FStringf buildname("OptionMenuItem%s", sc.String);
// Handle one special case: MapControl maps to Control with one parameter different // Handle one special case: MapControl maps to Control with one parameter different
FKeyBindings *bind = sc.Compare("MapControl") ? &AutomapBindings : &Bindings;
PClass *cls = PClass::FindClass(buildname); PClass *cls = PClass::FindClass(buildname);
if (cls != nullptr && cls->IsDescendantOf("OptionMenuItem")) if (cls != nullptr && cls->IsDescendantOf("OptionMenuItem"))
{ {
@ -757,13 +749,12 @@ static void ParseOptionMenuBody(FScanner &sc, DOptionMenuDescriptor *desc)
params.Push(0); params.Push(0);
auto TypeCVar = NewPointer(NewNativeStruct("CVar", nullptr)); auto TypeCVar = NewPointer(NewNativeStruct("CVar", nullptr));
auto TypeBind = NewPointer(NewNativeStruct("KeyBindings", nullptr));
for (unsigned i = 1; i < args.Size(); i++) for (unsigned i = 1; i < args.Size(); i++)
{ {
sc.MustGetString(); sc.MustGetString();
if (args[i] == TypeString) if (args[i] == TypeString)
{ {
params.Push(sc.String); params.Push(FString(sc.String));
} }
else if (args[i] == TypeName) else if (args[i] == TypeName)
{ {
@ -786,6 +777,8 @@ static void ParseOptionMenuBody(FScanner &sc, DOptionMenuDescriptor *desc)
// todo: check other data types that may get used. // todo: check other data types that may get used.
sc.ScriptError("Integer expected, got %s", sc.String); sc.ScriptError("Integer expected, got %s", sc.String);
} }
// Color ranges need to be marked for option menu items to support an older feature where a boolean number could be passed instead.
v |= 0x12340000;
} }
if (args[i] == TypeBool) v = !!v; if (args[i] == TypeBool) v = !!v;
params.Push(v); params.Push(v);
@ -822,12 +815,6 @@ static void ParseOptionMenuBody(FScanner &sc, DOptionMenuDescriptor *desc)
} }
else else
{ {
if (args[i + 1] == TypeBind)
{
// Bindings are not parsed, they just get tacked on.
params.Push(bind);
i++;
}
if (i < args.Size() - 1 && !(func->Variants[0].ArgFlags[i + 1] & VARF_Optional)) if (i < args.Size() - 1 && !(func->Variants[0].ArgFlags[i + 1] & VARF_Optional))
{ {
sc.ScriptError("Insufficient parameters for %s", cls->TypeName.GetChars()); sc.ScriptError("Insufficient parameters for %s", cls->TypeName.GetChars());
@ -835,12 +822,12 @@ static void ParseOptionMenuBody(FScanner &sc, DOptionMenuDescriptor *desc)
break; break;
} }
} }
/*
DMenuItemBase *item = (DMenuItemBase*)cls->CreateNew(); DMenuItemBase *item = (DMenuItemBase*)cls->CreateNew();
params[0] = item; params[0] = item;
GlobalVMStack.Call(func->Variants[0].Implementation, &params[0], params.Size(), nullptr, 0); GlobalVMStack.Call(func->Variants[0].Implementation, &params[0], params.Size(), nullptr, 0);
desc->mItems.Push((DMenuItemBase*)item); desc->mItems.Push((DMenuItemBase*)item);
*/
success = true; success = true;
} }
} }

View file

@ -55,6 +55,7 @@
#include "r_sky.h" #include "r_sky.h"
#include "v_font.h" #include "v_font.h"
#include "v_video.h" #include "v_video.h"
#include "c_bind.h"
#include "menu/menu.h" #include "menu/menu.h"
static TArray<FPropertyInfo*> properties; static TArray<FPropertyInfo*> properties;
@ -797,6 +798,12 @@ void InitThingdef()
PField *plrclsf = new PField("PlayerClasses", plrcls, VARF_Native | VARF_Static | VARF_ReadOnly, (intptr_t)&PlayerClasses); PField *plrclsf = new PField("PlayerClasses", plrcls, VARF_Native | VARF_Static | VARF_ReadOnly, (intptr_t)&PlayerClasses);
Namespaces.GlobalNamespace->Symbols.AddSymbol(plrclsf); Namespaces.GlobalNamespace->Symbols.AddSymbol(plrclsf);
auto bindcls = NewNativeStruct("KeyBindings", nullptr);
PField *binding = new PField("Bindings", bindcls, VARF_Native | VARF_Static, (intptr_t)&Bindings);
Namespaces.GlobalNamespace->Symbols.AddSymbol(binding);
binding = new PField("AutomapBindings", bindcls, VARF_Native | VARF_Static, (intptr_t)&AutomapBindings);
Namespaces.GlobalNamespace->Symbols.AddSymbol(binding);
// set up a variable for the DEH data // set up a variable for the DEH data
PStruct *dstruct = NewNativeStruct("DehInfo", nullptr); PStruct *dstruct = NewNativeStruct("DehInfo", nullptr);
PField *dehf = new PField("deh", dstruct, VARF_Native | VARF_Static, (intptr_t)&deh); PField *dehf = new PField("deh", dstruct, VARF_Native | VARF_Static, (intptr_t)&deh);

View file

@ -98,7 +98,7 @@ class ListMenuItemStaticPatch : ListMenuItem
} }
} }
class ListMenuItemStatucPatchCentered : ListMenuItemStaticPatch class ListMenuItemStaticPatchCentered : ListMenuItemStaticPatch
{ {
void Init(int x, int y, TextureID patch) void Init(int x, int y, TextureID patch)
{ {
@ -119,7 +119,16 @@ class ListMenuItemStaticText : ListMenuItem
int mColor; int mColor;
bool mCentered; bool mCentered;
void Init(int x, int y, String text, Font font, int color, bool centered = false) void Init(ListMenuDescriptor desc, int x, int y, String text, int color = Font.CR_UNTRANSLATED)
{
Super.Init(x, y);
mText = text;
mFont = desc.mFont;
mColor = color >= 0? color : desc.mFontColor;
mCentered = false;
}
void InitDirect(int x, int y, String text, Font font, int color = Font.CR_UNTRANSLATED, bool centered = false)
{ {
Super.Init(x, y); Super.Init(x, y);
mText = text; mText = text;
@ -149,11 +158,12 @@ class ListMenuItemStaticText : ListMenuItem
} }
} }
class ListMenuItemStatucTextCentered : ListMenuItemStaticText class ListMenuItemStaticTextCentered : ListMenuItemStaticText
{ {
void Init(int x, int y, String text, Font font, int color) void Init(ListMenuDescriptor desc, int x, int y, String text, int color = -1)
{ {
Super.Init(x, y, text, font, color, true); Super.Init(desc, x, y, text, color);
mCentered = true;
} }
} }
@ -237,7 +247,7 @@ class ListMenuItemTextItem : ListMenuItemSelectable
mFont = desc.mFont; mFont = desc.mFont;
mColor = desc.mFontColor; mColor = desc.mFontColor;
mColorSelected = desc.mFontcolor2; mColorSelected = desc.mFontcolor2;
mHotkey = hotkey.CharAt(0); mHotkey = hotkey.CharCodeAt(0);
} }
void InitDirect(int x, int y, int height, String hotkey, String text, Font font, int color, int color2, Name child, int param = 0) void InitDirect(int x, int y, int height, String hotkey, String text, Font font, int color, int color2, Name child, int param = 0)
@ -247,7 +257,7 @@ class ListMenuItemTextItem : ListMenuItemSelectable
mFont = font; mFont = font;
mColor = color; mColor = color;
mColorSelected = color2; mColorSelected = color2;
mHotkey = hotkey.CharAt(0); mHotkey = hotkey.CharCodeAt(0);
} }
override void Drawer(bool selected) override void Drawer(bool selected)
@ -274,14 +284,14 @@ class ListMenuItemPatchItem : ListMenuItemSelectable
void Init(ListMenuDescriptor desc, TextureID patch, String hotkey, Name child, int param = 0) void Init(ListMenuDescriptor desc, TextureID patch, String hotkey, Name child, int param = 0)
{ {
Super.Init(desc.mXpos, desc.mYpos, desc.mLinespacing, child, param); Super.Init(desc.mXpos, desc.mYpos, desc.mLinespacing, child, param);
mHotkey = hotkey.CharAt(0); mHotkey = hotkey.CharCodeAt(0);
mTexture = patch; mTexture = patch;
} }
void InitDirect(int x, int y, int height, TextureID patch, String hotkey, Name child, int param = 0) void InitDirect(int x, int y, int height, TextureID patch, String hotkey, Name child, int param = 0)
{ {
Super.Init(x, y, height, child, param); Super.Init(x, y, height, child, param);
mHotkey = hotkey.CharAt(0); mHotkey = hotkey.CharCodeAt(0);
mTexture = patch; mTexture = patch;
} }

View file

@ -33,6 +33,7 @@ class MenuItemBase : Object native
virtual bool MouseEvent(int type, int x, int y) { return false; } virtual bool MouseEvent(int type, int x, int y) { return false; }
virtual bool CheckHotkey(int c) { return false; } virtual bool CheckHotkey(int c) { return false; }
virtual int GetWidth() { return 0; } virtual int GetWidth() { return 0; }
virtual int GetIndent() { return 0; }
virtual int Draw(OptionMenuDescriptor desc, int y, int indent, bool selected) { return indent; } virtual int Draw(OptionMenuDescriptor desc, int y, int indent, bool selected) { return indent; }
void OffsetPositionY(int ydelta) { mYpos += ydelta; } void OffsetPositionY(int ydelta) { mYpos += ydelta; }
@ -41,3 +42,8 @@ class MenuItemBase : Object native
void SetX(int x) { mXpos = x; } void SetX(int x) { mXpos = x; }
} }
// this is only used to parse font color ranges in MENUDEF
enum MenudefColorRange
{
NO_COLOR = -1
}

View file

@ -32,11 +32,10 @@
** **
*/ */
class OptionMenuItem : MenuItemBase native class OptionMenuItem : MenuItemBase
{ {
String mLabel;
native String mLabel; bool mCentered;
native bool mCentered;
void Init(String label, String command, bool center = false) void Init(String label, String command, bool center = false)
{ {
@ -67,7 +66,7 @@ class OptionMenuItem : MenuItemBase native
return true; return true;
} }
virtual int GetIndent() override int GetIndent()
{ {
if (mCentered) return 0; if (mCentered) return 0;
return SmallFont.StringWidth(Stringtable.Localize(mLabel)); return SmallFont.StringWidth(Stringtable.Localize(mLabel));
@ -145,7 +144,7 @@ class OptionMenuItemSafeCommand : OptionMenuItemCommand
String mPrompt; String mPrompt;
void Init(String label, Name command, String prompt) void Init(String label, Name command, String prompt = "")
{ {
Super.Init(label, command); Super.Init(label, command);
mPrompt = prompt; mPrompt = prompt;
@ -420,7 +419,7 @@ IMPLEMENT_CLASS(DEnterKey, true, false)
// //
//============================================================================= //=============================================================================
class OptionMenuItemControl : OptionMenuItem class OptionMenuItemControlBase : OptionMenuItem
{ {
KeyBindings mBindings; KeyBindings mBindings;
int mInput; int mInput;
@ -487,6 +486,22 @@ class OptionMenuItemControl : OptionMenuItem
} }
} }
class OptionMenuItemControl : OptionMenuItemControlBase
{
void Init(String label, Name command)
{
Super.Init(label, command, Bindings);
}
}
class OptionMenuItemMapControl : OptionMenuItemControlBase
{
void Init(String label, Name command)
{
Super.Init(label, command, AutomapBindings);
}
}
//============================================================================= //=============================================================================
// //
// //
@ -497,10 +512,19 @@ class OptionMenuItemStaticText : OptionMenuItem
{ {
int mColor; int mColor;
void Init(String label, int cr = -1, bool header = false) // 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)
{ {
Super.Init(label, 'None', true); Super.Init(label, 'None', true);
mColor = cr >= 0? cr : header ? OptionMenuSettings.mFontColorHeader : OptionMenuSettings.mFontColor; mColor = OptionMenuSettings.mFontColor;
if ((cr & 0xffff0000) == 0x12340000) mColor = cr & 0xffff;
else if (cr > 0) mColor = OptionMenuSettings.mFontColorHeader;
}
void InitDirect(String label, int cr)
{
Super.Init(label, 'None', true);
mColor = cr;
} }
override int Draw(OptionMenuDescriptor desc, int y, int indent, bool selected) override int Draw(OptionMenuDescriptor desc, int y, int indent, bool selected)
@ -528,7 +552,19 @@ class OptionMenuItemStaticTextSwitchable : OptionMenuItem
String mAltText; String mAltText;
int mCurrent; int mCurrent;
void Init(String label, String label2, Name command, int cr) // 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)
{
Super.Init(label, command, true);
mAltText = label2;
mCurrent = 0;
mColor = OptionMenuSettings.mFontColor;
if ((cr & 0xffff0000) == 0x12340000) mColor = cr & 0xffff;
else if (cr > 0) mColor = OptionMenuSettings.mFontColorHeader;
}
void InitDirect(String label, String label2, Name command, int cr)
{ {
Super.Init(label, command, true); Super.Init(label, command, true);
mColor = cr; mColor = cr;

View file

@ -68,7 +68,7 @@ class ListMenuItemPlayerDisplay : ListMenuItem
// //
// //
//============================================================================= //=============================================================================
void Init(ListMenuDescriptor menu, Name command, int x, int y, Color c1, Color c2, bool np = false) void Init(ListMenuDescriptor menu, int x, int y, Color c1, Color c2, bool np = false, Name command = 'None' )
{ {
Super.Init(x, y, command); Super.Init(x, y, command);
mOwner = menu; mOwner = menu;

View file

@ -59,8 +59,8 @@ class ListMenuItemPlayerNameBox : ListMenuItemSelectable
{ {
Super.Init(desc.mXpos, desc.mYpos, desc.mLinespacing, command); Super.Init(desc.mXpos, desc.mYpos, desc.mLinespacing, command);
mText = text; mText = text;
mFont = font; mFont = desc.mFont;
mFontColor = color; mFontColor = desc.mFontColor;
mFrameSize = frameofs; mFrameSize = frameofs;
mPlayerName = ""; mPlayerName = "";
mEntering = false; mEntering = false;
@ -72,7 +72,7 @@ class ListMenuItemPlayerNameBox : ListMenuItemSelectable
// //
//============================================================================= //=============================================================================
void Init(int x, int y, int height, int frameofs, String text, Font font, int color, Name command) void InitDirect(int x, int y, int height, int frameofs, String text, Font font, int color, Name command)
{ {
Super.Init(x, y, height, command); Super.Init(x, y, height, command);
mText = text; mText = text;
@ -371,7 +371,7 @@ class ListMenuItemSlider : ListMenuItemSelectable
// //
//============================================================================= //=============================================================================
void Init(ListMenuItemDescriptor desc, String text, Name command, int min, int max, int step) void Init(ListMenuDescriptor desc, String text, Name command, int min, int max, int step)
{ {
Super.Init(desc.mXpos, desc.mYpos, desc.mLinespacing, command); Super.Init(desc.mXpos, desc.mYpos, desc.mLinespacing, command);
mText = text; mText = text;