mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-18 12:05:14 -04:00
ClassicGenScreen uses new rendering method
This commit is contained in:
parent
5e297b0f8c
commit
af6d0c6614
@ -686,14 +686,14 @@ GfxResourceID Gfx_CreateDynamicVb(VertexFormat fmt, int maxVertices) {
|
||||
return vbuffer;
|
||||
}
|
||||
|
||||
static void D3D9_SetVbData(IDirect3DVertexBuffer9* buffer, void* data, int size, const char* lockMsg, const char* unlockMsg, int lockFlags) {
|
||||
static void D3D9_SetVbData(IDirect3DVertexBuffer9* buffer, void* data, int size, int lockFlags) {
|
||||
void* dst = NULL;
|
||||
cc_result res = IDirect3DVertexBuffer9_Lock(buffer, 0, size, &dst, lockFlags);
|
||||
if (res) Logger_Abort2(res, lockMsg);
|
||||
if (res) Logger_Abort2(res, "D3D9_LockVb");
|
||||
|
||||
Mem_Copy(dst, data, size);
|
||||
res = IDirect3DVertexBuffer9_Unlock(buffer);
|
||||
if (res) Logger_Abort2(res, unlockMsg);
|
||||
if (res) Logger_Abort2(res, "D3D9_UnlockVb");
|
||||
}
|
||||
|
||||
GfxResourceID Gfx_CreateVb(void* vertices, VertexFormat fmt, int count) {
|
||||
@ -710,7 +710,7 @@ GfxResourceID Gfx_CreateVb(void* vertices, VertexFormat fmt, int count) {
|
||||
Event_RaiseVoid(&GfxEvents.LowVRAMDetected);
|
||||
}
|
||||
|
||||
D3D9_SetVbData(vbuffer, vertices, size, "D3D9_LockVb", "D3D9_UnlockVb", 0);
|
||||
D3D9_SetVbData(vbuffer, vertices, size, 0);
|
||||
return vbuffer;
|
||||
}
|
||||
|
||||
@ -761,7 +761,7 @@ void Gfx_SetVertexFormat(VertexFormat fmt) {
|
||||
void Gfx_SetDynamicVbData(GfxResourceID vb, void* vertices, int vCount) {
|
||||
int size = vCount * gfx_batchStride;
|
||||
IDirect3DVertexBuffer9* vbuffer = (IDirect3DVertexBuffer9*)vb;
|
||||
D3D9_SetVbData(vbuffer, vertices, size, "D3D9_LockDynamicVbData", "D3D9_UnlockDynamicVbData", D3DLOCK_DISCARD);
|
||||
D3D9_SetVbData(vbuffer, vertices, size, D3DLOCK_DISCARD);
|
||||
|
||||
cc_result res = IDirect3DDevice9_SetStreamSource(device, 0, vbuffer, 0, gfx_batchStride);
|
||||
if (res) Logger_Abort2(res, "D3D9_SetDynamicVbData - Bind");
|
||||
|
78
src/Menus.c
78
src/Menus.c
@ -84,17 +84,6 @@ CC_NOINLINE static void Menu_MakeBodyFont(struct FontDesc* font) { Drawer2D_Mak
|
||||
static void Menu_NullFunc(void* s) { }
|
||||
static void Menu_CloseKeyboard(void* s) { Window_CloseKeyboard(); }
|
||||
|
||||
static void Menu_ContextLost(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;
|
||||
Elem_Free(widgets[i]);
|
||||
}
|
||||
}
|
||||
|
||||
static void Menu_RenderBounds(void) {
|
||||
/* These were sourced by taking a screenshot of vanilla
|
||||
Then using paint to extract the colour components
|
||||
@ -408,7 +397,7 @@ static void ListScreen_Free(void* screen) {
|
||||
|
||||
static void ListScreen_ContextLost(void* screen) {
|
||||
struct ListScreen* s = (struct ListScreen*)screen;
|
||||
Menu_ContextLost(screen);
|
||||
Screen_ContextLost(screen);
|
||||
Font_Free(&s->font);
|
||||
}
|
||||
|
||||
@ -453,6 +442,13 @@ static void MenuScreen_Render(void* screen, double delta) {
|
||||
Gfx_SetTexturing(false);
|
||||
}
|
||||
|
||||
static void MenuScreen_Render2(void* screen, double delta) {
|
||||
Menu_RenderBounds();
|
||||
Gfx_SetTexturing(true);
|
||||
Screen_Render2Widgets(screen, delta);
|
||||
Gfx_SetTexturing(false);
|
||||
}
|
||||
|
||||
|
||||
/*########################################################################################################################*
|
||||
*-------------------------------------------------------PauseScreen-------------------------------------------------------*
|
||||
@ -543,7 +539,7 @@ static const struct ScreenVTABLE PauseScreen_VTABLE = {
|
||||
PauseScreen_Init, MenuScreen_Render, PauseScreen_Free, PauseScreen_BuildMesh,
|
||||
MenuScreen_KeyDown, Screen_TInput, Screen_TKeyPress, Screen_TText,
|
||||
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
|
||||
Screen_Layout, Menu_ContextLost, PauseScreen_ContextRecreated
|
||||
Screen_Layout, Screen_ContextLost, PauseScreen_ContextRecreated
|
||||
};
|
||||
void PauseScreen_Show(void) {
|
||||
struct PauseScreen* s = &PauseScreen_Instance;
|
||||
@ -597,7 +593,7 @@ CC_NOINLINE static void OptionsGroupScreen_UpdateDesc(struct OptionsGroupScreen*
|
||||
static void OptionsGroupScreen_ContextLost(void* screen) {
|
||||
struct OptionsGroupScreen* s = (struct OptionsGroupScreen*)screen;
|
||||
Font_Free(&s->textFont);
|
||||
Menu_ContextLost(screen);
|
||||
Screen_ContextLost(screen);
|
||||
}
|
||||
|
||||
static void OptionsGroupScreen_ContextRecreated(void* screen) {
|
||||
@ -830,7 +826,7 @@ static void EditHotkeyScreen_ContextLost(void* screen) {
|
||||
struct EditHotkeyScreen* s = (struct EditHotkeyScreen*)screen;
|
||||
Font_Free(&s->titleFont);
|
||||
Font_Free(&s->textFont);
|
||||
Menu_ContextLost(screen);
|
||||
Screen_ContextLost(screen);
|
||||
}
|
||||
|
||||
static void EditHotkeyScreen_ContextRecreated(void* screen) {
|
||||
@ -1010,7 +1006,7 @@ static int GenLevelScreen_PointerDown(void* screen, int id, int x, int y) {
|
||||
static void GenLevelScreen_ContextLost(void* screen) {
|
||||
struct GenLevelScreen* s = (struct GenLevelScreen*)screen;
|
||||
Font_Free(&s->textFont);
|
||||
Menu_ContextLost(screen);
|
||||
Screen_ContextLost(screen);
|
||||
}
|
||||
|
||||
static void GenLevelScreen_ContextRecreated(void* screen) {
|
||||
@ -1081,14 +1077,20 @@ void GenLevelScreen_Show(void) {
|
||||
static struct ClassicGenScreen {
|
||||
Screen_Body
|
||||
struct ButtonWidget buttons[3], cancel;
|
||||
} ClassicGenScreen_Instance;
|
||||
} ClassicGenScreen;
|
||||
|
||||
static struct Widget* classicgen_widgets[4] = {
|
||||
(struct Widget*)&ClassicGenScreen.buttons[0], (struct Widget*)&ClassicGenScreen.buttons[1],
|
||||
(struct Widget*)&ClassicGenScreen.buttons[2], (struct Widget*)&ClassicGenScreen.cancel
|
||||
};
|
||||
#define CLASSICGEN_MAX_VERTICES (4 * BUTTONWIDGET_MAX)
|
||||
|
||||
static void ClassicGenScreen_Gen(int size) {
|
||||
RNGState rnd; Random_SeedFromCurrentTime(&rnd);
|
||||
Gen_Vanilla = true;
|
||||
Gen_Seed = Random_Next(&rnd, Int32_MaxValue);
|
||||
|
||||
Gui_Remove((struct Screen*)&ClassicGenScreen_Instance);
|
||||
Gui_Remove((struct Screen*)&ClassicGenScreen);
|
||||
Menu_BeginGen(size, 64, size);
|
||||
}
|
||||
|
||||
@ -1097,12 +1099,13 @@ static void ClassicGenScreen_Medium(void* a, void* b) { ClassicGenScreen_Gen(256
|
||||
static void ClassicGenScreen_Huge(void* a, void* b) { ClassicGenScreen_Gen(512); }
|
||||
|
||||
static void ClassicGenScreen_Make(struct ClassicGenScreen* s, int i, int y, Widget_LeftClick onClick) {
|
||||
Menu_Button(s, i, &s->buttons[i], 400, onClick, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, y);
|
||||
ButtonWidget_Make(&s->buttons[i], 400, onClick, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, y);
|
||||
}
|
||||
|
||||
static void ClassicGenScreen_ContextRecreated(void* screen) {
|
||||
struct ClassicGenScreen* s = (struct ClassicGenScreen*)screen;
|
||||
struct FontDesc titleFont;
|
||||
s->vb = Gfx_CreateDynamicVb(VERTEX_FORMAT_P3FT2FC4B, CLASSICGEN_MAX_VERTICES);
|
||||
|
||||
Menu_MakeTitleFont(&titleFont);
|
||||
ButtonWidget_SetConst(&s->buttons[0], "Small", &titleFont);
|
||||
@ -1112,13 +1115,22 @@ static void ClassicGenScreen_ContextRecreated(void* screen) {
|
||||
Font_Free(&titleFont);
|
||||
}
|
||||
|
||||
static void ClassicGenScreen_BuildMesh(void* screen) { }
|
||||
static void ClassicGenScreen_BuildMesh(void* screen) {
|
||||
struct ClassicGenScreen* s = (struct ClassicGenScreen*)screen;
|
||||
VertexP3fT2fC4b vertices[CLASSICGEN_MAX_VERTICES];
|
||||
VertexP3fT2fC4b* ptr = vertices;
|
||||
|
||||
Widget_BuildMesh(&s->buttons[0], &ptr);
|
||||
Widget_BuildMesh(&s->buttons[1], &ptr);
|
||||
Widget_BuildMesh(&s->buttons[2], &ptr);
|
||||
Widget_BuildMesh(&s->cancel, &ptr);
|
||||
Gfx_SetDynamicVbData(s->vb, vertices, CLASSICGEN_MAX_VERTICES);
|
||||
}
|
||||
|
||||
static void ClassicGenScreen_Init(void* screen) {
|
||||
static struct Widget* widgets[4];
|
||||
struct ClassicGenScreen* s = (struct ClassicGenScreen*)screen;
|
||||
s->widgets = widgets;
|
||||
s->numWidgets = Array_Elems(widgets);
|
||||
s->widgets = classicgen_widgets;
|
||||
s->numWidgets = Array_Elems(classicgen_widgets);
|
||||
|
||||
ClassicGenScreen_Make(s, 0, -100, ClassicGenScreen_Small);
|
||||
ClassicGenScreen_Make(s, 1, -50, ClassicGenScreen_Medium);
|
||||
@ -1128,13 +1140,13 @@ static void ClassicGenScreen_Init(void* screen) {
|
||||
}
|
||||
|
||||
static const struct ScreenVTABLE ClassicGenScreen_VTABLE = {
|
||||
ClassicGenScreen_Init, MenuScreen_Render, Menu_NullFunc, ClassicGenScreen_BuildMesh,
|
||||
ClassicGenScreen_Init, MenuScreen_Render2, Menu_NullFunc, ClassicGenScreen_BuildMesh,
|
||||
MenuScreen_KeyDown, Screen_TInput, Screen_TKeyPress, Screen_TText,
|
||||
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
|
||||
Screen_Layout, Menu_ContextLost, ClassicGenScreen_ContextRecreated
|
||||
Screen_Layout, Screen_ContextLost, ClassicGenScreen_ContextRecreated
|
||||
};
|
||||
void ClassicGenScreen_Show(void) {
|
||||
struct ClassicGenScreen* s = &ClassicGenScreen_Instance;
|
||||
struct ClassicGenScreen* s = &ClassicGenScreen;
|
||||
s->grabsInput = true;
|
||||
s->closable = true;
|
||||
s->VTABLE = &ClassicGenScreen_VTABLE;
|
||||
@ -1348,7 +1360,7 @@ static void SaveLevelScreen_ContextLost(void* screen) {
|
||||
struct SaveLevelScreen* s = (struct SaveLevelScreen*)screen;
|
||||
Font_Free(&s->titleFont);
|
||||
Font_Free(&s->textFont);
|
||||
Menu_ContextLost(screen);
|
||||
Screen_ContextLost(screen);
|
||||
}
|
||||
|
||||
static void SaveLevelScreen_ContextRecreated(void* screen) {
|
||||
@ -1687,7 +1699,7 @@ static int KeyBindingsScreen_KeyDown(void* screen, int key) {
|
||||
static void KeyBindingsScreen_ContextLost(void* screen) {
|
||||
struct KeyBindingsScreen* s = (struct KeyBindingsScreen*)screen;
|
||||
Font_Free(&s->titleFont);
|
||||
Menu_ContextLost(screen);
|
||||
Screen_ContextLost(screen);
|
||||
}
|
||||
|
||||
static void KeyBindingsScreen_ContextRecreated(void* screen) {
|
||||
@ -2189,7 +2201,7 @@ static void MenuOptionsScreen_ContextLost(void* screen) {
|
||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
|
||||
Font_Free(&s->titleFont);
|
||||
Font_Free(&s->textFont);
|
||||
Menu_ContextLost(s);
|
||||
Screen_ContextLost(s);
|
||||
Elem_Free(&s->extHelp);
|
||||
}
|
||||
|
||||
@ -2919,7 +2931,7 @@ static struct TexIdsOverlay {
|
||||
|
||||
static void TexIdsOverlay_ContextLost(void* screen) {
|
||||
struct TexIdsOverlay* s = (struct TexIdsOverlay*)screen;
|
||||
Menu_ContextLost(s);
|
||||
Screen_ContextLost(s);
|
||||
Gfx_DeleteVb(&s->dynamicVb);
|
||||
TextAtlas_Free(&s->idAtlas);
|
||||
}
|
||||
@ -3125,7 +3137,7 @@ static const struct ScreenVTABLE UrlWarningOverlay_VTABLE = {
|
||||
UrlWarningOverlay_Init, MenuScreen_Render, Menu_NullFunc, UrlWarningOverlay_BuildMesh,
|
||||
Screen_TInput, Screen_TInput, Screen_TKeyPress, Screen_TText,
|
||||
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
|
||||
Screen_Layout, Menu_ContextLost, UrlWarningOverlay_ContextRecreated
|
||||
Screen_Layout, Screen_ContextLost, UrlWarningOverlay_ContextRecreated
|
||||
};
|
||||
void UrlWarningOverlay_Show(const String* url) {
|
||||
struct UrlWarningOverlay* s = &UrlWarningOverlay_Instance;
|
||||
@ -3225,7 +3237,7 @@ static void TexPackOverlay_Render(void* screen, double delta) {
|
||||
static void TexPackOverlay_ContextLost(void* screen) {
|
||||
struct TexPackOverlay* s = (struct TexPackOverlay*)screen;
|
||||
Font_Free(&s->textFont);
|
||||
Menu_ContextLost(screen);
|
||||
Screen_ContextLost(screen);
|
||||
}
|
||||
|
||||
static void TexPackOverlay_ContextRecreated(void* screen) {
|
||||
@ -3359,7 +3371,7 @@ static const struct ScreenVTABLE TouchMoreOverlay_VTABLE = {
|
||||
TouchMoreOverlay_Init, MenuScreen_Render, Menu_NullFunc,
|
||||
Screen_TInput, Screen_TInput, Screen_TKeyPress, Screen_TText,
|
||||
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
|
||||
Screen_Layout, Menu_ContextLost, TouchMoreOverlay_ContextRecreated
|
||||
Screen_Layout, Screen_ContextLost, TouchMoreOverlay_ContextRecreated
|
||||
};
|
||||
void TouchMoreOverlay_Show(void) {
|
||||
struct TouchMoreOverlay* s = &TouchMoreOverlay_Instance;
|
||||
|
@ -106,8 +106,8 @@ static int Program_Run(int argc, char** argv) {
|
||||
int argsCount = Platform_GetCommandLineArgs(argc, argv, args);
|
||||
#ifdef _MSC_VER
|
||||
/* NOTE: Make sure to comment this out before pushing a commit */
|
||||
String rawArgs = String_FromConst("UnknownShadow200 fffff 127.0.0.1 25565");
|
||||
//String rawArgs = String_FromConst("UnknownShadow200");
|
||||
//String rawArgs = String_FromConst("UnknownShadow200 fffff 127.0.0.1 25565");
|
||||
String rawArgs = String_FromConst("UnknownShadow200");
|
||||
argsCount = String_UNSAFE_Split(&rawArgs, ' ', args, 4);
|
||||
#endif
|
||||
|
||||
|
@ -84,6 +84,18 @@ void Screen_Layout(void* screen) {
|
||||
}
|
||||
}
|
||||
|
||||
void Screen_ContextLost(void* screen) {
|
||||
struct Screen* s = (struct Screen*)screen;
|
||||
struct Widget** widgets = s->widgets;
|
||||
int i;
|
||||
Gfx_DeleteVb(&s->vb);
|
||||
|
||||
for (i = 0; i < s->numWidgets; i++) {
|
||||
if (!widgets[i]) continue;
|
||||
Elem_Free(widgets[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*########################################################################################################################*
|
||||
*--------------------------------------------------------HUDScreen--------------------------------------------------------*
|
||||
@ -1079,7 +1091,7 @@ static struct LoadingScreen {
|
||||
|
||||
char _titleBuffer[STRING_SIZE];
|
||||
char _messageBuffer[STRING_SIZE];
|
||||
} LoadingScreen_Instance;
|
||||
} LoadingScreen;
|
||||
|
||||
static void LoadingScreen_SetTitle(struct LoadingScreen* s) {
|
||||
TextWidget_Set(&s->title, &s->titleStr, &s->font);
|
||||
@ -1201,7 +1213,7 @@ static void LoadingScreen_Free(void* screen) {
|
||||
}
|
||||
|
||||
CC_NOINLINE static void LoadingScreen_ShowCommon(const String* title, const String* message) {
|
||||
struct LoadingScreen* s = &LoadingScreen_Instance;
|
||||
struct LoadingScreen* s = &LoadingScreen;
|
||||
s->lastState = NULL;
|
||||
s->progress = 0.0f;
|
||||
|
||||
@ -1223,10 +1235,10 @@ static const struct ScreenVTABLE LoadingScreen_VTABLE = {
|
||||
LoadingScreen_Layout, LoadingScreen_ContextLost, LoadingScreen_ContextRecreated
|
||||
};
|
||||
void LoadingScreen_Show(const String* title, const String* message) {
|
||||
LoadingScreen_Instance.VTABLE = &LoadingScreen_VTABLE;
|
||||
LoadingScreen.VTABLE = &LoadingScreen_VTABLE;
|
||||
LoadingScreen_ShowCommon(title, message);
|
||||
}
|
||||
struct Screen* LoadingScreen_UNSAFE_RawPointer = (struct Screen*)&LoadingScreen_Instance;
|
||||
struct Screen* LoadingScreen_UNSAFE_RawPointer = (struct Screen*)&LoadingScreen;
|
||||
|
||||
|
||||
/*########################################################################################################################*
|
||||
@ -1253,7 +1265,7 @@ static void GeneratingScreen_EndGeneration(void) {
|
||||
struct LocationUpdate update;
|
||||
float x, z;
|
||||
|
||||
Gui_Remove((struct Screen*)&LoadingScreen_Instance);
|
||||
Gui_Remove((struct Screen*)&LoadingScreen);
|
||||
Gen_Done = false;
|
||||
|
||||
if (!Gen_Blocks) { Chat_AddRaw("&cFailed to generate the map."); return; }
|
||||
@ -1296,7 +1308,7 @@ void GeneratingScreen_Show(void) {
|
||||
static const String title = String_FromConst("Generating level");
|
||||
static const String message = String_FromConst("Generating..");
|
||||
|
||||
LoadingScreen_Instance.VTABLE = &GeneratingScreen_VTABLE;
|
||||
LoadingScreen.VTABLE = &GeneratingScreen_VTABLE;
|
||||
LoadingScreen_ShowCommon(&title, &message);
|
||||
}
|
||||
|
||||
@ -1316,10 +1328,16 @@ static struct DisconnectScreen {
|
||||
char _titleBuffer[STRING_SIZE];
|
||||
char _messageBuffer[STRING_SIZE];
|
||||
String titleStr, messageStr;
|
||||
} DisconnectScreen_Instance;
|
||||
#define DISCONNECTSCREEN_MAX_VERTICES (BUTTONWIDGET_MAX + 2 * TEXTWIDGET_MAX)
|
||||
} DisconnectScreen;
|
||||
|
||||
static struct Widget* disconnect_widgets[3] = {
|
||||
(struct Widget*)&DisconnectScreen.title,
|
||||
(struct Widget*)&DisconnectScreen.message,
|
||||
(struct Widget*)&DisconnectScreen.reconnect
|
||||
};
|
||||
#define DISCONNECT_MAX_VERTICES (BUTTONWIDGET_MAX + 2 * TEXTWIDGET_MAX)
|
||||
#define DISCONNECT_DELAY_MS 5000
|
||||
|
||||
static void DisconnectScreen_ReconnectMessage(struct DisconnectScreen* s, String* msg) {
|
||||
if (s->canReconnect) {
|
||||
int elapsedMS = (int)(DateTime_CurrentUTC_MS() - s->initTime);
|
||||
@ -1355,18 +1373,13 @@ static void DisconnectScreen_ContextLost(void* screen) {
|
||||
struct DisconnectScreen* s = (struct DisconnectScreen*)screen;
|
||||
Font_Free(&s->titleFont);
|
||||
Font_Free(&s->messageFont);
|
||||
Gfx_DeleteVb(&s->vb);
|
||||
|
||||
if (!s->title.VTABLE) return;
|
||||
Elem_Free(&s->title);
|
||||
Elem_Free(&s->message);
|
||||
Elem_Free(&s->reconnect);
|
||||
Screen_ContextLost(screen);
|
||||
}
|
||||
|
||||
static void DisconnectScreen_ContextRecreated(void* screen) {
|
||||
String msg; char msgBuffer[STRING_SIZE];
|
||||
struct DisconnectScreen* s = (struct DisconnectScreen*)screen;
|
||||
s->vb = Gfx_CreateDynamicVb(VERTEX_FORMAT_P3FT2FC4B, DISCONNECTSCREEN_MAX_VERTICES);
|
||||
s->vb = Gfx_CreateDynamicVb(VERTEX_FORMAT_P3FT2FC4B, DISCONNECT_MAX_VERTICES);
|
||||
|
||||
Drawer2D_MakeFont(&s->titleFont, 16, FONT_STYLE_BOLD);
|
||||
Drawer2D_MakeFont(&s->messageFont, 16, FONT_STYLE_NORMAL);
|
||||
@ -1380,13 +1393,13 @@ static void DisconnectScreen_ContextRecreated(void* screen) {
|
||||
|
||||
static void DisconnectScreen_BuildMesh(void* screen) {
|
||||
struct DisconnectScreen* s = (struct DisconnectScreen*)screen;
|
||||
VertexP3fT2fC4b vertices[DISCONNECTSCREEN_MAX_VERTICES];
|
||||
VertexP3fT2fC4b vertices[DISCONNECT_MAX_VERTICES];
|
||||
VertexP3fT2fC4b* ptr = vertices;
|
||||
|
||||
Widget_BuildMesh(&s->title, &ptr);
|
||||
Widget_BuildMesh(&s->message, &ptr);
|
||||
Widget_BuildMesh(&s->reconnect, &ptr);
|
||||
Gfx_SetDynamicVbData(s->vb, vertices, DISCONNECTSCREEN_MAX_VERTICES);
|
||||
Gfx_SetDynamicVbData(s->vb, vertices, DISCONNECT_MAX_VERTICES);
|
||||
}
|
||||
|
||||
static void DisconnectScreen_Init(void* screen) {
|
||||
@ -1405,12 +1418,7 @@ static void DisconnectScreen_Init(void* screen) {
|
||||
|
||||
s->initTime = DateTime_CurrentUTC_MS();
|
||||
s->lastSecsLeft = DISCONNECT_DELAY_MS / MILLIS_PER_SEC;
|
||||
|
||||
/* TODO: static init */
|
||||
s->widgets = widgets;
|
||||
s->widgets[0] = &s->title;
|
||||
s->widgets[1] = &s->message;
|
||||
s->widgets[2] = &s->reconnect;
|
||||
s->widgets = disconnect_widgets;
|
||||
s->numWidgets = s->canReconnect ? 3 : 2;
|
||||
}
|
||||
|
||||
@ -1463,7 +1471,7 @@ void DisconnectScreen_Show(const String* title, const String* message) {
|
||||
static const String kick = String_FromConst("Kicked ");
|
||||
static const String ban = String_FromConst("Banned ");
|
||||
String why; char whyBuffer[STRING_SIZE];
|
||||
struct DisconnectScreen* s = &DisconnectScreen_Instance;
|
||||
struct DisconnectScreen* s = &DisconnectScreen;
|
||||
|
||||
s->grabsInput = true;
|
||||
s->blocksWorld = true;
|
||||
|
@ -27,6 +27,9 @@ void Screen_RenderWidgets(void* screen, double delta);
|
||||
void Screen_Render2Widgets(void* screen, double delta);
|
||||
/* Calls Widget_Layout on each widget in the screen. */
|
||||
void Screen_Layout(void* screen);
|
||||
/* Calls Widget_Free on each widget in the screen. */
|
||||
/* Also deletes the screen's vb. */
|
||||
void Screen_ContextLost(void* screen);
|
||||
|
||||
void InventoryScreen_Show(void);
|
||||
void HUDScreen_Show(void);
|
||||
|
Loading…
x
Reference in New Issue
Block a user