C client: make MenuInputValidator smaller by using a VTABLE

This commit is contained in:
UnknownShadow200 2018-08-31 23:29:31 +10:00
parent 1ddd9419e2
commit 5b36da921c
5 changed files with 97 additions and 92 deletions

View File

@ -14,7 +14,7 @@ typedef signed __int8 Int8;
typedef signed __int16 Int16; typedef signed __int16 Int16;
typedef signed __int32 Int32; typedef signed __int32 Int32;
typedef signed __int64 Int64; typedef signed __int64 Int64;
#define FUNC_ATTRIB(args) __declspec(args) #define FUNC_NOINLINE __declspec(noinline)
#elif __GNUC__ #elif __GNUC__
#include <stdint.h> #include <stdint.h>
typedef uint8_t UInt8; typedef uint8_t UInt8;
@ -26,7 +26,7 @@ typedef int8_t Int8;
typedef int16_t Int16; typedef int16_t Int16;
typedef int32_t Int32; typedef int32_t Int32;
typedef int64_t Int64; typedef int64_t Int64;
#define FUNC_ATTRIB(args) __attribute__((args)) #define FUNC_NOINLINE __attribute__((noinline))
#else #else
#error "I don't recognise this compiler. You'll need to add required definitions in Core.h!" #error "I don't recognise this compiler. You'll need to add required definitions in Core.h!"
#endif #endif

View File

@ -993,7 +993,8 @@ Int32 GenLevelScreen_GetInt(struct GenLevelScreen* s, Int32 index) {
struct MenuInputWidget* input = &s->Inputs[index]; struct MenuInputWidget* input = &s->Inputs[index];
String text = input->Base.Text; String text = input->Base.Text;
if (!input->Validator.IsValidValue(&input->Validator, &text)) return 0; struct MenuInputValidator* v = &input->Validator;
if (!v->VTABLE->IsValidValue(v, &text)) return 0;
Int32 value; Convert_TryParseInt32(&text, &value); return value; Int32 value; Convert_TryParseInt32(&text, &value); return value;
} }
@ -1006,7 +1007,8 @@ Int32 GenLevelScreen_GetSeedInt(struct GenLevelScreen* s, Int32 index) {
return Random_Next(&rnd, Int32_MaxValue); return Random_Next(&rnd, Int32_MaxValue);
} }
if (!input->Validator.IsValidValue(&input->Validator, &text)) return 0; struct MenuInputValidator* v = &input->Validator;
if (!v->VTABLE->IsValidValue(v, &text)) return 0;
Int32 value; Convert_TryParseInt32(&text, &value); return value; Int32 value; Convert_TryParseInt32(&text, &value); return value;
} }
@ -1961,9 +1963,9 @@ static void MenuOptionsScreen_FreeInput(struct MenuOptionsScreen* s) {
static void MenuOptionsScreen_EnterInput(struct MenuOptionsScreen* s) { static void MenuOptionsScreen_EnterInput(struct MenuOptionsScreen* s) {
String text = s->Input.Base.Text; String text = s->Input.Base.Text;
struct MenuInputValidator* validator = &s->Input.Validator; struct MenuInputValidator* v = &s->Input.Validator;
if (validator->IsValidValue(validator, &text)) { if (v->VTABLE->IsValidValue(v, &text)) {
MenuOptionsScreen_Set(s, s->ActiveI, &text); MenuOptionsScreen_Set(s, s->ActiveI, &text);
} }

View File

@ -35,10 +35,10 @@ void Platform_Exit(ReturnCode code);
STRING_PURE String Platform_GetCommandLineArgs(void); STRING_PURE String Platform_GetCommandLineArgs(void);
ReturnCode Platform_StartShell(STRING_PURE String* args); ReturnCode Platform_StartShell(STRING_PURE String* args);
FUNC_ATTRIB(noinline) void* Mem_Alloc(UInt32 numElems, UInt32 elemsSize, const char* place); FUNC_NOINLINE void* Mem_Alloc(UInt32 numElems, UInt32 elemsSize, const char* place);
FUNC_ATTRIB(noinline) void* Mem_AllocCleared(UInt32 numElems, UInt32 elemsSize, const char* place); FUNC_NOINLINE void* Mem_AllocCleared(UInt32 numElems, UInt32 elemsSize, const char* place);
FUNC_ATTRIB(noinline) void* Mem_Realloc(void* mem, UInt32 numElems, UInt32 elemsSize, const char* place); FUNC_NOINLINE void* Mem_Realloc(void* mem, UInt32 numElems, UInt32 elemsSize, const char* place);
FUNC_ATTRIB(noinline) void Mem_Free(void* mem); FUNC_NOINLINE void Mem_Free(void* mem);
void Mem_Set(void* dst, UInt8 value, UInt32 numBytes); void Mem_Set(void* dst, UInt8 value, UInt32 numBytes);
void Mem_Copy(void* dst, void* src, UInt32 numBytes); void Mem_Copy(void* dst, void* src, UInt32 numBytes);
@ -123,7 +123,6 @@ void Audio_Init(AudioHandle* handle, Int32 buffers);
void Audio_Free(AudioHandle handle); void Audio_Free(AudioHandle handle);
struct AudioFormat* Audio_GetFormat(AudioHandle handle); struct AudioFormat* Audio_GetFormat(AudioHandle handle);
void Audio_SetFormat(AudioHandle handle, struct AudioFormat* format); void Audio_SetFormat(AudioHandle handle, struct AudioFormat* format);
void Audio_SetVolume(AudioHandle handle, Real32 volume);
void Audio_BufferData(AudioHandle handle, Int32 idx, void* data, UInt32 dataSize); void Audio_BufferData(AudioHandle handle, Int32 idx, void* data, UInt32 dataSize);
void Audio_Play(AudioHandle handle); void Audio_Play(AudioHandle handle);
bool Audio_IsCompleted(AudioHandle handle, Int32 idx); bool Audio_IsCompleted(AudioHandle handle, Int32 idx);

View File

@ -1297,49 +1297,47 @@ void InputWidget_Create(struct InputWidget* w, struct FontDesc* font, STRING_REF
/*########################################################################################################################* /*########################################################################################################################*
*---------------------------------------------------MenuInputValidator----------------------------------------------------* *---------------------------------------------------MenuInputValidator----------------------------------------------------*
*#########################################################################################################################*/ *#########################################################################################################################*/
static bool MenuInputValidator_AlwaysValidString(struct MenuInputValidator* v, STRING_PURE String* s) { return true; } static void Hex_Range(struct MenuInputValidator* v, STRING_TRANSIENT String* range) {
static void HexColValidator_GetRange(struct MenuInputValidator* v, STRING_TRANSIENT String* range) {
String_AppendConst(range, "&7(#000000 - #FFFFFF)"); String_AppendConst(range, "&7(#000000 - #FFFFFF)");
} }
static bool HexColValidator_IsValidChar(struct MenuInputValidator* v, char c) { static bool Hex_ValidChar(struct MenuInputValidator* v, char c) {
return (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f'); return (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f');
} }
static bool HexColValidator_IsValidString(struct MenuInputValidator* v, STRING_PURE String* s) { static bool Hex_ValidString(struct MenuInputValidator* v, STRING_PURE String* s) {
return s->length <= 6; return s->length <= 6;
} }
static bool HexColValidator_IsValidValue(struct MenuInputValidator* v, STRING_PURE String* s) { static bool Hex_ValidValue(struct MenuInputValidator* v, STRING_PURE String* s) {
PackedCol col; PackedCol col;
return PackedCol_TryParseHex(s, &col); return PackedCol_TryParseHex(s, &col);
} }
struct MenuInputValidatorVTABLE HexInputValidator_VTABLE = {
Hex_Range, Hex_ValidChar, Hex_ValidString, Hex_ValidValue,
};
struct MenuInputValidator MenuInputValidator_Hex(void) { struct MenuInputValidator MenuInputValidator_Hex(void) {
struct MenuInputValidator v; struct MenuInputValidator v;
v.GetRange = HexColValidator_GetRange; v.VTABLE = &HexInputValidator_VTABLE;
v.IsValidChar = HexColValidator_IsValidChar;
v.IsValidString = HexColValidator_IsValidString;
v.IsValidValue = HexColValidator_IsValidValue;
return v; return v;
} }
static void IntegerValidator_GetRange(struct MenuInputValidator* v, STRING_TRANSIENT String* range) { static void Integer_Range(struct MenuInputValidator* v, STRING_TRANSIENT String* range) {
String_Format2(range, "&7(%i - %i)", &v->Meta_Int[0], &v->Meta_Int[1]); String_Format2(range, "&7(%i - %i)", &v->Meta_Int[0], &v->Meta_Int[1]);
} }
static bool IntegerValidator_IsValidChar(struct MenuInputValidator* v, char c) { static bool Integer_ValidChar(struct MenuInputValidator* v, char c) {
return (c >= '0' && c <= '9') || c == '-'; return (c >= '0' && c <= '9') || c == '-';
} }
static bool IntegerValidator_IsValidString(struct MenuInputValidator* v, STRING_PURE String* s) { static bool Integer_ValidString(struct MenuInputValidator* v, STRING_PURE String* s) {
Int32 value; Int32 value;
if (s->length == 1 && s->buffer[0] == '-') return true; /* input is just a minus sign */ if (s->length == 1 && s->buffer[0] == '-') return true; /* input is just a minus sign */
return Convert_TryParseInt32(s, &value); return Convert_TryParseInt32(s, &value);
} }
static bool IntegerValidator_IsValidValue(struct MenuInputValidator* v, STRING_PURE String* s) { static bool Integer_ValidValue(struct MenuInputValidator* v, STRING_PURE String* s) {
Int32 value; Int32 value;
if (!Convert_TryParseInt32(s, &value)) return false; if (!Convert_TryParseInt32(s, &value)) return false;
@ -1347,75 +1345,78 @@ static bool IntegerValidator_IsValidValue(struct MenuInputValidator* v, STRING_P
return min <= value && value <= max; return min <= value && value <= max;
} }
struct MenuInputValidatorVTABLE IntegerInputValidator_VTABLE = {
Integer_Range, Integer_ValidChar, Integer_ValidString, Integer_ValidValue,
};
struct MenuInputValidator MenuInputValidator_Integer(Int32 min, Int32 max) { struct MenuInputValidator MenuInputValidator_Integer(Int32 min, Int32 max) {
struct MenuInputValidator v; struct MenuInputValidator v;
v.GetRange = IntegerValidator_GetRange; v.VTABLE = &IntegerInputValidator_VTABLE;
v.IsValidChar = IntegerValidator_IsValidChar;
v.IsValidString = IntegerValidator_IsValidString;
v.IsValidValue = IntegerValidator_IsValidValue;
v.Meta_Int[0] = min; v.Meta_Int[0] = min;
v.Meta_Int[1] = max; v.Meta_Int[1] = max;
return v; return v;
} }
static void SeedValidator_GetRange(struct MenuInputValidator* v, STRING_TRANSIENT String* range) { static void Seed_Range(struct MenuInputValidator* v, STRING_TRANSIENT String* range) {
String_AppendConst(range, "&7(an integer)"); String_AppendConst(range, "&7(an integer)");
} }
struct MenuInputValidatorVTABLE SeedInputValidator_VTABLE = {
Seed_Range, Integer_ValidChar, Integer_ValidString, Integer_ValidValue,
};
struct MenuInputValidator MenuInputValidator_Seed(void) { struct MenuInputValidator MenuInputValidator_Seed(void) {
struct MenuInputValidator v = MenuInputValidator_Integer(Int32_MinValue, Int32_MaxValue); struct MenuInputValidator v = MenuInputValidator_Integer(Int32_MinValue, Int32_MaxValue);
v.GetRange = SeedValidator_GetRange; v.VTABLE = &SeedInputValidator_VTABLE;
return v; return v;
} }
static void RealValidator_GetRange(struct MenuInputValidator* v, STRING_TRANSIENT String* range) { static void Real_Range(struct MenuInputValidator* v, STRING_TRANSIENT String* range) {
String_Format2(range, "&7(%f2 - %f2)", &v->Meta_Real[0], &v->Meta_Real[1]); String_Format2(range, "&7(%f2 - %f2)", &v->Meta_Real[0], &v->Meta_Real[1]);
} }
static bool RealValidator_IsValidChar(struct MenuInputValidator* v, char c) { static bool Real_ValidChar(struct MenuInputValidator* v, char c) {
return (c >= '0' && c <= '9') || c == '-' || c == '.' || c == ','; return (c >= '0' && c <= '9') || c == '-' || c == '.' || c == ',';
} }
static bool RealValidator_IsValidString(struct MenuInputValidator* v, STRING_PURE String* s) { static bool Real_ValidString(struct MenuInputValidator* v, STRING_PURE String* s) {
Real32 value; Real32 value;
if (s->length == 1 && RealValidator_IsValidChar(v, s->buffer[0])) return true; if (s->length == 1 && Real_ValidChar(v, s->buffer[0])) return true;
return Convert_TryParseReal32(s, &value); return Convert_TryParseReal32(s, &value);
} }
static bool RealValidator_IsValidValue(struct MenuInputValidator* v, STRING_PURE String* s) { static bool Real_ValidValue(struct MenuInputValidator* v, STRING_PURE String* s) {
Real32 value; Real32 value;
if (!Convert_TryParseReal32(s, &value)) return false; if (!Convert_TryParseReal32(s, &value)) return false;
Real32 min = v->Meta_Real[0], max = v->Meta_Real[1]; Real32 min = v->Meta_Real[0], max = v->Meta_Real[1];
return min <= value && value <= max; return min <= value && value <= max;
} }
struct MenuInputValidatorVTABLE RealInputValidator_VTABLE = {
Real_Range, Real_ValidChar, Real_ValidString, Real_ValidValue,
};
struct MenuInputValidator MenuInputValidator_Real(Real32 min, Real32 max) { struct MenuInputValidator MenuInputValidator_Real(Real32 min, Real32 max) {
struct MenuInputValidator v; struct MenuInputValidator v;
v.GetRange = RealValidator_GetRange; v.VTABLE = &RealInputValidator_VTABLE;
v.IsValidChar = RealValidator_IsValidChar;
v.IsValidString = RealValidator_IsValidString;
v.IsValidValue = RealValidator_IsValidValue;
v.Meta_Real[0] = min; v.Meta_Real[0] = min;
v.Meta_Real[1] = max; v.Meta_Real[1] = max;
return v; return v;
} }
static void PathValidator_GetRange(struct MenuInputValidator* v, STRING_TRANSIENT String* range) { static void Path_Range(struct MenuInputValidator* v, STRING_TRANSIENT String* range) {
String_AppendConst(range, "&7(Enter name)"); String_AppendConst(range, "&7(Enter name)");
} }
static bool PathValidator_IsValidChar(struct MenuInputValidator* v, char c) { static bool Path_ValidChar(struct MenuInputValidator* v, char c) {
return !(c == '/' || c == '\\' || c == '?' || c == '*' || c == ':' return !(c == '/' || c == '\\' || c == '?' || c == '*' || c == ':'
|| c == '<' || c == '>' || c == '|' || c == '"' || c == '.'); || c == '<' || c == '>' || c == '|' || c == '"' || c == '.');
} }
static bool Path_ValidString(struct MenuInputValidator* v, STRING_PURE String* s) { return true; }
struct MenuInputValidatorVTABLE PathInputValidator_VTABLE = {
Path_Range, Path_ValidChar, Path_ValidString, Path_ValidString,
};
struct MenuInputValidator MenuInputValidator_Path(void) { struct MenuInputValidator MenuInputValidator_Path(void) {
struct MenuInputValidator v; struct MenuInputValidator v;
v.GetRange = PathValidator_GetRange; v.VTABLE = &PathInputValidator_VTABLE;
v.IsValidChar = PathValidator_IsValidChar;
v.IsValidString = MenuInputValidator_AlwaysValidString;
v.IsValidValue = MenuInputValidator_AlwaysValidString;
return v; return v;
} }
@ -1426,24 +1427,24 @@ struct MenuInputValidator MenuInputValidator_Enum(const char** names, UInt32 nam
return v; return v;
} }
static void StringValidator_GetRange(struct MenuInputValidator* v, STRING_TRANSIENT String* range) { static void String_Range(struct MenuInputValidator* v, STRING_TRANSIENT String* range) {
String_AppendConst(range, "&7(Enter text)"); String_AppendConst(range, "&7(Enter text)");
} }
static bool StringValidator_IsValidChar(struct MenuInputValidator* v, char c) { static bool String_ValidChar(struct MenuInputValidator* v, char c) {
return c != '&' && Utils_IsValidInputChar(c, true); return c != '&' && Utils_IsValidInputChar(c, true);
} }
static bool StringValidator_IsValidString(struct MenuInputValidator* v, STRING_PURE String* s) { static bool String_ValidString(struct MenuInputValidator* v, STRING_PURE String* s) {
return s->length <= STRING_SIZE; return s->length <= STRING_SIZE;
} }
struct MenuInputValidatorVTABLE StringInputValidator_VTABLE = {
String_Range, String_ValidChar, String_ValidString, String_ValidString,
};
struct MenuInputValidator MenuInputValidator_String(void) { struct MenuInputValidator MenuInputValidator_String(void) {
struct MenuInputValidator v; struct MenuInputValidator v;
v.GetRange = StringValidator_GetRange; v.VTABLE = &StringInputValidator_VTABLE;
v.IsValidChar = StringValidator_IsValidChar;
v.IsValidString = StringValidator_IsValidString;
v.IsValidValue = StringValidator_IsValidString;
return v; return v;
} }
@ -1472,8 +1473,8 @@ static void MenuInputWidget_RemakeTexture(void* widget) {
char rangeBuffer[STRING_SIZE]; char rangeBuffer[STRING_SIZE];
String range = String_FromArray(rangeBuffer); String range = String_FromArray(rangeBuffer);
struct MenuInputValidator* validator = &w->Validator; struct MenuInputValidator* v = &w->Validator;
validator->GetRange(validator, &range); v->VTABLE->GetRange(v, &range);
/* Ensure we don't have 0 text height */ /* Ensure we don't have 0 text height */
if (size.Height == 0) { if (size.Height == 0) {
@ -1516,13 +1517,13 @@ static bool MenuInputWidget_AllowedChar(void* widget, char c) {
if (c == '&' || !Utils_IsValidInputChar(c, true)) return false; if (c == '&' || !Utils_IsValidInputChar(c, true)) return false;
struct MenuInputValidator* v = &((struct MenuInputWidget*)w)->Validator; struct MenuInputValidator* v = &((struct MenuInputWidget*)w)->Validator;
if (!v->IsValidChar(v, c)) return false; if (!v->VTABLE->IsValidChar(v, c)) return false;
Int32 maxChars = w->GetMaxLines() * INPUTWIDGET_LEN; Int32 maxChars = w->GetMaxLines() * INPUTWIDGET_LEN;
if (w->Text.length == maxChars) return false; if (w->Text.length == maxChars) return false;
/* See if the new string is in valid format */ /* See if the new string is in valid format */
InputWidget_AppendChar(w, c); InputWidget_AppendChar(w, c);
bool valid = v->IsValidString(v, &w->Text); bool valid = v->VTABLE->IsValidString(v, &w->Text);
InputWidget_DeleteChar(w); InputWidget_DeleteChar(w);
return valid; return valid;
} }

View File

@ -16,9 +16,9 @@ struct TextWidget {
bool ReducePadding; bool ReducePadding;
PackedCol Col; PackedCol Col;
}; };
void TextWidget_Make(struct TextWidget* widget); void TextWidget_Make(struct TextWidget* w);
void TextWidget_Create(struct TextWidget* widget, STRING_PURE String* text, struct FontDesc* font); void TextWidget_Create(struct TextWidget* w, STRING_PURE String* text, struct FontDesc* font);
void TextWidget_Set(struct TextWidget* widget, STRING_PURE String* text, struct FontDesc* font); void TextWidget_Set(struct TextWidget* w, STRING_PURE String* text, struct FontDesc* font);
typedef void (*Button_Get)(STRING_TRANSIENT String* raw); typedef void (*Button_Get)(STRING_TRANSIENT String* raw);
@ -32,8 +32,8 @@ struct ButtonWidget {
Button_Get GetValue; Button_Get GetValue;
Button_Set SetValue; Button_Set SetValue;
}; };
void ButtonWidget_Create(struct ButtonWidget* widget, Int32 minWidth, STRING_PURE String* text, struct FontDesc* font, Widget_LeftClick onClick); void ButtonWidget_Create(struct ButtonWidget* w, Int32 minWidth, STRING_PURE String* text, struct FontDesc* font, Widget_LeftClick onClick);
void ButtonWidget_Set(struct ButtonWidget* widget, STRING_PURE String* text, struct FontDesc* font); void ButtonWidget_Set(struct ButtonWidget* w, STRING_PURE String* text, struct FontDesc* font);
struct ScrollbarWidget { struct ScrollbarWidget {
@ -43,7 +43,7 @@ struct ScrollbarWidget {
Int32 MouseOffset; Int32 MouseOffset;
bool DraggingMouse; bool DraggingMouse;
}; };
void ScrollbarWidget_Create(struct ScrollbarWidget* widget); void ScrollbarWidget_Create(struct ScrollbarWidget* w);
struct HotbarWidget { struct HotbarWidget {
@ -54,7 +54,7 @@ struct HotbarWidget {
Real32 ScrollAcc; Real32 ScrollAcc;
bool AltHandled; bool AltHandled;
}; };
void HotbarWidget_Create(struct HotbarWidget* widget); void HotbarWidget_Create(struct HotbarWidget* w);
struct TableWidget { struct TableWidget {
@ -73,10 +73,10 @@ struct TableWidget {
Int32 LastX, LastY; Int32 LastX, LastY;
}; };
void TableWidget_Create(struct TableWidget* widget); void TableWidget_Create(struct TableWidget* w);
void TableWidget_SetBlockTo(struct TableWidget* widget, BlockID block); void TableWidget_SetBlockTo(struct TableWidget* w, BlockID block);
void TableWidget_OnInventoryChanged(struct TableWidget* widget); void TableWidget_OnInventoryChanged(struct TableWidget* w);
void TableWidget_MakeDescTex(struct TableWidget* widget, BlockID block); void TableWidget_MakeDescTex(struct TableWidget* w, BlockID block);
#define INPUTWIDGET_MAX_LINES 3 #define INPUTWIDGET_MAX_LINES 3
@ -107,22 +107,25 @@ struct InputWidget {
Real64 CaretAccumulator; Real64 CaretAccumulator;
}; };
void InputWidget_Create(struct InputWidget* widget, struct FontDesc* font, STRING_REF String* prefix); void InputWidget_Create(struct InputWidget* w, struct FontDesc* font, STRING_REF String* prefix);
/* Clears all the characters from the text buffer. Deletes the native texture. */ /* Clears all the characters from the text buffer. Deletes the native texture. */
void InputWidget_Clear(struct InputWidget* widget); void InputWidget_Clear(struct InputWidget* w);
/* Appends a sequence of characters to current text buffer. May recreate the native texture. */ /* Appends a sequence of characters to current text buffer. May recreate the native texture. */
void InputWidget_AppendString(struct InputWidget* widget, STRING_PURE String* text); void InputWidget_AppendString(struct InputWidget* w, STRING_PURE String* text);
/* Appends a single character to current text buffer. May recreate the native texture. */ /* Appends a single character to current text buffer. May recreate the native texture. */
void InputWidget_Append(struct InputWidget* widget, char c); void InputWidget_Append(struct InputWidget* w, char c);
struct MenuInputValidator; struct MenuInputValidator;
struct MenuInputValidator { struct MenuInputValidatorVTABLE {
void (*GetRange)(struct MenuInputValidator* validator, STRING_TRANSIENT String* range); void (*GetRange)(struct MenuInputValidator* v, STRING_TRANSIENT String* range);
bool (*IsValidChar)(struct MenuInputValidator* validator, char c); bool (*IsValidChar)(struct MenuInputValidator* v, char c);
bool (*IsValidString)(struct MenuInputValidator* validator, STRING_PURE String* s); bool (*IsValidString)(struct MenuInputValidator* v, STRING_PURE String* s);
bool (*IsValidValue)(struct MenuInputValidator* validator, STRING_PURE String* s); bool (*IsValidValue)(struct MenuInputValidator* v, STRING_PURE String* s);
};
struct MenuInputValidator {
struct MenuInputValidatorVTABLE* VTABLE;
union { union {
void* Meta_Ptr[2]; void* Meta_Ptr[2];
Int32 Meta_Int[2]; Int32 Meta_Int[2];
@ -144,7 +147,7 @@ struct MenuInputWidget {
struct MenuInputValidator Validator; struct MenuInputValidator Validator;
char __TextBuffer[INPUTWIDGET_LEN]; char __TextBuffer[INPUTWIDGET_LEN];
}; };
void MenuInputWidget_Create(struct MenuInputWidget* widget, Int32 width, Int32 height, STRING_PURE String* text, struct FontDesc* font, struct MenuInputValidator* validator); void MenuInputWidget_Create(struct MenuInputWidget* w, Int32 width, Int32 height, STRING_PURE String* text, struct FontDesc* font, struct MenuInputValidator* validator);
struct ChatInputWidget { struct ChatInputWidget {
@ -155,7 +158,7 @@ struct ChatInputWidget {
String OrigStr; String OrigStr;
}; };
void ChatInputWidget_Create(struct ChatInputWidget* widget, struct FontDesc* font); void ChatInputWidget_Create(struct ChatInputWidget* w, struct FontDesc* font);
#define TEXTGROUPWIDGET_MAX_LINES 30 #define TEXTGROUPWIDGET_MAX_LINES 30
@ -170,13 +173,13 @@ struct TextGroupWidget {
char* Buffer; char* Buffer;
}; };
void TextGroupWidget_Create(struct TextGroupWidget* widget, Int32 linesCount, struct FontDesc* font, struct FontDesc* underlineFont, STRING_REF struct Texture* textures, STRING_REF char* buffer); void TextGroupWidget_Create(struct TextGroupWidget* w, Int32 linesCount, struct FontDesc* font, struct FontDesc* underlineFont, STRING_REF struct Texture* textures, STRING_REF char* buffer);
void TextGroupWidget_SetUsePlaceHolder(struct TextGroupWidget* widget, Int32 index, bool placeHolder); void TextGroupWidget_SetUsePlaceHolder(struct TextGroupWidget* w, Int32 index, bool placeHolder);
void TextGroupWidget_PushUpAndReplaceLast(struct TextGroupWidget* widget, STRING_PURE String* text); void TextGroupWidget_PushUpAndReplaceLast(struct TextGroupWidget* w, STRING_PURE String* text);
Int32 TextGroupWidget_UsedHeight(struct TextGroupWidget* widget); Int32 TextGroupWidget_UsedHeight(struct TextGroupWidget* w);
void TextGroupWidget_GetSelected(struct TextGroupWidget* widget, STRING_TRANSIENT String* text, Int32 mouseX, Int32 mouseY); void TextGroupWidget_GetSelected(struct TextGroupWidget* w, STRING_TRANSIENT String* text, Int32 mouseX, Int32 mouseY);
void TextGroupWidget_GetText(struct TextGroupWidget* widget, Int32 index, STRING_TRANSIENT String* text); void TextGroupWidget_GetText(struct TextGroupWidget* w, Int32 index, STRING_TRANSIENT String* text);
void TextGroupWidget_SetText(struct TextGroupWidget* widget, Int32 index, STRING_PURE String* text); void TextGroupWidget_SetText(struct TextGroupWidget* w, Int32 index, STRING_PURE String* text);
struct PlayerListWidget { struct PlayerListWidget {
@ -189,8 +192,8 @@ struct PlayerListWidget {
UInt16 IDs[TABLIST_MAX_NAMES * 2]; UInt16 IDs[TABLIST_MAX_NAMES * 2];
struct Texture Textures[TABLIST_MAX_NAMES * 2]; struct Texture Textures[TABLIST_MAX_NAMES * 2];
}; };
void PlayerListWidget_Create(struct PlayerListWidget* widget, struct FontDesc* font, bool classic); void PlayerListWidget_Create(struct PlayerListWidget* w, struct FontDesc* font, bool classic);
void PlayerListWidget_GetNameUnder(struct PlayerListWidget* widget, Int32 mouseX, Int32 mouseY, STRING_TRANSIENT String* name); void PlayerListWidget_GetNameUnder(struct PlayerListWidget* w, Int32 mouseX, Int32 mouseY, STRING_TRANSIENT String* name);
typedef void (*SpecialInputAppendFunc)(void* userData, char c); typedef void (*SpecialInputAppendFunc)(void* userData, char c);
@ -212,7 +215,7 @@ struct SpecialInputWidget {
char __ColBuffer[DRAWER2D_MAX_COLS * 4]; char __ColBuffer[DRAWER2D_MAX_COLS * 4];
}; };
void SpecialInputWidget_Create(struct SpecialInputWidget* widget, struct FontDesc* font, struct InputWidget* appendObj); void SpecialInputWidget_Create(struct SpecialInputWidget* w, struct FontDesc* font, struct InputWidget* appendObj);
void SpecialInputWidget_UpdateCols(struct SpecialInputWidget* widget); void SpecialInputWidget_UpdateCols(struct SpecialInputWidget* w);
void SpecialInputWidget_SetActive(struct SpecialInputWidget* widget, bool active); void SpecialInputWidget_SetActive(struct SpecialInputWidget* w, bool active);
#endif #endif