cleanup and add comments for Screen

This commit is contained in:
UnknownShadow200 2019-11-03 16:06:11 +11:00
parent b36e7ccd50
commit 0140608104
10 changed files with 214 additions and 183 deletions

View file

@ -10,7 +10,7 @@ struct _BlockEventsList BlockEvents;
struct _WorldEventsList WorldEvents;
struct _ChatEventsList ChatEvents;
struct _WindowEventsList WindowEvents;
struct _KeyEventsList InputEvents;
struct _InputEventsList InputEvents;
struct _PointerEventsList PointerEvents;
struct _NetEventsList NetEvents;
@ -105,3 +105,10 @@ void Event_RaiseInput(struct Event_Input* handlers, int key, cc_bool repeating)
handlers->Handlers[i](handlers->Objs[i], key, repeating);
}
}
void Event_RaiseString(struct Event_String* handlers, const String* str) {
int i;
for (i = 0; i < handlers->Count; i++) {
handlers->Handlers[i](handlers->Objs[i], str);
}
}

View file

@ -58,6 +58,12 @@ struct Event_Input {
void* Objs[EVENT_MAX_CALLBACKS]; int Count;
};
typedef void (*Event_String_Callback)(void* obj, const String* str);
struct Event_String {
Event_String_Callback Handlers[EVENT_MAX_CALLBACKS];
void* Objs[EVENT_MAX_CALLBACKS]; int Count;
};
/* Registers a callback function for the given event. */
/* NOTE: Trying to register a callback twice or over EVENT_MAX_CALLBACKS callbacks will terminate the game. */
CC_API void Event_Register(struct Event_Void* handlers, void* obj, Event_Void_Callback handler);
@ -113,6 +119,11 @@ void Event_RaiseInput(struct Event_Input* handlers, int key, cc_bool repeating);
#define Event_RegisterInput(handlers, obj, handler) Event_RegisterMacro(handlers, obj, handler)
#define Event_UnregisterInput(handlers, obj, handler) Event_UnregisterMacro(handlers, obj, handler)
/* Calls all registered callbacks for an event which has a string argument. */
void Event_RaiseString(struct Event_String* handlers, const String* str);
#define Event_RegisterString(handlers, obj, handler) Event_RegisterMacro(handlers, obj, handler)
#define Event_UnregisterString(handlers, obj, handler) Event_UnregisterMacro(handlers, obj, handler)
CC_VAR extern struct _EntityEventsList {
struct Event_Int Added; /* Entity is spawned in the current world */
struct Event_Int Removed; /* Entity is despawned from the current world */
@ -172,11 +183,12 @@ CC_VAR extern struct _WindowEventsList {
struct Event_Void Created; /* Window has been created, Window_Handle is valid now. */
} WindowEvents;
CC_VAR extern struct _KeyEventsList {
CC_VAR extern struct _InputEventsList {
struct Event_Int Press; /* Key input character is typed. Arg is a character */
struct Event_Input Down; /* Key or button is pressed. Arg is a member of Key enumeration */
struct Event_Int Up; /* Key or button is released. Arg is a member of Key enumeration */
struct Event_Float Wheel; /* Mouse wheel is moved/scrolled (Arg is wheel delta) */
struct Event_String TextChanged; /* HTML text input changed */
} InputEvents;
CC_VAR extern struct _PointerEventsList {

View file

@ -278,7 +278,7 @@ static void Game_OnResize(void* obj) {
Game_UpdateDimensions();
Gfx_OnWindowResize();
Game_UpdateProjection();
Gui_OnResize();
Gui_Layout();
}
static void Game_OnNewMapCore(void* obj) {

View file

@ -28,7 +28,7 @@ void Widget_SetLocation(void* widget, cc_uint8 horAnchor, cc_uint8 verAnchor, in
w->horAnchor = horAnchor; w->verAnchor = verAnchor;
w->xOffset = Display_ScaleX(xOffset);
w->yOffset = Display_ScaleY(yOffset);
Widget_Reposition(w);
Widget_Layout(w);
}
void Widget_CalcPosition(void* widget) {
@ -293,13 +293,13 @@ void Gui_RenderGui(double delta) {
Gfx_Mode3D();
}
void Gui_OnResize(void) {
void Gui_Layout(void) {
struct Screen* s;
int i;
for (i = 0; i < Gui_ScreensCount; i++) {
s = Gui_Screens[i];
s->VTABLE->OnResize(s);
s->VTABLE->Layout(s);
}
}

View file

@ -36,28 +36,41 @@ extern cc_bool Gui_TabAutocomplete;
extern cc_bool Gui_ShowFPS;
struct ScreenVTABLE {
/* Initialises persistent state. */
void (*Init)(void* elem);
/* Draws this screen and its widgets on screen. */
void (*Render)(void* elem, double delta);
/* Frees/releases persistent state. */
void (*Free)(void* elem);
cc_bool (*HandlesKeyDown)(void* elem, Key key);
cc_bool (*HandlesKeyUp)(void* elem, Key key);
cc_bool (*HandlesKeyPress)(void* elem, char keyChar);
cc_bool (*HandlesPointerDown)(void* elem, int id, int x, int y);
cc_bool (*HandlesPointerUp)(void* elem, int id, int x, int y);
cc_bool (*HandlesPointerMove)(void* elem, int id, int x, int y);
cc_bool (*HandlesMouseScroll)(void* elem, float delta);
void (*OnResize)(void* elem);
Event_Void_Callback ContextLost;
Event_Void_Callback ContextRecreated;
/* Returns non-zero if an input press is handled. */
int (*HandlesKeyDown)(void* elem, Key key);
/* Returns non-zero if an input release is handled. */
int (*HandlesKeyUp)(void* elem, Key key);
/* Returns non-zero if a key character press is handled. */
int (*HandlesKeyPress)(void* elem, char keyChar);
/* Returns non-zero if a pointer press is handled. */
int (*HandlesPointerDown)(void* elem, int id, int x, int y);
/* Returns non-zero if a pointer release is handled. */
int (*HandlesPointerUp)(void* elem, int id, int x, int y);
/* Returns non-zero if a pointer movement is handled. */
int (*HandlesPointerMove)(void* elem, int id, int x, int y);
/* Returns non-zero if a mouse wheel scroll is handled. */
int (*HandlesMouseScroll)(void* elem, float delta);
/* Positions widgets on screen. Typically called on window resize. */
void (*Layout)(void* elem);
/* Destroys graphics resources. (textures, vertex buffers, etc) */
void (*ContextLost)(void* elem);
/* Allocates graphics resources. (textures, vertex buffers, etc) */
void (*ContextRecreated)(void* elem);
};
#define Screen_Layout const struct ScreenVTABLE* VTABLE; \
#define Screen_Body const struct ScreenVTABLE* VTABLE; \
cc_bool grabsInput; /* Whether this screen grabs input. Causes the cursor to become visible. */ \
cc_bool blocksWorld; /* Whether this screen completely and opaquely covers the game world behind it. */ \
cc_bool closable; /* Whether this screen is automatically closed when pressing Escape */ \
struct Widget** widgets; int numWidgets;
/* Represents a container of widgets and other 2D elements. May cover entire window. */
struct Screen { Screen_Layout };
struct Screen { Screen_Body };
typedef void (*Widget_LeftClick)(void* screen, void* widget);
struct WidgetVTABLE {
@ -71,7 +84,7 @@ struct WidgetVTABLE {
cc_bool (*HandlesPointerUp)(void* elem, int id, int x, int y);
cc_bool (*HandlesPointerMove)(void* elem, int id, int x, int y);
};
#define Widget_Layout const struct WidgetVTABLE* VTABLE; \
#define Widget_Body const struct WidgetVTABLE* VTABLE; \
int x, y, width, height; /* Top left corner, and dimensions, of this widget */ \
cc_bool active; /* Whether this widget is currently being moused over */ \
cc_bool disabled; /* Whether widget is prevented from being interacted with */ \
@ -80,7 +93,7 @@ struct WidgetVTABLE {
Widget_LeftClick MenuClick;
/* Represents an individual 2D gui component. */
struct Widget { Widget_Layout };
struct Widget { Widget_Body };
void Widget_SetLocation(void* widget, cc_uint8 horAnchor, cc_uint8 verAnchor, int xOffset, int yOffset);
void Widget_CalcPosition(void* widget);
/* Resets Widget struct fields to 0/NULL (except VTABLE) */
@ -148,7 +161,7 @@ void Gui_RefreshChat(void);
void Gui_Refresh(struct Screen* s);
void Gui_RenderGui(double delta);
void Gui_OnResize(void);
void Gui_Layout(void);
#define TEXTATLAS_MAX_WIDTHS 16
struct TextAtlas {
@ -174,6 +187,6 @@ void TextAtlas_AddInt(struct TextAtlas* atlas, int value, VertexP3fT2fC4b** vert
#define Elem_HandlesPointerUp(elem, id, x, y) (elem)->VTABLE->HandlesPointerUp(elem, id, x, y)
#define Elem_HandlesPointerMove(elem, id, x, y) (elem)->VTABLE->HandlesPointerMove(elem, id, x, y)
#define Widget_Reposition(widget) (widget)->VTABLE->Reposition(widget);
#define Elem_TryFree(elem) if ((elem)->VTABLE) { Elem_Free(elem); }
#define Widget_Layout(widget) (widget)->VTABLE->Reposition(widget);
#define Elem_TryFree(elem) if ((elem)->VTABLE) { Elem_Free(elem); }
#endif

View file

@ -95,14 +95,14 @@ static void Menu_ContextLost(void* screen) {
}
}
static void Menu_OnResize(void* screen) {
static void Menu_Layout(void* screen) {
struct Screen* s = (struct Screen*)screen;
struct Widget** widgets = s->widgets;
int i;
for (i = 0; i < s->numWidgets; i++) {
if (!widgets[i]) continue;
Widget_Reposition(widgets[i]);
Widget_Layout(widgets[i]);
}
}
@ -146,7 +146,7 @@ static int Menu_DoPointerDown(void* screen, int id, int x, int y) {
}
return -1;
}
static cc_bool Menu_PointerDown(void* screen, int id, int x, int y) {
static int Menu_PointerDown(void* screen, int id, int x, int y) {
Menu_DoPointerDown(screen, id, x, y); return true;
}
@ -171,7 +171,7 @@ static int Menu_DoPointerMove(void* screen, int id, int x, int y) {
return -1;
}
static cc_bool Menu_PointerMove(void* screen, int id, int x, int y) {
static int Menu_PointerMove(void* screen, int id, int x, int y) {
Menu_DoPointerMove(screen, id, x, y); return true;
}
@ -248,7 +248,7 @@ struct ListScreen;
#define LIST_SCREEN_EMPTY "-----"
static struct ListScreen {
Screen_Layout
Screen_Body
struct ButtonWidget buttons[LIST_SCREEN_ITEMS];
struct ButtonWidget left, right, done;
struct FontDesc font;
@ -371,7 +371,7 @@ static void ListScreen_Select(struct ListScreen* s, const String* str) {
}
}
static cc_bool ListScreen_KeyDown(void* screen, Key key) {
static int ListScreen_KeyDown(void* screen, Key key) {
struct ListScreen* s = (struct ListScreen*)screen;
if (key == KEY_LEFT || key == KEY_PAGEUP) {
ListScreen_PageClick(s, false);
@ -381,7 +381,7 @@ static cc_bool ListScreen_KeyDown(void* screen, Key key) {
return true;
}
static cc_bool ListScreen_MouseScroll(void* screen, float delta) {
static int ListScreen_MouseScroll(void* screen, float delta) {
struct ListScreen* s = (struct ListScreen*)screen;
int steps = Utils_AccumulateWheelDelta(&s->wheelAcc, delta);
@ -448,9 +448,9 @@ static void ListScreen_ContextRecreated(void* screen) {
static const struct ScreenVTABLE ListScreen_VTABLE = {
ListScreen_Init, ListScreen_Render, ListScreen_Free,
ListScreen_KeyDown, Screen_TKey, Screen_TKeyPress,
ListScreen_KeyDown, Screen_TInput, Screen_TKeyPress,
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, ListScreen_MouseScroll,
Menu_OnResize, ListScreen_ContextLost, ListScreen_ContextRecreated
Menu_Layout, ListScreen_ContextLost, ListScreen_ContextRecreated
};
void ListScreen_Show(void) {
struct ListScreen* s = &ListScreen;
@ -464,7 +464,7 @@ void ListScreen_Show(void) {
/*########################################################################################################################*
*--------------------------------------------------------MenuScreen-------------------------------------------------------*
*#########################################################################################################################*/
static cc_bool MenuScreen_KeyDown(void* screen, Key key) { return key < KEY_F1 || key > KEY_F35; }
static int MenuScreen_KeyDown(void* screen, Key key) { return key < KEY_F1 || key > KEY_F35; }
static void MenuScreen_Render(void* screen, double delta) {
Menu_RenderBounds();
@ -478,7 +478,7 @@ static void MenuScreen_Render(void* screen, double delta) {
*-------------------------------------------------------PauseScreen-------------------------------------------------------*
*#########################################################################################################################*/
static struct PauseScreen {
Screen_Layout
Screen_Body
const struct SimpleButtonDesc* descs;
struct ButtonWidget buttons[6], quit, back;
} PauseScreen_Instance;
@ -559,9 +559,9 @@ static void PauseScreen_Free(void* screen) {
static const struct ScreenVTABLE PauseScreen_VTABLE = {
PauseScreen_Init, MenuScreen_Render, PauseScreen_Free,
MenuScreen_KeyDown, Screen_TKey, Screen_TKeyPress,
MenuScreen_KeyDown, Screen_TInput, Screen_TKeyPress,
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_OnResize, Menu_ContextLost, PauseScreen_ContextRecreated
Menu_Layout, Menu_ContextLost, PauseScreen_ContextRecreated
};
void PauseScreen_Show(void) {
struct PauseScreen* s = &PauseScreen_Instance;
@ -576,7 +576,7 @@ void PauseScreen_Show(void) {
*--------------------------------------------------OptionsGroupScreen-----------------------------------------------------*
*#########################################################################################################################*/
static struct OptionsGroupScreen {
Screen_Layout
Screen_Body
int selectedI;
struct FontDesc textFont;
struct ButtonWidget buttons[7];
@ -635,7 +635,6 @@ static void OptionsGroupScreen_ContextRecreated(void* screen) {
static void OptionsGroupScreen_Init(void* screen) {
static struct Widget* widgets[9];
struct OptionsGroupScreen* s = (struct OptionsGroupScreen*)screen;
int i;
Event_RegisterVoid(&UserEvents.HackPermissionsChanged, s, OptionsGroupScreen_CheckHacksAllowed);
s->widgets = widgets;
@ -652,7 +651,7 @@ static void OptionsGroupScreen_Free(void* screen) {
Event_UnregisterVoid(&UserEvents.HackPermissionsChanged, s, OptionsGroupScreen_CheckHacksAllowed);
}
static cc_bool OptionsGroupScreen_PointerMove(void* screen, int id, int x, int y) {
static int OptionsGroupScreen_PointerMove(void* screen, int id, int x, int y) {
struct OptionsGroupScreen* s = (struct OptionsGroupScreen*)screen;
int i = Menu_DoPointerMove(s, id, x, y);
if (i == -1 || i == s->selectedI) return true;
@ -665,9 +664,9 @@ static cc_bool OptionsGroupScreen_PointerMove(void* screen, int id, int x, int y
static const struct ScreenVTABLE OptionsGroupScreen_VTABLE = {
OptionsGroupScreen_Init, MenuScreen_Render, OptionsGroupScreen_Free,
MenuScreen_KeyDown, Screen_TKey, Screen_TKeyPress,
MenuScreen_KeyDown, Screen_TInput, Screen_TKeyPress,
Menu_PointerDown, Screen_TPointer, OptionsGroupScreen_PointerMove, Screen_TMouseScroll,
Menu_OnResize, OptionsGroupScreen_ContextLost, OptionsGroupScreen_ContextRecreated
Menu_Layout, OptionsGroupScreen_ContextLost, OptionsGroupScreen_ContextRecreated
};
void OptionsGroupScreen_Show(void) {
struct OptionsGroupScreen* s = &OptionsGroupScreen;
@ -682,7 +681,7 @@ void OptionsGroupScreen_Show(void) {
*----------------------------------------------------EditHotkeyScreen-----------------------------------------------------*
*#########################################################################################################################*/
static struct EditHotkeyScreen {
Screen_Layout
Screen_Body
struct HotkeyData curHotkey, origHotkey;
int selectedI;
cc_bool supressNextPress;
@ -803,7 +802,7 @@ static void EditHotkeyScreen_Render(void* screen, double delta) {
Gfx_Draw2DFlat(x - 250, y + 45, 500, 2, grey);
}
static cc_bool EditHotkeyScreen_KeyPress(void* screen, char keyChar) {
static int EditHotkeyScreen_KeyPress(void* screen, char keyChar) {
struct EditHotkeyScreen* s = (struct EditHotkeyScreen*)screen;
if (s->supressNextPress) {
s->supressNextPress = false;
@ -813,7 +812,7 @@ static cc_bool EditHotkeyScreen_KeyPress(void* screen, char keyChar) {
return true;
}
static cc_bool EditHotkeyScreen_KeyDown(void* screen, Key key) {
static int EditHotkeyScreen_KeyDown(void* screen, Key key) {
struct EditHotkeyScreen* s = (struct EditHotkeyScreen*)screen;
if (s->selectedI >= 0) {
if (s->selectedI == 0) {
@ -888,9 +887,9 @@ static void EditHotkeyScreen_Init(void* screen) {
static const struct ScreenVTABLE EditHotkeyScreen_VTABLE = {
EditHotkeyScreen_Init, EditHotkeyScreen_Render, Menu_CloseKeyboard,
EditHotkeyScreen_KeyDown, Screen_TKey, EditHotkeyScreen_KeyPress,
EditHotkeyScreen_KeyDown, Screen_TInput, EditHotkeyScreen_KeyPress,
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_OnResize, EditHotkeyScreen_ContextLost, EditHotkeyScreen_ContextRecreated
Menu_Layout, EditHotkeyScreen_ContextLost, EditHotkeyScreen_ContextRecreated
};
void EditHotkeyScreen_Show(struct HotkeyData original) {
struct EditHotkeyScreen* s = &EditHotkeyScreen_Instance;
@ -907,7 +906,7 @@ void EditHotkeyScreen_Show(struct HotkeyData original) {
*-----------------------------------------------------GenLevelScreen------------------------------------------------------*
*#########################################################################################################################*/
static struct GenLevelScreen {
Screen_Layout
Screen_Body
struct FontDesc textFont;
struct ButtonWidget flatgrass, vanilla, cancel;
struct MenuInputWidget* selected;
@ -982,19 +981,19 @@ static void GenLevelScreen_Make(struct GenLevelScreen* s, int i, int y, int def)
s->labels[i].col = col;
}
static cc_bool GenLevelScreen_KeyDown(void* screen, Key key) {
static int GenLevelScreen_KeyDown(void* screen, Key key) {
struct GenLevelScreen* s = (struct GenLevelScreen*)screen;
if (s->selected && Elem_HandlesKeyDown(&s->selected->base, key)) return true;
return MenuScreen_KeyDown(s, key);
}
static cc_bool GenLevelScreen_KeyPress(void* screen, char keyChar) {
static int GenLevelScreen_KeyPress(void* screen, char keyChar) {
struct GenLevelScreen* s = (struct GenLevelScreen*)screen;
if (s->selected) InputWidget_Append(&s->selected->base, keyChar);
return true;
}
static cc_bool GenLevelScreen_PointerDown(void* screen, int id, int x, int y) {
static int GenLevelScreen_PointerDown(void* screen, int id, int x, int y) {
struct GenLevelScreen* s = (struct GenLevelScreen*)screen;
int i = Menu_DoPointerDown(screen, id, x, y);
if (i == -1 || i >= 4) return true;
@ -1059,9 +1058,9 @@ static void GenLevelScreen_Init(void* screen) {
static const struct ScreenVTABLE GenLevelScreen_VTABLE = {
GenLevelScreen_Init, MenuScreen_Render, Menu_CloseKeyboard,
GenLevelScreen_KeyDown, Screen_TKey, GenLevelScreen_KeyPress,
GenLevelScreen_KeyDown, Screen_TInput, GenLevelScreen_KeyPress,
GenLevelScreen_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_OnResize, GenLevelScreen_ContextLost, GenLevelScreen_ContextRecreated
Menu_Layout, GenLevelScreen_ContextLost, GenLevelScreen_ContextRecreated
};
void GenLevelScreen_Show(void) {
struct GenLevelScreen* s = &GenLevelScreen_Instance;
@ -1076,7 +1075,7 @@ void GenLevelScreen_Show(void) {
*----------------------------------------------------ClassicGenScreen-----------------------------------------------------*
*#########################################################################################################################*/
static struct ClassicGenScreen {
Screen_Layout
Screen_Body
struct ButtonWidget buttons[3], cancel;
} ClassicGenScreen_Instance;
@ -1124,9 +1123,9 @@ static void ClassicGenScreen_Init(void* screen) {
static const struct ScreenVTABLE ClassicGenScreen_VTABLE = {
ClassicGenScreen_Init, MenuScreen_Render, Menu_NullFunc,
MenuScreen_KeyDown, Screen_TKey, Screen_TKeyPress,
MenuScreen_KeyDown, Screen_TInput, Screen_TKeyPress,
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_OnResize, Menu_ContextLost, ClassicGenScreen_ContextRecreated
Menu_Layout, Menu_ContextLost, ClassicGenScreen_ContextRecreated
};
void ClassicGenScreen_Show(void) {
struct ClassicGenScreen* s = &ClassicGenScreen_Instance;
@ -1141,7 +1140,7 @@ void ClassicGenScreen_Show(void) {
*----------------------------------------------------SaveLevelScreen------------------------------------------------------*
*#########################################################################################################################*/
static struct SaveLevelScreen {
Screen_Layout
Screen_Body
struct FontDesc titleFont, textFont;
struct ButtonWidget save, alt, cancel;
struct MenuInputWidget input;
@ -1314,14 +1313,14 @@ static void SaveLevelScreen_Render(void* screen, double delta) {
#endif
}
static cc_bool SaveLevelScreen_KeyPress(void* screen, char keyChar) {
static int SaveLevelScreen_KeyPress(void* screen, char keyChar) {
struct SaveLevelScreen* s = (struct SaveLevelScreen*)screen;
SaveLevelScreen_RemoveOverwrites(s);
InputWidget_Append(&s->input.base, keyChar);
return true;
}
static cc_bool SaveLevelScreen_KeyDown(void* screen, Key key) {
static int SaveLevelScreen_KeyDown(void* screen, Key key) {
struct SaveLevelScreen* s = (struct SaveLevelScreen*)screen;
if (Elem_HandlesKeyDown(&s->input.base, key)) {
SaveLevelScreen_RemoveOverwrites(s);
@ -1387,9 +1386,9 @@ static void SaveLevelScreen_Init(void* screen) {
static const struct ScreenVTABLE SaveLevelScreen_VTABLE = {
SaveLevelScreen_Init, SaveLevelScreen_Render, Menu_CloseKeyboard,
SaveLevelScreen_KeyDown, Screen_TKey, SaveLevelScreen_KeyPress,
SaveLevelScreen_KeyDown, Screen_TInput, SaveLevelScreen_KeyPress,
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_OnResize, SaveLevelScreen_ContextLost, SaveLevelScreen_ContextRecreated
Menu_Layout, SaveLevelScreen_ContextLost, SaveLevelScreen_ContextRecreated
};
void SaveLevelScreen_Show(void) {
struct SaveLevelScreen* s = &SaveLevelScreen_Instance;
@ -1613,7 +1612,7 @@ struct KeyBindingsScreen;
typedef void (*InitKeyBindings)(struct KeyBindingsScreen* s);
static struct KeyBindingsScreen {
Screen_Layout
Screen_Body
int curI, bindsCount;
const char* const* descs;
const cc_uint8* binds;
@ -1647,7 +1646,7 @@ static void KeyBindingsScreen_OnBindingClick(void* screen, void* widget) {
if (old >= 0) KeyBindingsScreen_Update(s, old);
}
static cc_bool KeyBindingsScreen_KeyDown(void* screen, Key key) {
static int KeyBindingsScreen_KeyDown(void* screen, Key key) {
struct KeyBindingsScreen* s = (struct KeyBindingsScreen*)screen;
KeyBind bind;
int idx;
@ -1735,9 +1734,9 @@ static void KeyBindingsScreen_Init(void* screen) {
static const struct ScreenVTABLE KeyBindingsScreen_VTABLE = {
KeyBindingsScreen_Init, MenuScreen_Render, Menu_NullFunc,
KeyBindingsScreen_KeyDown, Screen_TKey, Screen_TKeyPress,
KeyBindingsScreen_KeyDown, Screen_TInput, Screen_TKeyPress,
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_OnResize, KeyBindingsScreen_ContextLost, KeyBindingsScreen_ContextRecreated
Menu_Layout, KeyBindingsScreen_ContextLost, KeyBindingsScreen_ContextRecreated
};
static void KeyBindingsScreen_Show(int bindsCount, const cc_uint8* binds, const char* const* descs, InitKeyBindings doInit) {
struct KeyBindingsScreen* s = &KeyBindingsScreen_Instance;
@ -1858,7 +1857,7 @@ typedef void (*InitMenuOptions)(struct MenuOptionsScreen* s);
#define MENUOPTIONS_CORE_WIDGETS 4 /* back + 3 input */
static struct MenuOptionsScreen {
Screen_Layout
Screen_Body
struct MenuInputDesc* descs;
const char** descriptions;
int activeI, selectedI, descriptionsCount;
@ -1914,7 +1913,7 @@ CC_NOINLINE static void MenuOptionsScreen_FreeExtHelp(struct MenuOptionsScreen*
static void MenuOptionsScreen_RepositionExtHelp(struct MenuOptionsScreen* s) {
s->extHelp.xOffset = Window_Width / 2 - s->extHelp.width / 2;
Widget_Reposition(&s->extHelp);
Widget_Layout(&s->extHelp);
}
static String MenuOptionsScreen_GetDesc(void* obj, int i) {
@ -1975,13 +1974,13 @@ static void MenuOptionsScreen_EnterInput(struct MenuOptionsScreen* s) {
s->activeI = -1;
}
static cc_bool MenuOptionsScreen_KeyPress(void* screen, char keyChar) {
static int MenuOptionsScreen_KeyPress(void* screen, char keyChar) {
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
if (s->activeI >= 0) InputWidget_Append(&s->input.base, keyChar);
return true;
}
static cc_bool MenuOptionsScreen_KeyDown(void* screen, Key key) {
static int MenuOptionsScreen_KeyDown(void* screen, Key key) {
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
if (s->activeI >= 0) {
if (Elem_HandlesKeyDown(&s->input.base, key)) return true;
@ -1993,7 +1992,7 @@ static cc_bool MenuOptionsScreen_KeyDown(void* screen, Key key) {
return MenuScreen_KeyDown(s, key);
}
static cc_bool MenuOptionsScreen_PointerMove(void* screen, int id, int x, int y) {
static int MenuOptionsScreen_PointerMove(void* screen, int id, int x, int y) {
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
int i = Menu_DoPointerMove(s, id, x, y);
if (i == -1 || i == s->selectedI) return true;
@ -2149,9 +2148,9 @@ static void MenuOptionsScreen_Free(void* screen) {
if (s->activeI >= 0) Window_CloseKeyboard();
}
static void MenuOptionsScreen_OnResize(void* screen) {
static void MenuOptionsScreen_Layout(void* screen) {
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
Menu_OnResize(s);
Menu_Layout(s);
MenuOptionsScreen_RepositionExtHelp(s);
}
@ -2182,9 +2181,9 @@ static void MenuOptionsScreen_ContextRecreated(void* screen) {
static const struct ScreenVTABLE MenuOptionsScreen_VTABLE = {
MenuOptionsScreen_Init, MenuOptionsScreen_Render, MenuOptionsScreen_Free,
MenuOptionsScreen_KeyDown, Screen_TKey, MenuOptionsScreen_KeyPress,
MenuOptionsScreen_KeyDown, Screen_TInput, MenuOptionsScreen_KeyPress,
Menu_PointerDown, Screen_TPointer, MenuOptionsScreen_PointerMove, Screen_TMouseScroll,
MenuOptionsScreen_OnResize, MenuOptionsScreen_ContextLost, MenuOptionsScreen_ContextRecreated
MenuOptionsScreen_Layout, MenuOptionsScreen_ContextLost, MenuOptionsScreen_ContextRecreated
};
void MenuOptionsScreen_Show(struct MenuInputDesc* descs, const char** descriptions, int descsCount, InitMenuOptions init) {
struct MenuOptionsScreen* s = &MenuOptionsScreen_Instance;
@ -2878,7 +2877,7 @@ static cc_bool WarningOverlay_IsAlways(void* screen, void* w) { return Menu_Inde
#define TEXID_OVERLAY_VERTICES_COUNT (TEXID_OVERLAY_MAX_PER_PAGE * 4)
static struct TexIdsOverlay {
Screen_Layout
Screen_Body
GfxResourceID dynamicVb;
int xOffset, yOffset, tileSize, baseTexLoc;
struct TextAtlas idAtlas;
@ -3012,7 +3011,7 @@ static void TexIdsOverlay_Render(void* screen, double delta) {
Gfx_SetTexturing(false);
}
static cc_bool TexIdsOverlay_KeyDown(void* screen, Key key) {
static int TexIdsOverlay_KeyDown(void* screen, Key key) {
struct Screen* s = (struct Screen*)screen;
if (key == KeyBinds[KEYBIND_IDOVERLAY]) { Gui_Remove(s); return true; }
return false;
@ -3020,9 +3019,9 @@ static cc_bool TexIdsOverlay_KeyDown(void* screen, Key key) {
static const struct ScreenVTABLE TexIdsOverlay_VTABLE = {
TexIdsOverlay_Init, TexIdsOverlay_Render, Menu_NullFunc,
TexIdsOverlay_KeyDown, Screen_FKey, Screen_FKeyPress,
TexIdsOverlay_KeyDown, Screen_FInput, Screen_FKeyPress,
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_OnResize, TexIdsOverlay_ContextLost, TexIdsOverlay_ContextRecreated
Menu_Layout, TexIdsOverlay_ContextLost, TexIdsOverlay_ContextRecreated
};
void TexIdsOverlay_Show(void) {
struct TexIdsOverlay* s = &TexIdsOverlay_Instance;
@ -3037,7 +3036,7 @@ void TexIdsOverlay_Show(void) {
*----------------------------------------------------UrlWarningOverlay----------------------------------------------------*
*#########################################################################################################################*/
static struct UrlWarningOverlay {
Screen_Layout
Screen_Body
String url;
struct ButtonWidget buttons[2];
struct TextWidget labels[4];
@ -3087,9 +3086,9 @@ static void UrlWarningOverlay_Init(void* screen) {
static const struct ScreenVTABLE UrlWarningOverlay_VTABLE = {
UrlWarningOverlay_Init, MenuScreen_Render, Menu_NullFunc,
Screen_TKey, Screen_TKey, Screen_TKeyPress,
Screen_TInput, Screen_TInput, Screen_TKeyPress,
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_OnResize, Menu_ContextLost, UrlWarningOverlay_ContextRecreated
Menu_Layout, Menu_ContextLost, UrlWarningOverlay_ContextRecreated
};
void UrlWarningOverlay_Show(const String* url) {
struct UrlWarningOverlay* s = &UrlWarningOverlay_Instance;
@ -3107,7 +3106,7 @@ void UrlWarningOverlay_Show(const String* url) {
*-----------------------------------------------------TexPackOverlay------------------------------------------------------*
*#########################################################################################################################*/
static struct TexPackOverlay {
Screen_Layout
Screen_Body
cc_bool deny, alwaysDeny;
cc_uint32 contentLength;
String url, identifier;
@ -3236,9 +3235,9 @@ static void TexPackOverlay_Init(void* screen) {
static const struct ScreenVTABLE TexPackOverlay_VTABLE = {
TexPackOverlay_Init, TexPackOverlay_Render, Menu_NullFunc,
Screen_TKey, Screen_TKey, Screen_TKeyPress,
Screen_TInput, Screen_TInput, Screen_TKeyPress,
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_OnResize, TexPackOverlay_ContextLost, TexPackOverlay_ContextRecreated
Menu_Layout, TexPackOverlay_ContextLost, TexPackOverlay_ContextRecreated
};
void TexPackOverlay_Show(const String* url) {
struct TexPackOverlay* s = &TexPackOverlay_Instance;
@ -3260,7 +3259,7 @@ void TexPackOverlay_Show(const String* url) {
*----------------------------------------------------UrlWarningOverlay----------------------------------------------------*
*#########################################################################################################################*/
static struct TouchMoreOverlay {
Screen_Layout
Screen_Body
struct ButtonWidget buttons[8];
} TouchMoreOverlay_Instance;
@ -3319,9 +3318,9 @@ static void TouchMoreOverlay_Init(void* screen) {
static const struct ScreenVTABLE TouchMoreOverlay_VTABLE = {
TouchMoreOverlay_Init, MenuScreen_Render, Menu_NullFunc,
Screen_TKey, Screen_TKey, Screen_TKeyPress,
Screen_TInput, Screen_TInput, Screen_TKeyPress,
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
Menu_OnResize, Menu_ContextLost, TouchMoreOverlay_ContextRecreated
Menu_Layout, Menu_ContextLost, TouchMoreOverlay_ContextRecreated
};
void TouchMoreOverlay_Show(void) {
struct TouchMoreOverlay* s = &TouchMoreOverlay_Instance;

View file

@ -24,17 +24,17 @@
#define CHAT_MAX_BOTTOMRIGHT Array_Elems(Chat_BottomRight)
#define CHAT_MAX_CLIENTSTATUS Array_Elems(Chat_ClientStatus)
cc_bool Screen_FKey(void* s, int key) { return false; }
cc_bool Screen_FKeyPress(void* s, char keyChar) { return false; }
cc_bool Screen_FMouseScroll(void* s, float delta) { return false; }
cc_bool Screen_FPointer(void* s, int id, int x, int y) { return false; }
cc_bool Screen_FPointerMove(void* s, int id, int x, int y) { return false; }
int Screen_FInput(void* s, int key) { return false; }
int Screen_FKeyPress(void* s, char keyChar) { return false; }
int Screen_FMouseScroll(void* s, float delta) { return false; }
int Screen_FPointer(void* s, int id, int x, int y) { return false; }
int Screen_FPointerMove(void* s, int id, int x, int y) { return false; }
cc_bool Screen_TKeyPress(void* s, char keyChar) { return true; }
cc_bool Screen_TKey(void* s, int key) { return true; }
cc_bool Screen_TMouseScroll(void* s, float delta) { return true; }
cc_bool Screen_TPointer(void* s, int id, int x, int y) { return true; }
cc_bool Screen_TPointerMove(void* s, int id, int x, int y) { return true; }
int Screen_TInput(void* s, int key) { return true; }
int Screen_TKeyPress(void* s, char keyChar) { return true; }
int Screen_TMouseScroll(void* s, float delta) { return true; }
int Screen_TPointer(void* s, int id, int x, int y) { return true; }
int Screen_TPointerMove(void* s, int id, int x, int y) { return true; }
static void Screen_NullFunc(void* screen) { }
CC_NOINLINE static cc_bool IsOnlyHudActive(void) {
@ -53,7 +53,7 @@ CC_NOINLINE static cc_bool IsOnlyHudActive(void) {
*--------------------------------------------------------HUDScreen--------------------------------------------------------*
*#########################################################################################################################*/
static struct HUDScreen {
Screen_Layout
Screen_Body
struct FontDesc font;
struct TextWidget line1, line2;
struct TextAtlas posAtlas;
@ -198,8 +198,8 @@ static void HUDScreen_ContextRecreated(void* screen) {
line1->yOffset = s->posAtlas.tex.Y;
TextWidget_SetConst(line2, "0.30", &s->font);
Widget_Reposition(line1);
Widget_Reposition(line2);
Widget_Layout(line1);
Widget_Layout(line2);
} else {
HUDScreen_UpdateHackState(s);
}
@ -225,8 +225,8 @@ static void HUDScreen_Render(void* screen, double delta) {
}
static const struct ScreenVTABLE HUDScreen_VTABLE = {
Screen_NullFunc, HUDScreen_Render, Screen_NullFunc,
Screen_FKey, Screen_FKey, Screen_FKeyPress,
Screen_NullFunc, HUDScreen_Render, Screen_NullFunc,
Screen_FInput, Screen_FInput, Screen_FKeyPress,
Screen_FPointer, Screen_FPointer, Screen_FPointerMove, Screen_FMouseScroll,
Screen_NullFunc, HUDScreen_ContextLost, HUDScreen_ContextRecreated
};
@ -242,7 +242,7 @@ void HUDScreen_Show(void) {
*--------------------------------------------------------ChatScreen-------------------------------------------------------*
*#########################################################################################################################*/
static struct ChatScreen {
Screen_Layout
Screen_Body
struct HotbarWidget hotbar;
/* player list state */
struct PlayerListWidget playerList;
@ -272,13 +272,13 @@ static void ChatScreen_UpdateChatYOffsets(struct ChatScreen* s) {
y = min(s->input.base.y, s->hotbar.y);
y -= s->input.base.yOffset; /* add some padding */
s->altText.yOffset = Window_Height - y;
Widget_Reposition(&s->altText);
Widget_Layout(&s->altText);
pad = s->altText.active ? 5 : 10;
s->clientStatus.yOffset = Window_Height - s->altText.y + pad;
Widget_Reposition(&s->clientStatus);
Widget_Layout(&s->clientStatus);
s->chat.yOffset = s->clientStatus.yOffset + s->clientStatus.height;
Widget_Reposition(&s->chat);
Widget_Layout(&s->chat);
}
static String ChatScreen_GetChat(void* obj, int i) {
@ -586,7 +586,7 @@ static void ChatScreen_RemakePlayerList(struct ChatScreen* s) {
cc_bool classic = Gui_ClassicTabList || !Server.SupportsExtPlayerList;
PlayerListWidget_Create(&s->playerList, &s->playerFont, classic);
s->showingList = true;
Widget_Reposition(&s->playerList);
Widget_Layout(&s->playerList);
}
static void ChatScreen_ContextRecreated(void* screen) {
@ -596,21 +596,21 @@ static void ChatScreen_ContextRecreated(void* screen) {
ChatScreen_ChatUpdateFont(s);
ChatScreen_Redraw(s);
Widget_Reposition(&s->hotbar);
Widget_Layout(&s->hotbar);
ChatScreen_ChatUpdateLayout(s);
if (s->showingList) ChatScreen_RemakePlayerList(s);
}
static void ChatScreen_OnResize(void* screen) {
static void ChatScreen_Layout(void* screen) {
struct ChatScreen* s = (struct ChatScreen*)screen;
Widget_Reposition(&s->hotbar);
Widget_Layout(&s->hotbar);
if (ChatScreen_ChatUpdateFont(s)) ChatScreen_Redraw(s);
ChatScreen_ChatUpdateLayout(s);
if (s->showingList) Widget_Reposition(&s->playerList);
if (s->showingList) Widget_Layout(&s->playerList);
}
static cc_bool ChatScreen_KeyPress(void* screen, char keyChar) {
static int ChatScreen_KeyPress(void* screen, char keyChar) {
struct ChatScreen* s = (struct ChatScreen*)screen;
if (!s->grabsInput) return false;
@ -624,7 +624,7 @@ static cc_bool ChatScreen_KeyPress(void* screen, char keyChar) {
return true;
}
static cc_bool ChatScreen_KeyDown(void* screen, Key key) {
static int ChatScreen_KeyDown(void* screen, Key key) {
static const String slash = String_FromConst("/");
struct ChatScreen* s = (struct ChatScreen*)screen;
Key playerListKey = KeyBinds[KEYBIND_PLAYER_LIST];
@ -671,7 +671,7 @@ static cc_bool ChatScreen_KeyDown(void* screen, Key key) {
return true;
}
static cc_bool ChatScreen_KeyUp(void* screen, Key key) {
static int ChatScreen_KeyUp(void* screen, Key key) {
struct ChatScreen* s = (struct ChatScreen*)screen;
if (key == KeyBinds[KEYBIND_PLAYER_LIST] && s->showingList) {
s->showingList = false;
@ -693,7 +693,7 @@ static cc_bool ChatScreen_KeyUp(void* screen, Key key) {
return true;
}
static cc_bool ChatScreen_MouseScroll(void* screen, float delta) {
static int ChatScreen_MouseScroll(void* screen, float delta) {
struct ChatScreen* s = (struct ChatScreen*)screen;
int steps;
if (!s->grabsInput) return false;
@ -703,7 +703,7 @@ static cc_bool ChatScreen_MouseScroll(void* screen, float delta) {
return true;
}
static cc_bool ChatScreen_PointerDown(void* screen, int id, int x, int y) {
static int ChatScreen_PointerDown(void* screen, int id, int x, int y) {
String text; char textBuffer[STRING_SIZE * 4];
struct ChatScreen* s = (struct ChatScreen*)screen;
int height, chatY;
@ -814,8 +814,8 @@ static void ChatScreen_Free(void* screen) {
static const struct ScreenVTABLE ChatScreen_VTABLE = {
ChatScreen_Init, ChatScreen_Render, ChatScreen_Free,
ChatScreen_KeyDown, ChatScreen_KeyUp, ChatScreen_KeyPress,
ChatScreen_PointerDown, Screen_FPointer, Screen_FPointerMove, ChatScreen_MouseScroll,
ChatScreen_OnResize, ChatScreen_ContextLost, ChatScreen_ContextRecreated
ChatScreen_PointerDown, Screen_FPointer, Screen_FPointerMove, ChatScreen_MouseScroll,
ChatScreen_Layout, ChatScreen_ContextLost, ChatScreen_ContextRecreated
};
void ChatScreen_Show(void) {
struct ChatScreen* s = &ChatScreen_Instance;
@ -866,7 +866,7 @@ struct Widget* ChatScreen_GetHotbar(void) {
*-----------------------------------------------------InventoryScreen-----------------------------------------------------*
*#########################################################################################################################*/
static struct InventoryScreen {
Screen_Layout
Screen_Body
struct FontDesc font;
struct TableWidget table;
cc_bool releasedInv, deferredSelect;
@ -924,9 +924,9 @@ static void InventoryScreen_Render(void* screen, double delta) {
Elem_Render(&s->table, delta);
}
static void InventoryScreen_OnResize(void* screen) {
static void InventoryScreen_Layout(void* screen) {
struct InventoryScreen* s = (struct InventoryScreen*)screen;
Widget_Reposition(&s->table);
Widget_Layout(&s->table);
}
static void InventoryScreen_Free(void* screen) {
@ -935,7 +935,7 @@ static void InventoryScreen_Free(void* screen) {
Event_UnregisterVoid(&BlockEvents.BlockDefChanged, s, InventoryScreen_OnBlockChanged);
}
static cc_bool InventoryScreen_KeyDown(void* screen, Key key) {
static int InventoryScreen_KeyDown(void* screen, Key key) {
struct InventoryScreen* s = (struct InventoryScreen*)screen;
struct TableWidget* table = &s->table;
@ -952,7 +952,7 @@ static cc_bool InventoryScreen_KeyDown(void* screen, Key key) {
return true;
}
static cc_bool InventoryScreen_KeyUp(void* screen, Key key) {
static int InventoryScreen_KeyUp(void* screen, Key key) {
struct InventoryScreen* s = (struct InventoryScreen*)screen;
struct ChatScreen* hud;
@ -964,7 +964,7 @@ static cc_bool InventoryScreen_KeyUp(void* screen, Key key) {
return Elem_HandlesKeyUp(&hud->hotbar, key);
}
static cc_bool InventoryScreen_PointerDown(void* screen, int id, int x, int y) {
static int InventoryScreen_PointerDown(void* screen, int id, int x, int y) {
struct InventoryScreen* s = (struct InventoryScreen*)screen;
struct TableWidget* table = &s->table;
struct ChatScreen* hud = (struct ChatScreen*)Gui_Chat;
@ -981,17 +981,17 @@ static cc_bool InventoryScreen_PointerDown(void* screen, int id, int x, int y) {
return true;
}
static cc_bool InventoryScreen_PointerUp(void* screen, int id, int x, int y) {
static int InventoryScreen_PointerUp(void* screen, int id, int x, int y) {
struct InventoryScreen* s = (struct InventoryScreen*)screen;
return Elem_HandlesPointerUp(&s->table, id, x, y);
}
static cc_bool InventoryScreen_PointerMove(void* screen, int id, int x, int y) {
static int InventoryScreen_PointerMove(void* screen, int id, int x, int y) {
struct InventoryScreen* s = (struct InventoryScreen*)screen;
return Elem_HandlesPointerMove(&s->table, id, x, y);
}
static cc_bool InventoryScreen_MouseScroll(void* screen, float delta) {
static int InventoryScreen_MouseScroll(void* screen, float delta) {
struct InventoryScreen* s = (struct InventoryScreen*)screen;
cc_bool hotbar = Key_IsAltPressed() || Key_IsControlPressed() || Key_IsShiftPressed();
@ -1003,7 +1003,7 @@ static const struct ScreenVTABLE InventoryScreen_VTABLE = {
InventoryScreen_Init, InventoryScreen_Render, InventoryScreen_Free,
InventoryScreen_KeyDown, InventoryScreen_KeyUp, Screen_TKeyPress,
InventoryScreen_PointerDown, InventoryScreen_PointerUp, InventoryScreen_PointerMove, InventoryScreen_MouseScroll,
InventoryScreen_OnResize, InventoryScreen_ContextLost, InventoryScreen_ContextRecreated
InventoryScreen_Layout, InventoryScreen_ContextLost, InventoryScreen_ContextRecreated
};
void InventoryScreen_Show(void) {
struct InventoryScreen* s = &InventoryScreen_Instance;
@ -1019,7 +1019,7 @@ void InventoryScreen_Show(void) {
*------------------------------------------------------LoadingScreen------------------------------------------------------*
*#########################################################################################################################*/
static struct LoadingScreen {
Screen_Layout
Screen_Body
struct FontDesc font;
float progress;
@ -1043,11 +1043,11 @@ static void LoadingScreen_MapLoading(void* screen, float progress) {
s->progress = progress;
}
static void LoadingScreen_OnResize(void* screen) {
static void LoadingScreen_Layout(void* screen) {
struct LoadingScreen* s = (struct LoadingScreen*)screen;
if (!s->title.VTABLE) return;
Widget_Reposition(&s->title);
Widget_Reposition(&s->message);
Widget_Layout(&s->title);
Widget_Layout(&s->message);
}
static void LoadingScreen_ContextLost(void* screen) {
@ -1166,9 +1166,9 @@ CC_NOINLINE static void LoadingScreen_ShowCommon(const String* title, const Stri
static const struct ScreenVTABLE LoadingScreen_VTABLE = {
LoadingScreen_Init, LoadingScreen_Render, LoadingScreen_Free,
Screen_TKey, Screen_TKey, Screen_TKeyPress,
Screen_TInput, Screen_TInput, Screen_TKeyPress,
Screen_TPointer, Screen_TPointer, Screen_TPointerMove, Screen_TMouseScroll,
LoadingScreen_OnResize, LoadingScreen_ContextLost, LoadingScreen_ContextRecreated
LoadingScreen_Layout, LoadingScreen_ContextLost, LoadingScreen_ContextRecreated
};
void LoadingScreen_Show(const String* title, const String* message) {
LoadingScreen_Instance.VTABLE = &LoadingScreen_VTABLE;
@ -1236,9 +1236,9 @@ static void GeneratingScreen_Render(void* screen, double delta) {
static const struct ScreenVTABLE GeneratingScreen_VTABLE = {
GeneratingScreen_Init, GeneratingScreen_Render, LoadingScreen_Free,
Screen_TKey, Screen_TKey, Screen_TKeyPress,
Screen_TInput, Screen_TInput, Screen_TKeyPress,
Screen_TPointer, Screen_TPointer, Screen_FPointerMove, Screen_TMouseScroll,
LoadingScreen_OnResize, LoadingScreen_ContextLost, LoadingScreen_ContextRecreated
LoadingScreen_Layout, LoadingScreen_ContextLost, LoadingScreen_ContextRecreated
};
void GeneratingScreen_Show(void) {
static const String title = String_FromConst("Generating level");
@ -1253,7 +1253,7 @@ void GeneratingScreen_Show(void) {
*----------------------------------------------------DisconnectScreen-----------------------------------------------------*
*#########################################################################################################################*/
static struct DisconnectScreen {
Screen_Layout
Screen_Body
TimeMS initTime;
cc_bool canReconnect, lastActive;
int lastSecsLeft;
@ -1356,17 +1356,17 @@ static void DisconnectScreen_Render(void* screen, double delta) {
static void DisconnectScreen_Free(void* screen) { Game_SetFpsLimit(Game_FpsLimit); }
static void DisconnectScreen_OnResize(void* screen) {
static void DisconnectScreen_Layout(void* screen) {
struct DisconnectScreen* s = (struct DisconnectScreen*)screen;
if (!s->title.VTABLE) return;
Widget_Reposition(&s->title);
Widget_Reposition(&s->message);
Widget_Reposition(&s->reconnect);
Widget_Layout(&s->title);
Widget_Layout(&s->message);
Widget_Layout(&s->reconnect);
}
static cc_bool DisconnectScreen_KeyDown(void* s, Key key) { return key < KEY_F1 || key > KEY_F35; }
static int DisconnectScreen_KeyDown(void* s, Key key) { return key < KEY_F1 || key > KEY_F35; }
static cc_bool DisconnectScreen_PointerDown(void* screen, int id, int x, int y) {
static int DisconnectScreen_PointerDown(void* screen, int id, int x, int y) {
struct DisconnectScreen* s = (struct DisconnectScreen*)screen;
struct ButtonWidget* w = &s->reconnect;
@ -1378,7 +1378,7 @@ static cc_bool DisconnectScreen_PointerDown(void* screen, int id, int x, int y)
return true;
}
static cc_bool DisconnectScreen_PointerMove(void* screen, int idx, int x, int y) {
static int DisconnectScreen_PointerMove(void* screen, int idx, int x, int y) {
struct DisconnectScreen* s = (struct DisconnectScreen*)screen;
struct ButtonWidget* w = &s->reconnect;
@ -1388,9 +1388,9 @@ static cc_bool DisconnectScreen_PointerMove(void* screen, int idx, int x, int y)
static const struct ScreenVTABLE DisconnectScreen_VTABLE = {
DisconnectScreen_Init, DisconnectScreen_Render, DisconnectScreen_Free,
DisconnectScreen_KeyDown, Screen_TKey, Screen_TKeyPress,
DisconnectScreen_KeyDown, Screen_TInput, Screen_TKeyPress,
DisconnectScreen_PointerDown, Screen_TPointer, DisconnectScreen_PointerMove, Screen_TMouseScroll,
DisconnectScreen_OnResize, DisconnectScreen_ContextLost, DisconnectScreen_ContextRecreated
DisconnectScreen_Layout, DisconnectScreen_ContextLost, DisconnectScreen_ContextRecreated
};
void DisconnectScreen_Show(const String* title, const String* message) {
static const String kick = String_FromConst("Kicked ");
@ -1423,7 +1423,7 @@ void DisconnectScreen_Show(const String* title, const String* message) {
*#########################################################################################################################*/
#ifdef CC_BUILD_TOUCH
static struct TouchScreen {
Screen_Layout
Screen_Body
int numButtons, layout;
cc_uint8 binds[10];
struct FontDesc font;
@ -1524,15 +1524,15 @@ static void TouchScreen_Render(void* screen, double delta) {
if (i != s->layout) Gui_Refresh(s);
}
static void TouchScreen_OnResize(void* screen) {
static void TouchScreen_Layout(void* screen) {
struct TouchScreen* s = (struct TouchScreen*)screen;
int i;
for (i = 0; i < s->numButtons; i++) {
Widget_Reposition(&s->buttons[i]);
Widget_Layout(&s->buttons[i]);
}
}
static cc_bool TouchScreen_PointerDown(void* screen, int id, int x, int y) {
static int TouchScreen_PointerDown(void* screen, int id, int x, int y) {
struct TouchScreen* s = (struct TouchScreen*)screen;
int i;
//Chat_Add1("POINTER DOWN: %i", &id);
@ -1551,7 +1551,7 @@ static cc_bool TouchScreen_PointerDown(void* screen, int id, int x, int y) {
return false;
}
static cc_bool TouchScreen_PointerUp(void* screen, int id, int x, int y) {
static int TouchScreen_PointerUp(void* screen, int id, int x, int y) {
struct TouchScreen* s = (struct TouchScreen*)screen;
int i;
//Chat_Add1("POINTER UP: %i", &id);
@ -1570,9 +1570,9 @@ static cc_bool TouchScreen_PointerUp(void* screen, int id, int x, int y) {
static const struct ScreenVTABLE TouchScreen_VTABLE = {
Screen_NullFunc, TouchScreen_Render, Screen_NullFunc,
Screen_FKey, Screen_FKey, Screen_FKeyPress,
Screen_FInput, Screen_FInput, Screen_FKeyPress,
TouchScreen_PointerDown, TouchScreen_PointerUp, Screen_FPointerMove, Screen_FMouseScroll,
TouchScreen_OnResize, TouchScreen_ContextLost, TouchScreen_ContextRecreated
TouchScreen_Layout, TouchScreen_ContextLost, TouchScreen_ContextRecreated
};
void TouchScreen_Show(void) {
struct TouchScreen* s = &TouchScreen_Instance;

View file

@ -8,18 +8,18 @@ struct Screen;
struct Widget;
/* These always return false */
cc_bool Screen_FKey(void* s, int key);
cc_bool Screen_FKeyPress(void* s, char keyChar);
cc_bool Screen_FMouseScroll(void* s, float delta);
cc_bool Screen_FPointer(void* s, int id, int x, int y);
cc_bool Screen_FPointerMove(void* s, int id, int x, int y);
int Screen_FInput(void* s, int key);
int Screen_FKeyPress(void* s, char keyChar);
int Screen_FMouseScroll(void* s, float delta);
int Screen_FPointer(void* s, int id, int x, int y);
int Screen_FPointerMove(void* s, int id, int x, int y);
/* These always return true */
cc_bool Screen_TKeyPress(void* s, char keyChar);
cc_bool Screen_TKey(void* s, int key);
cc_bool Screen_TMouseScroll(void* s, float delta);
cc_bool Screen_TPointer(void* s, int id, int x, int y);
cc_bool Screen_TPointerMove(void* s, int id, int x, int y);
int Screen_TInput(void* s, int key);
int Screen_TKeyPress(void* s, char keyChar);
int Screen_TMouseScroll(void* s, float delta);
int Screen_TPointer(void* s, int id, int x, int y);
int Screen_TPointerMove(void* s, int id, int x, int y);
void InventoryScreen_Show(void);
void HUDScreen_Show(void);

View file

@ -70,7 +70,7 @@ void TextWidget_Set(struct TextWidget* w, const String* text, struct FontDesc* f
}
w->width = w->tex.Width; w->height = w->tex.Height;
Widget_Reposition(w);
Widget_Layout(w);
}
void TextWidget_SetConst(struct TextWidget* w, const char* text, struct FontDesc* font) {
@ -171,7 +171,7 @@ void ButtonWidget_Set(struct ButtonWidget* w, const String* text, struct FontDes
w->width = max(w->tex.Width, w->minWidth);
w->height = max(w->tex.Height, btnMinHeight);
Widget_Reposition(w);
Widget_Layout(w);
}
void ButtonWidget_SetConst(struct ButtonWidget* w, const char* text, struct FontDesc* font) {
@ -590,7 +590,7 @@ void TableWidget_RecreateBlocks(struct TableWidget* w) {
}
w->rowsCount = Math_CeilDiv(w->blocksCount, w->blocksPerRow);
Widget_Reposition(w);
Widget_Layout(w);
}
static void TableWidget_Render(void* widget, double delta) {
@ -951,7 +951,7 @@ static void InputWidget_OnPressedEnter(void* widget) {
InputWidget_Clear(w);
w->height = w->lineHeight;
/* TODO get rid of this awful hack.. */
Widget_Reposition(w);
Widget_Layout(w);
}
void InputWidget_Clear(struct InputWidget* w) {
@ -1388,7 +1388,7 @@ static void MenuInputWidget_RemakeTexture(void* widget) {
Drawer2D_Make2DTexture(tex, &bmp, adjSize);
Mem_Free(bmp.Scan0);
Widget_Reposition(&w->base);
Widget_Layout(&w->base);
tex->X = w->base.x; tex->Y = w->base.y;
if (size.Height < w->minHeight) {
tex->Y += w->minHeight / 2 - size.Height / 2;
@ -1501,7 +1501,7 @@ static void ChatInputWidget_RemakeTexture(void* widget) {
w->width = size.Width;
w->height = size.Height;
Widget_Reposition(w);
Widget_Layout(w);
w->inputTex.X = w->x + w->padding;
w->inputTex.Y = w->y;
}
@ -1956,7 +1956,7 @@ static void PlayerListWidget_SortEntries(struct PlayerListWidget* w) {
static void PlayerListWidget_SortAndReposition(struct PlayerListWidget* w) {
PlayerListWidget_SortEntries(w);
Widget_Reposition(w);
Widget_Layout(w);
}
void PlayerListWidget_Add(struct PlayerListWidget* w, int id) {
@ -2006,7 +2006,7 @@ static void PlayerListWidget_Render(void* widget, double delta) {
Gfx_SetTexturing(true);
title->yOffset = w->y - offset + 5;
Widget_Reposition(title);
Widget_Layout(title);
Elem_Render(title, delta);
grabbed = Gui_GetInputGrab();
@ -2386,7 +2386,7 @@ void TextGroupWidget_Redraw(struct TextGroupWidget* w, int index) {
tex.X = Gui_CalcPos(w->horAnchor, w->xOffset, tex.Width, Window_Width);
w->textures[index] = tex;
Widget_Reposition(w);
Widget_Layout(w);
}
void TextGroupWidget_RedrawAllWithCol(struct TextGroupWidget* group, char col) {
@ -2418,7 +2418,7 @@ void TextGroupWidget_SetFont(struct TextGroupWidget* w, struct FontDesc* font) {
w->textures[i].Height = w->collapsible[i] ? 0 : height;
}
w->font = font;
Widget_Reposition(w);
Widget_Layout(w);
}
static void TextGroupWidget_Render(void* widget, double delta) {
@ -2638,7 +2638,7 @@ void SpecialInputWidget_Redraw(struct SpecialInputWidget* w) {
SpecialInputWidget_Make(w, &w->tabs[w->selectedIndex]);
w->width = w->tex.Width;
w->pendingRedraw = false;
Widget_Reposition(w);
Widget_Layout(w);
}
static void SpecialInputWidget_Render(void* widget, double delta) {
@ -2683,7 +2683,7 @@ void SpecialInputWidget_UpdateCols(struct SpecialInputWidget* w) {
void SpecialInputWidget_SetActive(struct SpecialInputWidget* w, cc_bool active) {
w->active = active;
if (active && w->pendingRedraw) SpecialInputWidget_Redraw(w);
Widget_Reposition(w);
Widget_Layout(w);
}
static const struct WidgetVTABLE SpecialInputWidget_VTABLE = {

View file

@ -11,7 +11,7 @@ struct FontDesc;
/* A text label. */
struct TextWidget {
Widget_Layout
Widget_Body
struct Texture tex;
PackedCol col;
};
@ -28,7 +28,7 @@ typedef void (*Button_Get)(String* raw);
typedef void (*Button_Set)(const String* raw);
/* A labelled button that can be clicked on. */
struct ButtonWidget {
Widget_Layout
Widget_Body
struct Texture tex;
int minWidth;
const char* optName;
@ -45,7 +45,7 @@ CC_NOINLINE void ButtonWidget_SetConst(struct ButtonWidget* w, const char* text,
/* Clickable and draggable scrollbar. */
struct ScrollbarWidget {
Widget_Layout
Widget_Body
int totalRows, topRow;
float scrollingAcc;
int dragOffset;
@ -56,7 +56,7 @@ CC_NOINLINE void ScrollbarWidget_Create(struct ScrollbarWidget* w);
/* A row of blocks with a background. */
struct HotbarWidget {
Widget_Layout
Widget_Body
struct Texture selTex, backTex;
float barHeight, selBlockSize, elemSize;
float barXOffset, borderSize;
@ -69,7 +69,7 @@ CC_NOINLINE void HotbarWidget_Create(struct HotbarWidget* w);
/* A table of blocks. */
struct TableWidget {
Widget_Layout
Widget_Body
int blocksCount, blocksPerRow, rowsCount;
int lastCreatedIndex;
struct FontDesc* font;
@ -97,7 +97,7 @@ CC_NOINLINE void TableWidget_Recreate(struct TableWidget* w);
#define INPUTWIDGET_MAX_LINES 3
#define INPUTWIDGET_LEN STRING_SIZE
struct InputWidget {
Widget_Layout
Widget_Body
struct FontDesc* font;
int (*GetMaxLines)(void);
void (*RemakeTexture)(void* elem); /* Remakes the raw texture containing all the chat lines. Also updates dimensions. */
@ -202,7 +202,7 @@ typedef String (*TextGroupWidget_Get)(void* obj, int i);
/* A group of text labels. */
struct TextGroupWidget {
Widget_Layout
Widget_Body
int lines, defaultHeight;
struct FontDesc* font;
/* Whether a line has zero height when that line has no text in it. */
@ -237,7 +237,7 @@ static String TextGroupWidget_UNSAFE_Get(struct TextGroupWidget* w, int i) { ret
struct PlayerListWidget {
Widget_Layout
Widget_Body
struct FontDesc* font;
int namesCount, elementOffset;
cc_bool classic;
@ -264,7 +264,7 @@ struct SpecialInputTab {
};
struct SpecialInputWidget {
Widget_Layout
Widget_Body
int elementWidth, elementHeight;
int selectedIndex;
cc_bool pendingRedraw;