mirror of
https://github.com/DarkStore-3DS/DarkStore.git
synced 2026-07-03 00:39:02 +00:00
WIP: Credits & Language Screen Rewrite.
This commit is contained in:
+30
-6
@@ -2,6 +2,7 @@
|
||||
#include "lang.hpp"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
nlohmann::json appJson;
|
||||
|
||||
@@ -12,15 +13,38 @@ std::string Lang::get(const std::string &key) {
|
||||
return appJson.at(key).get_ref<const std::string&>();
|
||||
}
|
||||
|
||||
std::string langs[] = {"br", "de", "en", "es", "fr", "it", "lt", "pt", "ru", "jp"};
|
||||
std::string langs[] = {"br", "da", "de", "en", "es", "fr", "it", "lt", "pt", "ru", "jp"};
|
||||
|
||||
void Lang::load(int lang) {
|
||||
void Lang::load(const std::string lang) {
|
||||
FILE* values;
|
||||
if (Config::LangPath == 1) {
|
||||
values = fopen(("sdmc:/3ds/Universal-Updater/app.json"), "rt");
|
||||
// Check if exist.
|
||||
if(access("sdmc:/3ds/Universal-Updater/app.json", F_OK) == 0 ) {
|
||||
values = fopen(("sdmc:/3ds/Universal-Updater/app.json"), "rt");
|
||||
appJson = nlohmann::json::parse(values, nullptr, false);
|
||||
fclose(values);
|
||||
return;
|
||||
|
||||
} else {
|
||||
values = fopen(("romfs:/lang/en/app.json"), "rt");
|
||||
appJson = nlohmann::json::parse(values, nullptr, false);
|
||||
fclose(values);
|
||||
return;
|
||||
}
|
||||
|
||||
} else {
|
||||
values = fopen(("romfs:/lang/"+langs[lang]+"/app.json").c_str(), "rt");
|
||||
// Check if exist.
|
||||
if(access(("romfs:/lang/" + lang + "/app.json").c_str(), F_OK) == 0 ) {
|
||||
values = fopen(std::string(("romfs:/lang/" + lang + "/app.json")).c_str(), "rt");
|
||||
appJson = nlohmann::json::parse(values, nullptr, false);
|
||||
fclose(values);
|
||||
return;
|
||||
|
||||
} else {
|
||||
values = fopen(("romfs:/lang/en/app.json"), "rt");
|
||||
appJson = nlohmann::json::parse(values, nullptr, false);
|
||||
fclose(values);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if(values) appJson = nlohmann::json::parse(values, nullptr, false);
|
||||
fclose(values);
|
||||
}
|
||||
+110
-31
@@ -27,12 +27,55 @@
|
||||
#include "credits.hpp"
|
||||
|
||||
extern bool touching(touchPosition touch, Structs::ButtonPos button);
|
||||
// Language Page 1.
|
||||
const std::vector<std::string> Translators = {
|
||||
"_mapple²",
|
||||
"AlbertCoolGuy",
|
||||
"antoine62",
|
||||
"Chips",
|
||||
"cooolgamer",
|
||||
"David Pires",
|
||||
"FlameKat53",
|
||||
"lemonnade0",
|
||||
"Pk11",
|
||||
"Roby Spia",
|
||||
"StackZ",
|
||||
"YoSoy"
|
||||
};
|
||||
const std::vector<std::string> Languages = {
|
||||
"Русский",
|
||||
"Dansk",
|
||||
"Français",
|
||||
"Português",
|
||||
"Français",
|
||||
"Português",
|
||||
"Bruh",
|
||||
"Lietuvių",
|
||||
"日本語",
|
||||
"Italiano",
|
||||
"deutsch, English",
|
||||
"Español"
|
||||
};
|
||||
// Universal-Team Page 2.
|
||||
const std::vector<std::string> UniversalTeam = {
|
||||
"DeadPhoenix",
|
||||
"FlameKat53",
|
||||
"Pk11",
|
||||
"RocketRobz",
|
||||
"StackZ",
|
||||
"TotallyNotGuy"
|
||||
};
|
||||
// Script Page 3.
|
||||
const std::vector<std::string> ScriptCreators = {
|
||||
"DualBladedKirito", "Glazed_Belmont", "Pk11", "StackZ", "The Conceptionist", "YoSoy"
|
||||
};
|
||||
const std::vector<std::string> ScriptAmount = {"1", "1", "1", "5", "10", "1 | 2"};
|
||||
|
||||
void Credits::Draw(void) const {
|
||||
std::string title = "Universal-Updater - ";
|
||||
title += Lang::get("CREDITS");
|
||||
GFX::DrawTop();
|
||||
if (creditsPage != 4) {
|
||||
if (creditsPage != 3) {
|
||||
if (Config::UseBars == true) {
|
||||
Gui::DrawStringCentered(0, 0, 0.7f, Config::TxtColor, title, 400);
|
||||
} else {
|
||||
@@ -49,53 +92,89 @@ void Credits::Draw(void) const {
|
||||
Gui::Draw_Rect(0, 0, 400, 240, C2D_Color32(0, 0, 0, 190));
|
||||
GFX::DrawSprite(sprites_discord_idx, 115, 35);
|
||||
}
|
||||
DrawBottom();
|
||||
}
|
||||
|
||||
void Credits::DrawBottom(void) const {
|
||||
std::string line1;
|
||||
std::string line2;
|
||||
|
||||
GFX::DrawBottom();
|
||||
|
||||
if (creditsPage != 4) {
|
||||
GFX::DrawArrow(0, 218, 0, 1);
|
||||
GFX::DrawArrow(318, 240, 180.0, 1);
|
||||
}
|
||||
|
||||
if (creditsPage == 1) {
|
||||
if (creditsPage == 0) {
|
||||
Gui::DrawStringCentered(0, -2, 0.7f, Config::TxtColor, Lang::get("TRANSLATORS"), 320);
|
||||
Gui::DrawString(5, 21, 0.6f, Config::TxtColor, "- _mapple²\n- antoine62\n- Chips\n- cooolgamer\n- David Pires\n- FlameKat53\n- lemonnade0\n- Pk11\n- Roby Spia\n- StackZ\n- YoSoy");
|
||||
Gui::DrawString(180, 21, 0.6f, Config::TxtColor, "Русский\nFrançais\nPortuguês\nFrançais\nPortuguês\nBruh\nLietuvių\n日本語\nItaliano\nDeutsch, English\nEspañol");
|
||||
} else if (creditsPage == 2) {
|
||||
for(int i=0;i<ENTRIES_PER_SCREEN && i<(int)Translators.size();i++) {
|
||||
Gui::Draw_Rect(0, 40+(i*57), 320, 45, Config::UnselectedColor);
|
||||
line1 = Translators[screenPos + i];
|
||||
line2 = Languages[screenPos + i];
|
||||
if (screenPos + i == Selection) {
|
||||
Gui::drawAnimatedSelector(0, 40+(i*57), 320, 45, .060, TRANSPARENT, Config::SelectedColor);
|
||||
}
|
||||
Gui::DrawStringCentered(0, 38+(i*57), 0.7f, Config::TxtColor, line1, 320);
|
||||
Gui::DrawStringCentered(0, 62+(i*57), 0.7f, Config::TxtColor, line2, 320);
|
||||
}
|
||||
} else if (creditsPage == 1) {
|
||||
Gui::DrawStringCentered(0, -2, 0.7f, Config::TxtColor, "Universal-Team", 320);
|
||||
Gui::DrawStringCentered(0, 35, 0.7f, Config::TxtColor, "DeadPhoenix");
|
||||
Gui::DrawStringCentered(0, 65, 0.7f, Config::TxtColor, "FlameKat53");
|
||||
Gui::DrawStringCentered(0, 95, 0.7f, Config::TxtColor, "Pk11");
|
||||
Gui::DrawStringCentered(0, 125, 0.7f, Config::TxtColor, "RocketRobz");
|
||||
Gui::DrawStringCentered(0, 155, 0.7f, Config::TxtColor, "StackZ");
|
||||
Gui::DrawStringCentered(0, 185, 0.7f, Config::TxtColor, "TotallyNotGuy");
|
||||
} else if (creditsPage == 3) {
|
||||
for(int i=0;i<ENTRIES_PER_SCREEN && i<(int)UniversalTeam.size();i++) {
|
||||
Gui::Draw_Rect(0, 40+(i*57), 320, 45, Config::UnselectedColor);
|
||||
line1 = UniversalTeam[screenPos + i];
|
||||
if (screenPos + i == Selection) {
|
||||
Gui::drawAnimatedSelector(0, 40+(i*57), 320, 45, .060, TRANSPARENT, Config::SelectedColor);
|
||||
}
|
||||
Gui::DrawStringCentered(0, 50+(i*57), 0.7f, WHITE, line1, 320);
|
||||
}
|
||||
} else if (creditsPage == 2) {
|
||||
Gui::DrawStringCentered(0, -2, 0.7f, Config::TxtColor, Lang::get("SCRIPTCREATORS"), 320);
|
||||
Gui::DrawString(5, 27, 0.55f, Config::TxtColor, "- DualBladedKirito\n\n- Glazed_Belmont\n\n- Pk11\n\n- StackZ\n\n- The Conceptionist\n\n- YoSoy");
|
||||
Gui::DrawString(180, 27, 0.55f, Config::TxtColor, "1\n\n1\n\n1\n\n5\n\n10\n\n1/2");
|
||||
} else if (creditsPage == 4) {
|
||||
Gui::Draw_Rect(0, 0, 320, 240, C2D_Color32(0, 0, 0, 190));
|
||||
for(int i=0;i<ENTRIES_PER_SCREEN && i<(int)ScriptCreators.size();i++) {
|
||||
Gui::Draw_Rect(0, 40+(i*57), 320, 45, Config::UnselectedColor);
|
||||
line1 = ScriptCreators[screenPos + i];
|
||||
line2 = ScriptAmount[screenPos + i];
|
||||
if (screenPos + i == Selection) {
|
||||
Gui::drawAnimatedSelector(0, 40+(i*57), 320, 45, .060, TRANSPARENT, Config::SelectedColor);
|
||||
}
|
||||
Gui::DrawStringCentered(0, 38+(i*57), 0.7f, Config::TxtColor, line1, 320);
|
||||
Gui::DrawStringCentered(0, 62+(i*57), 0.7f, Config::TxtColor, line2, 320);
|
||||
}
|
||||
} else {
|
||||
Gui::DrawStringCentered(0, -2, 0.55f, Config::TxtColor, Lang::get("LINK"), 320);
|
||||
GFX::DrawArrow(0, 218, 0, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Credits::Logic(u32 hDown, u32 hHeld, touchPosition touch) {
|
||||
if ((hDown & KEY_LEFT || hDown & KEY_L) || (hDown & KEY_TOUCH && touching(touch, arrowPos[0]))) {
|
||||
if (creditsPage == 1) {
|
||||
Gui::screenBack();
|
||||
return;
|
||||
} else if (creditsPage > 1) {
|
||||
// KEY_DOWN Logic. (SIZE)
|
||||
if (creditsPage == 0) {
|
||||
if (hDown & KEY_DOWN) { if (Selection < (int)Translators.size()-1) Selection++; }
|
||||
} else if (creditsPage == 1) {
|
||||
if (hDown & KEY_DOWN) { if (Selection < (int)UniversalTeam.size()-1) Selection++; }
|
||||
} else if (creditsPage == 2) {
|
||||
if (hDown & KEY_DOWN) { if (Selection < (int)ScriptCreators.size()-1) Selection++; }
|
||||
}
|
||||
|
||||
if (hDown & KEY_UP) { if (Selection > 0) Selection--; }
|
||||
|
||||
|
||||
if ((hDown & KEY_L || hDown & KEY_LEFT)) {
|
||||
if (creditsPage > 0) {
|
||||
Selection = 0;
|
||||
creditsPage--;
|
||||
}
|
||||
}
|
||||
|
||||
if ((hDown & KEY_R || hDown & KEY_RIGHT) || (hDown & KEY_TOUCH && touching(touch, arrowPos[1]))) {
|
||||
if (creditsPage < 4) creditsPage++;
|
||||
|
||||
if ((hDown & KEY_R || hDown & KEY_RIGHT)) {
|
||||
if (creditsPage < 3) {
|
||||
Selection = 0;
|
||||
creditsPage++;
|
||||
}
|
||||
}
|
||||
|
||||
if (hDown & KEY_B) {
|
||||
Gui::screenBack();
|
||||
return;
|
||||
}
|
||||
|
||||
if (Selection < screenPos) {
|
||||
screenPos = Selection;
|
||||
} else if (Selection > screenPos + ENTRIES_PER_SCREEN - 1) {
|
||||
screenPos = Selection - ENTRIES_PER_SCREEN + 1;
|
||||
}
|
||||
}
|
||||
+53
-59
@@ -34,7 +34,7 @@ int selectedLang;
|
||||
extern bool changesMade;
|
||||
|
||||
Settings::Settings() {
|
||||
selectedLang = Config::lang;
|
||||
selectedLang = 0;
|
||||
}
|
||||
|
||||
void Settings::Draw(void) const {
|
||||
@@ -68,7 +68,21 @@ void Settings::DrawSubMenu(void) const {
|
||||
Animation::Button(mainButtons[Selection].x, mainButtons[Selection].y, .060);
|
||||
}
|
||||
|
||||
const std::vector<std::string> languages = {
|
||||
"Bruh",
|
||||
"Dansk",
|
||||
"Deutsch",
|
||||
"English",
|
||||
"Español",
|
||||
"Français",
|
||||
"Italiano",
|
||||
"Lietuvių",
|
||||
"Português",
|
||||
"Русский",
|
||||
"日本語"
|
||||
};
|
||||
void Settings::DrawLanguageSelection(void) const {
|
||||
std::string line1;
|
||||
GFX::DrawTop();
|
||||
if (Config::UseBars == true) {
|
||||
Gui::DrawStringCentered(0, 0, 0.7f, Config::TxtColor, Lang::get("SELECT_LANG"), 400);
|
||||
@@ -76,26 +90,15 @@ void Settings::DrawLanguageSelection(void) const {
|
||||
Gui::DrawStringCentered(0, 2, 0.7f, Config::TxtColor, Lang::get("SELECT_LANG"), 400);
|
||||
}
|
||||
GFX::DrawBottom();
|
||||
GFX::DrawArrow(0, 218, 0, 1);
|
||||
|
||||
for (int language = 0; language < 10; language++) {
|
||||
Gui::Draw_Rect(langBlocks[language].x, langBlocks[language].y, langBlocks[language].w, langBlocks[language].h, Config::UnselectedColor);
|
||||
if (Config::lang == language) {
|
||||
Gui::drawAnimatedSelector(langBlocks[language].x, langBlocks[language].y, langBlocks[language].w, langBlocks[language].h, .060, TRANSPARENT, Config::SelectedColor);
|
||||
for(int i=0;i<ENTRIES_PER_SCREEN && i<(int)languages.size();i++) {
|
||||
Gui::Draw_Rect(0, 40+(i*57), 320, 45, Config::UnselectedColor);
|
||||
line1 = languages[screenPos + i];
|
||||
if (screenPos + i == selectedLang) {
|
||||
Gui::drawAnimatedSelector(0, 40+(i*57), 320, 45, .060, TRANSPARENT, Config::SelectedColor);
|
||||
}
|
||||
Gui::DrawStringCentered(0, 50+(i*57), 0.7f, WHITE, line1, 320);
|
||||
}
|
||||
|
||||
Gui::DrawString(langBlocks[0].x+25, langBlocks[0].y, 0.7f, Config::TxtColor, "Bruh", 320);
|
||||
Gui::DrawString(langBlocks[1].x+25, langBlocks[1].y, 0.7f, Config::TxtColor, "Deutsch", 320);
|
||||
Gui::DrawString(langBlocks[2].x+25, langBlocks[2].y, 0.7f, Config::TxtColor, "English", 320);
|
||||
Gui::DrawString(langBlocks[3].x+25, langBlocks[3].y, 0.7f, Config::TxtColor, "Español", 320);
|
||||
Gui::DrawString(langBlocks[4].x+25, langBlocks[4].y, 0.7f, Config::TxtColor, "Français", 320);
|
||||
|
||||
Gui::DrawString(langBlocks[5].x+25, langBlocks[5].y, 0.7f, Config::TxtColor, "Italiano", 320);
|
||||
Gui::DrawString(langBlocks[6].x+25, langBlocks[6].y, 0.7f, Config::TxtColor, "Lietuvių", 320);
|
||||
Gui::DrawString(langBlocks[7].x+25, langBlocks[7].y, 0.7f, Config::TxtColor, "Português", 320);
|
||||
Gui::DrawString(langBlocks[8].x+25, langBlocks[8].y, 0.7f, Config::TxtColor, "Русский", 320);
|
||||
Gui::DrawString(langBlocks[9].x+25, langBlocks[9].y, 0.7f, Config::TxtColor, "日本語", 320);
|
||||
}
|
||||
|
||||
const std::vector<std::string> colorList = {
|
||||
@@ -290,14 +293,29 @@ void Settings::SubMenuLogic(u32 hDown, u32 hHeld, touchPosition touch) {
|
||||
}
|
||||
|
||||
if (hDown & KEY_A) {
|
||||
if (Selection + 1 == 3) Gui::setScreen(std::make_unique<Credits>());
|
||||
else mode = Selection+1;
|
||||
switch (Selection) {
|
||||
case 0:
|
||||
screenPos = 0;
|
||||
selectedLang = 0;
|
||||
mode = 1;
|
||||
break;
|
||||
case 1:
|
||||
screenPos = 0;
|
||||
mode = 2;
|
||||
break;
|
||||
case 2:
|
||||
Gui::setScreen(std::make_unique<Credits>());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (hDown & KEY_TOUCH) {
|
||||
if (touching(touch, mainButtons[0])) {
|
||||
screenPos = 0;
|
||||
selectedLang = 0;
|
||||
mode = 1;
|
||||
} else if (touching(touch, mainButtons[1])) {
|
||||
screenPos = 0;
|
||||
mode = 2;
|
||||
} else if (touching(touch, mainButtons[2])) {
|
||||
Gui::setScreen(std::make_unique<Credits>());
|
||||
@@ -315,59 +333,35 @@ void Settings::SubMenuLogic(u32 hDown, u32 hHeld, touchPosition touch) {
|
||||
}
|
||||
}
|
||||
|
||||
std::string langsTemp[] = {"br", "da", "de", "en", "es", "fr", "it", "lt", "pt", "ru", "jp"};
|
||||
void Settings::LanguageSelection(u32 hDown, touchPosition touch) {
|
||||
|
||||
if (hDown & KEY_TOUCH) {
|
||||
for (int language = 0; language < 10; language++) {
|
||||
if (touching(touch, langBlocks[language])) {
|
||||
selectedLang = language;
|
||||
Config::lang = language;
|
||||
Lang::load(Config::lang);
|
||||
changesMade = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (hDown & KEY_UP) {
|
||||
if(selectedLang > 0) {
|
||||
selectedLang--;
|
||||
Config::lang = selectedLang;
|
||||
Lang::load(Config::lang);
|
||||
changesMade = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (hDown & KEY_A) {
|
||||
Config::lang = langsTemp[selectedLang];
|
||||
Lang::load(Config::lang);
|
||||
changesMade = true;
|
||||
mode = 0;
|
||||
}
|
||||
|
||||
if (hDown & KEY_DOWN) {
|
||||
if(selectedLang < 9) {
|
||||
if(selectedLang < (int)languages.size()-1) {
|
||||
selectedLang++;
|
||||
Config::lang = selectedLang;
|
||||
Lang::load(Config::lang);
|
||||
changesMade = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (hDown & KEY_LEFT) {
|
||||
if (selectedLang > 4) {
|
||||
selectedLang -= 5;
|
||||
Config::lang = selectedLang;
|
||||
Lang::load(Config::lang);
|
||||
changesMade = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (hDown & KEY_RIGHT) {
|
||||
if (selectedLang < 5) {
|
||||
selectedLang += 5;
|
||||
Config::lang = selectedLang;
|
||||
Lang::load(Config::lang);
|
||||
changesMade = true;
|
||||
}
|
||||
}
|
||||
|
||||
if ((hDown & KEY_B) || (hDown & KEY_TOUCH && touching(touch, arrowPos[2]))) {
|
||||
if ((hDown & KEY_B)) {
|
||||
mode = 0;
|
||||
}
|
||||
if (selectedLang < screenPos) {
|
||||
screenPos = selectedLang;
|
||||
} else if (selectedLang > screenPos + ENTRIES_PER_SCREEN - 1) {
|
||||
screenPos = selectedLang - ENTRIES_PER_SCREEN + 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
+13
-6
@@ -32,7 +32,7 @@
|
||||
#include <string>
|
||||
#include <unistd.h>
|
||||
|
||||
int Config::lang; // Current Language.
|
||||
std::string Config::lang; // Current Language.
|
||||
int Config::Color1;
|
||||
int Config::Color2;
|
||||
int Config::Color3;
|
||||
@@ -56,6 +56,7 @@ int Config::notFound;
|
||||
int Config::future;
|
||||
int Config::Button;
|
||||
nlohmann::json configJson;
|
||||
extern bool changesMade;
|
||||
|
||||
void Config::load() {
|
||||
FILE* file = fopen("sdmc:/3ds/Universal-Updater/Settings.json", "r");
|
||||
@@ -110,10 +111,16 @@ void Config::load() {
|
||||
LangPath = getInt("LANGPATH");
|
||||
}
|
||||
|
||||
// Conversion to string.
|
||||
if (configJson.contains("LANGUAGE") && configJson.at("LANGUAGE").is_number()) {
|
||||
setString("LANGUAGE", "en");
|
||||
changesMade = true;
|
||||
}
|
||||
|
||||
if(!configJson.contains("LANGUAGE")) {
|
||||
lang = 2;
|
||||
lang = "en";
|
||||
} else {
|
||||
lang = getInt("LANGUAGE");
|
||||
lang = getString("LANGUAGE");
|
||||
}
|
||||
|
||||
if(!configJson.contains("VIEWMODE")) {
|
||||
@@ -204,7 +211,7 @@ void Config::load() {
|
||||
UnselectedColor = UnselectedColordefault;
|
||||
ScriptPath = SCRIPTS_PATH;
|
||||
LangPath = 0;
|
||||
lang = 2;
|
||||
lang = "en";
|
||||
viewMode = 0;
|
||||
progressbarColor = WHITE;
|
||||
MusicPath = MUSIC_PATH;
|
||||
@@ -230,7 +237,7 @@ void Config::save() {
|
||||
setInt("UNSELECTEDCOLOR", UnselectedColor);
|
||||
setString("SCRIPTPATH", ScriptPath);
|
||||
setInt("LANGPATH", LangPath);
|
||||
setInt("LANGUAGE", lang);
|
||||
setString("LANGUAGE", lang);
|
||||
setInt("VIEWMODE", viewMode);
|
||||
setInt("PROGRESSBARCOLOR", progressbarColor);
|
||||
setString("MUSICPATH", MusicPath);
|
||||
@@ -262,7 +269,7 @@ void Config::initializeNewConfig() {
|
||||
setInt("UNSELECTEDCOLOR", UnselectedColordefault);
|
||||
setString("SCRIPTPATH", SCRIPTS_PATH);
|
||||
setInt("LANGPATH", 0);
|
||||
setInt("LANGUAGE", 2);
|
||||
setString("LANGUAGE", "en");
|
||||
setInt("VIEWMODE", 0);
|
||||
setInt("PROGRESSBARCOLOR", WHITE);
|
||||
setString("MUSICPATH", MUSIC_PATH);
|
||||
|
||||
Reference in New Issue
Block a user