add dirty/BuildMesh to Screen, return 0 from Gfx_CreateDynamicVb if context is lost

This commit is contained in:
UnknownShadow200 2019-12-05 12:06:36 +11:00
parent b164d3c8d6
commit e26b649b86
6 changed files with 85 additions and 42 deletions

View File

@ -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,6 +1161,7 @@ static GLuint GL_GenAndBind(GLenum target) {
}
GfxResourceID Gfx_CreateDynamicVb(VertexFormat fmt, int maxVertices) {
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);

View File

@ -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();

View File

@ -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. */

View File

@ -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;

View File

@ -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,7 +562,7 @@ static void PauseScreen_Free(void* screen) {
}
static const struct ScreenVTABLE PauseScreen_VTABLE = {
PauseScreen_Init, MenuScreen_Render, PauseScreen_Free,
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
@ -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

View File

@ -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,7 +1181,7 @@ CC_NOINLINE static void LoadingScreen_ShowCommon(const String* title, const Stri
}
static const struct ScreenVTABLE LoadingScreen_VTABLE = {
LoadingScreen_Init, LoadingScreen_Render, LoadingScreen_Free,
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
@ -1243,7 +1251,7 @@ static void GeneratingScreen_Render(void* screen, double delta) {
}
static const struct ScreenVTABLE GeneratingScreen_VTABLE = {
GeneratingScreen_Init, GeneratingScreen_Render, LoadingScreen_Free,
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
@ -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