mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-13 17:47:12 -04:00
add dirty/BuildMesh to Screen, return 0 from Gfx_CreateDynamicVb if context is lost
This commit is contained in:
parent
b164d3c8d6
commit
e26b649b86
@ -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;
|
||||
|
@ -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();
|
||||
|
@ -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. */
|
||||
|
19
src/Input.c
19
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;
|
||||
|
54
src/Menus.c
54
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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user