From 7197487d2d8d7b2e4d5e84dd8f3093a02854f556 Mon Sep 17 00:00:00 2001 From: StackZ <47382115+SuperSaiyajinStackZ@users.noreply.github.com> Date: Sat, 4 Apr 2020 16:50:18 +0200 Subject: [PATCH] See Description for changes. - Remove GodMode & deleteTitle function. - Add a new Bar & Selector Graphic. - Change Color Selector UI. --- assets/gfx/sprites.t3s | 2 + assets/gfx/sprites/button.png | Bin 0 -> 736 bytes assets/gfx/sprites/selector.png | Bin 0 -> 11971 bytes include/animation.hpp | 2 + include/gui/gfx.hpp | 2 + include/screens/mainMenu.hpp | 10 +- include/screens/scriptlist.hpp | 8 +- include/screens/settings.hpp | 16 +- include/screens/unistore.hpp | 17 +- include/utils/config.hpp | 2 +- include/utils/scriptHelper.hpp | 1 - romfs/lang/en/app.json | 6 +- source/animation.cpp | 32 +++ source/gui/gfx.cpp | 19 +- source/screens/mainMenu.cpp | 39 +-- source/screens/scriptlist.cpp | 32 +-- source/screens/settings.cpp | 467 ++++++++++++++++---------------- source/screens/unistore.cpp | 53 ++-- source/utils/config.cpp | 11 + source/utils/scriptHelper.cpp | 20 -- 20 files changed, 364 insertions(+), 375 deletions(-) create mode 100644 assets/gfx/sprites/button.png create mode 100644 assets/gfx/sprites/selector.png diff --git a/assets/gfx/sprites.t3s b/assets/gfx/sprites.t3s index 296bd6b..e2bf52a 100644 --- a/assets/gfx/sprites.t3s +++ b/assets/gfx/sprites.t3s @@ -3,12 +3,14 @@ sprites/arrow.png sprites/bottom_screen_bot.png sprites/bottom_screen_top.png +sprites/button.png sprites/delete.png sprites/download_all.png sprites/dropdown.png sprites/top_screen_bot.png sprites/top_screen_top.png sprites/search.png +sprites/selector.png sprites/side_arrow.png sprites/uniStore.png sprites/uniStore_HD.png diff --git a/assets/gfx/sprites/button.png b/assets/gfx/sprites/button.png new file mode 100644 index 0000000000000000000000000000000000000000..d7e0c77a6d46d1fee7f35b59a03eca42f6d0dc5c GIT binary patch literal 736 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 C-9`}r literal 0 HcmV?d00001 diff --git a/include/animation.hpp b/include/animation.hpp index d00a177..9c3613d 100644 --- a/include/animation.hpp +++ b/include/animation.hpp @@ -33,6 +33,8 @@ namespace Animation { // Draw Progressbar. void DrawProgressBar(float currentProgress, float totalProgress, int mode); + // Draw Button. + void Button(int x, int y, float speed = .030); } #endif \ No newline at end of file diff --git a/include/gui/gfx.hpp b/include/gui/gfx.hpp index b6aa6e1..0a18cbd 100644 --- a/include/gui/gfx.hpp +++ b/include/gui/gfx.hpp @@ -41,6 +41,8 @@ namespace GFX // Draw Sprites. void DrawSprite(int img, int x, int y, float ScaleX = 1, float ScaleY = 1); void DrawSpriteBlend(int img, int x, int y, float ScaleX = 1, float ScaleY = 1); + + void DrawButton(int x, int y, std::string ButtonText = "", u32 color = Config::Button); } #endif \ No newline at end of file diff --git a/include/screens/mainMenu.hpp b/include/screens/mainMenu.hpp index ceb4bbc..1b71455 100644 --- a/include/screens/mainMenu.hpp +++ b/include/screens/mainMenu.hpp @@ -41,11 +41,11 @@ private: int Selection = 0; std::vector mainButtons = { - {10, 70, 140, 40}, // Scripts. - {170, 70, 140, 40}, // UniStore. - {10, 145, 140, 40}, // Settings. - {170, 145, 140, 40}, // FTP. - {0, 215, 25, 25}, // Back Arrow. + {0, 60, 149, 52}, // UniStore. + {162, 60, 149, 52}, // Scripts. + {0, 130, 149, 52}, // Settings. + {162, 130, 149, 52}, // FTP. + {0, 215, 25, 25} // Back Arrow. }; }; diff --git a/include/screens/scriptlist.hpp b/include/screens/scriptlist.hpp index 46400c6..c4870bc 100644 --- a/include/screens/scriptlist.hpp +++ b/include/screens/scriptlist.hpp @@ -97,10 +97,10 @@ private: {5, 0, 25, 25} // Dropdown Menu. }; std::vector subPos = { - {10, 70, 140, 40}, // Script list. - {170, 70, 140, 40}, // Get Scripts. - {10, 145, 140, 40}, // Script Creator. - {170, 145, 140, 40} // Script path change. + {0, 60, 149, 52}, // Script list. + {162, 60, 149, 52}, // Get Scripts. + {0, 130, 149, 52}, // Script Creator. + {162, 130, 149, 52} // Script path change. }; // DropDownMenu. diff --git a/include/screens/settings.hpp b/include/screens/settings.hpp index d52d0ec..b375087 100644 --- a/include/screens/settings.hpp +++ b/include/screens/settings.hpp @@ -43,6 +43,9 @@ private: int colorMode = 0; int mode = 0; int Selection = 0; + bool dropDownMenu = false; + mutable int screenPos = 0; + int colorSelection = 0; // Draws. void DrawSubMenu(void) const; @@ -56,9 +59,9 @@ private: void MiscSettingsLogic(u32 hDown, u32 hHeld, touchPosition touch); std::vector mainButtons = { - {90, 40, 140, 35}, // Language. - {90, 100, 140, 35}, // Colors. - {90, 160, 140, 35}, // Misc. + {80, 30, 149, 52}, // Language. + {80, 90, 149, 52}, // Colors. + {80, 150, 149, 52} // Misc. }; std::vector langBlocks = { @@ -74,18 +77,13 @@ private: {177, 188, 20, 20}, }; - std::vector buttons = { - {10, 85, 95, 41}, - {115, 85, 95, 41}, - {220, 85, 95, 41}, - }; - std::vector arrowPos = { {0, 0, 25, 25}, // Previous Arrow. {295, 0, 25, 25}, // Next Arrow. {0, 215, 25, 25}, // Back Arrow. {0, 0, 25, 25}, // Back Arrow top left. {295, 215, 25, 25}, // Next Page / Misc Arrow. + {5, 0, 25, 25} // Dropdown Menu. }; }; diff --git a/include/screens/unistore.hpp b/include/screens/unistore.hpp index 83e70b8..45b5ee7 100644 --- a/include/screens/unistore.hpp +++ b/include/screens/unistore.hpp @@ -103,21 +103,24 @@ private: {0, 215, 25, 25}, // Back Arrow. {5, 0, 25, 25}, // Dropdown Menu. }; + std::vector URLBtn = { - {10, 70, 140, 40}, // FULL URL. - {170, 70, 140, 40}, // Github. - {10, 145, 140, 40}, // TinyDB. - {170, 145, 140, 40} // QR Code? + {0, 60, 149, 52}, // FULL URL. + {162, 60, 149, 52}, // GitHub. + {0, 130, 149, 52}, // TinyDB. + {162, 130, 149, 52} // QR Code? }; + std::vector GitHubPos = { {30, 50, 260, 30}, // Owner & Repo. {30, 130, 260, 30}, // Filename. {135, 180, 50, 30} // OK. }; + std::vector subPos = { - {90, 40, 140, 35}, // StoreList. - {90, 100, 140, 35}, // storeSearch. - {90, 160, 140, 35} // storePathChange. + {80, 30, 149, 52}, // StoreList. + {80, 90, 149, 52}, // storeSearch. + {80, 150, 149, 52} // storePathChange. }; // DropDownMenu. diff --git a/include/utils/config.hpp b/include/utils/config.hpp index 327f324..a446bce 100644 --- a/include/utils/config.hpp +++ b/include/utils/config.hpp @@ -30,7 +30,7 @@ #include namespace Config { - extern int LangPath, lang, Color1, Color2, Color3, TxtColor, SelectedColor, UnselectedColor, viewMode, progressbarColor, autoboot, outdated, uptodate, notFound, future; + extern int LangPath, lang, Color1, Color2, Color3, TxtColor, SelectedColor, UnselectedColor, viewMode, progressbarColor, autoboot, outdated, uptodate, notFound, future, Button; extern std::string ScriptPath, MusicPath, StorePath, AutobootFile; extern bool Logging, UseBars, GodMode; diff --git a/include/utils/scriptHelper.hpp b/include/utils/scriptHelper.hpp index d55cffe..44e6de7 100644 --- a/include/utils/scriptHelper.hpp +++ b/include/utils/scriptHelper.hpp @@ -74,7 +74,6 @@ namespace ScriptHelper { bool checkIfValid(std::string scriptFile, int mode = 0); - void deleteTitle(const std::string TitleID, bool isNAND, std::string message); void bootTitle(const std::string TitleID, bool isNAND, std::string message); Result prompt(std::string message); diff --git a/romfs/lang/en/app.json b/romfs/lang/en/app.json index bf4a9d6..b91b91f 100644 --- a/romfs/lang/en/app.json +++ b/romfs/lang/en/app.json @@ -118,11 +118,6 @@ "MEDIATYPE_NAND": "MediaType NAND", "BOOT_TITLE": "Would you like to boot this title?", - "GODMODE": "GodMode: ", - "FUNCTION_NOT_ALLOWED": "This function is not allowed without GodMode!", - "ENABLE_GODMODE": "Enable GodMode", - "ENABLE_GODMODE_PROMPT": "Would you like to enable GodMode?\n\nBe careful when you use GodMode!!", - "DISABLE_AUTOBOOT": "Would you like to disable autoboot?", "AUTOBOOT_STORE": "Would you like to autoboot this Store?\n\nThis will autoboot this store on startup!", @@ -149,6 +144,7 @@ "OUTDATED_COLOR": "Outdated Script Color", "UPTODATE_COLOR": "Up-To-Date Script Color", "FUTURE_COLOR": "Future Script Color", + "BUTTON_COLOR": "Button Color", "DELETE_SCRIPT2": "Delete the selected Script.", "DELETE_UNISTORE": "Delete the selected UniStore.", "REFRESH_SCRIPTBROWSE_PROMPT": "Would you like to refresh the ScriptBrowse?", diff --git a/source/animation.cpp b/source/animation.cpp index 76b45d7..47d143c 100644 --- a/source/animation.cpp +++ b/source/animation.cpp @@ -26,7 +26,11 @@ #include "common.hpp" +extern bool isScriptSelected; extern u32 progressBar; +extern u32 selected; + +extern C2D_SpriteSheet sprites; // Draws a Rectangle as the progressbar. void Animation::DrawProgressBar(float currentProgress, float totalProgress, int mode) { @@ -35,4 +39,32 @@ void Animation::DrawProgressBar(float currentProgress, float totalProgress, int } else { Gui::Draw_Rect(31, 121, (int)(((float)currentProgress/(float)totalProgress) * 338.0f), 28, Config::progressbarColor); } +} + +void Animation::Button(int x, int y, float speed) +{ + static float timer = 0.0f; + float highlight_multiplier = fmax(0.0, fabs(fmod(timer, 1.0) - 0.5) / 0.5); + u8 r, g, b; + if (isScriptSelected) { + r = selected & 0xFF; + g = (selected >> 8) & 0xFF; + b = (selected >> 16) & 0xFF; + } else { + r = Config::SelectedColor & 0xFF; + g = (Config::SelectedColor >> 8) & 0xFF; + b = (Config::SelectedColor >> 16) & 0xFF; + } + + u32 color = C2D_Color32(r + (255 - r) * highlight_multiplier, g + (255 - g) * highlight_multiplier, b + (255 - b) * highlight_multiplier, 255); + + // The actual draw part. + C2D_ImageTint tint; + C2D_SetImageTint(&tint, C2D_TopLeft, color, 1); + C2D_SetImageTint(&tint, C2D_TopRight, color, 1); + C2D_SetImageTint(&tint, C2D_BotLeft, color, 1); + C2D_SetImageTint(&tint, C2D_BotRight, color, 1); + C2D_DrawImageAt(C2D_SpriteSheetGetImage(sprites, sprites_selector_idx), x+4, y+4, 0.5f, &tint); // +4 because to fit the button. + + timer += speed; // Speed of the animation. Example : .030f / .030 } \ No newline at end of file diff --git a/source/gui/gfx.cpp b/source/gui/gfx.cpp index 77be1e5..fcdfde8 100644 --- a/source/gui/gfx.cpp +++ b/source/gui/gfx.cpp @@ -111,7 +111,7 @@ void GFX::DrawArrow(int x, int y, float rotation, int arrowSprite) { C2D_SetImageTint(&tint, C2D_TopLeft, Config::TxtColor, 0.5); C2D_SetImageTint(&tint, C2D_TopRight, Config::TxtColor, 0.5); C2D_SetImageTint(&tint, C2D_BotLeft, Config::TxtColor, 0.5); - C2D_SetImageTint(&tint, C2D_BotRight, Config::TxtColor, 0.5); + C2D_SetImageTint(&tint, C2D_BotRight, Config::TxtColor, 0.5); } if (arrowSprite == 0) { @@ -123,4 +123,21 @@ void GFX::DrawArrow(int x, int y, float rotation, int arrowSprite) { C2D_SpriteSetPos(&sprite, x, y); C2D_SpriteSetDepth(&sprite, 0.5); C2D_DrawSpriteTinted(&sprite, &tint); +} + +// Draw a Button and draw Text on it. +void GFX::DrawButton(int x, int y, std::string ButtonText, u32 color) { + C2D_ImageTint tint; + C2D_SetImageTint(&tint, C2D_TopLeft, color, 0.5); + C2D_SetImageTint(&tint, C2D_TopRight, color, 0.5); + C2D_SetImageTint(&tint, C2D_BotLeft, color, 0.5); + C2D_SetImageTint(&tint, C2D_BotRight, color, 0.5); + C2D_DrawImageAt(C2D_SpriteSheetGetImage(sprites, sprites_button_idx), x, y, 0.5f, &tint); + + // Draw String. TODO: Center. + if (isScriptSelected) { + Gui::DrawStringCentered(- (158/2) + x, y + (61/2) - (Gui::GetStringHeight(0.6f, ButtonText) / 2), 0.6f, TextColor, ButtonText, 145, 30); + } else { + Gui::DrawStringCentered(- (158/2) + x, y + (61/2) - (Gui::GetStringHeight(0.6f, ButtonText) / 2), 0.6f, Config::TxtColor, ButtonText, 145, 30); + } } \ No newline at end of file diff --git a/source/screens/mainMenu.cpp b/source/screens/mainMenu.cpp index 2329fff..9f5b2b6 100644 --- a/source/screens/mainMenu.cpp +++ b/source/screens/mainMenu.cpp @@ -49,38 +49,19 @@ void MainMenu::Draw(void) const { Gui::DrawString(397-Gui::GetStringWidth(0.5f, V_STRING), 237-Gui::GetStringHeight(0.5f, V_STRING), 0.5f, Config::TxtColor, V_STRING); } - if (Config::UseBars == true) { - if (Config::GodMode) { - Gui::DrawStringCentered(0, 218, 0.7f, Config::TxtColor, Lang::get("GODMODE") + Lang::get("YES"), 400); - } else { - Gui::DrawStringCentered(0, 218, 0.7f, Config::TxtColor, Lang::get("GODMODE") + Lang::get("NO"), 400); - } - } else { - if (Config::GodMode) { - Gui::DrawStringCentered(0, 218, 0.7f, Config::TxtColor, Lang::get("GODMODE") + Lang::get("YES"), 400); - } else { - Gui::DrawStringCentered(0, 218, 0.7f, Config::TxtColor, Lang::get("GODMODE") + Lang::get("NO"), 400); - } - } - if (fadealpha > 0) Gui::Draw_Rect(0, 0, 400, 240, C2D_Color32(0, 0, 0, fadealpha)); // Fade in out effect GFX::DrawBottom(); GFX::DrawArrow(0, 218, 0, 1); - for (int i = 0; i < 4; i++) { - Gui::Draw_Rect(mainButtons[i].x, mainButtons[i].y, mainButtons[i].w, mainButtons[i].h, Config::UnselectedColor); - if (Selection == i) { - Gui::drawAnimatedSelector(mainButtons[i].x, mainButtons[i].y, mainButtons[i].w, mainButtons[i].h, .060, TRANSPARENT, Config::SelectedColor); - } - } - - Gui::DrawStringCentered(-80+10, mainButtons[0].y+12, 0.6f, Config::TxtColor, "UniStore", 130); - Gui::DrawStringCentered(80, mainButtons[1].y+12, 0.6f, Config::TxtColor, Lang::get("SCRIPTS"), 130); - Gui::DrawStringCentered(-80, mainButtons[2].y+12, 0.6f, Config::TxtColor, Lang::get("SETTINGS"), 130); - Gui::DrawStringCentered(80, mainButtons[3].y+12, 0.6f, Config::TxtColor, "FTP", 130); + GFX::DrawButton(mainButtons[0].x, mainButtons[0].y, "UniStore"); + GFX::DrawButton(mainButtons[1].x, mainButtons[1].y, Lang::get("SCRIPTS")); + GFX::DrawButton(mainButtons[2].x, mainButtons[2].y, Lang::get("SETTINGS")); + GFX::DrawButton(mainButtons[3].x, mainButtons[3].y, "FTP"); + // Selector. + Animation::Button(mainButtons[Selection].x, mainButtons[Selection].y, .060); // Draw UniStore Icon. ;P - GFX::DrawSprite(sprites_uniStore_idx, 10, 65); + //GFX::DrawSprite(sprites_uniStore_idx, 10, 65); if (fadealpha > 0) Gui::Draw_Rect(0, 0, 320, 240, C2D_Color32(0, 0, 0, fadealpha)); // Fade in out effect } @@ -128,10 +109,4 @@ void MainMenu::Logic(u32 hDown, u32 hHeld, touchPosition touch) { Gui::setScreen(std::make_unique()); } } - - /* That was a test. - if (hDown & KEY_X) { - TextColor = Config::TxtColor; - ScriptHelper::downloadRelease("Universal-Team/extras", "Universal-Updater.3dsx", "/3ds/Universal-Updater.3dsx", true, true, "Downloading Universal-Updater..."); - }*/ } \ No newline at end of file diff --git a/source/screens/scriptlist.cpp b/source/screens/scriptlist.cpp index 82c1b7f..8cc307f 100644 --- a/source/screens/scriptlist.cpp +++ b/source/screens/scriptlist.cpp @@ -164,17 +164,12 @@ void ScriptList::DrawSubMenu(void) const { GFX::DrawBottom(); GFX::DrawArrow(0, 218, 0, 1); - for (int i = 0; i < 4; i++) { - Gui::Draw_Rect(subPos[i].x, subPos[i].y, subPos[i].w, subPos[i].h, Config::UnselectedColor); - if (Selection == i) { - Gui::drawAnimatedSelector(subPos[i].x, subPos[i].y, subPos[i].w, subPos[i].h, .060, TRANSPARENT, Config::SelectedColor); - } - } - - Gui::DrawStringCentered(-80, subPos[0].y+12, 0.6f, Config::TxtColor, Lang::get("SCRIPTLIST"), 130); - Gui::DrawStringCentered(80, subPos[1].y+12, 0.6f, Config::TxtColor, Lang::get("GET_SCRIPTS"), 130); - Gui::DrawStringCentered(-80, subPos[2].y+12, 0.6f, Config::TxtColor, Lang::get("SCRIPTCREATOR"), 130); - Gui::DrawStringCentered(80, subPos[3].y+12, 0.6f, Config::TxtColor, Lang::get("CHANGE_SCRIPTPATH"), 130); + GFX::DrawButton(subPos[0].x, subPos[0].y, Lang::get("SCRIPTLIST")); + GFX::DrawButton(subPos[1].x, subPos[1].y, Lang::get("GET_SCRIPTS")); + GFX::DrawButton(subPos[2].x, subPos[2].y, Lang::get("SCRIPTCREATOR")); + GFX::DrawButton(subPos[3].x, subPos[3].y, Lang::get("CHANGE_SCRIPTPATH")); + // Selector. + Animation::Button(subPos[Selection].x, subPos[Selection].y, .060); } // Load the description. @@ -996,19 +991,6 @@ Result ScriptList::runFunctions(nlohmann::json &json) { } else if (type == "saveConfig") { Config::save(); - } else if (type == "deleteTitle") { - std::string TitleID = ""; - std::string message = ""; - bool isNAND = false, missing = false; - if(json.at(choice).at(i).contains("TitleID")) TitleID = json.at(choice).at(i).at("TitleID"); - else missing = true; - if (json.at(choice).at(i).contains("NAND") && json.at(choice).at(i).at("NAND").is_boolean()) isNAND = json.at(choice).at(i).at("NAND"); - else missing = true; - if(json.at(choice).at(i).contains("message")) message = json.at(choice).at(i).at("message"); - else missing = true; - if(!missing) ScriptHelper::deleteTitle(TitleID, isNAND, message); - else ret = SYNTAX_ERROR; - } else if (type == "bootTitle") { std::string TitleID = ""; std::string message = ""; @@ -1021,10 +1003,12 @@ Result ScriptList::runFunctions(nlohmann::json &json) { else missing = true; if(!missing) ScriptHelper::bootTitle(TitleID, isNAND, message); else ret = SYNTAX_ERROR; + } else if (type == "promptMessage") { std::string Message = ""; if(json.at(choice).at(i).contains("message")) Message = json.at(choice).at(i).at("message"); ret = ScriptHelper::prompt(Message); + } else if (type == "copy") { std::string Message = "", source = "", destination = ""; bool missing = false; diff --git a/source/screens/settings.cpp b/source/screens/settings.cpp index b110059..2fd9672 100644 --- a/source/screens/settings.cpp +++ b/source/screens/settings.cpp @@ -61,16 +61,11 @@ void Settings::DrawSubMenu(void) const { GFX::DrawArrow(0, 218, 0, 1); GFX::DrawArrow(318, 240, 180.0, 1); - for (int i = 0; i < 3; i++) { - Gui::Draw_Rect(mainButtons[i].x, mainButtons[i].y, mainButtons[i].w, mainButtons[i].h, Config::UnselectedColor); - if (Selection == i) { - Gui::drawAnimatedSelector(mainButtons[i].x, mainButtons[i].y, mainButtons[i].w, mainButtons[i].h, .060, TRANSPARENT, Config::SelectedColor); - } - } - - Gui::DrawStringCentered(0, mainButtons[0].y+10, 0.6f, Config::TxtColor, Lang::get("LANGUAGE"), 130); - Gui::DrawStringCentered(0, mainButtons[1].y+10, 0.6f, Config::TxtColor, Lang::get("COLORS"), 130); - Gui::DrawStringCentered(0, mainButtons[2].y+10, 0.6f, Config::TxtColor, Lang::get("CREDITS"), 130); + GFX::DrawButton(mainButtons[0].x, mainButtons[0].y, Lang::get("LANGUAGE")); + GFX::DrawButton(mainButtons[1].x, mainButtons[1].y, Lang::get("COLORS")); + GFX::DrawButton(mainButtons[2].x, mainButtons[2].y, Lang::get("CREDITS")); + // Selector. + Animation::Button(mainButtons[Selection].x, mainButtons[Selection].y, .060); } void Settings::DrawLanguageSelection(void) const { @@ -103,7 +98,24 @@ void Settings::DrawLanguageSelection(void) const { Gui::DrawString(langBlocks[9].x+25, langBlocks[9].y, 0.7f, Config::TxtColor, "日本語", 320); } +const std::vector colorList = { + "BAR_COLOR", + "TOP_BG_COLOR", + "BOTTOM_BG_COLOR", + "TEXT_COLOR", + "SELECTED_COLOR", + "UNSELECTED_COLOR", + "PROGRESSBAR_COLOR", + "NOT_FOUND_COLOR", + "OUTDATED_COLOR", + "UPTODATE_COLOR", + "FUTURE_COLOR", + "BUTTON_COLOR" +}; + + void Settings::DrawColorChanging(void) const { + std::string line1; GFX::DrawTop(); if (Config::UseBars == true) { Gui::DrawStringCentered(0, 0, 0.7f, Config::TxtColor, "Universal-Updater", 400); @@ -111,104 +123,99 @@ void Settings::DrawColorChanging(void) const { Gui::DrawStringCentered(0, 2, 0.7f, Config::TxtColor, "Universal-Updater", 400); } - if (colorMode == 3) { - Gui::Draw_Rect(0, 40, 400, 45, Config::SelectedColor); - Gui::DrawStringCentered(0, 45, 0.7f, Config::TxtColor, Lang::get("TEXT_COLOR"), 320); - } else if (colorMode == 4) { - Gui::Draw_Rect(0, 40, 400, 45, Config::SelectedColor); - Gui::DrawStringCentered(0, 45, 0.7f, Config::TxtColor, Lang::get("SELECTED_COLOR"), 320); - } else if (colorMode == 5) { - Gui::Draw_Rect(0, 40, 400, 45, Config::UnselectedColor); - Gui::DrawStringCentered(0, 45, 0.7f, Config::TxtColor, Lang::get("UNSELECTED_COLOR"), 320); - } else if (colorMode == 6) { - Gui::Draw_Rect(31, 121, (int)(((float)100/(float)100) * 338.0f), 28, Config::progressbarColor); - } else if (colorMode == 7) { - Gui::Draw_Rect(31, 121, (int)(((float)100/(float)100) * 338.0f), 28, Config::notFound); - } else if (colorMode == 8) { - Gui::Draw_Rect(31, 121, (int)(((float)100/(float)100) * 338.0f), 28, Config::outdated); - } else if (colorMode == 9) { - Gui::Draw_Rect(31, 121, (int)(((float)100/(float)100) * 338.0f), 28, Config::uptodate); - } else if (colorMode == 10) { - Gui::Draw_Rect(31, 121, (int)(((float)100/(float)100) * 338.0f), 28, Config::future); + if (!dropDownMenu) { + if (colorMode == 3) { + Gui::Draw_Rect(0, 40, 400, 45, Config::SelectedColor); + Gui::DrawStringCentered(0, 45, 0.7f, Config::TxtColor, Lang::get("TEXT_COLOR"), 320); + } else if (colorMode == 4) { + Gui::Draw_Rect(0, 40, 400, 45, Config::SelectedColor); + Gui::DrawStringCentered(0, 45, 0.7f, Config::TxtColor, Lang::get("SELECTED_COLOR"), 320); + } else if (colorMode == 5) { + Gui::Draw_Rect(0, 40, 400, 45, Config::UnselectedColor); + Gui::DrawStringCentered(0, 45, 0.7f, Config::TxtColor, Lang::get("UNSELECTED_COLOR"), 320); + } else if (colorMode == 6) { + Gui::Draw_Rect(31, 121, (int)(((float)100/(float)100) * 338.0f), 28, Config::progressbarColor); + } else if (colorMode == 7) { + Gui::Draw_Rect(31, 121, (int)(((float)100/(float)100) * 338.0f), 28, Config::notFound); + } else if (colorMode == 8) { + Gui::Draw_Rect(31, 121, (int)(((float)100/(float)100) * 338.0f), 28, Config::outdated); + } else if (colorMode == 9) { + Gui::Draw_Rect(31, 121, (int)(((float)100/(float)100) * 338.0f), 28, Config::uptodate); + } else if (colorMode == 10) { + Gui::Draw_Rect(31, 121, (int)(((float)100/(float)100) * 338.0f), 28, Config::future); + } else if (colorMode == 11) { + GFX::DrawButton(100, 100, ""); + } + Gui::DrawStringCentered(0, 215, 0.7f, WHITE, Lang::get(colorList[colorMode]), 320); } GFX::DrawBottom(); - GFX::DrawArrow(0, 218, 0, 1); + if (!dropDownMenu) { + GFX::DrawArrow(0, 218, 0, 1); + GFX::DrawSpriteBlend(sprites_dropdown_idx, arrowPos[5].x, arrowPos[5].y); + } - GFX::DrawArrow(0, 0, 0, 1); - GFX::DrawArrow(318, 22, 180.0, 1); - - for (int i = 0; i < 11; i++) { - if (colorMode == i) { - Gui::drawAnimatedSelector(24 + i * 25, 2, 16, 16, .060, TRANSPARENT, C2D_Color32(140, 140, 140, 255)); + if (dropDownMenu) { + for(int i=0;i 24 + i * 25 && touch.px < 24 + i * 25+16 && touch.py > 2 && touch.py < 2+16) { - colorMode = i; + if (dropDownMenu) { + if (hDown & KEY_A) { + colorMode = colorSelection; + dropDownMenu = false; + } + + if (hDown & KEY_UP) { if (colorSelection > 0) colorSelection--; } + if (hDown & KEY_DOWN) { if (colorSelection < (int)colorList.size()-1) colorSelection++; } + } else { + + if ((hDown & KEY_SELECT) || (hDown & KEY_TOUCH && touching(touch, arrowPos[3]))) { + colorSelection = colorMode; + dropDownMenu = true; + } + + if ((hDown & KEY_B) || (hDown & KEY_TOUCH && touching(touch, arrowPos[2]))) { + mode = 0; + } + + if ((hDown & KEY_L || hDown & KEY_LEFT)) { + if(colorMode > 0) colorMode--; + } + + if ((hDown & KEY_R || hDown & KEY_RIGHT)) { + if(colorMode < 11) colorMode++; + } + + if (hDown & KEY_TOUCH) { + if (touching(touch, mainButtons[0])) { + int temp = Input::getUint(255, Lang::get("ENTER_RED_RGB")); + if(temp != -1) { + red = temp; + if (colorMode == 0) { + Config::Color1 = RGBA8(red, ColorHelper::getColorValue(Config::Color1, 1), ColorHelper::getColorValue(Config::Color1, 0), 255); + } else if (colorMode == 1) { + Config::Color2 = RGBA8(red, ColorHelper::getColorValue(Config::Color2, 1), ColorHelper::getColorValue(Config::Color2, 0), 255); + } else if (colorMode == 2) { + Config::Color3 = RGBA8(red, ColorHelper::getColorValue(Config::Color3, 1), ColorHelper::getColorValue(Config::Color3, 0), 255); + } else if (colorMode == 3) { + Config::TxtColor = RGBA8(red, ColorHelper::getColorValue(Config::TxtColor, 1), ColorHelper::getColorValue(Config::TxtColor, 0), 255); + } else if (colorMode == 4) { + Config::SelectedColor = RGBA8(red, ColorHelper::getColorValue(Config::SelectedColor, 1), ColorHelper::getColorValue(Config::SelectedColor, 0), 255); + } else if (colorMode == 5) { + Config::UnselectedColor = RGBA8(red, ColorHelper::getColorValue(Config::UnselectedColor, 1), ColorHelper::getColorValue(Config::UnselectedColor, 0), 255); + } else if (colorMode == 6) { + Config::progressbarColor = RGBA8(red, ColorHelper::getColorValue(Config::progressbarColor, 1), ColorHelper::getColorValue(Config::progressbarColor, 0), 255); + } else if (colorMode == 7) { + Config::notFound = RGBA8(red, ColorHelper::getColorValue(Config::notFound, 1), ColorHelper::getColorValue(Config::notFound, 0), 255); + } else if (colorMode == 8) { + Config::outdated = RGBA8(red, ColorHelper::getColorValue(Config::outdated, 1), ColorHelper::getColorValue(Config::outdated, 0), 255); + } else if (colorMode == 9) { + Config::uptodate = RGBA8(red, ColorHelper::getColorValue(Config::uptodate, 1), ColorHelper::getColorValue(Config::uptodate, 0), 255); + } else if (colorMode == 10) { + Config::future = RGBA8(red, ColorHelper::getColorValue(Config::future, 1), ColorHelper::getColorValue(Config::future, 0), 255); + } else if (colorMode == 11) { + Config::Button = RGBA8(red, ColorHelper::getColorValue(Config::Button, 1), ColorHelper::getColorValue(Config::Button, 0), 255); + } + changesMade = true; + } + } else if (touching(touch, mainButtons[1])) { + int temp = Input::getUint(255, Lang::get("ENTER_GREEN_RGB")); + if(temp != -1) { + green = temp; + if (colorMode == 0) { + Config::Color1 = RGBA8(ColorHelper::getColorValue(Config::Color1, 2), green, ColorHelper::getColorValue(Config::Color1, 0), 255); + } else if (colorMode == 1) { + Config::Color2 = RGBA8(ColorHelper::getColorValue(Config::Color2, 2), green, ColorHelper::getColorValue(Config::Color2, 0), 255); + } else if (colorMode == 2) { + Config::Color3 = RGBA8(ColorHelper::getColorValue(Config::Color3, 2), green, ColorHelper::getColorValue(Config::Color3, 0), 255); + } else if (colorMode == 3) { + Config::TxtColor = RGBA8(ColorHelper::getColorValue(Config::TxtColor, 2), green, ColorHelper::getColorValue(Config::TxtColor, 0), 255); + } else if (colorMode == 4) { + Config::SelectedColor = RGBA8(ColorHelper::getColorValue(Config::SelectedColor, 2), green, ColorHelper::getColorValue(Config::SelectedColor, 0), 255); + } else if (colorMode == 5) { + Config::UnselectedColor = RGBA8(ColorHelper::getColorValue(Config::UnselectedColor, 2), green, ColorHelper::getColorValue(Config::UnselectedColor, 0), 255); + } else if (colorMode == 6) { + Config::progressbarColor = RGBA8(ColorHelper::getColorValue(Config::progressbarColor, 2), green, ColorHelper::getColorValue(Config::progressbarColor, 0), 255); + } else if (colorMode == 7) { + Config::notFound = RGBA8(ColorHelper::getColorValue(Config::notFound, 2), green, ColorHelper::getColorValue(Config::notFound, 0), 255); + } else if (colorMode == 8) { + Config::outdated = RGBA8(ColorHelper::getColorValue(Config::outdated, 2), green, ColorHelper::getColorValue(Config::outdated, 0), 255); + } else if (colorMode == 9) { + Config::uptodate = RGBA8(ColorHelper::getColorValue(Config::uptodate, 2), green, ColorHelper::getColorValue(Config::uptodate, 0), 255); + } else if (colorMode == 10) { + Config::future = RGBA8(ColorHelper::getColorValue(Config::future, 2), green, ColorHelper::getColorValue(Config::future, 0), 255); + } else if (colorMode == 11) { + Config::Button = RGBA8(ColorHelper::getColorValue(Config::Button, 2), green, ColorHelper::getColorValue(Config::Button, 0), 255); + } + changesMade = true; + } + } else if (touching(touch, mainButtons[2])) { + int temp = Input::getUint(255, Lang::get("ENTER_BLUE_RGB")); + if(temp != -1) { + blue = temp; + if (colorMode == 0) { + Config::Color1 = RGBA8(ColorHelper::getColorValue(Config::Color1, 2), ColorHelper::getColorValue(Config::Color1, 1), blue, 255); + } else if (colorMode == 1) { + Config::Color2 = RGBA8(ColorHelper::getColorValue(Config::Color2, 2), ColorHelper::getColorValue(Config::Color2, 1), blue, 255); + } else if (colorMode == 2) { + Config::Color3 = RGBA8(ColorHelper::getColorValue(Config::Color3, 2), ColorHelper::getColorValue(Config::Color3, 1), blue, 255); + } else if (colorMode == 3) { + Config::TxtColor = RGBA8(ColorHelper::getColorValue(Config::TxtColor, 2), ColorHelper::getColorValue(Config::TxtColor, 1), blue, 255); + } else if (colorMode == 4) { + Config::SelectedColor = RGBA8(ColorHelper::getColorValue(Config::SelectedColor, 2), ColorHelper::getColorValue(Config::SelectedColor, 1), blue, 255); + } else if (colorMode == 5) { + Config::UnselectedColor = RGBA8(ColorHelper::getColorValue(Config::UnselectedColor, 2), ColorHelper::getColorValue(Config::UnselectedColor, 1), blue, 255); + } else if (colorMode == 6) { + Config::progressbarColor = RGBA8(ColorHelper::getColorValue(Config::progressbarColor, 2), ColorHelper::getColorValue(Config::progressbarColor, 1), blue, 255); + } else if (colorMode == 7) { + Config::notFound = RGBA8(ColorHelper::getColorValue(Config::notFound, 2), ColorHelper::getColorValue(Config::notFound, 1), blue, 255); + } else if (colorMode == 8) { + Config::outdated = RGBA8(ColorHelper::getColorValue(Config::outdated, 2), ColorHelper::getColorValue(Config::outdated, 1), blue, 255); + } else if (colorMode == 9) { + Config::uptodate = RGBA8(ColorHelper::getColorValue(Config::uptodate, 2), ColorHelper::getColorValue(Config::uptodate, 1), blue, 255); + } else if (colorMode == 10) { + Config::future = RGBA8(ColorHelper::getColorValue(Config::future, 2), ColorHelper::getColorValue(Config::future, 1), blue, 255); + } else if (colorMode == 11) { + Config::Button = RGBA8(ColorHelper::getColorValue(Config::Button, 2), ColorHelper::getColorValue(Config::Button, 1), blue, 255); + } + changesMade = true; + } } } } - - - if ((hDown & KEY_B) || (hDown & KEY_TOUCH && touching(touch, arrowPos[2]))) { - mode = 0; - } - - if ((hDown & KEY_L || hDown & KEY_LEFT) || (hDown & KEY_TOUCH && touching(touch, arrowPos[0]))) { - if(colorMode > 0) colorMode--; - } - - if ((hDown & KEY_R || hDown & KEY_RIGHT) || (hDown & KEY_TOUCH && touching(touch, arrowPos[1]))) { - if(colorMode < 10) colorMode++; - } - - if (hDown & KEY_TOUCH) { - if (touching(touch, buttons[0])) { - int temp = Input::getUint(255, Lang::get("ENTER_RED_RGB")); - if(temp != -1) { - red = temp; - if (colorMode == 0) { - Config::Color1 = RGBA8(red, ColorHelper::getColorValue(Config::Color1, 1), ColorHelper::getColorValue(Config::Color1, 0), 255); - } else if (colorMode == 1) { - Config::Color2 = RGBA8(red, ColorHelper::getColorValue(Config::Color2, 1), ColorHelper::getColorValue(Config::Color2, 0), 255); - } else if (colorMode == 2) { - Config::Color3 = RGBA8(red, ColorHelper::getColorValue(Config::Color3, 1), ColorHelper::getColorValue(Config::Color3, 0), 255); - } else if (colorMode == 3) { - Config::TxtColor = RGBA8(red, ColorHelper::getColorValue(Config::TxtColor, 1), ColorHelper::getColorValue(Config::TxtColor, 0), 255); - } else if (colorMode == 4) { - Config::SelectedColor = RGBA8(red, ColorHelper::getColorValue(Config::SelectedColor, 1), ColorHelper::getColorValue(Config::SelectedColor, 0), 255); - } else if (colorMode == 5) { - Config::UnselectedColor = RGBA8(red, ColorHelper::getColorValue(Config::UnselectedColor, 1), ColorHelper::getColorValue(Config::UnselectedColor, 0), 255); - } else if (colorMode == 6) { - Config::progressbarColor = RGBA8(red, ColorHelper::getColorValue(Config::progressbarColor, 1), ColorHelper::getColorValue(Config::progressbarColor, 0), 255); - } else if (colorMode == 7) { - Config::notFound = RGBA8(red, ColorHelper::getColorValue(Config::notFound, 1), ColorHelper::getColorValue(Config::notFound, 0), 255); - } else if (colorMode == 8) { - Config::outdated = RGBA8(red, ColorHelper::getColorValue(Config::outdated, 1), ColorHelper::getColorValue(Config::outdated, 0), 255); - } else if (colorMode == 9) { - Config::uptodate = RGBA8(red, ColorHelper::getColorValue(Config::uptodate, 1), ColorHelper::getColorValue(Config::uptodate, 0), 255); - } else if (colorMode == 10) { - Config::future = RGBA8(red, ColorHelper::getColorValue(Config::future, 1), ColorHelper::getColorValue(Config::future, 0), 255); - } - changesMade = true; - } - - - } else if (touching(touch, buttons[1])) { - int temp = Input::getUint(255, Lang::get("ENTER_GREEN_RGB")); - if(temp != -1) { - green = temp; - if (colorMode == 0) { - Config::Color1 = RGBA8(ColorHelper::getColorValue(Config::Color1, 2), green, ColorHelper::getColorValue(Config::Color1, 0), 255); - } else if (colorMode == 1) { - Config::Color2 = RGBA8(ColorHelper::getColorValue(Config::Color2, 2), green, ColorHelper::getColorValue(Config::Color2, 0), 255); - } else if (colorMode == 2) { - Config::Color3 = RGBA8(ColorHelper::getColorValue(Config::Color3, 2), green, ColorHelper::getColorValue(Config::Color3, 0), 255); - } else if (colorMode == 3) { - Config::TxtColor = RGBA8(ColorHelper::getColorValue(Config::TxtColor, 2), green, ColorHelper::getColorValue(Config::TxtColor, 0), 255); - } else if (colorMode == 4) { - Config::SelectedColor = RGBA8(ColorHelper::getColorValue(Config::SelectedColor, 2), green, ColorHelper::getColorValue(Config::SelectedColor, 0), 255); - } else if (colorMode == 5) { - Config::UnselectedColor = RGBA8(ColorHelper::getColorValue(Config::UnselectedColor, 2), green, ColorHelper::getColorValue(Config::UnselectedColor, 0), 255); - } else if (colorMode == 6) { - Config::progressbarColor = RGBA8(ColorHelper::getColorValue(Config::progressbarColor, 2), green, ColorHelper::getColorValue(Config::progressbarColor, 0), 255); - } else if (colorMode == 7) { - Config::notFound = RGBA8(ColorHelper::getColorValue(Config::notFound, 2), green, ColorHelper::getColorValue(Config::notFound, 0), 255); - } else if (colorMode == 8) { - Config::outdated = RGBA8(ColorHelper::getColorValue(Config::outdated, 2), green, ColorHelper::getColorValue(Config::outdated, 0), 255); - } else if (colorMode == 9) { - Config::uptodate = RGBA8(ColorHelper::getColorValue(Config::uptodate, 2), green, ColorHelper::getColorValue(Config::uptodate, 0), 255); - } else if (colorMode == 10) { - Config::future = RGBA8(ColorHelper::getColorValue(Config::future, 2), green, ColorHelper::getColorValue(Config::future, 0), 255); - } - changesMade = true; - } - } else if (touching(touch, buttons[2])) { - int temp = Input::getUint(255, Lang::get("ENTER_BLUE_RGB")); - if(temp != -1) { - blue = temp; - if (colorMode == 0) { - Config::Color1 = RGBA8(ColorHelper::getColorValue(Config::Color1, 2), ColorHelper::getColorValue(Config::Color1, 1), blue, 255); - } else if (colorMode == 1) { - Config::Color2 = RGBA8(ColorHelper::getColorValue(Config::Color2, 2), ColorHelper::getColorValue(Config::Color2, 1), blue, 255); - } else if (colorMode == 2) { - Config::Color3 = RGBA8(ColorHelper::getColorValue(Config::Color3, 2), ColorHelper::getColorValue(Config::Color3, 1), blue, 255); - } else if (colorMode == 3) { - Config::TxtColor = RGBA8(ColorHelper::getColorValue(Config::TxtColor, 2), ColorHelper::getColorValue(Config::TxtColor, 1), blue, 255); - } else if (colorMode == 4) { - Config::SelectedColor = RGBA8(ColorHelper::getColorValue(Config::SelectedColor, 2), ColorHelper::getColorValue(Config::SelectedColor, 1), blue, 255); - } else if (colorMode == 5) { - Config::UnselectedColor = RGBA8(ColorHelper::getColorValue(Config::UnselectedColor, 2), ColorHelper::getColorValue(Config::UnselectedColor, 1), blue, 255); - } else if (colorMode == 6) { - Config::progressbarColor = RGBA8(ColorHelper::getColorValue(Config::progressbarColor, 2), ColorHelper::getColorValue(Config::progressbarColor, 1), blue, 255); - } else if (colorMode == 7) { - Config::notFound = RGBA8(ColorHelper::getColorValue(Config::notFound, 2), ColorHelper::getColorValue(Config::notFound, 1), blue, 255); - } else if (colorMode == 8) { - Config::outdated = RGBA8(ColorHelper::getColorValue(Config::outdated, 2), ColorHelper::getColorValue(Config::outdated, 1), blue, 255); - } else if (colorMode == 9) { - Config::uptodate = RGBA8(ColorHelper::getColorValue(Config::uptodate, 2), ColorHelper::getColorValue(Config::uptodate, 1), blue, 255); - } else if (colorMode == 10) { - Config::future = RGBA8(ColorHelper::getColorValue(Config::future, 2), ColorHelper::getColorValue(Config::future, 1), blue, 255); - } - changesMade = true; - } - } + if (colorSelection < screenPos) { + screenPos = colorSelection; + } else if (colorSelection > screenPos + ENTRIES_PER_SCREEN - 1) { + screenPos = colorSelection - ENTRIES_PER_SCREEN + 1; } } diff --git a/source/screens/unistore.cpp b/source/screens/unistore.cpp index 558d8ab..502446f 100644 --- a/source/screens/unistore.cpp +++ b/source/screens/unistore.cpp @@ -245,16 +245,11 @@ void UniStore::DrawSubMenu(void) const { GFX::DrawBottom(); GFX::DrawArrow(0, 218, 0, 1); - for (int i = 0; i < 3; i++) { - Gui::Draw_Rect(subPos[i].x, subPos[i].y, subPos[i].w, subPos[i].h, Config::UnselectedColor); - if (Selection == i) { - Gui::drawAnimatedSelector(subPos[i].x, subPos[i].y, subPos[i].w, subPos[i].h, .060, TRANSPARENT, Config::SelectedColor); - } - } - - Gui::DrawStringCentered(0, subPos[0].y+10, 0.6f, Config::TxtColor, Lang::get("STORE_LIST"), 130); - Gui::DrawStringCentered(0, subPos[1].y+10, 0.6f, Config::TxtColor, Lang::get("STORE_SEARCH"), 130); - Gui::DrawStringCentered(0, subPos[2].y+10, 0.6f, Config::TxtColor, Lang::get("CHANGE_STOREPATH"), 130); + GFX::DrawButton(subPos[0].x, subPos[0].y,Lang::get("STORE_LIST")); + GFX::DrawButton(subPos[1].x, subPos[1].y, Lang::get("STORE_SEARCH")); + GFX::DrawButton(subPos[2].x, subPos[2].y, Lang::get("CHANGE_STOREPATH")); + // Selector. + Animation::Button(subPos[Selection].x, subPos[Selection].y, .060); } @@ -541,12 +536,12 @@ void UniStore::SubMenuLogic(u32 hDown, u32 hHeld, touchPosition touch) { } break; case 1: - if (checkWifiStatus()) { +// if (checkWifiStatus()) { Selection = 0; mode = 3; - } else { - notConnectedMsg(); - } +// } else { +// notConnectedMsg(); +// } break; case 2: std::string tempStore = selectFilePath(Lang::get("SELECT_STORE_PATH"), Config::StorePath, {}); @@ -1020,16 +1015,12 @@ void UniStore::DrawSearch(void) const { GFX::DrawBottom(); GFX::DrawArrow(0, 218, 0, 1); - for (int i = 0; i < 3; i++) { - Gui::Draw_Rect(URLBtn[i].x, URLBtn[i].y, URLBtn[i].w, URLBtn[i].h, Config::UnselectedColor); - if (Selection == i) { - Gui::drawAnimatedSelector(URLBtn[i].x, URLBtn[i].y, URLBtn[i].w, URLBtn[i].h, .060, TRANSPARENT, Config::SelectedColor); - } - } - - Gui::DrawStringCentered(-80, URLBtn[0].y+12, 0.6f, Config::TxtColor, Lang::get("FULL_URL"), 130); - Gui::DrawStringCentered(80, URLBtn[1].y+12, 0.6f, Config::TxtColor, Lang::get("GITHUB"), 130); - Gui::DrawStringCentered(-80, URLBtn[2].y+12, 0.6f, Config::TxtColor, "TinyDB", 130); + GFX::DrawButton(URLBtn[0].x, URLBtn[0].y,Lang::get("FULL_URL")); + GFX::DrawButton(URLBtn[1].x, URLBtn[1].y, Lang::get("GITHUB")); + GFX::DrawButton(URLBtn[2].x, URLBtn[2].y, "TinyDB"); + GFX::DrawButton(URLBtn[3].x, URLBtn[3].y, "QR Code"); + // Selector. + Animation::Button(URLBtn[Selection].x, URLBtn[Selection].y, .060); } void UniStore::SearchLogic(u32 hDown, u32 hHeld, touchPosition touch) { @@ -1332,19 +1323,6 @@ Result UniStore::execute() { } else if (type == "notImplemented") { notImplemented(); - } else if (type == "deleteTitle") { - std::string TitleID = ""; - std::string message = ""; - bool isNAND = false, missing = false; - if(appStoreJson.at("storeContent").at(Selection).at("script").at(i).contains("TitleID")) TitleID = appStoreJson.at("storeContent").at(Selection).at("script").at(i).at("TitleID"); - else missing = true; - if (appStoreJson.at("storeContent").at(Selection).at("script").at(i).contains("NAND") && appStoreJson.at("storeContent").at(Selection).at("script").at(i).at("NAND").is_boolean()) isNAND = appStoreJson.at("storeContent").at(Selection).at("script").at(i).at("NAND"); - else missing = true; - if(appStoreJson.at("storeContent").at(Selection).at("script").at(i).contains("message")) message = appStoreJson.at("storeContent").at(Selection).at("script").at(i).at("message"); - else missing = true; - if(!missing) ScriptHelper::deleteTitle(TitleID, isNAND, message); - else ret = SYNTAX_ERROR; - } else if (type == "bootTitle") { std::string TitleID = ""; std::string message = ""; @@ -1357,6 +1335,7 @@ Result UniStore::execute() { else missing = true; if(!missing) ScriptHelper::bootTitle(TitleID, isNAND, message); else ret = SYNTAX_ERROR; + } else if (type == "promptMessage") { std::string Message = ""; if(appStoreJson.at("storeContent").at(Selection).at("script").at(i).contains("message")) Message = appStoreJson.at("storeContent").at(Selection).at("script").at(i).at("message"); diff --git a/source/utils/config.cpp b/source/utils/config.cpp index 3df3d81..35d8515 100644 --- a/source/utils/config.cpp +++ b/source/utils/config.cpp @@ -54,6 +54,7 @@ int Config::outdated; int Config::uptodate; int Config::notFound; int Config::future; +int Config::Button; nlohmann::json configJson; void Config::load() { @@ -186,6 +187,13 @@ void Config::load() { } else { future = getInt("FUTURE"); } + + if(!configJson.contains("BUTTON")) { + Button = C2D_Color32(0, 0, 50, 255); + } else { + Button = getInt("BUTTON"); + } + fclose(file); } else { Color1 = BarColor; @@ -209,6 +217,7 @@ void Config::load() { uptodate = C2D_Color32(0xa5, 0xdd, 0x81, 255); notFound = C2D_Color32(255, 128, 0, 255); future = C2D_Color32(255, 255, 0, 255); + Button = C2D_Color32(0, 0, 50, 255); } } @@ -234,6 +243,7 @@ void Config::save() { setInt("UPTODATE", uptodate); setInt("NOTFOUND", notFound); setInt("FUTURE", future); + setInt("BUTTON", Button); FILE* file = fopen("sdmc:/3ds/Universal-Updater/Settings.json", "w"); if(file) fwrite(configJson.dump(1, '\t').c_str(), 1, configJson.dump(1, '\t').size(), file); @@ -265,6 +275,7 @@ void Config::initializeNewConfig() { setInt("UPTODATE", C2D_Color32(0xa5, 0xdd, 0x81, 255)); setInt("NOTFOUND", C2D_Color32(255, 128, 0, 255)); setInt("FUTURE", C2D_Color32(255, 255, 0, 255)); + setInt("BUTTON", C2D_Color32(0, 0, 50, 255)); if(file) fwrite(configJson.dump(1, '\t').c_str(), 1, configJson.dump(1, '\t').size(), file); fclose(file); diff --git a/source/utils/scriptHelper.cpp b/source/utils/scriptHelper.cpp index ae455fa..c780e00 100644 --- a/source/utils/scriptHelper.cpp +++ b/source/utils/scriptHelper.cpp @@ -159,26 +159,6 @@ bool ScriptHelper::checkIfValid(std::string scriptFile, int mode) { return true; } -void ScriptHelper::deleteTitle(const std::string TitleID, bool isNAND, std::string message) { - if (Config::GodMode) { - std::string MSG = Lang::get("DELETE_TITLE") + "\n\n"; - if (isNAND) MSG += Lang::get("MEDIATYPE_NAND") + "\n" + TitleID; - else MSG += Lang::get("MEDIATYPE_SD") + "\n" + TitleID; - u64 ID = std::stoull(TitleID, 0, 16); - if (Msg::promptMsg(MSG)) { - if (isNAND == true) { - Msg::DisplayMsg(message); - deletePrevious(ID, MEDIATYPE_NAND); - } else { - Msg::DisplayMsg(message); - deletePrevious(ID, MEDIATYPE_SD); - } - } - } else { - Msg::DisplayWarnMsg(Lang::get("FUNCTION_NOT_ALLOWED")); - } -} - void ScriptHelper::bootTitle(const std::string TitleID, bool isNAND, std::string message) { std::string MSG = Lang::get("BOOT_TITLE") + "\n\n"; if (isNAND) MSG += Lang::get("MEDIATYPE_NAND") + "\n" + TitleID;