diff --git a/data/menu/nullifiedcat/visuals/ui.xml b/data/menu/nullifiedcat/visuals/ui.xml index 3e27c8b5..0d7f7021 100644 --- a/data/menu/nullifiedcat/visuals/ui.xml +++ b/data/menu/nullifiedcat/visuals/ui.xml @@ -18,6 +18,8 @@ + + \ No newline at end of file diff --git a/include/visual/drawing.hpp b/include/visual/drawing.hpp index a0de43c1..fa5d6529 100644 --- a/include/visual/drawing.hpp +++ b/include/visual/drawing.hpp @@ -19,6 +19,7 @@ #include #include #include +#include class CachedEntity; class Vector; @@ -34,14 +35,14 @@ struct font font(std::string path, int fontsize, bool outline = false) : size{ fontsize }, path{ path }, outline{ outline } { } - unsigned int id; std::string path; int size; - bool init = false; bool outline = false; operator unsigned int(); void stringSize(std::string string, float *x, float *y); + void changeSize(int new_font_size); void Init(); + std::map size_map; }; #elif ENABLE_IMGUI_DRAWING typedef im_renderer::font font; diff --git a/src/visual/drawing.cpp b/src/visual/drawing.cpp index 0473108d..6c80b2f4 100644 --- a/src/visual/drawing.cpp +++ b/src/visual/drawing.cpp @@ -1,4 +1,4 @@ -/* +/* * drawing.cpp * * Created on: Mar 10, 2019 @@ -38,6 +38,8 @@ std::array side_strings_colors{ colors::empty }; std::array center_strings_colors{ colors::empty }; size_t side_strings_count{ 0 }; size_t center_strings_count{ 0 }; +static settings::Int esp_font_size{ "visual.font_size.esp", "13" }; +static settings::Int center_font_size{ "visual.font_size.center_size", "14" }; void InitStrings() { @@ -92,40 +94,71 @@ namespace fonts #if ENABLE_ENGINE_DRAWING font::operator unsigned int() { - if (!init) + if (!size_map[size]) Init(); - return id; + return size_map[size]; } void font::Init() { size += 3; static std::string filename; filename.append("ab"); - id = g_ISurface->CreateFont(); - auto flag = vgui::ISurface::FONTFLAG_ANTIALIAS; - g_ISurface->SetFontGlyphSet(id, filename.c_str(), size, 500, 0, 0, flag); + size_map[size] = g_ISurface->CreateFont(); + auto flag = vgui::ISurface::FONTFLAG_ANTIALIAS; + g_ISurface->SetFontGlyphSet(size_map[size], filename.c_str(), size, 500, 0, 0, flag); g_ISurface->AddCustomFontFile(filename.c_str(), path.c_str()); - init = true; } void font::stringSize(std::string string, float *x, float *y) { - if (!init) + if (!size_map[size]) Init(); std::wstring_convert > converter; std::wstring ws = converter.from_bytes(string.c_str()); int w, h; - g_ISurface->GetTextSize(id, ws.c_str(), w, h); + g_ISurface->GetTextSize(size_map[size], ws.c_str(), w, h); if (x) *x = w; if (y) *y = h; } +void font::changeSize(int new_font_size) +{ + size = new_font_size; + if (!size_map[size]) + Init(); +} #endif std::unique_ptr menu{ nullptr }; std::unique_ptr esp{ nullptr }; std::unique_ptr center_screen{ nullptr }; } // namespace fonts +static InitRoutine font_size([]() { + esp_font_size.installChangeCallback([](settings::VariableBase &var, int after) { + if (after > 0 && after < 100) + { +#if !ENABLE_ENGINE_DRAWING && !ENABLE_IMGUI_DRAWING + fonts::esp_font_size->unload(); + fonts::esp_font_size.reset(new fonts::font(DATA_PATH "/fonts/verasans.ttf", after)); +#else + logging::Info("test"); + fonts::esp->changeSize(after); +#endif + } + }); + center_font_size.installChangeCallback([](settings::VariableBase &var, int after) { + if (after > 0 && after < 100) + { +#if !ENABLE_ENGINE_DRAWING && !ENABLE_IMGUI_DRAWING + fonts::center_screen->unload(); + fonts::center_screen.reset(new fonts::font(DATA_PATH "/fonts/verasans.ttf", after)); +#else + logging::Info("test"); + fonts::center_screen->changeSize(after); +#endif + } + }); +}); namespace draw { @@ -319,13 +352,13 @@ void RectangleTextured(float x, float y, float w, float h, rgba_t color, Texture g_ISurface->DrawSetColor(color.r, color.g, color.b, color.a); g_ISurface->DrawSetTexture(texture.get()); - float tex_width = texture.getWidth(); + float tex_width = texture.getWidth(); float tex_height = texture.getHeight(); - Vector2D scr_top_left = { x, y }; - Vector2D scr_top_right = { x + w, y }; + Vector2D scr_top_left = { x, y }; + Vector2D scr_top_right = { x + w, y }; Vector2D scr_bottom_right = { x + w, y + h }; - Vector2D scr_botton_left = { x, y + w }; + Vector2D scr_botton_left = { x, y + w }; if (angle != 0.0f) { @@ -342,10 +375,10 @@ void RectangleTextured(float x, float y, float w, float h, rgba_t color, Texture f(scr_bottom_right); } - Vector2D tex_top_left = { tx / tex_width, ty / tex_height }; - Vector2D tex_top_right = { (tx + tw) / tex_width, ty / tex_height }; + Vector2D tex_top_left = { tx / tex_width, ty / tex_height }; + Vector2D tex_top_right = { (tx + tw) / tex_width, ty / tex_height }; Vector2D tex_bottom_right = { (tx + tw) / tex_width, (ty + th) / tex_height }; - Vector2D tex_botton_left = { tx / tex_width, (ty + th) / tex_height }; + Vector2D tex_botton_left = { tx / tex_width, (ty + th) / tex_height }; // logging::Info("%f,%f %f,%f", tex_top_left.x, tex_top_left.y, tex_top_right.x, tex_top_right.y); vertices[0].Init(scr_top_left, tex_top_left); diff --git a/src/visual/imgui/imgui_impl.cpp b/src/visual/imgui/imgui_impl.cpp index 0c6c308c..8f5a5ee3 100755 --- a/src/visual/imgui/imgui_impl.cpp +++ b/src/visual/imgui/imgui_impl.cpp @@ -286,19 +286,19 @@ bool ImGui_ImplSdl_Init() ImGuiStyle *style = &ImGui::GetStyle(); - style->WindowPadding = ImVec2(15, 15); + style->WindowPadding = ImVec2(15, 15); style->WindowRounding = 1.0f; - style->FramePadding = ImVec2(5, 5); + style->FramePadding = ImVec2(5, 5); style->FrameRounding = 1.0f; - style->ItemSpacing = ImVec2(12, 8); - style->ItemInnerSpacing = ImVec2(6, 6); - style->IndentSpacing = 25.0f; - style->ScrollbarSize = 15.0f; + style->ItemSpacing = ImVec2(12, 8); + style->ItemInnerSpacing = ImVec2(6, 6); + style->IndentSpacing = 25.0f; + style->ScrollbarSize = 15.0f; style->ScrollbarRounding = 1.0f; - style->GrabMinSize = 5.0f; + style->GrabMinSize = 5.0f; style->GrabRounding = 1.0f; style->Colors[ImGuiCol_Text] = ImVec4(0.80f, 0.80f, 0.83f, 1.00f); @@ -319,21 +319,21 @@ bool ImGui_ImplSdl_Init() style->Colors[ImGuiCol_ScrollbarGrab] = ImVec4(0.80f, 0.80f, 0.83f, 0.31f); style->Colors[ImGuiCol_ScrollbarGrabHovered] = ImVec4(0.56f, 0.56f, 0.58f, 1.00f); style->Colors[ImGuiCol_ScrollbarGrabActive] = ImVec4(0.06f, 0.05f, 0.07f, 1.00f); - style->Colors[ImGuiCol_CheckMark] = ImVec4(0.80f, 0.80f, 0.83f, 0.31f); - style->Colors[ImGuiCol_SliderGrab] = ImVec4(0.80f, 0.80f, 0.83f, 0.31f); - style->Colors[ImGuiCol_SliderGrabActive] = ImVec4(0.06f, 0.05f, 0.07f, 1.00f); - style->Colors[ImGuiCol_Button] = ImVec4(0.10f, 0.09f, 0.12f, 1.00f); - style->Colors[ImGuiCol_ButtonHovered] = ImVec4(0.24f, 0.23f, 0.29f, 1.00f); - style->Colors[ImGuiCol_ButtonActive] = ImVec4(0.56f, 0.56f, 0.58f, 1.00f); - style->Colors[ImGuiCol_Header] = ImVec4(0.10f, 0.09f, 0.12f, 1.00f); - style->Colors[ImGuiCol_HeaderHovered] = ImVec4(0.56f, 0.56f, 0.58f, 1.00f); - style->Colors[ImGuiCol_HeaderActive] = ImVec4(0.06f, 0.05f, 0.07f, 1.00f); - style->Colors[ImGuiCol_Column] = ImVec4(0.56f, 0.56f, 0.58f, 1.00f); - style->Colors[ImGuiCol_ColumnHovered] = ImVec4(0.24f, 0.23f, 0.29f, 1.00f); - style->Colors[ImGuiCol_ColumnActive] = ImVec4(0.56f, 0.56f, 0.58f, 1.00f); - style->Colors[ImGuiCol_ResizeGrip] = ImVec4(0.00f, 0.00f, 0.00f, 0.00f); - style->Colors[ImGuiCol_ResizeGripHovered] = ImVec4(0.56f, 0.56f, 0.58f, 1.00f); - style->Colors[ImGuiCol_ResizeGripActive] = ImVec4(0.06f, 0.05f, 0.07f, 1.00f); + style->Colors[ImGuiCol_CheckMark] = ImVec4(0.80f, 0.80f, 0.83f, 0.31f); + style->Colors[ImGuiCol_SliderGrab] = ImVec4(0.80f, 0.80f, 0.83f, 0.31f); + style->Colors[ImGuiCol_SliderGrabActive] = ImVec4(0.06f, 0.05f, 0.07f, 1.00f); + style->Colors[ImGuiCol_Button] = ImVec4(0.10f, 0.09f, 0.12f, 1.00f); + style->Colors[ImGuiCol_ButtonHovered] = ImVec4(0.24f, 0.23f, 0.29f, 1.00f); + style->Colors[ImGuiCol_ButtonActive] = ImVec4(0.56f, 0.56f, 0.58f, 1.00f); + style->Colors[ImGuiCol_Header] = ImVec4(0.10f, 0.09f, 0.12f, 1.00f); + style->Colors[ImGuiCol_HeaderHovered] = ImVec4(0.56f, 0.56f, 0.58f, 1.00f); + style->Colors[ImGuiCol_HeaderActive] = ImVec4(0.06f, 0.05f, 0.07f, 1.00f); + style->Colors[ImGuiCol_Column] = ImVec4(0.56f, 0.56f, 0.58f, 1.00f); + style->Colors[ImGuiCol_ColumnHovered] = ImVec4(0.24f, 0.23f, 0.29f, 1.00f); + style->Colors[ImGuiCol_ColumnActive] = ImVec4(0.56f, 0.56f, 0.58f, 1.00f); + style->Colors[ImGuiCol_ResizeGrip] = ImVec4(0.00f, 0.00f, 0.00f, 0.00f); + style->Colors[ImGuiCol_ResizeGripHovered] = ImVec4(0.56f, 0.56f, 0.58f, 1.00f); + style->Colors[ImGuiCol_ResizeGripActive] = ImVec4(0.06f, 0.05f, 0.07f, 1.00f); style->Colors[ImGuiCol_PlotLines] = ImVec4(0.40f, 0.39f, 0.38f, 0.63f); style->Colors[ImGuiCol_PlotLinesHovered] = ImVec4(0.25f, 1.00f, 0.00f, 1.00f); style->Colors[ImGuiCol_PlotHistogram] = ImVec4(0.40f, 0.39f, 0.38f, 0.63f); @@ -388,7 +388,7 @@ void ImGui_ImplSdl_NewFrame(SDL_Window *window) if (io.ConfigFlags & ImGuiConfigFlags_NoMouseCursorChange) return; - ImGuiMouseCursor imgui_cursor = ImGui::GetMouseCursor(); + /*ImGuiMouseCursor imgui_cursor = ImGui::GetMouseCursor(); if (io.MouseDrawCursor || imgui_cursor == ImGuiMouseCursor_None) { // Hide OS mouse cursor if imgui is drawing it or if it wants no cursor @@ -399,7 +399,7 @@ void ImGui_ImplSdl_NewFrame(SDL_Window *window) // Show OS mouse cursor SDL_SetCursor(g_MouseCursors[imgui_cursor] ? g_MouseCursors[imgui_cursor] : g_MouseCursors[ImGuiMouseCursor_Arrow]); SDL_ShowCursor(SDL_TRUE); - } + }*/ ImGui::NewFrame(); -} \ No newline at end of file +} diff --git a/src/visual/imgui/imrenderer.cpp b/src/visual/imgui/imrenderer.cpp index 381c9c72..33883d39 100644 --- a/src/visual/imgui/imrenderer.cpp +++ b/src/visual/imgui/imrenderer.cpp @@ -73,12 +73,12 @@ void font::changeSize(int new_font_size) void font::rebuild() { ImGui_Impl_DestroyFontsTexture(font_atlas); - if (!size_map[size]) + if (!size_map[new_size]) { - size_map[size] = font_atlas->AddFontFromFileTTF(path.c_str(), new_size, NULL, font_atlas->GetGlyphRangesDefault()); + size_map[new_size] = font_atlas->AddFontFromFileTTF(path.c_str(), new_size, NULL, font_atlas->GetGlyphRangesDefault()); font_atlas->Build(); } - ImFont *font_new = size_map[size]; + ImFont *font_new = size_map[new_size]; if (!font_new || !font_new->ContainerAtlas) return; // what? ImFontConfig *font_config = (ImFontConfig *) font_new->ConfigData; @@ -87,6 +87,7 @@ void font::rebuild() ImGuiFreeType::BuildFontAtlas(font_new->ContainerAtlas, 0); ImGui_Impl_CreateFontsTexture(font_new->ContainerAtlas); needs_rebuild = false; + size = new_size; } Texture::Texture(std::string path) : path{ path } @@ -267,4 +268,4 @@ void circle(float x, float y, float radius, rgba_t color, float thickness, int s buffers[currentBuffer]->AddCircle(ImVec2(x, y), radius, ImGui::GetColorU32(ImVec4(color.r, color.g, color.b, color.a)), steps, thickness); } } // namespace draw -} // namespace im_renderer \ No newline at end of file +} // namespace im_renderer diff --git a/src/visual/menu/menu/Menu.cpp b/src/visual/menu/menu/Menu.cpp index bb0c16fd..563f1a4d 100644 --- a/src/visual/menu/menu/Menu.cpp +++ b/src/visual/menu/menu/Menu.cpp @@ -77,8 +77,8 @@ Menu *Menu::instance{ nullptr }; namespace resource::font { // FIXME dynamic font change.. -fonts::font base{ DATA_PATH "/menu/Verdana.ttf", 10 }; -fonts::font bold{ DATA_PATH "/menu/VerdanaBold.ttf", 9 }; +fonts::font base{ DATA_PATH "/menu/Verdana.ttf", 12 }; +fonts::font bold{ DATA_PATH "/menu/VerdanaBold.ttf", 11 }; } // namespace resource::font namespace style::colors