feat(gui): add status bar
This commit is contained in:
parent
34d08212f8
commit
a9a0393066
3
app.c
3
app.c
@ -13,7 +13,8 @@ void App_Init(App_t *app) {
|
|||||||
|
|
||||||
System_QueryMetrics(&app->metrics);
|
System_QueryMetrics(&app->metrics);
|
||||||
|
|
||||||
if (!Window_Init(app->metrics.screenWidth, app->metrics.screenHeight)) {
|
// TODO: start this window maximized
|
||||||
|
if (!Window_Init(800, 600)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
35
gui.c
35
gui.c
@ -27,6 +27,7 @@ void Gui_Init(Gui_t *gui) {
|
|||||||
cImGui_ImplSDLRenderer3_Init(renderer);
|
cImGui_ImplSDLRenderer3_Init(renderer);
|
||||||
|
|
||||||
gui->isPreferencesDialogOpen = false;
|
gui->isPreferencesDialogOpen = false;
|
||||||
|
gui->statusBarText = "Welcome to Tibia!";
|
||||||
}
|
}
|
||||||
|
|
||||||
void Gui_ProcessEvent(const SDL_Event *event) {
|
void Gui_ProcessEvent(const SDL_Event *event) {
|
||||||
@ -41,6 +42,7 @@ void Gui_StartRender() {
|
|||||||
|
|
||||||
void Gui_Render(Gui_t *gui, ConfigParams_t *configParams) {
|
void Gui_Render(Gui_t *gui, ConfigParams_t *configParams) {
|
||||||
Gui_RenderMainMenu(gui);
|
Gui_RenderMainMenu(gui);
|
||||||
|
Gui_RenderStatusBar(gui);
|
||||||
Gui_RenderPreferences_Dialog(gui, configParams);
|
Gui_RenderPreferences_Dialog(gui, configParams);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,6 +124,39 @@ void Gui_RenderMainMenu(Gui_t *gui) {
|
|||||||
ImGui_EndMainMenuBar();
|
ImGui_EndMainMenuBar();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Gui_RenderStatusBar(const Gui_t* gui) {
|
||||||
|
const ImGuiViewport *viewport = ImGui_GetMainViewport();
|
||||||
|
|
||||||
|
const float height = ImGui_GetFrameHeight();
|
||||||
|
const ImVec2 position = {viewport->Pos.x, viewport->Pos.y + viewport->Size.y - height};
|
||||||
|
const ImVec2 size = {viewport->Size.x, height};
|
||||||
|
|
||||||
|
ImGui_SetNextWindowPosEx(position, ImGuiCond_Always, (ImVec2){0.0f, 0.0f});
|
||||||
|
ImGui_SetNextWindowSize(size, ImGuiCond_Always);
|
||||||
|
|
||||||
|
// Remove rounding, borders and reduce padding
|
||||||
|
ImGui_PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f);
|
||||||
|
ImGui_PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f);
|
||||||
|
ImGui_PushStyleVarImVec2(ImGuiStyleVar_WindowPadding, (ImVec2){8.0f, 2.0f});
|
||||||
|
|
||||||
|
// Set background and text colors
|
||||||
|
ImGui_PushStyleColorImVec4(ImGuiCol_WindowBg, (ImVec4){0.85f, 0.85f, 0.85f, 1.0f});
|
||||||
|
ImGui_PushStyleColorImVec4(ImGuiCol_Text, (ImVec4){0.0f, 0.0f, 0.0f, 1.0f});
|
||||||
|
|
||||||
|
const ImGuiWindowFlags windowFlags = ImGuiWindowFlags_NoDecoration | ImGuiWindowFlags_NoMove |
|
||||||
|
ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoSavedSettings |
|
||||||
|
ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoNav;
|
||||||
|
|
||||||
|
if (ImGui_Begin("StatusBar", NULL, windowFlags)) {
|
||||||
|
ImGui_Text(gui->statusBarText);
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui_End();
|
||||||
|
|
||||||
|
ImGui_PopStyleColorEx(2);
|
||||||
|
ImGui_PopStyleVarEx(3);
|
||||||
|
}
|
||||||
|
|
||||||
void Gui_RenderPreferences_Dialog(Gui_t *gui, ConfigParams_t *configParams) {
|
void Gui_RenderPreferences_Dialog(Gui_t *gui, ConfigParams_t *configParams) {
|
||||||
if (!gui->isPreferencesDialogOpen) {
|
if (!gui->isPreferencesDialogOpen) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
3
gui.h
3
gui.h
@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
typedef struct Gui {
|
typedef struct Gui {
|
||||||
bool isPreferencesDialogOpen;
|
bool isPreferencesDialogOpen;
|
||||||
|
char* statusBarText;
|
||||||
} Gui_t;
|
} Gui_t;
|
||||||
|
|
||||||
void Gui_Init(Gui_t* gui);
|
void Gui_Init(Gui_t* gui);
|
||||||
@ -21,6 +22,8 @@ void Gui_FinishRender();
|
|||||||
void Gui_Shutdown();
|
void Gui_Shutdown();
|
||||||
|
|
||||||
void Gui_RenderMainMenu(Gui_t* gui);
|
void Gui_RenderMainMenu(Gui_t* gui);
|
||||||
|
void Gui_RenderStatusBar(const Gui_t* gui);
|
||||||
|
|
||||||
void Gui_RenderPreferences_Dialog(Gui_t* gui, ConfigParams_t* configParams);
|
void Gui_RenderPreferences_Dialog(Gui_t* gui, ConfigParams_t* configParams);
|
||||||
|
|
||||||
#endif //TIBIA_GUI_H
|
#endif //TIBIA_GUI_H
|
||||||
Loading…
x
Reference in New Issue
Block a user