WIP: Credits & Language Screen Rewrite.

This commit is contained in:
StackZ
2020-04-09 04:06:02 +02:00
parent 6bab9b0e32
commit 994f62799c
7 changed files with 213 additions and 106 deletions
+1 -1
View File
@@ -7,7 +7,7 @@
namespace Lang {
std::string get(const std::string &key);
void load(int lang);
void load(const std::string lang);
}
#endif
+4 -1
View File
@@ -38,7 +38,10 @@ public:
void Draw(void) const override;
void Logic(u32 hDown, u32 hHeld, touchPosition touch) override;
private:
int creditsPage = 1;
void DrawBottom(void) const;
int creditsPage = 0;
int screenPos = 0;
int Selection = 0;
std::vector<Structs::ButtonPos> arrowPos = {
{0, 215, 25, 25}, // Back Arrow.
+2 -2
View File
@@ -30,8 +30,8 @@
#include <string>
namespace Config {
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 int LangPath, Color1, Color2, Color3, TxtColor, SelectedColor, UnselectedColor, viewMode, progressbarColor, autoboot, outdated, uptodate, notFound, future, Button;
extern std::string lang, ScriptPath, MusicPath, StorePath, AutobootFile;
extern bool Logging, UseBars, GodMode;
void load();
+30 -6
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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);