mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-17 11:35:08 -04:00
attempt to fix errors when compiling game as C++
This commit is contained in:
parent
f1b7bd2ea5
commit
66f029e984
@ -56,9 +56,14 @@ typedef uint16_t Codepoint;
|
||||
typedef uint8_t bool;
|
||||
#define true 1
|
||||
#define false 0
|
||||
|
||||
#ifndef NULL
|
||||
#ifdef __cplusplus
|
||||
#define NULL nullptr
|
||||
#else
|
||||
#define NULL ((void*)0)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define EXTENDED_BLOCKS
|
||||
#ifdef EXTENDED_BLOCKS
|
||||
|
@ -16,27 +16,27 @@
|
||||
#define BORDER4 (4 * BORDER)
|
||||
|
||||
void LWidget_SetLocation(void* widget, uint8_t horAnchor, uint8_t verAnchor, int xOffset, int yOffset) {
|
||||
struct LWidget* w = widget;
|
||||
struct LWidget* w = (struct LWidget*)widget;
|
||||
w->HorAnchor = horAnchor; w->VerAnchor = verAnchor;
|
||||
w->XOffset = xOffset; w->YOffset = yOffset;
|
||||
LWidget_CalcPosition(widget);
|
||||
}
|
||||
|
||||
void LWidget_CalcPosition(void* widget) {
|
||||
struct LWidget* w = widget;
|
||||
struct LWidget* w = (struct LWidget*)widget;
|
||||
w->X = Gui_CalcPos(w->HorAnchor, w->XOffset, w->Width, Game.Width);
|
||||
w->Y = Gui_CalcPos(w->VerAnchor, w->YOffset, w->Height, Game.Height);
|
||||
}
|
||||
|
||||
void LWidget_Draw(void* widget) {
|
||||
struct LWidget* w = widget;
|
||||
struct LWidget* w = (struct LWidget*)widget;
|
||||
w->VTABLE->Draw(w);
|
||||
w->Last.X = w->X; w->Last.Width = w->Width;
|
||||
w->Last.Y = w->Y; w->Last.Height = w->Height;
|
||||
}
|
||||
|
||||
void LWidget_Redraw(void* widget) {
|
||||
struct LWidget* w = widget;
|
||||
struct LWidget* w = (struct LWidget*)widget;
|
||||
Launcher_ResetArea(w->Last.X, w->Last.Y, w->Last.Width, w->Last.Height);
|
||||
LWidget_Draw(w);
|
||||
}
|
||||
|
232
src/Menus.c
232
src/Menus.c
@ -191,7 +191,7 @@ static void Menu_Back(void* s, int i, struct ButtonWidget* btn, const char* labe
|
||||
}
|
||||
|
||||
static void Menu_ContextLost(void* screen) {
|
||||
struct Menu* s = screen;
|
||||
struct Menu* s = (struct Menu*)screen;
|
||||
struct Widget** widgets = s->Widgets;
|
||||
int i;
|
||||
if (!widgets) return;
|
||||
@ -203,7 +203,7 @@ static void Menu_ContextLost(void* screen) {
|
||||
}
|
||||
|
||||
static void Menu_OnResize(void* screen) {
|
||||
struct Menu* s = screen;
|
||||
struct Menu* s = (struct Menu*)screen;
|
||||
struct Widget** widgets = s->Widgets;
|
||||
int i;
|
||||
if (!widgets) return;
|
||||
@ -215,7 +215,7 @@ static void Menu_OnResize(void* screen) {
|
||||
}
|
||||
|
||||
static void Menu_Render(void* screen, double delta) {
|
||||
struct Menu* s = screen;
|
||||
struct Menu* s = (struct Menu*)screen;
|
||||
struct Widget** widgets = s->Widgets;
|
||||
int i;
|
||||
if (!widgets) return;
|
||||
@ -236,7 +236,7 @@ static void Menu_RenderBounds(void) {
|
||||
}
|
||||
|
||||
static int Menu_DoMouseDown(void* screen, int x, int y, MouseButton btn) {
|
||||
struct Menu* s = screen;
|
||||
struct Menu* s = (struct Menu*)screen;
|
||||
struct Widget** widgets = s->Widgets;
|
||||
int i, count = s->WidgetsCount;
|
||||
|
||||
@ -260,7 +260,7 @@ static bool Menu_MouseDown(void* screen, int x, int y, MouseButton btn) {
|
||||
}
|
||||
|
||||
static int Menu_DoMouseMove(void* screen, int x, int y) {
|
||||
struct Menu* s = screen;
|
||||
struct Menu* s = (struct Menu*)screen;
|
||||
struct Widget** widgets = s->Widgets;
|
||||
int i, count = s->WidgetsCount;
|
||||
|
||||
@ -292,7 +292,7 @@ static bool Menu_KeyUp(void* screen, Key key) { return true; }
|
||||
*------------------------------------------------------Menu utilities-----------------------------------------------------*
|
||||
*#########################################################################################################################*/
|
||||
static int Menu_Index(void* screen, void* widget) {
|
||||
struct Menu* s = screen;
|
||||
struct Menu* s = (struct Menu*)screen;
|
||||
struct Widget** widgets = s->Widgets;
|
||||
int i;
|
||||
|
||||
@ -304,7 +304,7 @@ static int Menu_Index(void* screen, void* widget) {
|
||||
}
|
||||
|
||||
static void Menu_Remove(void* screen, int i) {
|
||||
struct Menu* s = screen;
|
||||
struct Menu* s = (struct Menu*)screen;
|
||||
struct Widget** widgets = s->Widgets;
|
||||
|
||||
if (widgets[i]) { Elem_TryFree(widgets[i]); }
|
||||
@ -424,12 +424,12 @@ static void ListScreen_PageClick(struct ListScreen* s, bool forward) {
|
||||
}
|
||||
|
||||
static void ListScreen_MoveBackwards(void* screen, void* b) {
|
||||
struct ListScreen* s = screen;
|
||||
struct ListScreen* s = (struct ListScreen*)screen;
|
||||
ListScreen_PageClick(s, false);
|
||||
}
|
||||
|
||||
static void ListScreen_MoveForwards(void* screen, void* b) {
|
||||
struct ListScreen* s = screen;
|
||||
struct ListScreen* s = (struct ListScreen*)screen;
|
||||
ListScreen_PageClick(s, true);
|
||||
}
|
||||
|
||||
@ -437,7 +437,7 @@ static void ListScreen_ContextRecreated(void* screen) {
|
||||
const static String lArrow = String_FromConst("<");
|
||||
const static String rArrow = String_FromConst(">");
|
||||
|
||||
struct ListScreen* s = screen;
|
||||
struct ListScreen* s = (struct ListScreen*)screen;
|
||||
int i;
|
||||
for (i = 0; i < LIST_SCREEN_ITEMS; i++) { ListScreen_MakeText(s, i); }
|
||||
|
||||
@ -492,7 +492,7 @@ static void ListScreen_Select(struct ListScreen* s, const String* str) {
|
||||
}
|
||||
|
||||
static void ListScreen_Init(void* screen) {
|
||||
struct ListScreen* s = screen;
|
||||
struct ListScreen* s = (struct ListScreen*)screen;
|
||||
s->Widgets = s->ListWidgets;
|
||||
s->WidgetsCount = Array_Elems(s->ListWidgets);
|
||||
Drawer2D_MakeFont(&s->Font, 16, FONT_STYLE_BOLD);
|
||||
@ -509,13 +509,13 @@ static void ListScreen_Render(void* screen, double delta) {
|
||||
}
|
||||
|
||||
static void ListScreen_Free(void* screen) {
|
||||
struct ListScreen* s = screen;
|
||||
struct ListScreen* s = (struct ListScreen*)screen;
|
||||
Font_Free(&s->Font);
|
||||
Screen_CommonFree(s);
|
||||
}
|
||||
|
||||
static bool ListScreen_KeyDown(void* screen, Key key, bool was) {
|
||||
struct ListScreen* s = screen;
|
||||
struct ListScreen* s = (struct ListScreen*)screen;
|
||||
if (key == KEY_LEFT || key == KEY_PAGEUP) {
|
||||
ListScreen_PageClick(s, false);
|
||||
} else if (key == KEY_RIGHT || key == KEY_PAGEDOWN) {
|
||||
@ -527,7 +527,7 @@ static bool ListScreen_KeyDown(void* screen, Key key, bool was) {
|
||||
}
|
||||
|
||||
static bool ListScreen_MouseScroll(void* screen, float delta) {
|
||||
struct ListScreen* s = screen;
|
||||
struct ListScreen* s = (struct ListScreen*)screen;
|
||||
int steps = Utils_AccumulateWheelDelta(&s->WheelAcc, delta);
|
||||
|
||||
if (steps) ListScreen_SetCurrentIndex(s, s->CurrentIndex - steps);
|
||||
@ -561,7 +561,7 @@ static bool MenuScreen_KeyDown(void* screen, Key key, bool was) { return key < K
|
||||
static bool MenuScreen_MouseScroll(void* screen, float delta) { return true; }
|
||||
|
||||
static void MenuScreen_Init(void* screen) {
|
||||
struct MenuScreen* s = screen;
|
||||
struct MenuScreen* s = (struct MenuScreen*)screen;
|
||||
if (!s->TitleFont.Handle && !s->TitleFont.Size) {
|
||||
Drawer2D_MakeFont(&s->TitleFont, 16, FONT_STYLE_BOLD);
|
||||
}
|
||||
@ -580,7 +580,7 @@ static void MenuScreen_Render(void* screen, double delta) {
|
||||
}
|
||||
|
||||
static void MenuScreen_Free(void* screen) {
|
||||
struct MenuScreen* s = screen;
|
||||
struct MenuScreen* s = (struct MenuScreen*)screen;
|
||||
Font_Free(&s->TitleFont);
|
||||
Font_Free(&s->TextFont);
|
||||
|
||||
@ -608,14 +608,14 @@ static void PauseScreen_Quit(void* a, void* b) { Window_Close(); }
|
||||
static void PauseScreen_Game(void* a, void* b) { Gui_CloseActive(); }
|
||||
|
||||
static void PauseScreen_CheckHacksAllowed(void* screen) {
|
||||
struct PauseScreen* s = screen;
|
||||
struct PauseScreen* s = (struct PauseScreen*)screen;
|
||||
if (Gui_ClassicMenu) return;
|
||||
s->Buttons[4].Disabled = !LocalPlayer_Instance.Hacks.CanAnyHacks; /* select texture pack */
|
||||
}
|
||||
|
||||
static void PauseScreen_ContextRecreated(void* screen) {
|
||||
const static String quitMsg = String_FromConst("Quit game");
|
||||
struct PauseScreen* s = screen;
|
||||
struct PauseScreen* s = (struct PauseScreen*)screen;
|
||||
|
||||
if (Gui_ClassicMenu) {
|
||||
PauseScreen_MakeClassic(s, 0, -100, "Options...", Menu_SwitchClassicOptions);
|
||||
@ -651,13 +651,13 @@ static void PauseScreen_ContextRecreated(void* screen) {
|
||||
}
|
||||
|
||||
static void PauseScreen_Init(void* screen) {
|
||||
struct PauseScreen* s = screen;
|
||||
struct PauseScreen* s = (struct PauseScreen*)screen;
|
||||
MenuScreen_Init(s);
|
||||
Event_RegisterVoid(&UserEvents.HackPermissionsChanged, s, PauseScreen_CheckHacksAllowed);
|
||||
}
|
||||
|
||||
static void PauseScreen_Free(void* screen) {
|
||||
struct PauseScreen* s = screen;
|
||||
struct PauseScreen* s = (struct PauseScreen*)screen;
|
||||
MenuScreen_Free(s);
|
||||
Event_UnregisterVoid(&UserEvents.HackPermissionsChanged, s, PauseScreen_CheckHacksAllowed);
|
||||
}
|
||||
@ -697,7 +697,7 @@ const char* optsGroup_descs[7] = {
|
||||
};
|
||||
|
||||
static void OptionsGroupScreen_CheckHacksAllowed(void* screen) {
|
||||
struct OptionsGroupScreen* s = screen;
|
||||
struct OptionsGroupScreen* s = (struct OptionsGroupScreen*)screen;
|
||||
s->Buttons[5].Disabled = !LocalPlayer_Instance.Hacks.CanAnyHacks; /* env settings */
|
||||
}
|
||||
|
||||
@ -714,7 +714,7 @@ static void OptionsGroupScreen_MakeDesc(struct OptionsGroupScreen* s) {
|
||||
}
|
||||
|
||||
static void OptionsGroupScreen_ContextRecreated(void* screen) {
|
||||
struct OptionsGroupScreen* s = screen;
|
||||
struct OptionsGroupScreen* s = (struct OptionsGroupScreen*)screen;
|
||||
OptionsGroupScreen_Make(s, 0, -1, -100, "Misc options...", Menu_SwitchMisc);
|
||||
OptionsGroupScreen_Make(s, 1, -1, -50, "Gui options...", Menu_SwitchGui);
|
||||
OptionsGroupScreen_Make(s, 2, -1, 0, "Graphics options...", Menu_SwitchGfx);
|
||||
@ -731,19 +731,19 @@ static void OptionsGroupScreen_ContextRecreated(void* screen) {
|
||||
}
|
||||
|
||||
static void OptionsGroupScreen_Init(void* screen) {
|
||||
struct OptionsGroupScreen* s = screen;
|
||||
struct OptionsGroupScreen* s = (struct OptionsGroupScreen*)screen;
|
||||
MenuScreen_Init(s);
|
||||
Event_RegisterVoid(&UserEvents.HackPermissionsChanged, s, OptionsGroupScreen_CheckHacksAllowed);
|
||||
}
|
||||
|
||||
static void OptionsGroupScreen_Free(void* screen) {
|
||||
struct OptionsGroupScreen* s = screen;
|
||||
struct OptionsGroupScreen* s = (struct OptionsGroupScreen*)screen;
|
||||
MenuScreen_Free(s);
|
||||
Event_UnregisterVoid(&UserEvents.HackPermissionsChanged, s, OptionsGroupScreen_CheckHacksAllowed);
|
||||
}
|
||||
|
||||
static bool OptionsGroupScreen_MouseMove(void* screen, int x, int y) {
|
||||
struct OptionsGroupScreen* s = screen;
|
||||
struct OptionsGroupScreen* s = (struct OptionsGroupScreen*)screen;
|
||||
int i = Menu_DoMouseMove(s, x, y);
|
||||
if (i == -1 || i == s->SelectedI) return true;
|
||||
if (i >= Array_Elems(optsGroup_descs)) return true;
|
||||
@ -819,7 +819,7 @@ static void EditHotkeyScreen_MakeLeaveOpen(struct EditHotkeyScreen* s, Widget_Le
|
||||
|
||||
static void EditHotkeyScreen_BaseKey(void* screen, void* b) {
|
||||
const static String msg = String_FromConst("Key: press a key..");
|
||||
struct EditHotkeyScreen* s = screen;
|
||||
struct EditHotkeyScreen* s = (struct EditHotkeyScreen*)screen;
|
||||
|
||||
s->SelectedI = 0;
|
||||
s->SupressNextPress = true;
|
||||
@ -828,7 +828,7 @@ static void EditHotkeyScreen_BaseKey(void* screen, void* b) {
|
||||
|
||||
static void EditHotkeyScreen_Modifiers(void* screen, void* b) {
|
||||
const static String msg = String_FromConst("Modifiers: press a key..");
|
||||
struct EditHotkeyScreen* s = screen;
|
||||
struct EditHotkeyScreen* s = (struct EditHotkeyScreen*)screen;
|
||||
|
||||
s->SelectedI = 1;
|
||||
s->SupressNextPress = true;
|
||||
@ -836,7 +836,7 @@ static void EditHotkeyScreen_Modifiers(void* screen, void* b) {
|
||||
}
|
||||
|
||||
static void EditHotkeyScreen_LeaveOpen(void* screen, void* b) {
|
||||
struct EditHotkeyScreen* s = screen;
|
||||
struct EditHotkeyScreen* s = (struct EditHotkeyScreen*)screen;
|
||||
/* Reset 'waiting for key..' state of two other buttons */
|
||||
if (s->SelectedI == 0) {
|
||||
EditHotkeyScreen_MakeBaseKey(s, EditHotkeyScreen_BaseKey);
|
||||
@ -852,7 +852,7 @@ static void EditHotkeyScreen_LeaveOpen(void* screen, void* b) {
|
||||
}
|
||||
|
||||
static void EditHotkeyScreen_SaveChanges(void* screen, void* b) {
|
||||
struct EditHotkeyScreen* s = screen;
|
||||
struct EditHotkeyScreen* s = (struct EditHotkeyScreen*)screen;
|
||||
struct HotkeyData hotkey = s->OrigHotkey;
|
||||
|
||||
if (hotkey.Trigger) {
|
||||
@ -872,7 +872,7 @@ static void EditHotkeyScreen_SaveChanges(void* screen, void* b) {
|
||||
}
|
||||
|
||||
static void EditHotkeyScreen_RemoveHotkey(void* screen, void* b) {
|
||||
struct EditHotkeyScreen* s = screen;
|
||||
struct EditHotkeyScreen* s = (struct EditHotkeyScreen*)screen;
|
||||
struct HotkeyData hotkey = s->OrigHotkey;
|
||||
|
||||
if (hotkey.Trigger) {
|
||||
@ -884,10 +884,6 @@ static void EditHotkeyScreen_RemoveHotkey(void* screen, void* b) {
|
||||
Gui_SetActive(HotkeyListScreen_MakeInstance());
|
||||
}
|
||||
|
||||
static void EditHotkeyScreen_Init(void* screen) {
|
||||
MenuScreen_Init(screen);
|
||||
}
|
||||
|
||||
static void EditHotkeyScreen_Render(void* screen, double delta) {
|
||||
PackedCol grey = PACKEDCOL_CONST(150, 150, 150, 255);
|
||||
int x, y;
|
||||
@ -899,13 +895,13 @@ static void EditHotkeyScreen_Render(void* screen, double delta) {
|
||||
}
|
||||
|
||||
static void EditHotkeyScreen_Free(void* screen) {
|
||||
struct EditHotkeyScreen* s = screen;
|
||||
struct EditHotkeyScreen* s = (struct EditHotkeyScreen*)screen;
|
||||
s->SelectedI = -1;
|
||||
MenuScreen_Free(s);
|
||||
}
|
||||
|
||||
static bool EditHotkeyScreen_KeyPress(void* screen, char keyChar) {
|
||||
struct EditHotkeyScreen* s = screen;
|
||||
struct EditHotkeyScreen* s = (struct EditHotkeyScreen*)screen;
|
||||
if (s->SupressNextPress) {
|
||||
s->SupressNextPress = false;
|
||||
return true;
|
||||
@ -914,7 +910,7 @@ static bool EditHotkeyScreen_KeyPress(void* screen, char keyChar) {
|
||||
}
|
||||
|
||||
static bool EditHotkeyScreen_KeyDown(void* screen, Key key, bool was) {
|
||||
struct EditHotkeyScreen* s = screen;
|
||||
struct EditHotkeyScreen* s = (struct EditHotkeyScreen*)screen;
|
||||
if (s->SelectedI >= 0) {
|
||||
if (s->SelectedI == 0) {
|
||||
s->CurHotkey.Trigger = key;
|
||||
@ -936,7 +932,7 @@ static bool EditHotkeyScreen_KeyDown(void* screen, Key key, bool was) {
|
||||
}
|
||||
|
||||
static bool EditHotkeyScreen_KeyUp(void* screen, Key key) {
|
||||
struct EditHotkeyScreen* s = screen;
|
||||
struct EditHotkeyScreen* s = (struct EditHotkeyScreen*)screen;
|
||||
return Elem_HandlesKeyUp(&s->Input.Base, key);
|
||||
}
|
||||
|
||||
@ -945,7 +941,8 @@ static void EditHotkeyScreen_ContextRecreated(void* screen) {
|
||||
const static String addHK = String_FromConst("Add hotkey");
|
||||
const static String remHK = String_FromConst("Remove hotkey");
|
||||
const static String cancel = String_FromConst("Cancel");
|
||||
struct EditHotkeyScreen* s = screen;
|
||||
|
||||
struct EditHotkeyScreen* s = (struct EditHotkeyScreen*)screen;
|
||||
struct MenuInputValidator v = MenuInputValidator_String();
|
||||
String text; bool existed;
|
||||
|
||||
@ -969,7 +966,7 @@ static void EditHotkeyScreen_ContextRecreated(void* screen) {
|
||||
}
|
||||
|
||||
static struct ScreenVTABLE EditHotkeyScreen_VTABLE = {
|
||||
EditHotkeyScreen_Init, EditHotkeyScreen_Render, EditHotkeyScreen_Free, Gui_DefaultRecreate,
|
||||
MenuScreen_Init, EditHotkeyScreen_Render, EditHotkeyScreen_Free, Gui_DefaultRecreate,
|
||||
EditHotkeyScreen_KeyDown, EditHotkeyScreen_KeyUp, EditHotkeyScreen_KeyPress,
|
||||
Menu_MouseDown, Menu_MouseUp, Menu_MouseMove, MenuScreen_MouseScroll,
|
||||
Menu_OnResize, Menu_ContextLost, EditHotkeyScreen_ContextRecreated,
|
||||
@ -1025,7 +1022,7 @@ static void GenLevelScreen_Begin(int width, int height, int length) {
|
||||
}
|
||||
|
||||
static void GenLevelScreen_Gen(void* screen, bool vanilla) {
|
||||
struct GenLevelScreen* s = screen;
|
||||
struct GenLevelScreen* s = (struct GenLevelScreen*)screen;
|
||||
int width = GenLevelScreen_GetInt(s, 0);
|
||||
int height = GenLevelScreen_GetInt(s, 1);
|
||||
int length = GenLevelScreen_GetInt(s, 2);
|
||||
@ -1046,7 +1043,7 @@ static void GenLevelScreen_Flatgrass(void* a, void* b) { GenLevelScreen_Gen(a, f
|
||||
static void GenLevelScreen_Notchy(void* a, void* b) { GenLevelScreen_Gen(a, true); }
|
||||
|
||||
static void GenLevelScreen_InputClick(void* screen, void* input) {
|
||||
struct GenLevelScreen* s = screen;
|
||||
struct GenLevelScreen* s = (struct GenLevelScreen*)screen;
|
||||
if (s->Selected) s->Selected->Base.ShowCaret = false;
|
||||
|
||||
s->Selected = input;
|
||||
@ -1079,29 +1076,19 @@ static void GenLevelScreen_Label(struct GenLevelScreen* s, int i, int x, int y,
|
||||
Widget_Reposition(label);
|
||||
}
|
||||
|
||||
static void GenLevelScreen_Init(void* screen) {
|
||||
struct GenLevelScreen* s = screen;
|
||||
MenuScreen_Init(s);
|
||||
}
|
||||
|
||||
static void GenLevelScreen_Free(void* screen) {
|
||||
struct GenLevelScreen* s = screen;
|
||||
MenuScreen_Free(s);
|
||||
}
|
||||
|
||||
static bool GenLevelScreen_KeyDown(void* screen, Key key, bool was) {
|
||||
struct GenLevelScreen* s = screen;
|
||||
struct GenLevelScreen* s = (struct GenLevelScreen*)screen;
|
||||
if (s->Selected && Elem_HandlesKeyDown(&s->Selected->Base, key, was)) return true;
|
||||
return MenuScreen_KeyDown(s, key, was);
|
||||
}
|
||||
|
||||
static bool GenLevelScreen_KeyUp(void* screen, Key key) {
|
||||
struct GenLevelScreen* s = screen;
|
||||
struct GenLevelScreen* s = (struct GenLevelScreen*)screen;
|
||||
return !s->Selected || Elem_HandlesKeyUp(&s->Selected->Base, key);
|
||||
}
|
||||
|
||||
static bool GenLevelScreen_KeyPress(void* screen, char keyChar) {
|
||||
struct GenLevelScreen* s = screen;
|
||||
struct GenLevelScreen* s = (struct GenLevelScreen*)screen;
|
||||
return !s->Selected || Elem_HandlesKeyPress(&s->Selected->Base, keyChar);
|
||||
}
|
||||
|
||||
@ -1111,7 +1098,7 @@ static void GenLevelScreen_ContextRecreated(void* screen) {
|
||||
const static String norm = String_FromConst("Vanilla");
|
||||
String tmp; char tmpBuffer[STRING_SIZE];
|
||||
|
||||
struct GenLevelScreen* s = screen;
|
||||
struct GenLevelScreen* s = (struct GenLevelScreen*)screen;
|
||||
String_InitArray(tmp, tmpBuffer);
|
||||
|
||||
String_AppendInt(&tmp, World.Width);
|
||||
@ -1137,7 +1124,7 @@ static void GenLevelScreen_ContextRecreated(void* screen) {
|
||||
}
|
||||
|
||||
static struct ScreenVTABLE GenLevelScreen_VTABLE = {
|
||||
GenLevelScreen_Init, MenuScreen_Render, GenLevelScreen_Free, Gui_DefaultRecreate,
|
||||
MenuScreen_Init, MenuScreen_Render, MenuScreen_Free, Gui_DefaultRecreate,
|
||||
GenLevelScreen_KeyDown, GenLevelScreen_KeyUp, GenLevelScreen_KeyPress,
|
||||
Menu_MouseDown, Menu_MouseUp, Menu_MouseMove, MenuScreen_MouseScroll,
|
||||
Menu_OnResize, Menu_ContextLost, GenLevelScreen_ContextRecreated,
|
||||
@ -1179,7 +1166,7 @@ static void ClassicGenScreen_Make(struct ClassicGenScreen* s, int i, int y, cons
|
||||
}
|
||||
|
||||
static void ClassicGenScreen_ContextRecreated(void* screen) {
|
||||
struct ClassicGenScreen* s = screen;
|
||||
struct ClassicGenScreen* s = (struct ClassicGenScreen*)screen;
|
||||
ClassicGenScreen_Make(s, 0, -100, "Small", ClassicGenScreen_Small);
|
||||
ClassicGenScreen_Make(s, 1, -50, "Normal", ClassicGenScreen_Medium);
|
||||
ClassicGenScreen_Make(s, 2, 0, "Huge", ClassicGenScreen_Huge);
|
||||
@ -1275,7 +1262,7 @@ static void SaveLevelScreen_Save(void* screen, void* widget, const char* ext) {
|
||||
const static String fileMsg = String_FromConst("&ePlease enter a filename");
|
||||
String path; char pathBuffer[FILENAME_SIZE];
|
||||
|
||||
struct SaveLevelScreen* s = screen;
|
||||
struct SaveLevelScreen* s = (struct SaveLevelScreen*)screen;
|
||||
struct ButtonWidget* btn = widget;
|
||||
String file = s->Input.Base.Text;
|
||||
|
||||
@ -1296,11 +1283,6 @@ static void SaveLevelScreen_Save(void* screen, void* widget, const char* ext) {
|
||||
static void SaveLevelScreen_Classic(void* a, void* b) { SaveLevelScreen_Save(a, b, ".cw"); }
|
||||
static void SaveLevelScreen_Schematic(void* a, void* b) { SaveLevelScreen_Save(a, b, ".schematic"); }
|
||||
|
||||
static void SaveLevelScreen_Init(void* screen) {
|
||||
struct SaveLevelScreen* s = screen;
|
||||
MenuScreen_Init(s);
|
||||
}
|
||||
|
||||
static void SaveLevelScreen_Render(void* screen, double delta) {
|
||||
PackedCol grey = PACKEDCOL_CONST(150, 150, 150, 255);
|
||||
int x, y;
|
||||
@ -1310,26 +1292,21 @@ static void SaveLevelScreen_Render(void* screen, double delta) {
|
||||
Gfx_Draw2DFlat(x - 250, y + 90, 500, 2, grey);
|
||||
}
|
||||
|
||||
static void SaveLevelScreen_Free(void* screen) {
|
||||
struct SaveLevelScreen* s = screen;
|
||||
MenuScreen_Free(s);
|
||||
}
|
||||
|
||||
static bool SaveLevelScreen_KeyPress(void* screen, char keyChar) {
|
||||
struct SaveLevelScreen* s = screen;
|
||||
struct SaveLevelScreen* s = (struct SaveLevelScreen*)screen;
|
||||
SaveLevelScreen_RemoveOverwrites(s);
|
||||
return Elem_HandlesKeyPress(&s->Input.Base, keyChar);
|
||||
}
|
||||
|
||||
static bool SaveLevelScreen_KeyDown(void* screen, Key key, bool was) {
|
||||
struct SaveLevelScreen* s = screen;
|
||||
struct SaveLevelScreen* s = (struct SaveLevelScreen*)screen;
|
||||
SaveLevelScreen_RemoveOverwrites(s);
|
||||
if (Elem_HandlesKeyDown(&s->Input.Base, key, was)) return true;
|
||||
return MenuScreen_KeyDown(s, key, was);
|
||||
}
|
||||
|
||||
static bool SaveLevelScreen_KeyUp(void* screen, Key key) {
|
||||
struct SaveLevelScreen* s = screen;
|
||||
struct SaveLevelScreen* s = (struct SaveLevelScreen*)screen;
|
||||
return Elem_HandlesKeyUp(&s->Input.Base, key);
|
||||
}
|
||||
|
||||
@ -1338,7 +1315,7 @@ static void SaveLevelScreen_ContextRecreated(void* screen) {
|
||||
const static String schem = String_FromConst("Save schematic");
|
||||
const static String mcEdit = String_FromConst("&eCan be imported into MCEdit");
|
||||
|
||||
struct SaveLevelScreen* s = screen;
|
||||
struct SaveLevelScreen* s = (struct SaveLevelScreen*)screen;
|
||||
struct MenuInputValidator validator = MenuInputValidator_Path();
|
||||
|
||||
Menu_Button(s, 0, &s->Buttons[0], 300, &save, &s->TitleFont, SaveLevelScreen_Classic,
|
||||
@ -1355,7 +1332,7 @@ static void SaveLevelScreen_ContextRecreated(void* screen) {
|
||||
}
|
||||
|
||||
static struct ScreenVTABLE SaveLevelScreen_VTABLE = {
|
||||
SaveLevelScreen_Init, SaveLevelScreen_Render, SaveLevelScreen_Free, Gui_DefaultRecreate,
|
||||
MenuScreen_Init, SaveLevelScreen_Render, MenuScreen_Free, Gui_DefaultRecreate,
|
||||
SaveLevelScreen_KeyDown, SaveLevelScreen_KeyUp, SaveLevelScreen_KeyPress,
|
||||
Menu_MouseDown, Menu_MouseUp, Menu_MouseMove, MenuScreen_MouseScroll,
|
||||
Menu_OnResize, Menu_ContextLost, SaveLevelScreen_ContextRecreated,
|
||||
@ -1379,7 +1356,7 @@ struct Screen* SaveLevelScreen_MakeInstance(void) {
|
||||
*#########################################################################################################################*/
|
||||
static void TexturePackScreen_EntryClick(void* screen, void* widget) {
|
||||
String path; char pathBuffer[FILENAME_SIZE];
|
||||
struct ListScreen* s = screen;
|
||||
struct ListScreen* s = (struct ListScreen*)screen;
|
||||
String filename;
|
||||
int idx;
|
||||
|
||||
@ -1424,7 +1401,7 @@ struct Screen* TexturePackScreen_MakeInstance(void) {
|
||||
*----------------------------------------------------FontListScreen-------------------------------------------------------*
|
||||
*#########################################################################################################################*/
|
||||
static void FontListScreen_EntryClick(void* screen, void* widget) {
|
||||
struct ListScreen* s = screen;
|
||||
struct ListScreen* s = (struct ListScreen*)screen;
|
||||
String fontName = ListScreen_UNSAFE_GetCur(s, widget);
|
||||
int cur = s->CurrentIndex;
|
||||
|
||||
@ -1449,7 +1426,7 @@ static void FontListScreen_UpdateEntry(struct ListScreen* s, struct ButtonWidget
|
||||
}
|
||||
|
||||
static void FontListScreen_Init(void* screen) {
|
||||
struct ListScreen* s = screen;
|
||||
struct ListScreen* s = (struct ListScreen*)screen;
|
||||
ListScreen_Init(s);
|
||||
ListScreen_Select(s, &Drawer2D_FontName);
|
||||
}
|
||||
@ -1486,7 +1463,7 @@ static void HotkeyListScreen_EntryClick(void* screen, void* widget) {
|
||||
const static String shift = String_FromConst("Shift");
|
||||
const static String alt = String_FromConst("Alt");
|
||||
|
||||
struct ListScreen* s = screen;
|
||||
struct ListScreen* s = (struct ListScreen*)screen;
|
||||
struct HotkeyData h, original = { 0 };
|
||||
String text, key, value;
|
||||
Key trigger;
|
||||
@ -1566,7 +1543,7 @@ static void LoadLevelScreen_FilterFiles(const String* path, void* obj) {
|
||||
|
||||
static void LoadLevelScreen_EntryClick(void* screen, void* widget) {
|
||||
String path; char pathBuffer[FILENAME_SIZE];
|
||||
struct ListScreen* s = screen;
|
||||
struct ListScreen* s = (struct ListScreen*)screen;
|
||||
String filename;
|
||||
|
||||
filename = ListScreen_UNSAFE_GetCur(s, widget);
|
||||
@ -1604,7 +1581,7 @@ static void KeyBindingsScreen_GetText(struct KeyBindingsScreen* s, int i, String
|
||||
|
||||
static void KeyBindingsScreen_OnBindingClick(void* screen, void* widget) {
|
||||
String text; char textBuffer[STRING_SIZE];
|
||||
struct KeyBindingsScreen* s = screen;
|
||||
struct KeyBindingsScreen* s = (struct KeyBindingsScreen*)screen;
|
||||
struct ButtonWidget* btn = widget;
|
||||
struct ButtonWidget* cur;
|
||||
|
||||
@ -1671,7 +1648,7 @@ static int KeyBindingsScreen_MakeWidgets(struct KeyBindingsScreen* s, int y, int
|
||||
|
||||
static bool KeyBindingsScreen_KeyDown(void* screen, Key key, bool was) {
|
||||
String text; char textBuffer[STRING_SIZE];
|
||||
struct KeyBindingsScreen* s = screen;
|
||||
struct KeyBindingsScreen* s = (struct KeyBindingsScreen*)screen;
|
||||
struct ButtonWidget* cur;
|
||||
KeyBind bind;
|
||||
|
||||
@ -1691,7 +1668,7 @@ static bool KeyBindingsScreen_KeyDown(void* screen, Key key, bool was) {
|
||||
}
|
||||
|
||||
static bool KeyBindingsScreen_MouseDown(void* screen, int x, int y, MouseButton btn) {
|
||||
struct KeyBindingsScreen* s = screen;
|
||||
struct KeyBindingsScreen* s = (struct KeyBindingsScreen*)screen;
|
||||
int i;
|
||||
|
||||
if (btn != MOUSE_RIGHT) { return Menu_MouseDown(s, x, y, btn); }
|
||||
@ -1738,7 +1715,7 @@ static struct KeyBindingsScreen* KeyBindingsScreen_Make(int bindsCount, uint8_t*
|
||||
*-----------------------------------------------ClassicKeyBindingsScreen--------------------------------------------------*
|
||||
*#########################################################################################################################*/
|
||||
static void ClassicKeyBindingsScreen_ContextRecreated(void* screen) {
|
||||
struct KeyBindingsScreen* s = screen;
|
||||
struct KeyBindingsScreen* s = (struct KeyBindingsScreen*)screen;
|
||||
if (Game_ClassicHacks) {
|
||||
KeyBindingsScreen_MakeWidgets(s, -140, -40, 5, "Normal controls", 260);
|
||||
} else {
|
||||
@ -1762,7 +1739,7 @@ struct Screen* ClassicKeyBindingsScreen_MakeInstance(void) {
|
||||
*--------------------------------------------ClassicHacksKeyBindingsScreen------------------------------------------------*
|
||||
*#########################################################################################################################*/
|
||||
static void ClassicHacksKeyBindingsScreen_ContextRecreated(void* screen) {
|
||||
struct KeyBindingsScreen* s = screen;
|
||||
struct KeyBindingsScreen* s = (struct KeyBindingsScreen*)screen;
|
||||
KeyBindingsScreen_MakeWidgets(s, -90, -40, 3, "Hacks controls", 260);
|
||||
}
|
||||
|
||||
@ -1782,7 +1759,7 @@ struct Screen* ClassicHacksKeyBindingsScreen_MakeInstance(void) {
|
||||
*-----------------------------------------------NormalKeyBindingsScreen---------------------------------------------------*
|
||||
*#########################################################################################################################*/
|
||||
static void NormalKeyBindingsScreen_ContextRecreated(void* screen) {
|
||||
struct KeyBindingsScreen* s = screen;
|
||||
struct KeyBindingsScreen* s = (struct KeyBindingsScreen*)screen;
|
||||
KeyBindingsScreen_MakeWidgets(s, -140, 10, 6, "Normal controls", 260);
|
||||
}
|
||||
|
||||
@ -1802,7 +1779,7 @@ struct Screen* NormalKeyBindingsScreen_MakeInstance(void) {
|
||||
*------------------------------------------------HacksKeyBindingsScreen---------------------------------------------------*
|
||||
*#########################################################################################################################*/
|
||||
static void HacksKeyBindingsScreen_ContextRecreated(void* screen) {
|
||||
struct KeyBindingsScreen* s = screen;
|
||||
struct KeyBindingsScreen* s = (struct KeyBindingsScreen*)screen;
|
||||
KeyBindingsScreen_MakeWidgets(s, -40, 10, 4, "Hacks controls", 260);
|
||||
}
|
||||
|
||||
@ -1823,7 +1800,7 @@ struct Screen* HacksKeyBindingsScreen_MakeInstance(void) {
|
||||
*------------------------------------------------OtherKeyBindingsScreen---------------------------------------------------*
|
||||
*#########################################################################################################################*/
|
||||
static void OtherKeyBindingsScreen_ContextRecreated(void* screen) {
|
||||
struct KeyBindingsScreen* s = screen;
|
||||
struct KeyBindingsScreen* s = (struct KeyBindingsScreen*)screen;
|
||||
KeyBindingsScreen_MakeWidgets(s, -140, 10, 6, "Other controls", 260);
|
||||
}
|
||||
|
||||
@ -1845,7 +1822,7 @@ struct Screen* OtherKeyBindingsScreen_MakeInstance(void) {
|
||||
*#########################################################################################################################*/
|
||||
static void MouseKeyBindingsScreen_ContextRecreated(void* screen) {
|
||||
const static String msg = String_FromConst("&eRight click to remove the key binding");
|
||||
struct KeyBindingsScreen* s = screen;
|
||||
struct KeyBindingsScreen* s = (struct KeyBindingsScreen*)screen;
|
||||
static struct TextWidget text;
|
||||
|
||||
int i = KeyBindingsScreen_MakeWidgets(s, -40, 10, -1, "Mouse key bindings", 260);
|
||||
@ -1962,14 +1939,14 @@ static void MenuOptionsScreen_EnterInput(struct MenuOptionsScreen* s) {
|
||||
}
|
||||
|
||||
static void MenuOptionsScreen_Init(void* screen) {
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
MenuScreen_Init(s);
|
||||
s->SelectedI = -1;
|
||||
}
|
||||
|
||||
#define EXTHELP_PAD 5 /* padding around extended help box */
|
||||
static void MenuOptionsScreen_Render(void* screen, double delta) {
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
struct TextGroupWidget* w;
|
||||
PackedCol tableCol = PACKEDCOL_CONST(20, 20, 20, 200);
|
||||
|
||||
@ -1985,33 +1962,28 @@ static void MenuOptionsScreen_Render(void* screen, double delta) {
|
||||
Gfx_SetTexturing(false);
|
||||
}
|
||||
|
||||
static void MenuOptionsScreen_Free(void* screen) {
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
MenuScreen_Free(s);
|
||||
}
|
||||
|
||||
static void MenuOptionsScreen_OnResize(void* screen) {
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
Menu_OnResize(s);
|
||||
if (!s->ExtHelp.LinesCount) return;
|
||||
MenuOptionsScreen_RepositionExtHelp(s);
|
||||
}
|
||||
|
||||
static void MenuOptionsScreen_ContextLost(void* screen) {
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
Menu_ContextLost(s);
|
||||
s->ActiveI = -1;
|
||||
MenuOptionsScreen_FreeExtHelp(s);
|
||||
}
|
||||
|
||||
static bool MenuOptionsScreen_KeyPress(void* screen, char keyChar) {
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
if (s->ActiveI == -1) return true;
|
||||
return Elem_HandlesKeyPress(&s->Input.Base, keyChar);
|
||||
}
|
||||
|
||||
static bool MenuOptionsScreen_KeyDown(void* screen, Key key, bool was) {
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
if (s->ActiveI >= 0) {
|
||||
if (Elem_HandlesKeyDown(&s->Input.Base, key, was)) return true;
|
||||
|
||||
@ -2023,13 +1995,13 @@ static bool MenuOptionsScreen_KeyDown(void* screen, Key key, bool was) {
|
||||
}
|
||||
|
||||
static bool MenuOptionsScreen_KeyUp(void* screen, Key key) {
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
if (s->ActiveI == -1) return true;
|
||||
return Elem_HandlesKeyUp(&s->Input.Base, key);
|
||||
}
|
||||
|
||||
static bool MenuOptionsScreen_MouseMove(void* screen, int x, int y) {
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
int i = Menu_DoMouseMove(s, x, y);
|
||||
if (i == -1 || i == s->SelectedI) return true;
|
||||
if (!s->Descriptions || i >= s->DescriptionsCount) return true;
|
||||
@ -2064,12 +2036,12 @@ static void MenuOptionsScreen_MakeButtons(struct MenuOptionsScreen* s, const str
|
||||
}
|
||||
|
||||
static void MenuOptionsScreen_OK(void* screen, void* widget) {
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
MenuOptionsScreen_EnterInput(s);
|
||||
}
|
||||
|
||||
static void MenuOptionsScreen_Default(void* screen, void* widget) {
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
String text = String_FromReadonly(s->DefaultValues[s->ActiveI]);
|
||||
InputWidget_Clear(&s->Input.Base);
|
||||
InputWidget_AppendString(&s->Input.Base, &text);
|
||||
@ -2077,7 +2049,7 @@ static void MenuOptionsScreen_Default(void* screen, void* widget) {
|
||||
|
||||
static void MenuOptionsScreen_Bool(void* screen, void* widget) {
|
||||
String value; char valueBuffer[STRING_SIZE];
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
struct ButtonWidget* btn = widget;
|
||||
int index;
|
||||
bool isOn;
|
||||
@ -2094,7 +2066,7 @@ static void MenuOptionsScreen_Bool(void* screen, void* widget) {
|
||||
|
||||
static void MenuOptionsScreen_Enum(void* screen, void* widget) {
|
||||
String value; char valueBuffer[STRING_SIZE];
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
struct ButtonWidget* btn = widget;
|
||||
int index;
|
||||
struct MenuInputValidator* v;
|
||||
@ -2120,7 +2092,7 @@ static void MenuOptionsScreen_Input(void* screen, void* widget) {
|
||||
const static String def = String_FromConst("Default value");
|
||||
String value; char valueBuffer[STRING_SIZE];
|
||||
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
struct ButtonWidget* btn = widget;
|
||||
int i;
|
||||
|
||||
@ -2141,7 +2113,7 @@ static void MenuOptionsScreen_Input(void* screen, void* widget) {
|
||||
}
|
||||
|
||||
static struct ScreenVTABLE MenuOptionsScreen_VTABLE = {
|
||||
MenuOptionsScreen_Init, MenuOptionsScreen_Render, MenuOptionsScreen_Free, Gui_DefaultRecreate,
|
||||
MenuOptionsScreen_Init, MenuOptionsScreen_Render, MenuScreen_Free, Gui_DefaultRecreate,
|
||||
MenuOptionsScreen_KeyDown, MenuOptionsScreen_KeyUp, MenuOptionsScreen_KeyPress,
|
||||
Menu_MouseDown, Menu_MouseUp, MenuOptionsScreen_MouseMove, MenuScreen_MouseScroll,
|
||||
MenuOptionsScreen_OnResize, MenuOptionsScreen_ContextLost, NULL,
|
||||
@ -2228,7 +2200,7 @@ static void ClassicOptionsScreen_SetHacks(const String* v) {
|
||||
|
||||
static void ClassicOptionsScreen_ContextRecreated(void* screen) {
|
||||
const static String title = String_FromConst("Controls...");
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
|
||||
const static struct MenuOptionDesc buttons[9] = {
|
||||
{ -1, -150, "Music", MenuOptionsScreen_Bool,
|
||||
@ -2312,7 +2284,7 @@ static void EnvSettingsScreen_GetEdgeHeight(String* v) { String_AppendInt(v, Env
|
||||
static void EnvSettingsScreen_SetEdgeHeight(const String* v) { Env_SetEdgeHeight(Menu_Int(v)); }
|
||||
|
||||
static void EnvSettingsScreen_ContextRecreated(void* screen) {
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
struct Widget** widgets = s->Widgets;
|
||||
|
||||
const static struct MenuOptionDesc buttons[10] = {
|
||||
@ -2427,7 +2399,7 @@ static void GraphicsOptionsScreen_SetMipmaps(const String* v) {
|
||||
}
|
||||
|
||||
static void GraphicsOptionsScreen_ContextRecreated(void* screen) {
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
struct Widget** widgets = s->Widgets;
|
||||
|
||||
const static struct MenuOptionDesc buttons[6] = {
|
||||
@ -2534,7 +2506,7 @@ static void GuiOptionsScreen_SetUseFont(const String* v) {
|
||||
}
|
||||
|
||||
static void GuiOptionsScreen_ContextRecreated(void* screen) {
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
struct Widget** widgets = s->Widgets;
|
||||
|
||||
const static struct MenuOptionDesc buttons[10] = {
|
||||
@ -2658,7 +2630,7 @@ static void HacksSettingsScreen_SetFOV(const String* v) {
|
||||
}
|
||||
|
||||
static void HacksSettingsScreen_CheckHacksAllowed(void* screen) {
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
struct Widget** widgets = s->Widgets;
|
||||
struct LocalPlayer* p;
|
||||
bool disabled;
|
||||
@ -2678,13 +2650,13 @@ static void HacksSettingsScreen_CheckHacksAllowed(void* screen) {
|
||||
}
|
||||
|
||||
static void HacksSettingsScreen_ContextLost(void* screen) {
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
MenuOptionsScreen_ContextLost(s);
|
||||
Event_UnregisterVoid(&UserEvents.HackPermissionsChanged, s, HacksSettingsScreen_CheckHacksAllowed);
|
||||
}
|
||||
|
||||
static void HacksSettingsScreen_ContextRecreated(void* screen) {
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
struct Widget** widgets = s->Widgets;
|
||||
Event_RegisterVoid(&UserEvents.HackPermissionsChanged, s, HacksSettingsScreen_CheckHacksAllowed);
|
||||
|
||||
@ -2787,7 +2759,7 @@ static void MiscOptionsScreen_SetSensitivity(const String* v) {
|
||||
}
|
||||
|
||||
static void MiscOptionsScreen_ContextRecreated(void* screen) {
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
struct Widget** widgets = s->Widgets;
|
||||
|
||||
const static struct MenuOptionDesc buttons[8] = {
|
||||
@ -2875,7 +2847,7 @@ static void NostalgiaScreen_SwitchBack(void* a, void* b) {
|
||||
|
||||
static void NostalgiaScreen_ContextRecreated(void* screen) {
|
||||
const static String descText = String_FromConst("&eButtons on the right require restarting game");
|
||||
struct MenuOptionsScreen* s = screen;
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
static struct TextWidget desc;
|
||||
|
||||
const static struct MenuOptionDesc buttons[8] = {
|
||||
@ -2967,7 +2939,7 @@ static bool WarningOverlay_IsAlways(void* screen, void* w) { return Menu_Index(s
|
||||
#define TEXID_OVERLAY_VERTICES_COUNT (TEXID_OVERLAY_MAX_PER_PAGE * 4)
|
||||
static struct TexIdsOverlay TexIdsOverlay_Instance;
|
||||
static void TexIdsOverlay_ContextLost(void* screen) {
|
||||
struct TexIdsOverlay* s = screen;
|
||||
struct TexIdsOverlay* s = (struct TexIdsOverlay*)screen;
|
||||
Menu_ContextLost(s);
|
||||
Gfx_DeleteVb(&s->DynamicVb);
|
||||
TextAtlas_Free(&s->IdAtlas);
|
||||
@ -2977,7 +2949,7 @@ static void TexIdsOverlay_ContextRecreated(void* screen) {
|
||||
const static String chars = String_FromConst("0123456789");
|
||||
const static String prefix = String_FromConst("f");
|
||||
const static String title = String_FromConst("Texture ID reference sheet");
|
||||
struct TexIdsOverlay* s = screen;
|
||||
struct TexIdsOverlay* s = (struct TexIdsOverlay*)screen;
|
||||
int size;
|
||||
|
||||
size = Game.Height / ATLAS2D_TILES_PER_ROW;
|
||||
@ -3057,13 +3029,13 @@ static void TexIdsOverlay_RenderTextOverlay(struct TexIdsOverlay* s) {
|
||||
}
|
||||
|
||||
static void TexIdsOverlay_Init(void* screen) {
|
||||
struct TexIdsOverlay* s = screen;
|
||||
struct TexIdsOverlay* s = (struct TexIdsOverlay*)screen;
|
||||
Drawer2D_MakeFont(&s->TextFont, 8, FONT_STYLE_NORMAL);
|
||||
MenuScreen_Init(s);
|
||||
}
|
||||
|
||||
static void TexIdsOverlay_Render(void* screen, double delta) {
|
||||
struct TexIdsOverlay* s = screen;
|
||||
struct TexIdsOverlay* s = (struct TexIdsOverlay*)screen;
|
||||
int rows, origXOffset;
|
||||
|
||||
Menu_RenderBounds();
|
||||
@ -3087,7 +3059,7 @@ static void TexIdsOverlay_Render(void* screen, double delta) {
|
||||
}
|
||||
|
||||
static bool TexIdsOverlay_KeyDown(void* screen, Key key, bool was) {
|
||||
struct Screen* s = screen;
|
||||
struct Screen* s = (struct Screen*)screen;
|
||||
if (key == KeyBinds[KEYBIND_IDOVERLAY]) { Elem_Free(s); return true; }
|
||||
|
||||
/* allow user to chat when tex ids overlay is active */
|
||||
@ -3130,13 +3102,13 @@ struct Screen* TexIdsOverlay_MakeInstance(void) {
|
||||
*#########################################################################################################################*/
|
||||
static struct UrlWarningOverlay UrlWarningOverlay_Instance;
|
||||
static void UrlWarningOverlay_OpenUrl(void* screen, void* b) {
|
||||
struct UrlWarningOverlay* s = screen;
|
||||
struct UrlWarningOverlay* s = (struct UrlWarningOverlay*)screen;
|
||||
Process_StartOpen(&s->Url);
|
||||
Elem_Free(s);
|
||||
}
|
||||
|
||||
static void UrlWarningOverlay_AppendUrl(void* screen, void* b) {
|
||||
struct UrlWarningOverlay* s = screen;
|
||||
struct UrlWarningOverlay* s = (struct UrlWarningOverlay*)screen;
|
||||
if (Gui_ClickableChat) { HUDScreen_AppendInput(Gui_HUD, &s->Url); }
|
||||
Elem_Free(s);
|
||||
}
|
||||
@ -3149,7 +3121,7 @@ static void UrlWarningOverlay_ContextRecreated(void* screen) {
|
||||
String_FromConst(" have viruses, or things you may not want to open/see."),
|
||||
};
|
||||
|
||||
struct UrlWarningOverlay* s = screen;
|
||||
struct UrlWarningOverlay* s = (struct UrlWarningOverlay*)screen;
|
||||
lines[1] = s->Url;
|
||||
Overlay_MakeLabels(s, s->Labels, lines);
|
||||
|
||||
@ -3185,7 +3157,7 @@ struct Screen* UrlWarningOverlay_MakeInstance(const String* url) {
|
||||
*#########################################################################################################################*/
|
||||
static struct TexPackOverlay TexPackOverlay_Instance;
|
||||
static void TexPackOverlay_YesClick(void* screen, void* widget) {
|
||||
struct TexPackOverlay* s = screen;
|
||||
struct TexPackOverlay* s = (struct TexPackOverlay*)screen;
|
||||
String url = String_UNSAFE_SubstringAt(&s->Identifier, 3);
|
||||
|
||||
Server_DownloadTexturePack(&url);
|
||||
@ -3194,7 +3166,7 @@ static void TexPackOverlay_YesClick(void* screen, void* widget) {
|
||||
}
|
||||
|
||||
static void TexPackOverlay_NoClick(void* screen, void* widget) {
|
||||
struct TexPackOverlay* s = screen;
|
||||
struct TexPackOverlay* s = (struct TexPackOverlay*)screen;
|
||||
s->AlwaysDeny = WarningOverlay_IsAlways(s, widget);
|
||||
s->ShowingDeny = true;
|
||||
|
||||
@ -3203,7 +3175,7 @@ static void TexPackOverlay_NoClick(void* screen, void* widget) {
|
||||
}
|
||||
|
||||
static void TexPackOverlay_ConfirmNoClick(void* screen, void* b) {
|
||||
struct TexPackOverlay* s = screen;
|
||||
struct TexPackOverlay* s = (struct TexPackOverlay*)screen;
|
||||
String url;
|
||||
|
||||
url = String_UNSAFE_SubstringAt(&s->Identifier, 3);
|
||||
@ -3212,7 +3184,7 @@ static void TexPackOverlay_ConfirmNoClick(void* screen, void* b) {
|
||||
}
|
||||
|
||||
static void TexPackOverlay_GoBackClick(void* screen, void* b) {
|
||||
struct TexPackOverlay* s = screen;
|
||||
struct TexPackOverlay* s = (struct TexPackOverlay*)screen;
|
||||
s->ShowingDeny = false;
|
||||
|
||||
s->VTABLE->ContextLost(s);
|
||||
@ -3220,8 +3192,8 @@ static void TexPackOverlay_GoBackClick(void* screen, void* b) {
|
||||
}
|
||||
|
||||
static void TexPackOverlay_Render(void* screen, double delta) {
|
||||
struct TexPackOverlay* s = (struct TexPackOverlay*)screen;
|
||||
struct HttpRequest item;
|
||||
struct TexPackOverlay* s = screen;
|
||||
|
||||
MenuScreen_Render(s, delta);
|
||||
if (!Http_GetResult(&s->Identifier, &item)) return;
|
||||
@ -3285,7 +3257,7 @@ static void TexPackOverlay_MakeDenyElements(struct TexPackOverlay* s) {
|
||||
}
|
||||
|
||||
static void TexPackOverlay_ContextRecreated(void* screen) {
|
||||
struct TexPackOverlay* s = screen;
|
||||
struct TexPackOverlay* s = (struct TexPackOverlay*)screen;
|
||||
if (s->ShowingDeny) {
|
||||
TexPackOverlay_MakeDenyElements(s);
|
||||
} else {
|
||||
|
116
src/Screens.c
116
src/Screens.c
@ -108,17 +108,17 @@ static bool Screen_MouseMove(void* elem, int x, int y) { return false; }
|
||||
*#########################################################################################################################*/
|
||||
static struct InventoryScreen InventoryScreen_Instance;
|
||||
static void InventoryScreen_OnBlockChanged(void* screen) {
|
||||
struct InventoryScreen* s = screen;
|
||||
struct InventoryScreen* s = (struct InventoryScreen*)screen;
|
||||
TableWidget_OnInventoryChanged(&s->Table);
|
||||
}
|
||||
|
||||
static void InventoryScreen_ContextLost(void* screen) {
|
||||
struct InventoryScreen* s = screen;
|
||||
struct InventoryScreen* s = (struct InventoryScreen*)screen;
|
||||
Elem_TryFree(&s->Table);
|
||||
}
|
||||
|
||||
static void InventoryScreen_ContextRecreated(void* screen) {
|
||||
struct InventoryScreen* s = screen;
|
||||
struct InventoryScreen* s = (struct InventoryScreen*)screen;
|
||||
Elem_Recreate(&s->Table);
|
||||
}
|
||||
|
||||
@ -135,7 +135,7 @@ static void InventoryScreen_MoveToSelected(struct InventoryScreen* s) {
|
||||
}
|
||||
|
||||
static void InventoryScreen_Init(void* screen) {
|
||||
struct InventoryScreen* s = screen;
|
||||
struct InventoryScreen* s = (struct InventoryScreen*)screen;
|
||||
Drawer2D_MakeFont(&s->Font, 16, FONT_STYLE_NORMAL);
|
||||
|
||||
TableWidget_Create(&s->Table);
|
||||
@ -154,18 +154,18 @@ static void InventoryScreen_Init(void* screen) {
|
||||
}
|
||||
|
||||
static void InventoryScreen_Render(void* screen, double delta) {
|
||||
struct InventoryScreen* s = screen;
|
||||
struct InventoryScreen* s = (struct InventoryScreen*)screen;
|
||||
if (s->DeferredSelect) InventoryScreen_MoveToSelected(s);
|
||||
Elem_Render(&s->Table, delta);
|
||||
}
|
||||
|
||||
static void InventoryScreen_OnResize(void* screen) {
|
||||
struct InventoryScreen* s = screen;
|
||||
struct InventoryScreen* s = (struct InventoryScreen*)screen;
|
||||
Widget_Reposition(&s->Table);
|
||||
}
|
||||
|
||||
static void InventoryScreen_Free(void* screen) {
|
||||
struct InventoryScreen* s = screen;
|
||||
struct InventoryScreen* s = (struct InventoryScreen*)screen;
|
||||
Font_Free(&s->Font);
|
||||
Screen_CommonFree(s);
|
||||
|
||||
@ -174,7 +174,7 @@ static void InventoryScreen_Free(void* screen) {
|
||||
}
|
||||
|
||||
static bool InventoryScreen_KeyDown(void* screen, Key key, bool was) {
|
||||
struct InventoryScreen* s = screen;
|
||||
struct InventoryScreen* s = (struct InventoryScreen*)screen;
|
||||
struct TableWidget* table = &s->Table;
|
||||
|
||||
if (key == KeyBinds[KEYBIND_INVENTORY] && s->ReleasedInv) {
|
||||
@ -192,7 +192,7 @@ static bool InventoryScreen_KeyDown(void* screen, Key key, bool was) {
|
||||
|
||||
static bool InventoryScreen_KeyPress(void* elem, char keyChar) { return true; }
|
||||
static bool InventoryScreen_KeyUp(void* screen, Key key) {
|
||||
struct InventoryScreen* s = screen;
|
||||
struct InventoryScreen* s = (struct InventoryScreen*)screen;
|
||||
struct HUDScreen* hud;
|
||||
|
||||
if (key == KeyBinds[KEYBIND_INVENTORY]) {
|
||||
@ -204,7 +204,7 @@ static bool InventoryScreen_KeyUp(void* screen, Key key) {
|
||||
}
|
||||
|
||||
static bool InventoryScreen_MouseDown(void* screen, int x, int y, MouseButton btn) {
|
||||
struct InventoryScreen* s = screen;
|
||||
struct InventoryScreen* s = (struct InventoryScreen*)screen;
|
||||
struct TableWidget* table = &s->Table;
|
||||
struct HUDScreen* hud = (struct HUDScreen*)Gui_HUD;
|
||||
bool handled, hotbar;
|
||||
@ -220,19 +220,19 @@ static bool InventoryScreen_MouseDown(void* screen, int x, int y, MouseButton bt
|
||||
}
|
||||
|
||||
static bool InventoryScreen_MouseUp(void* screen, int x, int y, MouseButton btn) {
|
||||
struct InventoryScreen* s = screen;
|
||||
struct InventoryScreen* s = (struct InventoryScreen*)screen;
|
||||
struct TableWidget* table = &s->Table;
|
||||
return Elem_HandlesMouseUp(table, x, y, btn);
|
||||
}
|
||||
|
||||
static bool InventoryScreen_MouseMove(void* screen, int x, int y) {
|
||||
struct InventoryScreen* s = screen;
|
||||
struct InventoryScreen* s = (struct InventoryScreen*)screen;
|
||||
struct TableWidget* table = &s->Table;
|
||||
return Elem_HandlesMouseMove(table, x, y);
|
||||
}
|
||||
|
||||
static bool InventoryScreen_MouseScroll(void* screen, float delta) {
|
||||
struct InventoryScreen* s = screen;
|
||||
struct InventoryScreen* s = (struct InventoryScreen*)screen;
|
||||
struct TableWidget* table = &s->Table;
|
||||
|
||||
bool hotbar = Key_IsAltPressed() || Key_IsControlPressed() || Key_IsShiftPressed();
|
||||
@ -360,7 +360,7 @@ static void StatusScreen_Update(struct StatusScreen* s, double delta) {
|
||||
|
||||
static void StatusScreen_OnResize(void* screen) { }
|
||||
static void StatusScreen_ContextLost(void* screen) {
|
||||
struct StatusScreen* s = screen;
|
||||
struct StatusScreen* s = (struct StatusScreen*)screen;
|
||||
TextAtlas_Free(&s->PosAtlas);
|
||||
Elem_TryFree(&s->Line1);
|
||||
Elem_TryFree(&s->Line2);
|
||||
@ -371,7 +371,7 @@ static void StatusScreen_ContextRecreated(void* screen) {
|
||||
const static String prefix = String_FromConst("Position: ");
|
||||
const static String version = String_FromConst("0.30");
|
||||
|
||||
struct StatusScreen* s = screen;
|
||||
struct StatusScreen* s = (struct StatusScreen*)screen;
|
||||
struct TextWidget* line1 = &s->Line1;
|
||||
struct TextWidget* line2 = &s->Line2;
|
||||
int y;
|
||||
@ -410,13 +410,13 @@ static bool StatusScreen_KeyPress(void* elem, char keyChar) { return false; }
|
||||
static bool StatusScreen_MouseScroll(void* elem, float delta) { return false; }
|
||||
|
||||
static void StatusScreen_Init(void* screen) {
|
||||
struct StatusScreen* s = screen;
|
||||
struct StatusScreen* s = (struct StatusScreen*)screen;
|
||||
Drawer2D_MakeFont(&s->Font, 16, FONT_STYLE_NORMAL);
|
||||
Screen_CommonInit(s);
|
||||
}
|
||||
|
||||
static void StatusScreen_Render(void* screen, double delta) {
|
||||
struct StatusScreen* s = screen;
|
||||
struct StatusScreen* s = (struct StatusScreen*)screen;
|
||||
StatusScreen_Update(s, delta);
|
||||
if (Game_HideGui) return;
|
||||
|
||||
@ -435,7 +435,7 @@ static void StatusScreen_Render(void* screen, double delta) {
|
||||
}
|
||||
|
||||
static void StatusScreen_Free(void* screen) {
|
||||
struct StatusScreen* s = screen;
|
||||
struct StatusScreen* s = (struct StatusScreen*)screen;
|
||||
Font_Free(&s->Font);
|
||||
Screen_CommonFree(s);
|
||||
}
|
||||
@ -472,24 +472,24 @@ static void LoadingScreen_SetMessage(struct LoadingScreen* s) {
|
||||
}
|
||||
|
||||
static void LoadingScreen_MapLoading(void* screen, float progress) {
|
||||
struct LoadingScreen* s = screen;
|
||||
struct LoadingScreen* s = (struct LoadingScreen*)screen;
|
||||
s->Progress = progress;
|
||||
}
|
||||
|
||||
static void LoadingScreen_OnResize(void* screen) {
|
||||
struct LoadingScreen* s = screen;
|
||||
struct LoadingScreen* s = (struct LoadingScreen*)screen;
|
||||
Widget_Reposition(&s->Title);
|
||||
Widget_Reposition(&s->Message);
|
||||
}
|
||||
|
||||
static void LoadingScreen_ContextLost(void* screen) {
|
||||
struct LoadingScreen* s = screen;
|
||||
struct LoadingScreen* s = (struct LoadingScreen*)screen;
|
||||
Elem_TryFree(&s->Title);
|
||||
Elem_TryFree(&s->Message);
|
||||
}
|
||||
|
||||
static void LoadingScreen_ContextRecreated(void* screen) {
|
||||
struct LoadingScreen* s = screen;
|
||||
struct LoadingScreen* s = (struct LoadingScreen*)screen;
|
||||
LoadingScreen_SetTitle(s);
|
||||
LoadingScreen_SetMessage(s);
|
||||
}
|
||||
@ -561,7 +561,7 @@ static void LoadingScreen_DrawBackground(void) {
|
||||
}
|
||||
|
||||
static void LoadingScreen_Init(void* screen) {
|
||||
struct LoadingScreen* s = screen;
|
||||
struct LoadingScreen* s = (struct LoadingScreen*)screen;
|
||||
Drawer2D_MakeFont(&s->Font, 16, FONT_STYLE_NORMAL);
|
||||
Screen_CommonInit(s);
|
||||
|
||||
@ -572,7 +572,7 @@ static void LoadingScreen_Init(void* screen) {
|
||||
#define PROG_BAR_WIDTH 200
|
||||
#define PROG_BAR_HEIGHT 4
|
||||
static void LoadingScreen_Render(void* screen, double delta) {
|
||||
struct LoadingScreen* s = screen;
|
||||
struct LoadingScreen* s = (struct LoadingScreen*)screen;
|
||||
PackedCol backCol = PACKEDCOL_CONST(128, 128, 128, 255);
|
||||
PackedCol progCol = PACKEDCOL_CONST(128, 255, 128, 255);
|
||||
int progWidth;
|
||||
@ -594,7 +594,7 @@ static void LoadingScreen_Render(void* screen, double delta) {
|
||||
}
|
||||
|
||||
static void LoadingScreen_Free(void* screen) {
|
||||
struct LoadingScreen* s = screen;
|
||||
struct LoadingScreen* s = (struct LoadingScreen*)screen;
|
||||
Font_Free(&s->Font);
|
||||
Screen_CommonFree(s);
|
||||
Event_UnregisterFloat(&WorldEvents.Loading, s, LoadingScreen_MapLoading);
|
||||
@ -663,7 +663,7 @@ static void GeneratingScreen_EndGeneration(void) {
|
||||
}
|
||||
|
||||
static void GeneratingScreen_Render(void* screen, double delta) {
|
||||
struct LoadingScreen* s = screen;
|
||||
struct LoadingScreen* s = (struct LoadingScreen*)screen;
|
||||
const volatile char* state;
|
||||
|
||||
LoadingScreen_Render(s, delta);
|
||||
@ -923,7 +923,7 @@ static void ChatScreen_EnterInput(struct ChatScreen* s, bool close) {
|
||||
|
||||
static bool ChatScreen_KeyDown(void* screen, Key key, bool was) {
|
||||
const static String slash = String_FromConst("/");
|
||||
struct ChatScreen* s = screen;
|
||||
struct ChatScreen* s = (struct ChatScreen*)screen;
|
||||
s->SuppressNextPress = false;
|
||||
|
||||
/* Handle text input bar */
|
||||
@ -958,7 +958,7 @@ static bool ChatScreen_KeyDown(void* screen, Key key, bool was) {
|
||||
}
|
||||
|
||||
static bool ChatScreen_KeyUp(void* screen, Key key) {
|
||||
struct ChatScreen* s = screen;
|
||||
struct ChatScreen* s = (struct ChatScreen*)screen;
|
||||
if (!s->HandlesAllInput) return false;
|
||||
|
||||
#ifdef CC_BUILD_WEB
|
||||
@ -974,7 +974,7 @@ static bool ChatScreen_KeyUp(void* screen, Key key) {
|
||||
}
|
||||
|
||||
static bool ChatScreen_KeyPress(void* screen, char keyChar) {
|
||||
struct ChatScreen* s = screen;
|
||||
struct ChatScreen* s = (struct ChatScreen*)screen;
|
||||
bool handled;
|
||||
if (!s->HandlesAllInput) return false;
|
||||
|
||||
@ -989,7 +989,7 @@ static bool ChatScreen_KeyPress(void* screen, char keyChar) {
|
||||
}
|
||||
|
||||
static bool ChatScreen_MouseScroll(void* screen, float delta) {
|
||||
struct ChatScreen* s = screen;
|
||||
struct ChatScreen* s = (struct ChatScreen*)screen;
|
||||
int steps;
|
||||
if (!s->HandlesAllInput) return false;
|
||||
|
||||
@ -1000,7 +1000,7 @@ static bool ChatScreen_MouseScroll(void* screen, float delta) {
|
||||
|
||||
static bool ChatScreen_MouseDown(void* screen, int x, int y, MouseButton btn) {
|
||||
String text; char textBuffer[STRING_SIZE * 4];
|
||||
struct ChatScreen* s = screen;
|
||||
struct ChatScreen* s = (struct ChatScreen*)screen;
|
||||
int height, chatY;
|
||||
if (!s->HandlesAllInput || Game_HideGui) return false;
|
||||
|
||||
@ -1031,7 +1031,7 @@ static bool ChatScreen_MouseDown(void* screen, int x, int y, MouseButton btn) {
|
||||
}
|
||||
|
||||
static void ChatScreen_ColCodeChanged(void* screen, int code) {
|
||||
struct ChatScreen* s = screen;
|
||||
struct ChatScreen* s = (struct ChatScreen*)screen;
|
||||
double caretAcc;
|
||||
if (Gfx.LostContext) return;
|
||||
|
||||
@ -1049,7 +1049,7 @@ static void ChatScreen_ColCodeChanged(void* screen, int code) {
|
||||
}
|
||||
|
||||
static void ChatScreen_ChatReceived(void* screen, const String* msg, int type) {
|
||||
struct ChatScreen* s = screen;
|
||||
struct ChatScreen* s = (struct ChatScreen*)screen;
|
||||
String chatMsg;
|
||||
int i;
|
||||
if (Gfx.LostContext) return;
|
||||
@ -1076,7 +1076,7 @@ static void ChatScreen_ChatReceived(void* screen, const String* msg, int type) {
|
||||
}
|
||||
|
||||
static void ChatScreen_ContextLost(void* screen) {
|
||||
struct ChatScreen* s = screen;
|
||||
struct ChatScreen* s = (struct ChatScreen*)screen;
|
||||
if (s->HandlesAllInput) {
|
||||
String_Copy(&ChatScreen_InputStr, &s->Input.Base.Text);
|
||||
Camera_CheckFocus();
|
||||
@ -1092,21 +1092,21 @@ static void ChatScreen_ContextLost(void* screen) {
|
||||
}
|
||||
|
||||
static void ChatScreen_ContextRecreated(void* screen) {
|
||||
struct ChatScreen* s = screen;
|
||||
struct ChatScreen* s = (struct ChatScreen*)screen;
|
||||
ChatScreen_ConstructWidgets(s);
|
||||
ChatScreen_SetInitialMessages(s);
|
||||
ChatScreen_UpdateChatYOffset(s, true);
|
||||
}
|
||||
|
||||
static void ChatScreen_OnResize(void* screen) {
|
||||
struct ChatScreen* s = screen;
|
||||
struct ChatScreen* s = (struct ChatScreen*)screen;
|
||||
bool active = s->AltText.Active;
|
||||
Elem_Recreate(s);
|
||||
SpecialInputWidget_SetActive(&s->AltText, active);
|
||||
}
|
||||
|
||||
static void ChatScreen_Init(void* screen) {
|
||||
struct ChatScreen* s = screen;
|
||||
struct ChatScreen* s = (struct ChatScreen*)screen;
|
||||
int fontSize, largeSize;
|
||||
|
||||
fontSize = (int)(8 * Game_GetChatScale());
|
||||
@ -1123,7 +1123,7 @@ static void ChatScreen_Init(void* screen) {
|
||||
}
|
||||
|
||||
static void ChatScreen_Render(void* screen, double delta) {
|
||||
struct ChatScreen* s = screen;
|
||||
struct ChatScreen* s = (struct ChatScreen*)screen;
|
||||
struct Texture tex;
|
||||
TimeMS now;
|
||||
int i, y, logIdx;
|
||||
@ -1171,7 +1171,7 @@ static void ChatScreen_Render(void* screen, double delta) {
|
||||
}
|
||||
|
||||
static void ChatScreen_Free(void* screen) {
|
||||
struct ChatScreen* s = screen;
|
||||
struct ChatScreen* s = (struct ChatScreen*)screen;
|
||||
Font_Free(&s->ChatFont);
|
||||
Font_Free(&s->AnnouncementFont);
|
||||
Screen_CommonFree(s);
|
||||
@ -1218,7 +1218,7 @@ static void HUDScreen_DrawCrosshairs(void) {
|
||||
}
|
||||
|
||||
static void HUDScreen_ContextLost(void* screen) {
|
||||
struct HUDScreen* s = screen;
|
||||
struct HUDScreen* s = (struct HUDScreen*)screen;
|
||||
Elem_TryFree(&s->Hotbar);
|
||||
|
||||
s->WasShowingList = s->ShowingList;
|
||||
@ -1227,7 +1227,7 @@ static void HUDScreen_ContextLost(void* screen) {
|
||||
}
|
||||
|
||||
static void HUDScreen_ContextRecreated(void* screen) {
|
||||
struct HUDScreen* s = screen;
|
||||
struct HUDScreen* s = (struct HUDScreen*)screen;
|
||||
bool extended;
|
||||
|
||||
Elem_TryFree(&s->Hotbar);
|
||||
@ -1243,7 +1243,7 @@ static void HUDScreen_ContextRecreated(void* screen) {
|
||||
}
|
||||
|
||||
static void HUDScreen_OnResize(void* screen) {
|
||||
struct HUDScreen* s = screen;
|
||||
struct HUDScreen* s = (struct HUDScreen*)screen;
|
||||
Screen_OnResize(s->Chat);
|
||||
|
||||
Widget_Reposition(&s->Hotbar);
|
||||
@ -1251,12 +1251,12 @@ static void HUDScreen_OnResize(void* screen) {
|
||||
}
|
||||
|
||||
static bool HUDScreen_KeyPress(void* screen, char keyChar) {
|
||||
struct HUDScreen* s = screen;
|
||||
struct HUDScreen* s = (struct HUDScreen*)screen;
|
||||
return Elem_HandlesKeyPress(s->Chat, keyChar);
|
||||
}
|
||||
|
||||
static bool HUDScreen_KeyDown(void* screen, Key key, bool was) {
|
||||
struct HUDScreen* s = screen;
|
||||
struct HUDScreen* s = (struct HUDScreen*)screen;
|
||||
Key playerListKey = KeyBinds[KEYBIND_PLAYER_LIST];
|
||||
bool handles = playerListKey != KEY_TAB || !Gui_TabAutocomplete || !s->Chat->HandlesAllInput;
|
||||
|
||||
@ -1272,7 +1272,7 @@ static bool HUDScreen_KeyDown(void* screen, Key key, bool was) {
|
||||
}
|
||||
|
||||
static bool HUDScreen_KeyUp(void* screen, Key key) {
|
||||
struct HUDScreen* s = screen;
|
||||
struct HUDScreen* s = (struct HUDScreen*)screen;
|
||||
if (key == KeyBinds[KEYBIND_PLAYER_LIST] && s->ShowingList) {
|
||||
s->ShowingList = false;
|
||||
s->WasShowingList = false;
|
||||
@ -1284,13 +1284,13 @@ static bool HUDScreen_KeyUp(void* screen, Key key) {
|
||||
}
|
||||
|
||||
static bool HUDScreen_MouseScroll(void* screen, float delta) {
|
||||
struct HUDScreen* s = screen;
|
||||
struct HUDScreen* s = (struct HUDScreen*)screen;
|
||||
return Elem_HandlesMouseScroll(s->Chat, delta);
|
||||
}
|
||||
|
||||
static bool HUDScreen_MouseDown(void* screen, int x, int y, MouseButton btn) {
|
||||
String name; char nameBuffer[STRING_SIZE + 1];
|
||||
struct HUDScreen* s = screen;
|
||||
struct HUDScreen* s = (struct HUDScreen*)screen;
|
||||
struct ChatScreen* chat;
|
||||
|
||||
if (btn != MOUSE_LEFT || !s->HandlesAllInput) return false;
|
||||
@ -1307,7 +1307,7 @@ static bool HUDScreen_MouseDown(void* screen, int x, int y, MouseButton btn) {
|
||||
}
|
||||
|
||||
static void HUDScreen_Init(void* screen) {
|
||||
struct HUDScreen* s = screen;
|
||||
struct HUDScreen* s = (struct HUDScreen*)screen;
|
||||
int size = Drawer2D_BitmappedText ? 16 : 11;
|
||||
Drawer2D_MakeFont(&s->PlayerFont, size, FONT_STYLE_NORMAL);
|
||||
|
||||
@ -1321,7 +1321,7 @@ static void HUDScreen_Init(void* screen) {
|
||||
}
|
||||
|
||||
static void HUDScreen_Render(void* screen, double delta) {
|
||||
struct HUDScreen* s = screen;
|
||||
struct HUDScreen* s = (struct HUDScreen*)screen;
|
||||
struct ChatScreen* chat = (struct ChatScreen*)s->Chat;
|
||||
bool showMinimal;
|
||||
|
||||
@ -1359,7 +1359,7 @@ static void HUDScreen_Render(void* screen, double delta) {
|
||||
}
|
||||
|
||||
static void HUDScreen_Free(void* screen) {
|
||||
struct HUDScreen* s = screen;
|
||||
struct HUDScreen* s = (struct HUDScreen*)screen;
|
||||
Font_Free(&s->PlayerFont);
|
||||
Elem_TryFree(s->Chat);
|
||||
Screen_CommonFree(s);
|
||||
@ -1431,7 +1431,7 @@ static void DisconnectScreen_UpdateDelayLeft(struct DisconnectScreen* s, double
|
||||
}
|
||||
|
||||
static void DisconnectScreen_ContextLost(void* screen) {
|
||||
struct DisconnectScreen* s = screen;
|
||||
struct DisconnectScreen* s = (struct DisconnectScreen*)screen;
|
||||
Elem_TryFree(&s->Title);
|
||||
Elem_TryFree(&s->Message);
|
||||
Elem_TryFree(&s->Reconnect);
|
||||
@ -1439,7 +1439,7 @@ static void DisconnectScreen_ContextLost(void* screen) {
|
||||
|
||||
static void DisconnectScreen_ContextRecreated(void* screen) {
|
||||
String msg; char msgBuffer[STRING_SIZE];
|
||||
struct DisconnectScreen* s = screen;
|
||||
struct DisconnectScreen* s = (struct DisconnectScreen*)screen;
|
||||
|
||||
TextWidget_Create(&s->Title, &s->TitleStr, &s->TitleFont);
|
||||
Widget_SetLocation(&s->Title, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, -30);
|
||||
@ -1456,7 +1456,7 @@ static void DisconnectScreen_ContextRecreated(void* screen) {
|
||||
}
|
||||
|
||||
static void DisconnectScreen_Init(void* screen) {
|
||||
struct DisconnectScreen* s = screen;
|
||||
struct DisconnectScreen* s = (struct DisconnectScreen*)screen;
|
||||
Drawer2D_MakeFont(&s->TitleFont, 16, FONT_STYLE_BOLD);
|
||||
Drawer2D_MakeFont(&s->MessageFont, 16, FONT_STYLE_NORMAL);
|
||||
Screen_CommonInit(s);
|
||||
@ -1469,7 +1469,7 @@ static void DisconnectScreen_Init(void* screen) {
|
||||
}
|
||||
|
||||
static void DisconnectScreen_Render(void* screen, double delta) {
|
||||
struct DisconnectScreen* s = screen;
|
||||
struct DisconnectScreen* s = (struct DisconnectScreen*)screen;
|
||||
PackedCol top = PACKEDCOL_CONST(64, 32, 32, 255);
|
||||
PackedCol bottom = PACKEDCOL_CONST(80, 16, 16, 255);
|
||||
|
||||
@ -1485,7 +1485,7 @@ static void DisconnectScreen_Render(void* screen, double delta) {
|
||||
}
|
||||
|
||||
static void DisconnectScreen_Free(void* screen) {
|
||||
struct DisconnectScreen* s = screen;
|
||||
struct DisconnectScreen* s = (struct DisconnectScreen*)screen;
|
||||
Font_Free(&s->TitleFont);
|
||||
Font_Free(&s->MessageFont);
|
||||
Screen_CommonFree(s);
|
||||
@ -1493,7 +1493,7 @@ static void DisconnectScreen_Free(void* screen) {
|
||||
}
|
||||
|
||||
static void DisconnectScreen_OnResize(void* screen) {
|
||||
struct DisconnectScreen* s = screen;
|
||||
struct DisconnectScreen* s = (struct DisconnectScreen*)screen;
|
||||
Widget_Reposition(&s->Title);
|
||||
Widget_Reposition(&s->Message);
|
||||
Widget_Reposition(&s->Reconnect);
|
||||
@ -1504,7 +1504,7 @@ static bool DisconnectScreen_KeyPress(void* s, char keyChar) { return true; }
|
||||
static bool DisconnectScreen_KeyUp(void* s, Key key) { return true; }
|
||||
|
||||
static bool DisconnectScreen_MouseDown(void* screen, int x, int y, MouseButton btn) {
|
||||
struct DisconnectScreen* s = screen;
|
||||
struct DisconnectScreen* s = (struct DisconnectScreen*)screen;
|
||||
struct ButtonWidget* w = &s->Reconnect;
|
||||
|
||||
if (btn != MOUSE_LEFT) return true;
|
||||
@ -1513,7 +1513,7 @@ static bool DisconnectScreen_MouseDown(void* screen, int x, int y, MouseButton b
|
||||
}
|
||||
|
||||
static bool DisconnectScreen_MouseMove(void* screen, int x, int y) {
|
||||
struct DisconnectScreen* s = screen;
|
||||
struct DisconnectScreen* s = (struct DisconnectScreen*)screen;
|
||||
struct ButtonWidget* w = &s->Reconnect;
|
||||
|
||||
w->Active = !w->Disabled && Widget_Contains(w, x, y);
|
||||
|
113
src/Widgets.c
113
src/Widgets.c
@ -33,17 +33,17 @@ static bool Widget_MouseScroll(void* elem, float delta) { return false; }
|
||||
*-------------------------------------------------------TextWidget--------------------------------------------------------*
|
||||
*#########################################################################################################################*/
|
||||
static void TextWidget_Render(void* widget, double delta) {
|
||||
struct TextWidget* w = widget;
|
||||
struct TextWidget* w = (struct TextWidget*)widget;
|
||||
if (w->Texture.ID) { Texture_RenderShaded(&w->Texture, w->Col); }
|
||||
}
|
||||
|
||||
static void TextWidget_Free(void* widget) {
|
||||
struct TextWidget* w = widget;
|
||||
struct TextWidget* w = (struct TextWidget*)widget;
|
||||
Gfx_DeleteTexture(&w->Texture.ID);
|
||||
}
|
||||
|
||||
static void TextWidget_Reposition(void* widget) {
|
||||
struct TextWidget* w = widget;
|
||||
struct TextWidget* w = (struct TextWidget*)widget;
|
||||
int oldX = w->X, oldY = w->Y;
|
||||
|
||||
Widget_CalcPosition(w);
|
||||
@ -102,12 +102,12 @@ static struct Texture Button_SelectedTex = { GFX_NULL, Tex_Rect(0,0, 0,0), Widge
|
||||
static struct Texture Button_DisabledTex = { GFX_NULL, Tex_Rect(0,0, 0,0), Widget_UV(0,46, 200,66) };
|
||||
|
||||
static void ButtonWidget_Free(void* widget) {
|
||||
struct ButtonWidget* w = widget;
|
||||
struct ButtonWidget* w = (struct ButtonWidget*)widget;
|
||||
Gfx_DeleteTexture(&w->Texture.ID);
|
||||
}
|
||||
|
||||
static void ButtonWidget_Reposition(void* widget) {
|
||||
struct ButtonWidget* w = widget;
|
||||
struct ButtonWidget* w = (struct ButtonWidget*)widget;
|
||||
int oldX = w->X, oldY = w->Y;
|
||||
Widget_CalcPosition(w);
|
||||
|
||||
@ -120,7 +120,8 @@ static void ButtonWidget_Render(void* widget, double delta) {
|
||||
PackedCol activeCol = PACKEDCOL_CONST(255, 255, 160, 255);
|
||||
PackedCol disabledCol = PACKEDCOL_CONST(160, 160, 160, 255);
|
||||
PackedCol col, white = PACKEDCOL_WHITE;
|
||||
struct ButtonWidget* w = widget;
|
||||
|
||||
struct ButtonWidget* w = (struct ButtonWidget*)widget;
|
||||
struct Texture back;
|
||||
float scale;
|
||||
|
||||
@ -219,7 +220,7 @@ static void ScrollbarWidget_GetScrollbarCoords(struct ScrollbarWidget* w, int* y
|
||||
}
|
||||
|
||||
static void ScrollbarWidget_Render(void* widget, double delta) {
|
||||
struct ScrollbarWidget* w = widget;
|
||||
struct ScrollbarWidget* w = (struct ScrollbarWidget*)widget;
|
||||
int x, y, width, height;
|
||||
PackedCol barCol;
|
||||
bool hovered;
|
||||
@ -245,7 +246,7 @@ static void ScrollbarWidget_Render(void* widget, double delta) {
|
||||
}
|
||||
|
||||
static bool ScrollbarWidget_MouseDown(void* widget, int x, int y, MouseButton btn) {
|
||||
struct ScrollbarWidget* w = widget;
|
||||
struct ScrollbarWidget* w = (struct ScrollbarWidget*)widget;
|
||||
int posY, height;
|
||||
|
||||
if (w->DraggingMouse) return true;
|
||||
@ -268,14 +269,14 @@ static bool ScrollbarWidget_MouseDown(void* widget, int x, int y, MouseButton bt
|
||||
}
|
||||
|
||||
static bool ScrollbarWidget_MouseUp(void* widget, int x, int y, MouseButton btn) {
|
||||
struct ScrollbarWidget* w = widget;
|
||||
struct ScrollbarWidget* w = (struct ScrollbarWidget*)widget;
|
||||
w->DraggingMouse = false;
|
||||
w->MouseOffset = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool ScrollbarWidget_MouseScroll(void* widget, float delta) {
|
||||
struct ScrollbarWidget* w = widget;
|
||||
struct ScrollbarWidget* w = (struct ScrollbarWidget*)widget;
|
||||
int steps = Utils_AccumulateWheelDelta(&w->ScrollingAcc, delta);
|
||||
|
||||
w->TopRow -= steps;
|
||||
@ -284,7 +285,7 @@ static bool ScrollbarWidget_MouseScroll(void* widget, float delta) {
|
||||
}
|
||||
|
||||
static bool ScrollbarWidget_MouseMove(void* widget, int x, int y) {
|
||||
struct ScrollbarWidget* w = widget;
|
||||
struct ScrollbarWidget* w = (struct ScrollbarWidget*)widget;
|
||||
float scale;
|
||||
|
||||
if (w->DraggingMouse) {
|
||||
@ -384,8 +385,8 @@ static int HotbarWidget_ScrolledIndex(struct HotbarWidget* w, float delta, int i
|
||||
}
|
||||
|
||||
static void HotbarWidget_Reposition(void* widget) {
|
||||
struct HotbarWidget* w = (struct HotbarWidget*)widget;
|
||||
float scale = Game_GetHotbarScale();
|
||||
struct HotbarWidget* w = widget;
|
||||
|
||||
w->BarHeight = (float)Math_Floor(22.0f * scale);
|
||||
w->Width = (int)(182 * scale);
|
||||
@ -402,18 +403,18 @@ static void HotbarWidget_Reposition(void* widget) {
|
||||
}
|
||||
|
||||
static void HotbarWidget_Init(void* widget) {
|
||||
struct HotbarWidget* w = widget;
|
||||
struct HotbarWidget* w = (struct HotbarWidget*)widget;
|
||||
Widget_Reposition(w);
|
||||
}
|
||||
|
||||
static void HotbarWidget_Render(void* widget, double delta) {
|
||||
struct HotbarWidget* w = widget;
|
||||
struct HotbarWidget* w = (struct HotbarWidget*)widget;
|
||||
HotbarWidget_RenderHotbarOutline(w);
|
||||
HotbarWidget_RenderHotbarBlocks(w);
|
||||
}
|
||||
|
||||
static bool HotbarWidget_KeyDown(void* widget, Key key, bool was) {
|
||||
struct HotbarWidget* w = widget;
|
||||
struct HotbarWidget* w = (struct HotbarWidget*)widget;
|
||||
int index;
|
||||
if (key < '1' || key > '9') return false;
|
||||
|
||||
@ -429,7 +430,7 @@ static bool HotbarWidget_KeyDown(void* widget, Key key, bool was) {
|
||||
}
|
||||
|
||||
static bool HotbarWidget_KeyUp(void* widget, Key key) {
|
||||
struct HotbarWidget* w = widget;
|
||||
struct HotbarWidget* w = (struct HotbarWidget*)widget;
|
||||
int index;
|
||||
|
||||
/* Need to handle these cases:
|
||||
@ -449,7 +450,7 @@ static bool HotbarWidget_KeyUp(void* widget, Key key) {
|
||||
}
|
||||
|
||||
static bool HotbarWidget_MouseDown(void* widget, int x, int y, MouseButton btn) {
|
||||
struct HotbarWidget* w = widget;
|
||||
struct HotbarWidget* w = (struct HotbarWidget*)widget;
|
||||
struct Screen* screen;
|
||||
int width, height;
|
||||
int i, cellX, cellY;
|
||||
@ -474,7 +475,7 @@ static bool HotbarWidget_MouseDown(void* widget, int x, int y, MouseButton btn)
|
||||
}
|
||||
|
||||
static bool HotbarWidget_MouseScroll(void* widget, float delta) {
|
||||
struct HotbarWidget* w = widget;
|
||||
struct HotbarWidget* w = (struct HotbarWidget*)widget;
|
||||
int index;
|
||||
|
||||
if (KeyBind_IsPressed(KEYBIND_HOTBAR_SWITCH)) {
|
||||
@ -631,7 +632,7 @@ static void TableWidget_RecreateElements(struct TableWidget* w) {
|
||||
}
|
||||
|
||||
static void TableWidget_Init(void* widget) {
|
||||
struct TableWidget* w = widget;
|
||||
struct TableWidget* w = (struct TableWidget*)widget;
|
||||
w->LastX = Mouse_X; w->LastY = Mouse_Y;
|
||||
|
||||
ScrollbarWidget_Create(&w->Scroll);
|
||||
@ -640,7 +641,7 @@ static void TableWidget_Init(void* widget) {
|
||||
}
|
||||
|
||||
static void TableWidget_Render(void* widget, double delta) {
|
||||
struct TableWidget* w = widget;
|
||||
struct TableWidget* w = (struct TableWidget*)widget;
|
||||
VertexP3fT2fC4b vertices[TABLE_MAX_VERTICES];
|
||||
int cellSize, size;
|
||||
float off;
|
||||
@ -698,21 +699,21 @@ static void TableWidget_Render(void* widget, double delta) {
|
||||
}
|
||||
|
||||
static void TableWidget_Free(void* widget) {
|
||||
struct TableWidget* w = widget;
|
||||
struct TableWidget* w = (struct TableWidget*)widget;
|
||||
Gfx_DeleteVb(&w->VB);
|
||||
Gfx_DeleteTexture(&w->DescTex.ID);
|
||||
w->LastCreatedIndex = -1000;
|
||||
}
|
||||
|
||||
static void TableWidget_Recreate(void* widget) {
|
||||
struct TableWidget* w = widget;
|
||||
struct TableWidget* w = (struct TableWidget*)widget;
|
||||
Elem_TryFree(w);
|
||||
w->VB = Gfx_CreateDynamicVb(VERTEX_FORMAT_P3FT2FC4B, TABLE_MAX_VERTICES);
|
||||
TableWidget_RecreateDescTex(w);
|
||||
}
|
||||
|
||||
static void TableWidget_Reposition(void* widget) {
|
||||
struct TableWidget* w = widget;
|
||||
struct TableWidget* w = (struct TableWidget*)widget;
|
||||
float scale = Game_GetInventoryScale();
|
||||
w->CellSize = (int)(50 * Math_SqrtF(scale));
|
||||
w->SelBlockExpand = 25.0f * Math_SqrtF(scale);
|
||||
@ -737,7 +738,7 @@ static void TableWidget_ScrollRelative(struct TableWidget* w, int delta) {
|
||||
}
|
||||
|
||||
static bool TableWidget_MouseDown(void* widget, int x, int y, MouseButton btn) {
|
||||
struct TableWidget* w = widget;
|
||||
struct TableWidget* w = (struct TableWidget*)widget;
|
||||
w->PendingClose = false;
|
||||
if (btn != MOUSE_LEFT) return false;
|
||||
|
||||
@ -754,12 +755,12 @@ static bool TableWidget_MouseDown(void* widget, int x, int y, MouseButton btn) {
|
||||
}
|
||||
|
||||
static bool TableWidget_MouseUp(void* widget, int x, int y, MouseButton btn) {
|
||||
struct TableWidget* w = widget;
|
||||
struct TableWidget* w = (struct TableWidget*)widget;
|
||||
return Elem_HandlesMouseUp(&w->Scroll, x, y, btn);
|
||||
}
|
||||
|
||||
static bool TableWidget_MouseScroll(void* widget, float delta) {
|
||||
struct TableWidget* w = widget;
|
||||
struct TableWidget* w = (struct TableWidget*)widget;
|
||||
int origTopRow, index;
|
||||
|
||||
bool bounds = Gui_Contains(Table_X(w), Table_Y(w),
|
||||
@ -780,7 +781,7 @@ static bool TableWidget_MouseScroll(void* widget, float delta) {
|
||||
}
|
||||
|
||||
static bool TableWidget_MouseMove(void* widget, int x, int y) {
|
||||
struct TableWidget* w = widget;
|
||||
struct TableWidget* w = (struct TableWidget*)widget;
|
||||
int cellSize, maxHeight;
|
||||
int i, cellX, cellY;
|
||||
|
||||
@ -807,7 +808,7 @@ static bool TableWidget_MouseMove(void* widget, int x, int y) {
|
||||
}
|
||||
|
||||
static bool TableWidget_KeyDown(void* widget, Key key, bool was) {
|
||||
struct TableWidget* w = widget;
|
||||
struct TableWidget* w = (struct TableWidget*)widget;
|
||||
if (w->SelectedIndex == -1) return false;
|
||||
|
||||
if (key == KEY_LEFT || key == KEY_KP4) {
|
||||
@ -989,7 +990,7 @@ static void InputWidget_RenderCaret(struct InputWidget* w, double delta) {
|
||||
}
|
||||
|
||||
static void InputWidget_OnPressedEnter(void* widget) {
|
||||
struct InputWidget* w = widget;
|
||||
struct InputWidget* w = (struct InputWidget*)widget;
|
||||
InputWidget_Clear(w);
|
||||
w->Height = w->PrefixHeight;
|
||||
}
|
||||
@ -1173,7 +1174,7 @@ static bool InputWidget_OtherKey(struct InputWidget* w, Key key) {
|
||||
}
|
||||
|
||||
static void InputWidget_Init(void* widget) {
|
||||
struct InputWidget* w = widget;
|
||||
struct InputWidget* w = (struct InputWidget*)widget;
|
||||
int lines = w->GetMaxLines();
|
||||
|
||||
if (lines > 1) {
|
||||
@ -1188,19 +1189,19 @@ static void InputWidget_Init(void* widget) {
|
||||
}
|
||||
|
||||
static void InputWidget_Free(void* widget) {
|
||||
struct InputWidget* w = widget;
|
||||
struct InputWidget* w = (struct InputWidget*)widget;
|
||||
Gfx_DeleteTexture(&w->InputTex.ID);
|
||||
Gfx_DeleteTexture(&w->CaretTex.ID);
|
||||
}
|
||||
|
||||
static void InputWidget_Recreate(void* widget) {
|
||||
struct InputWidget* w = widget;
|
||||
struct InputWidget* w = (struct InputWidget*)widget;
|
||||
Gfx_DeleteTexture(&w->InputTex.ID);
|
||||
InputWidget_Init(w);
|
||||
}
|
||||
|
||||
static void InputWidget_Reposition(void* widget) {
|
||||
struct InputWidget* w = widget;
|
||||
struct InputWidget* w = (struct InputWidget*)widget;
|
||||
int oldX = w->X, oldY = w->Y;
|
||||
Widget_CalcPosition(w);
|
||||
|
||||
@ -1209,7 +1210,7 @@ static void InputWidget_Reposition(void* widget) {
|
||||
}
|
||||
|
||||
static bool InputWidget_KeyDown(void* widget, Key key, bool was) {
|
||||
struct InputWidget* w = widget;
|
||||
struct InputWidget* w = (struct InputWidget*)widget;
|
||||
if (key == KEY_LEFT) {
|
||||
InputWidget_LeftKey(w);
|
||||
} else if (key == KEY_RIGHT) {
|
||||
@ -1231,14 +1232,14 @@ static bool InputWidget_KeyDown(void* widget, Key key, bool was) {
|
||||
static bool InputWidget_KeyUp(void* widget, Key key) { return true; }
|
||||
|
||||
static bool InputWidget_KeyPress(void* widget, char keyChar) {
|
||||
struct InputWidget* w = widget;
|
||||
struct InputWidget* w = (struct InputWidget*)widget;
|
||||
InputWidget_Append(w, keyChar);
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool InputWidget_MouseDown(void* widget, int x, int y, MouseButton button) {
|
||||
String line; char lineBuffer[STRING_SIZE];
|
||||
struct InputWidget* w = widget;
|
||||
struct InputWidget* w = (struct InputWidget*)widget;
|
||||
struct DrawTextArgs args;
|
||||
int cx, cy, offset = 0;
|
||||
int charX, charWidth, charHeight;
|
||||
@ -1457,7 +1458,7 @@ struct MenuInputValidator MenuInputValidator_String(void) {
|
||||
*-----------------------------------------------------MenuInputWidget-----------------------------------------------------*
|
||||
*#########################################################################################################################*/
|
||||
static void MenuInputWidget_Render(void* widget, double delta) {
|
||||
struct InputWidget* w = widget;
|
||||
struct InputWidget* w = (struct InputWidget*)widget;
|
||||
PackedCol backCol = PACKEDCOL_CONST(30, 30, 30, 200);
|
||||
|
||||
Gfx_SetTexturing(false);
|
||||
@ -1516,7 +1517,7 @@ static void MenuInputWidget_RemakeTexture(void* widget) {
|
||||
}
|
||||
|
||||
static bool MenuInputWidget_AllowedChar(void* widget, char c) {
|
||||
struct InputWidget* w = widget;
|
||||
struct InputWidget* w = (struct InputWidget*)widget;
|
||||
struct MenuInputValidator* v;
|
||||
int maxChars;
|
||||
bool valid;
|
||||
@ -1643,7 +1644,7 @@ static void ChatInputWidget_Render(void* widget, double delta) {
|
||||
}
|
||||
|
||||
static void ChatInputWidget_OnPressedEnter(void* widget) {
|
||||
struct ChatInputWidget* w = widget;
|
||||
struct ChatInputWidget* w = (struct ChatInputWidget*)widget;
|
||||
/* Don't want trailing spaces in output message */
|
||||
String text = w->Base.Text;
|
||||
String_UNSAFE_TrimEnd(&text);
|
||||
@ -1782,7 +1783,7 @@ static void ChatInputWidget_TabKey(struct InputWidget* w) {
|
||||
}
|
||||
|
||||
static bool ChatInputWidget_KeyDown(void* widget, Key key, bool was) {
|
||||
struct InputWidget* w = widget;
|
||||
struct InputWidget* w = (struct InputWidget*)widget;
|
||||
if (key == KEY_TAB) { ChatInputWidget_TabKey(w); return true; }
|
||||
if (key == KEY_UP) { ChatInputWidget_UpKey(w); return true; }
|
||||
if (key == KEY_DOWN) { ChatInputWidget_DownKey(w); return true; }
|
||||
@ -1940,7 +1941,7 @@ static void PlayerListWidget_RepositionColumns(struct PlayerListWidget* w) {
|
||||
}
|
||||
|
||||
static void PlayerListWidget_Reposition(void* widget) {
|
||||
struct PlayerListWidget* w = widget;
|
||||
struct PlayerListWidget* w = (struct PlayerListWidget*)widget;
|
||||
int i, y, oldX, oldY;
|
||||
|
||||
y = Game.Height / 4 - w->Height / 2;
|
||||
@ -2097,13 +2098,13 @@ static void PlayerListWidget_SortAndReposition(struct PlayerListWidget* w) {
|
||||
}
|
||||
|
||||
static void PlayerListWidget_TabEntryAdded(void* widget, int id) {
|
||||
struct PlayerListWidget* w = widget;
|
||||
struct PlayerListWidget* w = (struct PlayerListWidget*)widget;
|
||||
PlayerListWidget_AddName(w, id, -1);
|
||||
PlayerListWidget_SortAndReposition(w);
|
||||
}
|
||||
|
||||
static void PlayerListWidget_TabEntryChanged(void* widget, int id) {
|
||||
struct PlayerListWidget* w = widget;
|
||||
struct PlayerListWidget* w = (struct PlayerListWidget*)widget;
|
||||
struct Texture tex;
|
||||
int i;
|
||||
|
||||
@ -2119,7 +2120,7 @@ static void PlayerListWidget_TabEntryChanged(void* widget, int id) {
|
||||
}
|
||||
|
||||
static void PlayerListWidget_TabEntryRemoved(void* widget, int id) {
|
||||
struct PlayerListWidget* w = widget;
|
||||
struct PlayerListWidget* w = (struct PlayerListWidget*)widget;
|
||||
int i;
|
||||
for (i = 0; i < w->NamesCount; i++) {
|
||||
if (w->IDs[i] != id) continue;
|
||||
@ -2132,7 +2133,7 @@ static void PlayerListWidget_TabEntryRemoved(void* widget, int id) {
|
||||
|
||||
static void PlayerListWidget_Init(void* widget) {
|
||||
const static String title = String_FromConst("Connected players:");
|
||||
struct PlayerListWidget* w = widget;
|
||||
struct PlayerListWidget* w = (struct PlayerListWidget*)widget;
|
||||
int id;
|
||||
|
||||
for (id = 0; id < TABLIST_MAX_NAMES; id++) {
|
||||
@ -2150,7 +2151,7 @@ static void PlayerListWidget_Init(void* widget) {
|
||||
}
|
||||
|
||||
static void PlayerListWidget_Render(void* widget, double delta) {
|
||||
struct PlayerListWidget* w = widget;
|
||||
struct PlayerListWidget* w = (struct PlayerListWidget*)widget;
|
||||
struct TextWidget* title = &w->Title;
|
||||
struct Texture tex;
|
||||
int offset, height;
|
||||
@ -2179,7 +2180,7 @@ static void PlayerListWidget_Render(void* widget, double delta) {
|
||||
}
|
||||
|
||||
static void PlayerListWidget_Free(void* widget) {
|
||||
struct PlayerListWidget* w = widget;
|
||||
struct PlayerListWidget* w = (struct PlayerListWidget*)widget;
|
||||
int i;
|
||||
for (i = 0; i < w->NamesCount; i++) {
|
||||
Gfx_DeleteTexture(&w->Textures[i].ID);
|
||||
@ -2300,8 +2301,8 @@ int TextGroupWidget_UsedHeight(struct TextGroupWidget* w) {
|
||||
}
|
||||
|
||||
static void TextGroupWidget_Reposition(void* widget) {
|
||||
struct TextGroupWidget* w = widget;
|
||||
struct Texture* textures = w->Textures;
|
||||
struct TextGroupWidget* w = (struct TextGroupWidget*)widget;
|
||||
struct Texture* textures = w->Textures;
|
||||
int i, oldY = w->Y;
|
||||
|
||||
Widget_CalcPosition(w);
|
||||
@ -2597,7 +2598,7 @@ void TextGroupWidget_SetText(struct TextGroupWidget* w, int index, const String*
|
||||
|
||||
|
||||
static void TextGroupWidget_Init(void* widget) {
|
||||
struct TextGroupWidget* w = widget;
|
||||
struct TextGroupWidget* w = (struct TextGroupWidget*)widget;
|
||||
int i, height;
|
||||
|
||||
height = Drawer2D_FontHeight(&w->Font, true);
|
||||
@ -2612,7 +2613,7 @@ static void TextGroupWidget_Init(void* widget) {
|
||||
}
|
||||
|
||||
static void TextGroupWidget_Render(void* widget, double delta) {
|
||||
struct TextGroupWidget* w = widget;
|
||||
struct TextGroupWidget* w = (struct TextGroupWidget*)widget;
|
||||
struct Texture* textures = w->Textures;
|
||||
int i;
|
||||
|
||||
@ -2623,7 +2624,7 @@ static void TextGroupWidget_Render(void* widget, double delta) {
|
||||
}
|
||||
|
||||
static void TextGroupWidget_Free(void* widget) {
|
||||
struct TextGroupWidget* w = widget;
|
||||
struct TextGroupWidget* w = (struct TextGroupWidget*)widget;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < w->LinesCount; i++) {
|
||||
@ -2839,7 +2840,7 @@ static void SpecialInputWidget_Redraw(struct SpecialInputWidget* w) {
|
||||
}
|
||||
|
||||
static void SpecialInputWidget_Init(void* widget) {
|
||||
struct SpecialInputWidget* w = widget;
|
||||
struct SpecialInputWidget* w = (struct SpecialInputWidget*)widget;
|
||||
w->X = 5; w->Y = 5;
|
||||
|
||||
SpecialInputWidget_InitTabs(w);
|
||||
@ -2848,17 +2849,17 @@ static void SpecialInputWidget_Init(void* widget) {
|
||||
}
|
||||
|
||||
static void SpecialInputWidget_Render(void* widget, double delta) {
|
||||
struct SpecialInputWidget* w = widget;
|
||||
struct SpecialInputWidget* w = (struct SpecialInputWidget*)widget;
|
||||
Texture_Render(&w->Tex);
|
||||
}
|
||||
|
||||
static void SpecialInputWidget_Free(void* widget) {
|
||||
struct SpecialInputWidget* w = widget;
|
||||
struct SpecialInputWidget* w = (struct SpecialInputWidget*)widget;
|
||||
Gfx_DeleteTexture(&w->Tex.ID);
|
||||
}
|
||||
|
||||
static bool SpecialInputWidget_MouseDown(void* widget, int x, int y, MouseButton btn) {
|
||||
struct SpecialInputWidget* w = widget;
|
||||
struct SpecialInputWidget* w = (struct SpecialInputWidget*)widget;
|
||||
x -= w->X; y -= w->Y;
|
||||
|
||||
if (SpecialInputWidget_IntersectsTitle(w, x, y)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user