From 17c36bb05e71c6e79c2231b6a5652ca6e71c9a6e Mon Sep 17 00:00:00 2001 From: tobid7 Date: Sun, 19 May 2024 15:55:32 +0200 Subject: [PATCH] Add FOntRestore and Make Settings use default font --- include/renderd7/DrawV2.hpp | 1 + include/renderd7/global_db.hpp | 8 +++++ include/renderd7/renderd7.hpp | 12 +++---- rd7tf/source/main.cpp | 3 -- rd7tf/source/scene.cpp | 4 --- source/DrawV2.cpp | 20 ++++++++++-- source/internal_db.cpp | 20 ++++++++++-- source/renderd7.cpp | 60 ++++++++++++++++++++++++---------- 8 files changed, 93 insertions(+), 35 deletions(-) diff --git a/include/renderd7/DrawV2.hpp b/include/renderd7/DrawV2.hpp index c77c886..b45d0ab 100644 --- a/include/renderd7/DrawV2.hpp +++ b/include/renderd7/DrawV2.hpp @@ -49,6 +49,7 @@ std::string TextShort(const std::string& in, int max_len); void TextMaxBox(R7Vec2 size); void TextDefaultBox(); void TextFont(Font::Ref fnt); +void TextFontRestore(); void TextDefaultFont(); namespace Draw2 { void Rect(R7Vec2 pos, R7Vec2 size, unsigned int color, int t = 1); diff --git a/include/renderd7/global_db.hpp b/include/renderd7/global_db.hpp index ac458a4..15484b4 100644 --- a/include/renderd7/global_db.hpp +++ b/include/renderd7/global_db.hpp @@ -21,6 +21,14 @@ #include #include +namespace RenderD7 { +namespace IDB { +void Start(); +void Stop(); +void Restart(); +} // namespace IDB +} // namespace RenderD7 + // Outdated HidApi (HidV2Patched) extern u32 d7_hDown; extern u32 d7_hHeld; diff --git a/include/renderd7/renderd7.hpp b/include/renderd7/renderd7.hpp index 17a6190..6b08091 100644 --- a/include/renderd7/renderd7.hpp +++ b/include/renderd7/renderd7.hpp @@ -97,13 +97,13 @@ class RSettings : public RenderD7::Scene { private: /// @brief State (Define for Menus) enum RState { - RSETTINGS, + RSETTINGS, // Main Settings Menu RINFO, - RSERVICES, - RMCONFIG, - RFTRACE, - RUI7, - RCREDITS + RIDB, // Internal Debugger + ROVERLAYS, + RFTRACE, // FTRace Menu + RUI7, // UI7 Menu + RCREDITS // Unused? }; /// @param shared_request Defines requests from Draw to Logic diff --git a/rd7tf/source/main.cpp b/rd7tf/source/main.cpp index 27c0543..003fb64 100644 --- a/rd7tf/source/main.cpp +++ b/rd7tf/source/main.cpp @@ -18,8 +18,6 @@ #include "scene.hpp" -extern void IdbServer(); - int main() { rd7_enable_memtrack = true; rd7_do_splash = true; @@ -28,7 +26,6 @@ int main() { RD7::FadeIn(); auto fnt = RD7::Font::New("romfs:/roboto_bold.bcfnt"); RD7::TextFont(fnt); - // IdbServer(); // RD7::Init::NdspFirm(); RD7::Scene::Load(std::make_unique()); RD7::Ftrace::End("app", "app_init"); diff --git a/rd7tf/source/scene.cpp b/rd7tf/source/scene.cpp index 19d9272..8d9296f 100644 --- a/rd7tf/source/scene.cpp +++ b/rd7tf/source/scene.cpp @@ -107,10 +107,6 @@ void Sample::Draw() const { RD7TextFlags_AlignRight); RD7::UndoColorEdit(RD7Color_Text);*/ if (UI7::BeginMenu("RenderD7 Test Framework")) { - UI7::SetCursorPos(R7Vec2(395, 2)); - UI7::Label(RD7::FormatBytes(RD7::Memory::GetCurrent()), - RD7TextFlags_AlignRight); - UI7::RestoreCursor(); if (state == State_Menu) { UI7::Label("SZS: " + std::to_string(img.size())); UI7::Grid("Images", R7Vec2(390, 180), testv2, display_icon, diff --git a/source/DrawV2.cpp b/source/DrawV2.cpp index 012c8f7..0d6cbf6 100644 --- a/source/DrawV2.cpp +++ b/source/DrawV2.cpp @@ -25,6 +25,7 @@ const float rd7i_d7_dts = 0.5f; float rd7i_d2_txt_size = rd7i_d7_dts; C2D_Font rd7i_d2_fnt = nullptr; +C2D_Font rd7i_d2_fntb = nullptr; R7Vec2 rd7i_d7_mwh = R7Vec2(0, 0); std::map rd7i_d2_ts; std::map rd7i_d2_mln; @@ -123,9 +124,24 @@ void TextMaxBox(R7Vec2 size) { rd7i_d7_mwh = size; } void TextDefaultBox() { rd7i_d7_mwh = R7Vec2(0, 0); } -void TextFont(Font::Ref fnt) { rd7i_d2_fnt = fnt->Ptr(); } +void TextFont(Font::Ref fnt) { + rd7i_d2_fntb = rd7i_d2_fnt; + rd7i_d2_fnt = fnt->Ptr(); +} -void TextDefaultFont() { rd7i_d2_fnt = rd7i_base_font; } +void TextFontRestore() { + // Create temp copy + // Restore other font + // Set other to temp + auto tmp = rd7i_d2_fnt; + rd7i_d2_fnt = rd7i_d2_fntb; + rd7i_d2_fntb = tmp; +} + +void TextDefaultFont() { + rd7i_d2_fntb = rd7i_d2_fnt; + rd7i_d2_fnt = rd7i_base_font; +} float TextGetSize() { return rd7i_d2_txt_size; } diff --git a/source/internal_db.cpp b/source/internal_db.cpp index 61a5fe5..b5f7488 100644 --- a/source/internal_db.cpp +++ b/source/internal_db.cpp @@ -230,10 +230,11 @@ void ServerThread(RenderD7::Parameter param) { return; } rd7i_idb_running = true; + rd7i_idb_fp = false; atexit(KillIdbServer); tcp_server server("0.0.0.0", 4727); int cmd = 0; - while (true && !rd7i_idb_fp) { + while (!rd7i_idb_fp) { size_t r = server.rec(&cmd, sizeof(int)); if (r == 0) { server.reconnect(); @@ -259,6 +260,7 @@ void ServerThread(RenderD7::Parameter param) { } else if (cmd == 3) { rd7i_reacttion(3); RenderD7::ExitApp(); + rd7i_idb_fp = true; } else { rd7i_reacttion(1234); } @@ -266,7 +268,21 @@ void ServerThread(RenderD7::Parameter param) { rd7i_idb_running = false; } -void IdbServer() { +namespace RenderD7 { +namespace IDB { +void Start() { + if (rd7i_idb_running) return; rd7i_idb_server.initialize(ServerThread); rd7i_idb_server.start(true); } +void Stop() { + if (!rd7i_idb_running) return; + rd7i_idb_fp = true; + KillIdbServer(); +} +void Restart() { + Stop(); + Start(); +} +} // namespace IDB +} // namespace RenderD7 \ No newline at end of file diff --git a/source/renderd7.cpp b/source/renderd7.cpp index aacbe2a..ba5c1ce 100644 --- a/source/renderd7.cpp +++ b/source/renderd7.cpp @@ -315,7 +315,6 @@ bool RenderD7::MainLoop() { RenderD7::Ftrace::End("rd7sm", f2s(RenderD7::Scene::doLogic)); } - // Disably Overlays For one Frame RenderD7::Ftrace::End("rd7-core", f2s(RenderD7::MainLoop)); return rd7i_running; } @@ -485,6 +484,9 @@ void RenderD7::FrameEnd() { } RenderD7::RSettings::RSettings() { + // RenderD7 Settings is designed for + // System Font + RenderD7::TextDefaultFont(); tmp_txt = RenderD7::TextGetSize(); RenderD7::TextDefaultSize(); RenderD7::FadeIn(); @@ -496,7 +498,10 @@ RenderD7::RSettings::RSettings() { stateftold = rd7i_ftraced; } -RenderD7::RSettings::~RSettings() { RenderD7::CustomTextSize(tmp_txt); } +RenderD7::RSettings::~RSettings() { + RenderD7::TextFontRestore(); + RenderD7::CustomTextSize(tmp_txt); +} std::vector StrHelper(std::string input) { std::string ss(input); @@ -538,7 +543,10 @@ void RenderD7::RSettings::Draw(void) const { shared_request[0x00000001] = RUI7; } if (UI7::Button("Overlays")) { - shared_request[0x00000001] = RMCONFIG; + shared_request[0x00000001] = ROVERLAYS; + } + if (UI7::Button("IDB")) { + shared_request[0x00000001] = RIDB; } if (UI7::Button("Back")) { shared_request[0x00000002] = 1U; @@ -549,21 +557,32 @@ void RenderD7::RSettings::Draw(void) const { UI7::EndMenu(); } - } else if (m_state == RSERVICES) { + } else if (m_state == RIDB) { RenderD7::OnScreen(Top); - RenderD7::Draw2::RFS(R7Vec2(0, 0), R7Vec2(400, 240), - RenderD7::StyleColor(RD7Color_Background)); - RenderD7::Draw2::RFS(R7Vec2(0, 0), R7Vec2(400, 20), - RenderD7::StyleColor(RD7Color_Header)); - RenderD7::TextColorByBg(RD7Color_Header); - RenderD7::Draw2::Text(R7Vec2(5, 2), "RenderD7 -> Security"); - RenderD7::Draw2::Text(R7Vec2(395, 2), RENDERD7VSTRING, - RD7TextFlags_AlignRight); - RenderD7::UndoColorEdit(RD7Color_Text); + if (UI7::BeginMenu("RenderD7 -> Debugger")) { + UI7::SetCursorPos(R7Vec2(395, 2)); + UI7::Label(RENDERD7VSTRING, RD7TextFlags_AlignRight); + UI7::RestoreCursor(); + UI7::Label("Server Running: " + + std::string(rd7i_idb_running ? "true" : "false")); + UI7::EndMenu(); + } RenderD7::OnScreen(Bottom); - RenderD7::Draw2::RFS(R7Vec2(0, 0), R7Vec2(320, 240), - RenderD7::StyleColor(RD7Color_Background)); - RenderD7::Draw2::Text(R7Vec2(5, 2), "Press \uE001 to go back!"); + if (UI7::BeginMenu("Press \uE001 to go back!")) { + if (UI7::Button("Start Server")) { + RenderD7::IDB::Start(); + } + UI7::SameLine(); + if (UI7::Button("Stop Server")) { + RenderD7::IDB::Stop(); + } + UI7::SameLine(); + if (UI7::Button("Restart Server")) { + RenderD7::IDB::Restart(); + } + + UI7::EndMenu(); + } } else if (m_state == RINFO) { std::string rd7ver = RENDERD7VSTRING; @@ -711,7 +730,7 @@ void RenderD7::RSettings::Draw(void) const { UI7::Checkbox("Debug", UI7::IsDebugging()); UI7::EndMenu(); } - } else if (m_state == RMCONFIG) { + } else if (m_state == ROVERLAYS) { RenderD7::OnScreen(Top); if (UI7::BeginMenu("RenderD7 -> Metrik")) { UI7::SetCursorPos(R7Vec2(395, 2)); @@ -796,7 +815,12 @@ void RenderD7::RSettings::Logic() { m_state = RSETTINGS; } } - if (m_state == RSERVICES) { + if (m_state == ROVERLAYS) { + if (d7_hDown & KEY_B) { + m_state = RSETTINGS; + } + } + if (m_state == RIDB) { if (d7_hDown & KEY_B) { m_state = RSETTINGS; }