diff --git a/src/Graphics.c b/src/Graphics.c index cabe19a12..a5b4e28d9 100644 --- a/src/Graphics.c +++ b/src/Graphics.c @@ -583,16 +583,12 @@ void Gfx_SetFaceCulling(cc_bool enabled) { void Gfx_SetFog(cc_bool enabled) { if (gfx_fogEnabled == enabled) return; gfx_fogEnabled = enabled; - - if (Gfx.LostContext) return; IDirect3DDevice9_SetRenderState(device, D3DRS_FOGENABLE, enabled); } void Gfx_SetFogCol(PackedCol col) { if (col == gfx_fogCol) return; gfx_fogCol = col; - - if (Gfx.LostContext) return; IDirect3DDevice9_SetRenderState(device, D3DRS_FOGCOLOR, gfx_fogCol); } @@ -601,7 +597,6 @@ void Gfx_SetFogDensity(float value) { if (value == gfx_fogDensity) return; gfx_fogDensity = value; - if (Gfx.LostContext) return; raw.f = value; IDirect3DDevice9_SetRenderState(device, D3DRS_FOGDENSITY, raw.u); } @@ -611,7 +606,6 @@ void Gfx_SetFogEnd(float value) { if (value == gfx_fogEnd) return; gfx_fogEnd = value; - if (Gfx.LostContext) return; raw.f = value; IDirect3DDevice9_SetRenderState(device, D3DRS_FOGEND, raw.u); } @@ -622,7 +616,6 @@ void Gfx_SetFogMode(FogFunc func) { if (mode == gfx_fogMode) return; gfx_fogMode = mode; - if (Gfx.LostContext) return; IDirect3DDevice9_SetRenderState(device, D3DRS_FOGTABLEMODE, mode); } @@ -683,7 +676,10 @@ static void D3D9_RestoreRenderStates(void) { GfxResourceID Gfx_CreateDynamicVb(VertexFormat fmt, int maxVertices) { int size = maxVertices * gfx_strideSizes[fmt]; IDirect3DVertexBuffer9* vbuffer; - cc_result res = IDirect3DDevice9_CreateVertexBuffer(device, size, D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY, + cc_result res; + if (Gfx.LostContext) return 0; + + res = IDirect3DDevice9_CreateVertexBuffer(device, size, D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY, d3d9_formatMappings[fmt], D3DPOOL_DEFAULT, &vbuffer, NULL); if (res) Logger_Abort2(res, "D3D9_CreateDynamicVb"); @@ -1165,7 +1161,8 @@ static GLuint GL_GenAndBind(GLenum target) { } GfxResourceID Gfx_CreateDynamicVb(VertexFormat fmt, int maxVertices) { - GLuint id = GL_GenAndBind(GL_ARRAY_BUFFER); + if (Gfx.LostContext) return 0; + GLuint id = GL_GenAndBind(GL_ARRAY_BUFFER); cc_uint32 size = maxVertices * gfx_strideSizes[fmt]; _glBufferData(GL_ARRAY_BUFFER, size, NULL, GL_DYNAMIC_DRAW); return id; diff --git a/src/Gui.c b/src/Gui.c index a406d82ba..7660caee6 100644 --- a/src/Gui.c +++ b/src/Gui.c @@ -158,6 +158,7 @@ static void Gui_AddCore(struct Screen* s, int priority) { priorities[i] = priority; Gui_ScreensCount++; + s->dirty = true; s->VTABLE->Init(s); s->VTABLE->ContextRecreated(s); @@ -240,6 +241,7 @@ void Gui_RenderGui(double delta) { /* Draw back to front so highest priority screen is on top */ for (i = Gui_ScreensCount - 1; i >= 0; i--) { s = Gui_Screens[i]; + if (s->dirty) { s->VTABLE->BuildMesh(s); s->dirty = false; } s->VTABLE->Render(s, delta); } Gfx_Mode3D(); diff --git a/src/Gui.h b/src/Gui.h index 2a202510b..c43b9fa08 100644 --- a/src/Gui.h +++ b/src/Gui.h @@ -42,10 +42,12 @@ struct ScreenVTABLE { void (*Render)(void* elem, double delta); /* Frees/releases persistent state. */ void (*Free)(void* elem); + /* Builds the vertex mesh for all the widgets in the screen. */ + void (*BuildMesh)(void* elem); /* Returns non-zero if an input press is handled. */ - int (*HandlesKeyDown)(void* elem, int key); + int (*HandlesInputDown)(void* elem, int key); /* Returns non-zero if an input release is handled. */ - int (*HandlesKeyUp)(void* elem, int key); + int (*HandlesInputUp)(void* elem, int key); /* Returns non-zero if a key character press is handled. */ int (*HandlesKeyPress)(void* elem, char keyChar); /* Returns non-zero if a key character press is handled. */ @@ -70,6 +72,7 @@ struct ScreenVTABLE { 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 */ \ + cc_bool dirty; /* Whether this screens needs to have its mesh rebuilt. */ \ struct Widget** widgets; int numWidgets; /* Represents a container of widgets and other 2D elements. May cover entire window. */ diff --git a/src/Input.c b/src/Input.c index 77e8677e1..e68541f22 100644 --- a/src/Input.c +++ b/src/Input.c @@ -747,7 +747,7 @@ static void InputHandler_Toggle(int key, cc_bool* target, const char* enableMsg, } } -static void InputHandler_CycleDistanceForwards(const short* viewDists, int count) { +static void CycleViewDistanceForwards(const short* viewDists, int count) { int i, dist; for (i = 0; i < count; i++) { dist = viewDists[i]; @@ -759,7 +759,7 @@ static void InputHandler_CycleDistanceForwards(const short* viewDists, int count Game_UserSetViewDistance(viewDists[0]); } -static void InputHandler_CycleDistanceBackwards(const short* viewDists, int count) { +static void CycleViewDistanceBackwards(const short* viewDists, int count) { int i, dist; for (i = count - 1; i >= 0; i--) { dist = viewDists[i]; @@ -873,9 +873,9 @@ static cc_bool HandleCoreKey(int key) { int count = Gui_ClassicMenu ? Array_Elems(classicDists) : Array_Elems(normDists); if (Key_IsShiftPressed()) { - InputHandler_CycleDistanceBackwards(viewDists, count); + CycleViewDistanceBackwards(viewDists, count); } else { - InputHandler_CycleDistanceForwards(viewDists, count); + CycleViewDistanceForwards(viewDists, count); } } else if (key == KEY_F5 && Game_ClassicMode) { int weather = Env.Weather == WEATHER_SUNNY ? WEATHER_RAINY : WEATHER_SUNNY; @@ -915,6 +915,7 @@ static void HandleMouseWheel(void* obj, float delta) { for (i = 0; i < Gui_ScreensCount; i++) { s = Gui_Screens[i]; + s->dirty = true; if (s->VTABLE->HandlesMouseScroll(s, delta)) return; } @@ -924,6 +925,7 @@ static void HandleMouseWheel(void* obj, float delta) { widget = ChatScreen_GetHotbar(); Elem_HandlesMouseScroll(widget, delta); + ((struct Screen*)Gui_Chat)->dirty = true; } static void HandlePointerMove(void* obj, int idx, int xDelta, int yDelta) { @@ -932,6 +934,7 @@ static void HandlePointerMove(void* obj, int idx, int xDelta, int yDelta) { for (i = 0; i < Gui_ScreensCount; i++) { s = Gui_Screens[i]; + s->dirty = true; if (s->VTABLE->HandlesPointerMove(s, 1 << idx, x, y)) return; } } @@ -942,6 +945,7 @@ static void HandlePointerDown(void* obj, int idx) { for (i = 0; i < Gui_ScreensCount; i++) { s = Gui_Screens[i]; + s->dirty = true; #ifdef CC_BUILD_TOUCH if (s->VTABLE->HandlesPointerDown(s, 1 << idx, x, y)) { touches[idx].type = TOUCH_TYPE_GUI; return; @@ -958,6 +962,7 @@ static void HandlePointerUp(void* obj, int idx) { for (i = 0; i < Gui_ScreensCount; i++) { s = Gui_Screens[i]; + s->dirty = true; if (s->VTABLE->HandlesPointerUp(s, 1 << idx, x, y)) return; } } @@ -983,7 +988,8 @@ static void HandleInputDown(void* obj, int key, cc_bool was) { for (i = 0; i < Gui_ScreensCount; i++) { s = Gui_Screens[i]; - if (s->VTABLE->HandlesKeyDown(s, key)) return; + s->dirty = true; + if (s->VTABLE->HandlesInputDown(s, key)) return; } if ((key == KEY_ESCAPE || key == KEY_PAUSE) && !Gui_GetInputGrab()) { @@ -1023,7 +1029,8 @@ static void HandleInputUp(void* obj, int key) { for (i = 0; i < Gui_ScreensCount; i++) { s = Gui_Screens[i]; - if (s->VTABLE->HandlesKeyUp(s, key)) return; + s->dirty = true; + if (s->VTABLE->HandlesInputUp(s, key)) return; } if (Gui_GetInputGrab()) return; diff --git a/src/Menus.c b/src/Menus.c index c0ed662db..444b2814c 100644 --- a/src/Menus.c +++ b/src/Menus.c @@ -446,8 +446,10 @@ static void ListScreen_ContextRecreated(void* screen) { ListScreen_UpdatePage(s); } +static void ListScreen_BuildMesh(void* screen) { } + static const struct ScreenVTABLE ListScreen_VTABLE = { - ListScreen_Init, ListScreen_Render, ListScreen_Free, + ListScreen_Init, ListScreen_Render, ListScreen_Free, ListScreen_BuildMesh, ListScreen_KeyDown, Screen_TInput, Screen_TKeyPress, Screen_TText, Menu_PointerDown, Screen_TPointer, Menu_PointerMove, ListScreen_MouseScroll, Menu_Layout, ListScreen_ContextLost, ListScreen_ContextRecreated @@ -510,6 +512,8 @@ static void PauseScreen_ContextRecreated(void* screen) { Font_Free(&titleFont); } +static void PauseScreen_BuildMesh(void* screen) { } + static void PauseScreen_Init(void* screen) { static struct Widget* widgets[8]; struct PauseScreen* s = (struct PauseScreen*)screen; @@ -558,10 +562,10 @@ static void PauseScreen_Free(void* screen) { } static const struct ScreenVTABLE PauseScreen_VTABLE = { - PauseScreen_Init, MenuScreen_Render, PauseScreen_Free, - MenuScreen_KeyDown, Screen_TInput, Screen_TKeyPress, Screen_TText, - Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, - Menu_Layout, Menu_ContextLost, PauseScreen_ContextRecreated + PauseScreen_Init, MenuScreen_Render, PauseScreen_Free, PauseScreen_BuildMesh, + MenuScreen_KeyDown, Screen_TInput, Screen_TKeyPress, Screen_TText, + Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, + Menu_Layout, Menu_ContextLost, PauseScreen_ContextRecreated }; void PauseScreen_Show(void) { struct PauseScreen* s = &PauseScreen_Instance; @@ -632,6 +636,8 @@ static void OptionsGroupScreen_ContextRecreated(void* screen) { Font_Free(&titleFont); } +static void OptionsGroupScreen_BuildMesh(void* screen) { } + static void OptionsGroupScreen_Init(void* screen) { static struct Widget* widgets[9]; struct OptionsGroupScreen* s = (struct OptionsGroupScreen*)screen; @@ -663,7 +669,7 @@ static int OptionsGroupScreen_PointerMove(void* screen, int id, int x, int y) { } static const struct ScreenVTABLE OptionsGroupScreen_VTABLE = { - OptionsGroupScreen_Init, MenuScreen_Render, OptionsGroupScreen_Free, + OptionsGroupScreen_Init, MenuScreen_Render, OptionsGroupScreen_Free, OptionsGroupScreen_BuildMesh, MenuScreen_KeyDown, Screen_TInput, Screen_TKeyPress, Screen_TText, Menu_PointerDown, Screen_TPointer, OptionsGroupScreen_PointerMove, Screen_TMouseScroll, Menu_Layout, OptionsGroupScreen_ContextLost, OptionsGroupScreen_ContextRecreated @@ -865,6 +871,8 @@ static void EditHotkeyScreen_ContextRecreated(void* screen) { ButtonWidget_SetConst(&s->cancel, "Cancel", &s->titleFont); } +static void EditHotkeyScreen_BuildMesh(void* screen) { } + static void EditHotkeyScreen_Init(void* screen) { static struct Widget* widgets[7]; struct EditHotkeyScreen* s = (struct EditHotkeyScreen*)screen; @@ -894,7 +902,7 @@ static void EditHotkeyScreen_Init(void* screen) { } static const struct ScreenVTABLE EditHotkeyScreen_VTABLE = { - EditHotkeyScreen_Init, EditHotkeyScreen_Render, Menu_CloseKeyboard, + EditHotkeyScreen_Init, EditHotkeyScreen_Render, Menu_CloseKeyboard, EditHotkeyScreen_BuildMesh, EditHotkeyScreen_KeyDown, Screen_TInput, EditHotkeyScreen_KeyPress, EditHotkeyScreen_TextChanged, Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, Menu_Layout, EditHotkeyScreen_ContextLost, EditHotkeyScreen_ContextRecreated @@ -1050,6 +1058,8 @@ static void GenLevelScreen_ContextRecreated(void* screen) { Font_Free(&titleFont); } +static void GenLevelScreen_BuildMesh(void* screen) { } + static void GenLevelScreen_Init(void* screen) { static struct Widget* widgets[12]; struct GenLevelScreen* s = (struct GenLevelScreen*)screen; @@ -1073,7 +1083,7 @@ static void GenLevelScreen_Init(void* screen) { } static const struct ScreenVTABLE GenLevelScreen_VTABLE = { - GenLevelScreen_Init, MenuScreen_Render, Menu_CloseKeyboard, + GenLevelScreen_Init, MenuScreen_Render, Menu_CloseKeyboard, GenLevelScreen_BuildMesh, GenLevelScreen_KeyDown, Screen_TInput, GenLevelScreen_KeyPress, GenLevelScreen_TextChanged, GenLevelScreen_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, Menu_Layout, GenLevelScreen_ContextLost, GenLevelScreen_ContextRecreated @@ -1124,6 +1134,8 @@ static void ClassicGenScreen_ContextRecreated(void* screen) { Font_Free(&titleFont); } +static void ClassicGenScreen_BuildMesh(void* screen) { } + static void ClassicGenScreen_Init(void* screen) { static struct Widget* widgets[4]; struct ClassicGenScreen* s = (struct ClassicGenScreen*)screen; @@ -1138,7 +1150,7 @@ static void ClassicGenScreen_Init(void* screen) { } static const struct ScreenVTABLE ClassicGenScreen_VTABLE = { - ClassicGenScreen_Init, MenuScreen_Render, Menu_NullFunc, + ClassicGenScreen_Init, MenuScreen_Render, Menu_NullFunc, ClassicGenScreen_BuildMesh, MenuScreen_KeyDown, Screen_TInput, Screen_TKeyPress, Screen_TText, Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, Menu_Layout, Menu_ContextLost, ClassicGenScreen_ContextRecreated @@ -1375,6 +1387,8 @@ static void SaveLevelScreen_ContextRecreated(void* screen) { ButtonWidget_SetConst(&s->cancel, "Cancel", &s->titleFont); } +static void SaveLevelScreen_BuildMesh(void* screen) { } + static void SaveLevelScreen_Init(void* screen) { static struct Widget* widgets[6]; struct SaveLevelScreen* s = (struct SaveLevelScreen*)screen; @@ -1410,7 +1424,7 @@ static void SaveLevelScreen_Init(void* screen) { } static const struct ScreenVTABLE SaveLevelScreen_VTABLE = { - SaveLevelScreen_Init, SaveLevelScreen_Render, Menu_CloseKeyboard, + SaveLevelScreen_Init, SaveLevelScreen_Render, Menu_CloseKeyboard, SaveLevelScreen_BuildMesh, SaveLevelScreen_KeyDown, Screen_TInput, SaveLevelScreen_KeyPress, SaveLevelScreen_TextChanged, Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, Menu_Layout, SaveLevelScreen_ContextLost, SaveLevelScreen_ContextRecreated @@ -1717,6 +1731,8 @@ static void KeyBindingsScreen_ContextRecreated(void* screen) { ButtonWidget_SetConst(&s->right, ">", &s->titleFont); } +static void KeyBindingsScreen_BuildMesh(void* screen) { } + static void KeyBindingsScreen_InitWidgets(struct KeyBindingsScreen* s, int y, int arrowsY, int leftLength, int btnWidth, const char* title) { int origin, xOffset, i, xDir; origin = y; @@ -1762,7 +1778,7 @@ static void KeyBindingsScreen_Init(void* screen) { } static const struct ScreenVTABLE KeyBindingsScreen_VTABLE = { - KeyBindingsScreen_Init, MenuScreen_Render, Menu_NullFunc, + KeyBindingsScreen_Init, MenuScreen_Render, Menu_NullFunc, KeyBindingsScreen_BuildMesh, KeyBindingsScreen_KeyDown, Screen_TInput, Screen_TKeyPress, Screen_TText, Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, Menu_Layout, KeyBindingsScreen_ContextLost, KeyBindingsScreen_ContextRecreated @@ -2216,8 +2232,10 @@ static void MenuOptionsScreen_ContextRecreated(void* screen) { MenuOptionsScreen_RedrawInput(s); } +static void MenuOptionsScreen_BuildMesh(void* screen) { } + static const struct ScreenVTABLE MenuOptionsScreen_VTABLE = { - MenuOptionsScreen_Init, MenuOptionsScreen_Render, MenuOptionsScreen_Free, + MenuOptionsScreen_Init, MenuOptionsScreen_Render, MenuOptionsScreen_Free, MenuOptionsScreen_BuildMesh, MenuOptionsScreen_KeyDown, Screen_TInput, MenuOptionsScreen_KeyPress, MenuOptionsScreen_TextChanged, Menu_PointerDown, Screen_TPointer, MenuOptionsScreen_PointerMove, Screen_TMouseScroll, MenuOptionsScreen_Layout, MenuOptionsScreen_ContextLost, MenuOptionsScreen_ContextRecreated @@ -2955,6 +2973,8 @@ static void TexIdsOverlay_ContextRecreated(void* screen) { Font_Free(&titleFont); } +static void TexIdsOverlay_BuildMesh(void* screen) { } + static void TexIdsOverlay_RenderTerrain(struct TexIdsOverlay* s) { PackedCol col = PACKEDCOL_WHITE; VertexP3fT2fC4b vertices[TEXID_OVERLAY_VERTICES_COUNT]; @@ -3055,7 +3075,7 @@ static int TexIdsOverlay_KeyDown(void* screen, int key) { } static const struct ScreenVTABLE TexIdsOverlay_VTABLE = { - TexIdsOverlay_Init, TexIdsOverlay_Render, Menu_NullFunc, + TexIdsOverlay_Init, TexIdsOverlay_Render, Menu_NullFunc, TexIdsOverlay_BuildMesh, TexIdsOverlay_KeyDown, Screen_FInput, Screen_FKeyPress, Screen_FText, Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, Menu_Layout, TexIdsOverlay_ContextLost, TexIdsOverlay_ContextRecreated @@ -3109,6 +3129,8 @@ static void UrlWarningOverlay_ContextRecreated(void* screen) { Font_Free(&textFont); } +static void UrlWarningOverlay_BuildMesh(void* screen) { } + static void UrlWarningOverlay_Init(void* screen) { static struct Widget* widgets[6]; struct UrlWarningOverlay* s = (struct UrlWarningOverlay*)screen; @@ -3122,7 +3144,7 @@ static void UrlWarningOverlay_Init(void* screen) { } static const struct ScreenVTABLE UrlWarningOverlay_VTABLE = { - UrlWarningOverlay_Init, MenuScreen_Render, Menu_NullFunc, + UrlWarningOverlay_Init, MenuScreen_Render, Menu_NullFunc, UrlWarningOverlay_BuildMesh, Screen_TInput, Screen_TInput, Screen_TKeyPress, Screen_TText, Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, Menu_Layout, Menu_ContextLost, UrlWarningOverlay_ContextRecreated @@ -3257,6 +3279,8 @@ static void TexPackOverlay_ContextRecreated(void* screen) { Font_Free(&titleFont); } +static void TexPackOverlay_BuildMesh(void* screen) { } + static void TexPackOverlay_Init(void* screen) { static struct Widget* widgets[8]; struct TexPackOverlay* s = (struct TexPackOverlay*)screen; @@ -3271,7 +3295,7 @@ static void TexPackOverlay_Init(void* screen) { } static const struct ScreenVTABLE TexPackOverlay_VTABLE = { - TexPackOverlay_Init, TexPackOverlay_Render, Menu_NullFunc, + TexPackOverlay_Init, TexPackOverlay_Render, Menu_NullFunc, TexPackOverlay_BuildMesh, Screen_TInput, Screen_TInput, Screen_TKeyPress, Screen_TText, Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, Menu_Layout, TexPackOverlay_ContextLost, TexPackOverlay_ContextRecreated diff --git a/src/Screens.c b/src/Screens.c index 59a9aa9b3..de3393fbd 100644 --- a/src/Screens.c +++ b/src/Screens.c @@ -205,6 +205,8 @@ static void HUDScreen_ContextRecreated(void* screen) { } } +static void HUDScreen_BuildMesh(void* screen) { } + static void HUDScreen_Render(void* screen, double delta) { struct HUDScreen* s = (struct HUDScreen*)screen; HUDScreen_Update(s, delta); @@ -225,7 +227,7 @@ static void HUDScreen_Render(void* screen, double delta) { } static const struct ScreenVTABLE HUDScreen_VTABLE = { - Screen_NullFunc, HUDScreen_Render, Screen_NullFunc, + Screen_NullFunc, HUDScreen_Render, Screen_NullFunc, HUDScreen_BuildMesh, Screen_FInput, Screen_FInput, Screen_FKeyPress, Screen_FText, Screen_FPointer, Screen_FPointer, Screen_FPointer, Screen_FMouseScroll, Screen_NullFunc, HUDScreen_ContextLost, HUDScreen_ContextRecreated @@ -603,6 +605,8 @@ static void ChatScreen_ContextRecreated(void* screen) { if (s->showingList) ChatScreen_RemakePlayerList(s); } +static void ChatScreen_BuildMesh(void* screen) { } + static void ChatScreen_Layout(void* screen) { struct ChatScreen* s = (struct ChatScreen*)screen; Widget_Layout(&s->hotbar); @@ -825,7 +829,7 @@ static void ChatScreen_Free(void* screen) { } static const struct ScreenVTABLE ChatScreen_VTABLE = { - ChatScreen_Init, ChatScreen_Render, ChatScreen_Free, + ChatScreen_Init, ChatScreen_Render, ChatScreen_Free, ChatScreen_BuildMesh, ChatScreen_KeyDown, ChatScreen_KeyUp, ChatScreen_KeyPress, ChatScreen_TextChanged, ChatScreen_PointerDown, Screen_FPointer, Screen_FPointer, ChatScreen_MouseScroll, ChatScreen_Layout, ChatScreen_ContextLost, ChatScreen_ContextRecreated @@ -897,6 +901,8 @@ static void InventoryScreen_ContextRecreated(void* screen) { TableWidget_Recreate(&s->table); } +static void InventoryScreen_BuildMesh(void* screen) { } + static void InventoryScreen_MoveToSelected(struct InventoryScreen* s) { struct TableWidget* table = &s->table; TableWidget_SetBlockTo(table, Inventory_SelectedBlock); @@ -1008,7 +1014,7 @@ static int InventoryScreen_MouseScroll(void* screen, float delta) { } static const struct ScreenVTABLE InventoryScreen_VTABLE = { - InventoryScreen_Init, InventoryScreen_Render, InventoryScreen_Free, + InventoryScreen_Init, InventoryScreen_Render, InventoryScreen_Free, InventoryScreen_BuildMesh, InventoryScreen_KeyDown, InventoryScreen_KeyUp, Screen_TKeyPress, Screen_TText, InventoryScreen_PointerDown, InventoryScreen_PointerUp, InventoryScreen_PointerMove, InventoryScreen_MouseScroll, InventoryScreen_Layout, InventoryScreen_ContextLost, InventoryScreen_ContextRecreated @@ -1074,6 +1080,8 @@ static void LoadingScreen_ContextRecreated(void* screen) { LoadingScreen_SetMessage(s); } +static void LoadingScreen_BuildMesh(void* screen) { } + static void LoadingScreen_UpdateBackgroundVB(VertexP3fT2fC4b* vertices, int count, int atlasIndex, cc_bool* bound) { if (!(*bound)) { *bound = true; @@ -1173,9 +1181,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_TInput, Screen_TInput, Screen_TKeyPress, Screen_TText, - Screen_TPointer, Screen_TPointer, Screen_TPointer, Screen_TMouseScroll, + LoadingScreen_Init, LoadingScreen_Render, LoadingScreen_Free, LoadingScreen_BuildMesh, + Screen_TInput, Screen_TInput, Screen_TKeyPress, Screen_TText, + Screen_TPointer, Screen_TPointer, Screen_TPointer, Screen_TMouseScroll, LoadingScreen_Layout, LoadingScreen_ContextLost, LoadingScreen_ContextRecreated }; void LoadingScreen_Show(const String* title, const String* message) { @@ -1243,9 +1251,9 @@ static void GeneratingScreen_Render(void* screen, double delta) { } static const struct ScreenVTABLE GeneratingScreen_VTABLE = { - GeneratingScreen_Init, GeneratingScreen_Render, LoadingScreen_Free, - Screen_TInput, Screen_TInput, Screen_TKeyPress, Screen_TText, - Screen_TPointer, Screen_TPointer, Screen_FPointer, Screen_TMouseScroll, + GeneratingScreen_Init, GeneratingScreen_Render, LoadingScreen_Free, LoadingScreen_BuildMesh, + Screen_TInput, Screen_TInput, Screen_TKeyPress, Screen_TText, + Screen_TPointer, Screen_TPointer, Screen_FPointer, Screen_TMouseScroll, LoadingScreen_Layout, LoadingScreen_ContextLost, LoadingScreen_ContextRecreated }; void GeneratingScreen_Show(void) { @@ -1330,6 +1338,8 @@ static void DisconnectScreen_ContextRecreated(void* screen) { ButtonWidget_Set(&s->reconnect, &msg, &s->titleFont); } +static void DisconnectScreen_BuildMesh(void* screen) { } + static void DisconnectScreen_Init(void* screen) { struct DisconnectScreen* s = (struct DisconnectScreen*)screen; TextWidget_Make(&s->title, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, -30); @@ -1395,7 +1405,7 @@ static int DisconnectScreen_PointerMove(void* screen, int idx, int x, int y) { } static const struct ScreenVTABLE DisconnectScreen_VTABLE = { - DisconnectScreen_Init, DisconnectScreen_Render, DisconnectScreen_Free, + DisconnectScreen_Init, DisconnectScreen_Render, DisconnectScreen_Free, DisconnectScreen_BuildMesh, DisconnectScreen_KeyDown, Screen_TInput, Screen_TKeyPress, Screen_TText, DisconnectScreen_PointerDown, Screen_TPointer, DisconnectScreen_PointerMove, Screen_TMouseScroll, DisconnectScreen_Layout, DisconnectScreen_ContextLost, DisconnectScreen_ContextRecreated