From e7f17b71199c783ae80de4c08286df99d81a12f8 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Tue, 4 Feb 2020 20:49:20 +1100 Subject: [PATCH] Move SaveLevelScreen to new rendering method --- src/Graphics.c | 5 ---- src/Graphics.h | 5 +--- src/Menus.c | 69 ++++++++++++++++++++++++++++++-------------------- src/Model.c | 6 ++--- 4 files changed, 45 insertions(+), 40 deletions(-) diff --git a/src/Graphics.c b/src/Graphics.c index 37761cf21..42d85ecdd 100644 --- a/src/Graphics.c +++ b/src/Graphics.c @@ -83,11 +83,6 @@ static void Gfx_RecreateContext(void) { } -void Gfx_UpdateDynamicVb_Lines(GfxResourceID vb, void* vertices, int vCount) { - Gfx_SetDynamicVbData(vb, vertices, vCount); - Gfx_DrawVb_Lines(vCount); -} - void Gfx_UpdateDynamicVb_IndexedTris(GfxResourceID vb, void* vertices, int vCount) { Gfx_SetDynamicVbData(vb, vertices, vCount); Gfx_DrawVb_IndexedTris(vCount); diff --git a/src/Graphics.h b/src/Graphics.h index 1c53b82a0..54fa7150e 100644 --- a/src/Graphics.h +++ b/src/Graphics.h @@ -62,7 +62,7 @@ CC_API void Gfx_SetTexturing(cc_bool enabled); /* Turns on mipmapping. (if Gfx_Mipmaps is enabled) */ /* NOTE: You must have created textures with mipmaps true for this to work. */ CC_API void Gfx_EnableMipmaps(void); -/* Turns off mipmapping. (if GfX_Mipmaps is enabled) */ +/* Turns off mipmapping. (if Gfx_Mipmaps is enabled) */ /* NOTE: You must have created textures with mipmaps true for this to work. */ CC_API void Gfx_DisableMipmaps(void); @@ -176,9 +176,6 @@ void Gfx_LoseContext(const char* reason); /* Attempts to restore a lost context. Raises ContextRecreated event on success. */ cc_bool Gfx_TryRestoreContext(void); -/* Binds and draws the specified subset of the vertices in the current dynamic vertex buffer. */ -/* NOTE: This replaces the dynamic vertex buffer's data first with the given vertices before drawing. */ -void Gfx_UpdateDynamicVb_Lines(GfxResourceID vb, void* vertices, int vCount); /* Binds and draws the specified subset of the vertices in the current dynamic vertex buffer. */ /* NOTE: This replaces the dynamic vertex buffer's data first with the given vertices before drawing. */ void Gfx_UpdateDynamicVb_IndexedTris(GfxResourceID vb, void* vertices, int vCount); diff --git a/src/Menus.c b/src/Menus.c index 772e15da7..f13e254d0 100644 --- a/src/Menus.c +++ b/src/Menus.c @@ -239,11 +239,11 @@ static struct Widget* list_widgets[10] = { (struct Widget*)&ListScreen.right, (struct Widget*)&ListScreen.title, (struct Widget*)&ListScreen.page, (struct Widget*)&ListScreen.done }; -#define LIST_MAX_VERTICES (8 * BUTTONWIDGET_MAX + 2 * TEXTWIDGET_MAX) -#define LIST_SCREEN_EMPTY "-----" +#define LISTSCREEN_MAX_VERTICES (8 * BUTTONWIDGET_MAX + 2 * TEXTWIDGET_MAX) +#define LISTSCREEN_EMPTY "-----" static STRING_REF String ListScreen_UNSAFE_Get(struct ListScreen* s, int index) { - static const String str = String_FromConst(LIST_SCREEN_EMPTY); + static const String str = String_FromConst(LISTSCREEN_EMPTY); if (index >= 0 && index < s->entries.count) { return StringsBuffer_UNSAFE_Get(&s->entries, index); @@ -376,7 +376,7 @@ static void ListScreen_Init(void* screen) { s->numWidgets = Array_Elems(list_widgets); s->wheelAcc = 0.0f; s->currentIndex = 0; - s->maxVertices = LIST_MAX_VERTICES; + s->maxVertices = LISTSCREEN_MAX_VERTICES; for (i = 0; i < LIST_SCREEN_ITEMS; i++) { ButtonWidget_Make(&s->btns[i], 300, s->EntryClick, @@ -1177,7 +1177,14 @@ static struct SaveLevelScreen { struct ButtonWidget save, alt, cancel; struct MenuInputWidget input; struct TextWidget mcEdit, desc; -} SaveLevelScreen_Instance; +} SaveLevelScreen; + +static struct Widget* save_widgets[6] = { + (struct Widget*)&SaveLevelScreen.save, (struct Widget*)&SaveLevelScreen.alt, + (struct Widget*)&SaveLevelScreen.mcEdit, (struct Widget*)&SaveLevelScreen.cancel, + (struct Widget*)&SaveLevelScreen.input, (struct Widget*)&SaveLevelScreen.desc, +}; +#define SAVESCREEN_MAX_VERTICES (3 * BUTTONWIDGET_MAX + MENUINPUTWIDGET_MAX + 2 * TEXTWIDGET_MAX) static void SaveLevelScreen_UpdateSave(struct SaveLevelScreen* s) { ButtonWidget_SetConst(&s->save, @@ -1334,10 +1341,15 @@ static void SaveLevelScreen_Save(void* screen, void* widget, const char* ext) { static void SaveLevelScreen_Main(void* a, void* b) { SaveLevelScreen_Save(a, b, ".cw"); } static void SaveLevelScreen_Alt(void* a, void* b) { SaveLevelScreen_Save(a, b, ".schematic"); } +static void SaveLevelScreen_Update(void* screen, double delta) { + struct SaveLevelScreen* s = (struct SaveLevelScreen*)screen; + s->input.base.caretAccumulator += delta; +} + static void SaveLevelScreen_Render(void* screen, double delta) { PackedCol grey = PackedCol_Make(150, 150, 150, 255); int x, y; - MenuScreen_Render(screen, delta); + MenuScreen_Render2(screen, delta); #ifndef CC_BUILD_WEB x = Window_Width / 2; y = Window_Height / 2; @@ -1381,6 +1393,8 @@ static void SaveLevelScreen_ContextRecreated(void* screen) { struct SaveLevelScreen* s = (struct SaveLevelScreen*)screen; Menu_MakeTitleFont(&s->titleFont); Menu_MakeBodyFont(&s->textFont); + + Screen_CreateVb(screen); SaveLevelScreen_UpdateSave(s); SaveLevelScreen_UpdateAlt(s); @@ -1391,51 +1405,50 @@ 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; struct MenuInputDesc desc; - s->widgets = widgets; - s->numWidgets = Array_Elems(widgets); + s->widgets = save_widgets; + s->numWidgets = Array_Elems(save_widgets); + s->maxVertices = SAVESCREEN_MAX_VERTICES; MenuInput_Path(desc); - Menu_Button(s, 0, &s->save, 300, SaveLevelScreen_Main, + ButtonWidget_Make(&s->save, 300, SaveLevelScreen_Main, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 20); #ifdef CC_BUILD_WEB - Menu_Button(s, 1, &s->alt, 300, SaveLevelScreen_Alt, + ButtonWidget_Make(&s->alt, 300, SaveLevelScreen_Alt, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 70); + s->widgets[2] = NULL; /* null mcEdit widget */ #else - Menu_Button(s, 1, &s->alt, 200, SaveLevelScreen_Alt, + ButtonWidget_Make(&s->alt, 200, SaveLevelScreen_Alt, ANCHOR_CENTRE, ANCHOR_CENTRE, -150, 120); - Menu_Label(s, 2, &s->mcEdit, + TextWidget_Make( &s->mcEdit, ANCHOR_CENTRE, ANCHOR_CENTRE, 110, 120); #endif - Menu_Back(s, 3, &s->cancel, Menu_SwitchPause); + Menu_MakeBack( &s->cancel, Menu_SwitchPause); Menu_Input(s, 4, &s->input, 500, &String_Empty, &desc, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, -30); #ifdef CC_BUILD_WEB - Menu_Label(s, 5, &s->desc, + TextWidget_Make( &s->desc, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 115); #else - Menu_Label(s, 5, &s->desc, + TextWidget_Make( &s->desc, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 65); #endif Window_OpenKeyboard(); } static const struct ScreenVTABLE SaveLevelScreen_VTABLE = { - SaveLevelScreen_Init, Screen_NullUpdate, Menu_CloseKeyboard, - SaveLevelScreen_Render, SaveLevelScreen_BuildMesh, - SaveLevelScreen_KeyDown, Screen_TInput, SaveLevelScreen_KeyPress, SaveLevelScreen_TextChanged, - Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, + SaveLevelScreen_Init, SaveLevelScreen_Update, Menu_CloseKeyboard, + SaveLevelScreen_Render, Screen_BuildMesh, + SaveLevelScreen_KeyDown, Screen_TInput, SaveLevelScreen_KeyPress, SaveLevelScreen_TextChanged, + Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, Screen_Layout, SaveLevelScreen_ContextLost, SaveLevelScreen_ContextRecreated }; void SaveLevelScreen_Show(void) { - struct SaveLevelScreen* s = &SaveLevelScreen_Instance; + struct SaveLevelScreen* s = &SaveLevelScreen; s->grabsInput = true; s->closable = true; s->VTABLE = &SaveLevelScreen_VTABLE; @@ -1494,7 +1507,7 @@ static void FontListScreen_EntryClick(void* screen, void* widget) { struct ListScreen* s = (struct ListScreen*)screen; String fontName = ListScreen_UNSAFE_GetCur(s, widget); - if (String_CaselessEqualsConst(&fontName, LIST_SCREEN_EMPTY)) return; + if (String_CaselessEqualsConst(&fontName, LISTSCREEN_EMPTY)) return; String_Copy(&Drawer2D_FontName, &fontName); Options_Set(OPT_FONT_NAME, &fontName); Event_RaiseVoid(&ChatEvents.FontChanged); @@ -1504,7 +1517,7 @@ static void FontListScreen_UpdateEntry(struct ListScreen* s, struct ButtonWidget struct FontDesc font; cc_result res; - if (String_CaselessEqualsConst(text, LIST_SCREEN_EMPTY)) { + if (String_CaselessEqualsConst(text, LISTSCREEN_EMPTY)) { ButtonWidget_Set(button, text, &s->font); return; } @@ -1551,7 +1564,7 @@ static void HotkeyListScreen_EntryClick(void* screen, void* widget) { int i, flags = 0; text = ListScreen_UNSAFE_GetCur(s, widget); - if (String_CaselessEqualsConst(&text, LIST_SCREEN_EMPTY)) { + if (String_CaselessEqualsConst(&text, LISTSCREEN_EMPTY)) { EditHotkeyScreen_Show(original); return; } @@ -1577,7 +1590,7 @@ static void HotkeyListScreen_MakeFlags(int flags, String* str) { } static void HotkeyListScreen_LoadEntries(struct ListScreen* s) { - static const String empty = String_FromConst(LIST_SCREEN_EMPTY); + static const String empty = String_FromConst(LISTSCREEN_EMPTY); String text; char textBuffer[STRING_SIZE]; struct HotkeyData hKey; int i; @@ -1620,7 +1633,7 @@ static void LoadLevelScreen_EntryClick(void* screen, void* widget) { String relPath; relPath = ListScreen_UNSAFE_GetCur(s, widget); - if (String_CaselessEqualsConst(&relPath, LIST_SCREEN_EMPTY)) return; + if (String_CaselessEqualsConst(&relPath, LISTSCREEN_EMPTY)) return; String_InitArray(path, pathBuffer); String_Format1(&path, "maps/%s", &relPath); diff --git a/src/Model.c b/src/Model.c index 31798cf72..48b918f0b 100644 --- a/src/Model.c +++ b/src/Model.c @@ -379,7 +379,7 @@ static void Models_ContextRecreated(void* obj) { Models.Vb = Gfx_CreateDynamicVb(VERTEX_FORMAT_P3FT2FC4B, Models.MaxVertices); } -static void Model_Make(struct Model* model) { +static void MakeModel(struct Model* model) { struct Model* active = Models.Active; Models.Active = model; model->MakeParts(); @@ -395,7 +395,7 @@ struct Model* Model_Get(const String* name) { for (model = models_head; model; model = model->next) { if (!String_CaselessEqualsConst(name, model->name)) continue; - if (!model->initalised) Model_Make(model); + if (!model->initalised) MakeModel(model); return model; } return NULL; @@ -1663,7 +1663,7 @@ static void Model_RegisterDefaultModels(void) { Model_RegisterTexture(&zombie_tex); Model_Register(HumanoidModel_GetInstance()); - Model_Make(&human_model); + MakeModel(&human_model); Models.Human = &human_model; Model_Register(ChickenModel_GetInstance());