From 19db2a57eada305d20f8b0a25689760412862fd9 Mon Sep 17 00:00:00 2001 From: Yousef Khadadeh Date: Sun, 5 Apr 2026 22:01:30 +0300 Subject: [PATCH] Readded global log --- src/MainProgram.cpp | 7 ++++ src/MainProgram.hpp | 2 -- src/Toolbar.cpp | 81 +++++++++++++++++++++++++-------------------- src/Toolbar.hpp | 3 ++ 4 files changed, 56 insertions(+), 37 deletions(-) diff --git a/src/MainProgram.cpp b/src/MainProgram.cpp index 7591447..9b5cf3e 100755 --- a/src/MainProgram.cpp +++ b/src/MainProgram.cpp @@ -48,6 +48,7 @@ MainProgram::MainProgram(): logMessages.emplace_front(Toolbar::LogMessage{text, Toolbar::LogMessage::COLOR_ERROR}); if(logMessages.size() == LOG_SIZE) logMessages.pop_back(); + g.gui.set_to_layout(); }); Logger::get().add_log("USERINFO", [&](const std::string& text) { @@ -56,11 +57,13 @@ MainProgram::MainProgram(): logMessages.emplace_front(Toolbar::LogMessage{text, Toolbar::LogMessage::COLOR_NORMAL}); if(logMessages.size() == LOG_SIZE) logMessages.pop_back(); + g.gui.set_to_layout(); }); Logger::get().add_log("CHAT", [&](const std::string& text) { *logFile << "[CHAT] " << text << std::endl; std::cout << "[CHAT] " << text << std::endl; + g.gui.set_to_layout(); }); } @@ -81,8 +84,11 @@ void MainProgram::update() { } g.update(); + toolbar.update(); NetLibrary::update(); + + post_callback(); } bool MainProgram::app_close_requested() { @@ -318,6 +324,7 @@ bool MainProgram::input_keybind_callback(const Vector2ui32& newKey) { input.keyAssignments.emplace(newKey, v); keybindWaiting = std::nullopt; g.gui.set_to_layout(); + post_callback(); return true; } return false; diff --git a/src/MainProgram.hpp b/src/MainProgram.hpp index d20b158..18e5655 100644 --- a/src/MainProgram.hpp +++ b/src/MainProgram.hpp @@ -81,8 +81,6 @@ class MainProgram { std::ofstream* logFile; std::deque logMessages; - std::string newAddr; - MainProgram(); void update(); void draw(SkCanvas* canvas, std::shared_ptr worldToDraw, const DrawData& drawData); diff --git a/src/Toolbar.cpp b/src/Toolbar.cpp index f72dcd8..9e0bfdd 100644 --- a/src/Toolbar.cpp +++ b/src/Toolbar.cpp @@ -246,6 +246,17 @@ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR I )"; } +void Toolbar::update() { + std::erase_if(main.logMessages, [&](auto& logM) { + logM.time.update_time_since(); + if(logM.time > LogMessage::FADE_START_TIME) { + main.g.gui.set_to_layout(); + return logM.time >= LogMessage::DISPLAY_TIME; + } + return false; + }); +} + void Toolbar::layout_run() { auto& gui = main.g.gui; auto& io = gui.io; @@ -1149,41 +1160,41 @@ void Toolbar::global_log() { }, .floating = {.offset = {0, 10}, .attachPoints = {.element = CLAY_ATTACH_POINT_RIGHT_TOP, .parent = CLAY_ATTACH_POINT_RIGHT_BOTTOM}, .attachTo = CLAY_ATTACH_TO_PARENT} }) { - // constexpr float DISPLAY_TIME = 8.0f; - // constexpr float FADE_START_TIME = 7.0f; - // int i = 0; - // for(auto& logM : main.logMessages) { - // logM.time.update_time_since(); - // if(logM.time < DISPLAY_TIME) { - // float a = 1.0f - lerp_time(logM.time, DISPLAY_TIME, FADE_START_TIME); - // Clay_ElementId elemId = CLAY_IDI_LOCAL("GLOBAL LOG", i++); - // CLAY(elemId, { - // .layout = { - // .sizing = {.width = CLAY_SIZING_FIT(300), .height = CLAY_SIZING_FIT(0) }, - // .padding = CLAY_PADDING_ALL(io.theme->padding1), - // .childGap = 0, - // .childAlignment = { .x = CLAY_ALIGN_X_LEFT, .y = CLAY_ALIGN_Y_TOP}, - // .layoutDirection = CLAY_TOP_TO_BOTTOM - // }, - // .backgroundColor = convert_vec4(color_mul_alpha(io.theme->backColor1, a)), - // .cornerRadius = CLAY_CORNER_RADIUS(io.theme->windowCorners1) - // }) { - // gui.obstructing_window(elemId); - // SkColor4f c{0, 0, 0, 0}; - // switch(logM.color) { - // case LogMessage::COLOR_NORMAL: - // c = io.theme->frontColor1; - // break; - // case LogMessage::COLOR_ERROR: - // c = io.theme->errorColor; - // break; - // } - // gui.text_label_color(logM.text, color_mul_alpha(c, a)); - // } - // } - // else - // break; - // } + int i = 0; + for(auto& logM : main.logMessages) { + logM.time.update_time_since(); + if(logM.time < LogMessage::DISPLAY_TIME) { + float a = 1.0f - lerp_time(logM.time, LogMessage::DISPLAY_TIME, LogMessage::FADE_START_TIME); + gui.new_id(i, [&] { + gui.element("GLOBAL LOG", [&] (LayoutElement*, const Clay_ElementId& lId) { + CLAY(lId, { + .layout = { + .sizing = {.width = CLAY_SIZING_FIT(300), .height = CLAY_SIZING_FIT(0) }, + .padding = CLAY_PADDING_ALL(io.theme->padding1), + .childGap = 0, + .childAlignment = { .x = CLAY_ALIGN_X_LEFT, .y = CLAY_ALIGN_Y_TOP}, + .layoutDirection = CLAY_TOP_TO_BOTTOM + }, + .backgroundColor = convert_vec4(color_mul_alpha(io.theme->backColor1, a)), + .cornerRadius = CLAY_CORNER_RADIUS(io.theme->windowCorners1) + }) { + SkColor4f c{0, 0, 0, 0}; + switch(logM.color) { + case LogMessage::COLOR_NORMAL: + c = io.theme->frontColor1; + break; + case LogMessage::COLOR_ERROR: + c = io.theme->errorColor; + break; + } + text_label_color(gui, logM.text, color_mul_alpha(c, a)); + } + }); + }); + } + else + break; + } } } diff --git a/src/Toolbar.hpp b/src/Toolbar.hpp index f1834a1..e05a63f 100644 --- a/src/Toolbar.hpp +++ b/src/Toolbar.hpp @@ -15,6 +15,8 @@ class MainProgram; class Toolbar { public: struct LogMessage { + static constexpr float DISPLAY_TIME = 8.0f; + static constexpr float FADE_START_TIME = 7.0f; std::string text; enum { COLOR_NORMAL = 0, @@ -41,6 +43,7 @@ class Toolbar { std::string chatMessageInput; Toolbar(MainProgram& initMain); + void update(); void layout_run(); struct ColorSelectorData { std::function onChange;