diff --git a/assets/romfs/config.json b/assets/romfs/config.json index 64a735311..73a1df966 100644 --- a/assets/romfs/config.json +++ b/assets/romfs/config.json @@ -1,5 +1,5 @@ { - "version": 1, + "version": 2, "language": 2, "autoBackup": true, "storageSize": 150, @@ -19,5 +19,6 @@ }, "extraSaves": { }, - "writeFileSave": false + "writeFileSave": false, + "useSaveInfo": false } diff --git a/include/Configuration.hpp b/include/Configuration.hpp index 52fce793e..670a1700d 100644 --- a/include/Configuration.hpp +++ b/include/Configuration.hpp @@ -35,7 +35,7 @@ class Configuration { public: - static constexpr int CURRENT_VERSION = 1; + static constexpr int CURRENT_VERSION = 2; static Configuration& getInstance(void) { @@ -116,6 +116,11 @@ class Configuration return mJson["writeFileSave"]; } + bool useSaveInfo(void) + { + return mJson["useSaveInfo"]; + } + void language(Language lang) { mJson["language"] = lang; @@ -191,6 +196,11 @@ class Configuration mJson["writeFileSave"] = write; } + void useSaveInfo(bool saveInfo) + { + mJson["useSaveInfo"] = saveInfo; + } + void save(void); private: @@ -200,6 +210,8 @@ class Configuration Configuration(Configuration const&) = delete; void operator=(Configuration const&) = delete; + void loadFromRomfs(void); + nlohmann::json mJson; size_t oldSize = 0; diff --git a/include/gui/screen/BagScreen.hpp b/include/gui/screen/BagScreen.hpp index 5825b5eca..f0dd2d8fa 100644 --- a/include/gui/screen/BagScreen.hpp +++ b/include/gui/screen/BagScreen.hpp @@ -66,6 +66,8 @@ class BagScreen : public Screen 876, 877, 878, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896 }; + + bool justSwitched = true; }; #endif \ No newline at end of file diff --git a/include/gui/screen/ConfigScreen.hpp b/include/gui/screen/ConfigScreen.hpp index d1a36ca5f..fe078b782 100644 --- a/include/gui/screen/ConfigScreen.hpp +++ b/include/gui/screen/ConfigScreen.hpp @@ -58,6 +58,7 @@ class ConfigScreen : public Screen int currentTab = 0; int oldStorage; void back(void); + bool justSwitched = true; }; #endif \ No newline at end of file diff --git a/include/gui/screen/EditSelectorScreen.hpp b/include/gui/screen/EditSelectorScreen.hpp index 3f6fafe26..a1423c63b 100644 --- a/include/gui/screen/EditSelectorScreen.hpp +++ b/include/gui/screen/EditSelectorScreen.hpp @@ -55,6 +55,7 @@ class EditSelectorScreen : public Screen std::shared_ptr moveMon = nullptr; int cursorPos = 0; int box = 0; + bool justSwitched = true; }; #endif \ No newline at end of file diff --git a/include/gui/screen/EditorScreen.hpp b/include/gui/screen/EditorScreen.hpp index 77c7076c2..b86d8d50a 100644 --- a/include/gui/screen/EditorScreen.hpp +++ b/include/gui/screen/EditorScreen.hpp @@ -89,6 +89,7 @@ class EditorScreen : public Screen int origPartyLevel; int origPartyCurrHP; int origPartyCP; + bool justSwitched = true; }; #endif \ No newline at end of file diff --git a/include/gui/screen/HexEditScreen.hpp b/include/gui/screen/HexEditScreen.hpp index 811acd3a9..18a088ce1 100644 --- a/include/gui/screen/HexEditScreen.hpp +++ b/include/gui/screen/HexEditScreen.hpp @@ -84,6 +84,7 @@ class HexEditScreen : public Screen if (!isClicked && clicked(touch)) { key = key == ui_sheet_emulated_toggle_green_idx ? ui_sheet_emulated_toggle_red_idx : ui_sheet_emulated_toggle_green_idx; + isClicked = clicked(touch); return noArg(); } else diff --git a/include/gui/screen/MainMenu.hpp b/include/gui/screen/MainMenu.hpp index 35c68d345..3f77fed29 100644 --- a/include/gui/screen/MainMenu.hpp +++ b/include/gui/screen/MainMenu.hpp @@ -41,6 +41,7 @@ class MainMenu : public Screen ScreenType type() const override { return ScreenType::MAINMENU; } private: std::array buttons = {NULL}; + bool justSwitched = true; }; #endif \ No newline at end of file diff --git a/include/gui/screen/StorageScreen.hpp b/include/gui/screen/StorageScreen.hpp index 7b6bbcc8c..b5b8c70a9 100644 --- a/include/gui/screen/StorageScreen.hpp +++ b/include/gui/screen/StorageScreen.hpp @@ -68,6 +68,7 @@ class StorageScreen : public Screen std::unique_ptr viewer; std::shared_ptr moveMon = nullptr; int partyNum = -1; + bool justSwitched = true; // Storage implementation }; diff --git a/include/utils/scripthelpers.h b/include/utils/scripthelpers.h index 8d9b83d12..cb5568b85 100644 --- a/include/utils/scripthelpers.h +++ b/include/utils/scripthelpers.h @@ -30,7 +30,6 @@ #include "picoc.h" #include "3ds/types.h" -void gui_fpsCheck(struct ParseState *Parser, struct Value *ReturnValue, struct Value **Param, int NumArgs); void gui_warn(struct ParseState*, struct Value*, struct Value**, int); void gui_choice(struct ParseState*, struct Value*, struct Value**, int); void gui_menu6x5(struct ParseState*, struct Value*, struct Value**, int); diff --git a/source/Configuration.cpp b/source/Configuration.cpp index 5f5c62225..e099b91e4 100644 --- a/source/Configuration.cpp +++ b/source/Configuration.cpp @@ -35,10 +35,7 @@ Configuration::Configuration() if (R_FAILED(stream.result())) { - std::ifstream istream("romfs:/config.json"); - istream >> mJson; - istream.close(); - save(); + loadFromRomfs(); } else { @@ -49,6 +46,21 @@ Configuration::Configuration() stream.close(); mJson = nlohmann::json::parse(jsonData); delete[] jsonData; + + if (mJson.find("version") == mJson.end()) + { + loadFromRomfs(); + } + else if (mJson["version"].get() != CURRENT_VERSION) + { + if (mJson["version"].get() < 2) + { + mJson["useSaveInfo"] = false; + } + + mJson["version"] = CURRENT_VERSION; + save(); + } } } @@ -105,4 +117,12 @@ void Configuration::extraSaves(std::string id, std::pair> mJson; + istream.close(); + save(); } \ No newline at end of file diff --git a/source/gui/screen/BagScreen.cpp b/source/gui/screen/BagScreen.cpp index 0114253c1..5ff1cc447 100644 --- a/source/gui/screen/BagScreen.cpp +++ b/source/gui/screen/BagScreen.cpp @@ -152,6 +152,17 @@ void BagScreen::draw() const void BagScreen::update(touchPosition* touch) { + if (justSwitched) + { + if (keysHeld() & KEY_TOUCH) + { + return; + } + else + { + justSwitched = false; + } + } static int timer = 0; u32 downKeys = hidKeysDown(); u32 heldKeys = hidKeysHeld(); diff --git a/source/gui/screen/ConfigScreen.cpp b/source/gui/screen/ConfigScreen.cpp index 0c40c4f48..e36c8a722 100644 --- a/source/gui/screen/ConfigScreen.cpp +++ b/source/gui/screen/ConfigScreen.cpp @@ -107,6 +107,7 @@ ConfigScreen::ConfigScreen() : oldStorage(Configuration::getInstance().storageSi tabButtons[2].push_back(new ClickButton(237, 87, 15, 12, [](){ Configuration::getInstance().fixSectors(!Configuration::getInstance().fixSectors()); return true; }, ui_sheet_button_info_detail_editor_light_idx, "", 0.0f, 0)); tabButtons[2].push_back(new ClickButton(237, 111, 15, 12, [](){ Configuration::getInstance().transferEdit(!Configuration::getInstance().transferEdit()); return true; }, ui_sheet_button_info_detail_editor_light_idx, "", 0.0f, 0)); tabButtons[2].push_back(new ClickButton(237, 135, 15, 12, [](){ Configuration::getInstance().writeFileSave(!Configuration::getInstance().writeFileSave()); return true; }, ui_sheet_button_info_detail_editor_light_idx, "", 0.0f, 0)); + tabButtons[2].push_back(new ClickButton(237, 159, 15, 12, [](){ Configuration::getInstance().useSaveInfo(!Configuration::getInstance().useSaveInfo()); return true; }, ui_sheet_button_info_detail_editor_light_idx, "", 0.0f, 0)); } void ConfigScreen::draw() const @@ -240,6 +241,7 @@ void ConfigScreen::draw() const Gui::staticText(i18n::localize("CONFIG_BAD_SECTORS"), 19, 84, FONT_SIZE_14, FONT_SIZE_14, COLOR_WHITE); Gui::staticText(i18n::localize("CONFIG_EDIT_TRANSFERS"), 19, 108, FONT_SIZE_14, FONT_SIZE_14, COLOR_WHITE); Gui::staticText(i18n::localize("CONFIG_BACKUP_INJECTION"), 19, 132, FONT_SIZE_14, FONT_SIZE_14, COLOR_WHITE); + Gui::staticText(i18n::localize("CONFIG_SAVE_INFO"), 19, 156, FONT_SIZE_14, FONT_SIZE_14, COLOR_WHITE); for (Button* button : tabButtons[currentTab]) { @@ -251,11 +253,23 @@ void ConfigScreen::draw() const Gui::staticText(Configuration::getInstance().fixSectors() ? i18n::localize("YES") : i18n::localize("NO"), 260, 84, FONT_SIZE_14, FONT_SIZE_14, COLOR_WHITE); Gui::staticText(Configuration::getInstance().transferEdit() ? i18n::localize("YES") : i18n::localize("NO"), 260, 108, FONT_SIZE_14, FONT_SIZE_14, COLOR_WHITE); Gui::staticText(Configuration::getInstance().writeFileSave() ? i18n::localize("YES") : i18n::localize("NO"), 260, 132, FONT_SIZE_14, FONT_SIZE_14, COLOR_WHITE); + Gui::staticText(Configuration::getInstance().useSaveInfo() ? i18n::localize("YES") : i18n::localize("NO"), 260, 156, FONT_SIZE_14, FONT_SIZE_14, COLOR_WHITE); } } void ConfigScreen::update(touchPosition* touch) { + if (justSwitched) + { + if (keysHeld() & KEY_TOUCH) + { + return; + } + else + { + justSwitched = false; + } + } Screen::update(); if (hidKeysDown() & KEY_B) { diff --git a/source/gui/screen/EditSelectorScreen.cpp b/source/gui/screen/EditSelectorScreen.cpp index 0d02e210b..e5e38d428 100644 --- a/source/gui/screen/EditSelectorScreen.cpp +++ b/source/gui/screen/EditSelectorScreen.cpp @@ -318,6 +318,17 @@ void EditSelectorScreen::draw() const void EditSelectorScreen::update(touchPosition* touch) { + if (justSwitched) + { + if (keysHeld() & KEY_TOUCH) + { + return; + } + else + { + justSwitched = false; + } + } static bool sleep = true; static int sleepTimer = 10; diff --git a/source/gui/screen/EditorScreen.cpp b/source/gui/screen/EditorScreen.cpp index f77cebbfa..027a96f8b 100644 --- a/source/gui/screen/EditorScreen.cpp +++ b/source/gui/screen/EditorScreen.cpp @@ -56,9 +56,18 @@ EditorScreen::EditorScreen(std::shared_ptr viewer, std::shared_ptr if (!pkm || pkm->species() == 0) { pkm = TitleLoader::save->emptyPkm()->clone(); - pkm->TID(Configuration::getInstance().defaultTID()); - pkm->SID(Configuration::getInstance().defaultSID()); - pkm->otName(Configuration::getInstance().defaultOT().c_str()); + if (Configuration::getInstance().useSaveInfo()) + { + pkm->TID(TitleLoader::save->TID()); + pkm->SID(TitleLoader::save->SID()); + pkm->otName(TitleLoader::save->otName().c_str()); + } + else + { + pkm->TID(Configuration::getInstance().defaultTID()); + pkm->SID(Configuration::getInstance().defaultSID()); + pkm->otName(Configuration::getInstance().defaultOT().c_str()); + } pkm->ball(4); pkm->encryptionConstant((u32)rand()); pkm->version(TitleLoader::save->version()); @@ -287,6 +296,17 @@ void EditorScreen::draw() const void EditorScreen::update(touchPosition* touch) { + if (justSwitched) + { + if (keysHeld() & KEY_TOUCH) + { + return; + } + else + { + justSwitched = false; + } + } if (!selector) { u32 downKeys = keysDown(); @@ -415,12 +435,7 @@ bool EditorScreen::togglePokerus() void EditorScreen::setOT() { SwkbdState state; - bool first = true; - if (first) - { - swkbdInit(&state, SWKBD_TYPE_NORMAL, 2, pkm->generation() == Generation::SIX || pkm->generation() == Generation::SEVEN ? 12 : (8 - 1)); - first = false; - } + swkbdInit(&state, SWKBD_TYPE_NORMAL, 2, pkm->generation() == Generation::SIX || pkm->generation() == Generation::SEVEN ? 12 : (8 - 1)); swkbdSetHintText(&state, i18n::localize("OT_NAME").c_str()); swkbdSetValidation(&state, SWKBD_NOTBLANK_NOTEMPTY, 0, 0); char input[25] = {0}; @@ -435,12 +450,7 @@ void EditorScreen::setOT() void EditorScreen::setNick() { SwkbdState state; - bool first = true; - if (first) - { - swkbdInit(&state, SWKBD_TYPE_NORMAL, 2, pkm->generation() == Generation::SIX || pkm->generation() == Generation::SEVEN ? 12 : (11 - 1)); - first = false; - } + swkbdInit(&state, SWKBD_TYPE_NORMAL, 2, pkm->generation() == Generation::SIX || pkm->generation() == Generation::SEVEN ? 12 : (11 - 1)); swkbdSetHintText(&state, i18n::localize("NICKNAME").c_str()); swkbdSetValidation(&state, SWKBD_NOTBLANK_NOTEMPTY, 0, 0); char input[25] = {0}; diff --git a/source/gui/screen/HexEditScreen.cpp b/source/gui/screen/HexEditScreen.cpp index 6f5af7642..5e9ea0898 100644 --- a/source/gui/screen/HexEditScreen.cpp +++ b/source/gui/screen/HexEditScreen.cpp @@ -1006,7 +1006,7 @@ HexEditScreen::HexEditScreen(std::shared_ptr pkm) : pkm(pkm), hid(240, 16) { // Fateful Encounter case 0x1D: - buttons[i].push_back(new HexEditButton(70, 90, 13, 13, [this, i](){ return this->toggleBit(i, 0); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("FATEFUL_ENCOUNTER"), true, 0)); + buttons[i].push_back(new HexEditButton(30, 90, 13, 13, [this, i](){ return this->toggleBit(i, 0); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("FATEFUL_ENCOUNTER"), true, 0)); buttons[i].back()->setToggled(pkm->rawData()[i] & 0x1); break; // Markings @@ -1018,7 +1018,7 @@ HexEditScreen::HexEditScreen(std::shared_ptr pkm) : pkm(pkm), hid(240, 16) } for (int j = 0; j < 6; j++) { - buttons[i].push_back(new HexEditButton(70, 90 + j * 16, 13, 13, [this, i, j](){ return this->toggleBit(i, j); }, ui_sheet_emulated_toggle_green_idx, i18n::localize(std::string(marks[j])), true, j)); + buttons[i].push_back(new HexEditButton(30, 90 + j * 16, 13, 13, [this, i, j](){ return this->toggleBit(i, j); }, ui_sheet_emulated_toggle_green_idx, i18n::localize(std::string(marks[j])), true, j)); buttons[i].back()->setToggled((pkm->rawData()[i] >> j) & 0x1); } break; @@ -1035,7 +1035,7 @@ HexEditScreen::HexEditScreen(std::shared_ptr pkm) : pkm(pkm), hid(240, 16) } for (int j = 0; j < 8; j++) { - buttons[i].push_back(new HexEditButton(70, 90 + j * 16, 13, 13, [this, i, j](){ return this->toggleBit(i, j); }, ui_sheet_emulated_toggle_green_idx, i18n::localize(std::string(gen67ToggleTexts[currRibbon])), true, j)); + buttons[i].push_back(new HexEditButton(30, 90 + j * 16, 13, 13, [this, i, j](){ return this->toggleBit(i, j); }, ui_sheet_emulated_toggle_green_idx, i18n::localize(std::string(gen67ToggleTexts[currRibbon])), true, j)); buttons[i].back()->setToggled((pkm->rawData()[i] >> j) & 0x1); currRibbon++; } @@ -1047,32 +1047,32 @@ HexEditScreen::HexEditScreen(std::shared_ptr pkm) : pkm(pkm), hid(240, 16) delete buttons[i].back(); buttons[i].pop_back(); } - buttons[i].push_back(new HexEditButton(70, 90, 13, 13, [this, i](){ return this->toggleBit(i, 0); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("SECRET_SUPER_TRAINING"), true, 0)); + buttons[i].push_back(new HexEditButton(30, 90, 13, 13, [this, i](){ return this->toggleBit(i, 0); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("SECRET_SUPER_TRAINING"), true, 0)); buttons[i].back()->setToggled(pkm->rawData()[i] & 0x1); break; // Egg, & Nicknamed Flag case 0x77: - buttons[i].push_back(new HexEditButton(70, 90, 13, 13, [this, i](){ return this->toggleBit(i, 6); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("EGG"), true, 6)); + buttons[i].push_back(new HexEditButton(30, 90, 13, 13, [this, i](){ return this->toggleBit(i, 6); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("EGG"), true, 6)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 6) & 0x1); - buttons[i].push_back(new HexEditButton(70, 106, 13, 13, [this, i](){ return this->toggleBit(i, 7); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("NICKNAMED"), true, 7)); + buttons[i].push_back(new HexEditButton(30, 106, 13, 13, [this, i](){ return this->toggleBit(i, 7); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("NICKNAMED"), true, 7)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 7) & 0x1); break; // OT Gender case 0xDD: - buttons[i].push_back(new HexEditButton(70, 90, 13, 13, [this, i](){ return this->toggleBit(i, 7); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("FEMALE_OT"), true, 7)); + buttons[i].push_back(new HexEditButton(30, 90, 13, 13, [this, i](){ return this->toggleBit(i, 7); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("FEMALE_OT"), true, 7)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 7) & 0x1); break; // Status case 0xE8: - buttons[i].push_back(new HexEditButton(70, 90, 13, 13, [this, i](){ return this->toggleBit(i, 3); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("POISONED"), true, 3)); + buttons[i].push_back(new HexEditButton(30, 90, 13, 13, [this, i](){ return this->toggleBit(i, 3); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("POISONED"), true, 3)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 3) & 0x1); - buttons[i].push_back(new HexEditButton(70, 106, 13, 13, [this, i](){ return this->toggleBit(i, 4); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("BURNED"), true, 4)); + buttons[i].push_back(new HexEditButton(30, 106, 13, 13, [this, i](){ return this->toggleBit(i, 4); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("BURNED"), true, 4)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 4) & 0x1); - buttons[i].push_back(new HexEditButton(70, 122, 13, 13, [this, i](){ return this->toggleBit(i, 5); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("FROZEN"), true, 5)); + buttons[i].push_back(new HexEditButton(30, 122, 13, 13, [this, i](){ return this->toggleBit(i, 5); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("FROZEN"), true, 5)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 5) & 0x1); - buttons[i].push_back(new HexEditButton(70, 138, 13, 13, [this, i](){ return this->toggleBit(i, 6); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("PARALYZED"), true, 6)); + buttons[i].push_back(new HexEditButton(30, 138, 13, 13, [this, i](){ return this->toggleBit(i, 6); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("PARALYZED"), true, 6)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 6) & 0x1); - buttons[i].push_back(new HexEditButton(70, 154, 13, 13, [this, i](){ return this->toggleBit(i, 7); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("TOXIC"), true, 7)); + buttons[i].push_back(new HexEditButton(30, 154, 13, 13, [this, i](){ return this->toggleBit(i, 7); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("TOXIC"), true, 7)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 7) & 0x1); break; } @@ -1090,7 +1090,7 @@ HexEditScreen::HexEditScreen(std::shared_ptr pkm) : pkm(pkm), hid(240, 16) } for (int j = 0; j < 6; j++) { - buttons[i].push_back(new HexEditButton(70, 90 + j * 16, 13, 13, [this, i, j](){ return this->toggleBit(i, j); }, ui_sheet_emulated_toggle_green_idx, i18n::localize(std::string(marks[j])), true, j)); + buttons[i].push_back(new HexEditButton(30, 90 + j * 16, 13, 13, [this, i, j](){ return this->toggleBit(i, j); }, ui_sheet_emulated_toggle_green_idx, i18n::localize(std::string(marks[j])), true, j)); buttons[i].back()->setToggled((pkm->rawData()[i] >> j) & 0x1); } break; @@ -1105,46 +1105,46 @@ HexEditScreen::HexEditScreen(std::shared_ptr pkm) : pkm(pkm), hid(240, 16) } for (int j = 0; j < 8; j++) { - buttons[i].push_back(new HexEditButton(70, 90 + j * 16, 13, 13, [this, i, j](){ return this->toggleBit(i, j); }, ui_sheet_emulated_toggle_green_idx, i18n::localize(std::string(gen5ToggleTexts[currRibbon])), true, j)); + buttons[i].push_back(new HexEditButton(30, 90 + j * 16, 13, 13, [this, i, j](){ return this->toggleBit(i, j); }, ui_sheet_emulated_toggle_green_idx, i18n::localize(std::string(gen5ToggleTexts[currRibbon])), true, j)); buttons[i].back()->setToggled((pkm->rawData()[i] >> j) & 0x1); currRibbon++; } break; // Egg and Nicknamed Flags case 0x3B: - buttons[i].push_back(new HexEditButton(70, 90, 13, 13, [this, i](){ return this->toggleBit(i, 6); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("EGG"), true, 6)); + buttons[i].push_back(new HexEditButton(30, 90, 13, 13, [this, i](){ return this->toggleBit(i, 6); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("EGG"), true, 6)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 6) & 0x1); - buttons[i].push_back(new HexEditButton(70, 106, 13, 13, [this, i](){ return this->toggleBit(i, 7); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("NICKNAMED"), true, 7)); + buttons[i].push_back(new HexEditButton(30, 106, 13, 13, [this, i](){ return this->toggleBit(i, 7); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("NICKNAMED"), true, 7)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 7) & 0x1); break; // Fateful Encounter case 0x40: - buttons[i].push_back(new HexEditButton(70, 90, 13, 13, [this, i](){ return this->toggleBit(i, 0); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("FATEFUL_ENCOUNTER"), true, 0)); + buttons[i].push_back(new HexEditButton(30, 90, 13, 13, [this, i](){ return this->toggleBit(i, 0); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("FATEFUL_ENCOUNTER"), true, 0)); buttons[i].back()->setToggled(pkm->rawData()[i] & 0x1); break; // DreamWorldAbility & N's Pokemon Flags case 0x42: - buttons[i].push_back(new HexEditButton(70, 90, 13, 13, [this, i](){ return this->toggleBit(i, 0); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("HIDDEN_ABILITY?"), true, 0)); + buttons[i].push_back(new HexEditButton(30, 90, 13, 13, [this, i](){ return this->toggleBit(i, 0); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("HIDDEN_ABILITY?"), true, 0)); buttons[i].back()->setToggled(pkm->rawData()[i] & 0x1); - buttons[i].push_back(new HexEditButton(70, 106, 13, 13, [this, i](){ return this->toggleBit(i, 1); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("NS_POKEMON?"), true, 1)); + buttons[i].push_back(new HexEditButton(30, 106, 13, 13, [this, i](){ return this->toggleBit(i, 1); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("NS_POKEMON?"), true, 1)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 1) & 0x1); break; // OT Gender case 0x84: - buttons[i].push_back(new HexEditButton(70, 90, 13, 13, [this, i](){ return this->toggleBit(i, 7); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("FEMALE_OT"), true, 7)); + buttons[i].push_back(new HexEditButton(30, 90, 13, 13, [this, i](){ return this->toggleBit(i, 7); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("FEMALE_OT"), true, 7)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 7) & 0x1); break; // Status case 0x88: - buttons[i].push_back(new HexEditButton(70, 90, 13, 13, [this, i](){ return this->toggleBit(i, 3); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("POISONED"), true, 3)); + buttons[i].push_back(new HexEditButton(30, 90, 13, 13, [this, i](){ return this->toggleBit(i, 3); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("POISONED"), true, 3)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 3) & 0x1); - buttons[i].push_back(new HexEditButton(70, 106, 13, 13, [this, i](){ return this->toggleBit(i, 4); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("BURNED"), true, 4)); + buttons[i].push_back(new HexEditButton(30, 106, 13, 13, [this, i](){ return this->toggleBit(i, 4); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("BURNED"), true, 4)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 4) & 0x1); - buttons[i].push_back(new HexEditButton(70, 122, 13, 13, [this, i](){ return this->toggleBit(i, 5); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("FROZEN"), true, 5)); + buttons[i].push_back(new HexEditButton(30, 122, 13, 13, [this, i](){ return this->toggleBit(i, 5); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("FROZEN"), true, 5)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 5) & 0x1); - buttons[i].push_back(new HexEditButton(70, 138, 13, 13, [this, i](){ return this->toggleBit(i, 6); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("PARALYZED"), true, 6)); + buttons[i].push_back(new HexEditButton(30, 138, 13, 13, [this, i](){ return this->toggleBit(i, 6); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("PARALYZED"), true, 6)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 6) & 0x1); - buttons[i].push_back(new HexEditButton(70, 154, 13, 13, [this, i](){ return this->toggleBit(i, 7); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("TOXIC"), true, 7)); + buttons[i].push_back(new HexEditButton(30, 154, 13, 13, [this, i](){ return this->toggleBit(i, 7); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("TOXIC"), true, 7)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 7) & 0x1); break; } @@ -1162,7 +1162,7 @@ HexEditScreen::HexEditScreen(std::shared_ptr pkm) : pkm(pkm), hid(240, 16) } for (int j = 0; j < 6; j++) { - buttons[i].push_back(new HexEditButton(70, 90 + j * 16, 13, 13, [this, i, j](){ return this->toggleBit(i, j); }, ui_sheet_emulated_toggle_green_idx, i18n::localize(std::string(marks[j])), true, j)); + buttons[i].push_back(new HexEditButton(30, 90 + j * 16, 13, 13, [this, i, j](){ return this->toggleBit(i, j); }, ui_sheet_emulated_toggle_green_idx, i18n::localize(std::string(marks[j])), true, j)); buttons[i].back()->setToggled((pkm->rawData()[i] >> j) & 0x1); } break; @@ -1177,21 +1177,21 @@ HexEditScreen::HexEditScreen(std::shared_ptr pkm) : pkm(pkm), hid(240, 16) } for (int j = 0; j < 8; j++) { - buttons[i].push_back(new HexEditButton(70, 90 + j * 16, 13, 13, [this, i, j](){ return this->toggleBit(i, j); }, ui_sheet_emulated_toggle_green_idx, i18n::localize(std::string(gen4ToggleTexts[currRibbon])), true, j)); + buttons[i].push_back(new HexEditButton(30, 90 + j * 16, 13, 13, [this, i, j](){ return this->toggleBit(i, j); }, ui_sheet_emulated_toggle_green_idx, i18n::localize(std::string(gen4ToggleTexts[currRibbon])), true, j)); buttons[i].back()->setToggled((pkm->rawData()[i] >> j) & 0x1); currRibbon++; } break; // Egg and Nicknamed Flags case 0x3B: - buttons[i].push_back(new HexEditButton(70, 90, 13, 13, [this, i](){ return this->toggleBit(i, 6); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("NICKNAMEEGGD"), true, 6)); + buttons[i].push_back(new HexEditButton(30, 90, 13, 13, [this, i](){ return this->toggleBit(i, 6); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("NICKNAMEEGGD"), true, 6)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 6) & 0x1); - buttons[i].push_back(new HexEditButton(70, 106, 13, 13, [this, i](){ return this->toggleBit(i, 7); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("NICKNAMED"), true, 7)); + buttons[i].push_back(new HexEditButton(30, 106, 13, 13, [this, i](){ return this->toggleBit(i, 7); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("NICKNAMED"), true, 7)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 7) & 0x1); break; // Fateful Encounter case 0x40: - buttons[i].push_back(new HexEditButton(70, 90, 13, 13, [this, i](){ return this->toggleBit(i, 0); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("FATEFUL_ENCOUNTER"), true, 0)); + buttons[i].push_back(new HexEditButton(30, 90, 13, 13, [this, i](){ return this->toggleBit(i, 0); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("FATEFUL_ENCOUNTER"), true, 0)); buttons[i].back()->setToggled(pkm->rawData()[i] & 0x1); break; // Gold Leaves & Crown @@ -1203,26 +1203,26 @@ HexEditScreen::HexEditScreen(std::shared_ptr pkm) : pkm(pkm), hid(240, 16) } for (int j = 0; j < 6; j++) { - buttons[i].push_back(new HexEditButton(70, 90 + j * 16, 13, 13, [this, i, j](){ return this->toggleBit(i, j); }, ui_sheet_emulated_toggle_green_idx, "", true, j)); + buttons[i].push_back(new HexEditButton(30, 90 + j * 16, 13, 13, [this, i, j](){ return this->toggleBit(i, j); }, ui_sheet_emulated_toggle_green_idx, "", true, j)); buttons[i].back()->setToggled((pkm->rawData()[i] >> j) & 0x1); } break; // OT Gender case 0x84: - buttons[i].push_back(new HexEditButton(70, 90, 13, 13, [this, i](){ return this->toggleBit(i, 7); }, ui_sheet_emulated_toggle_green_idx, "", true, 7)); + buttons[i].push_back(new HexEditButton(30, 90, 13, 13, [this, i](){ return this->toggleBit(i, 7); }, ui_sheet_emulated_toggle_green_idx, "", true, 7)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 7) & 0x1); break; // Status case 0x88: - buttons[i].push_back(new HexEditButton(70, 90, 13, 13, [this, i](){ return this->toggleBit(i, 3); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("POISONED"), true, 3)); + buttons[i].push_back(new HexEditButton(30, 90, 13, 13, [this, i](){ return this->toggleBit(i, 3); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("POISONED"), true, 3)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 3) & 0x1); - buttons[i].push_back(new HexEditButton(70, 106, 13, 13, [this, i](){ return this->toggleBit(i, 4); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("BURNED"), true, 4)); + buttons[i].push_back(new HexEditButton(30, 106, 13, 13, [this, i](){ return this->toggleBit(i, 4); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("BURNED"), true, 4)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 4) & 0x1); - buttons[i].push_back(new HexEditButton(70, 122, 13, 13, [this, i](){ return this->toggleBit(i, 5); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("FROZEN"), true, 5)); + buttons[i].push_back(new HexEditButton(30, 122, 13, 13, [this, i](){ return this->toggleBit(i, 5); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("FROZEN"), true, 5)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 5) & 0x1); - buttons[i].push_back(new HexEditButton(70, 138, 13, 13, [this, i](){ return this->toggleBit(i, 6); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("PARALYZED"), true, 6)); + buttons[i].push_back(new HexEditButton(30, 138, 13, 13, [this, i](){ return this->toggleBit(i, 6); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("PARALYZED"), true, 6)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 6) & 0x1); - buttons[i].push_back(new HexEditButton(70, 154, 13, 13, [this, i](){ return this->toggleBit(i, 7); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("TOXIC"), true, 7)); + buttons[i].push_back(new HexEditButton(30, 154, 13, 13, [this, i](){ return this->toggleBit(i, 7); }, ui_sheet_emulated_toggle_green_idx, i18n::localize("TOXIC"), true, 7)); buttons[i].back()->setToggled((pkm->rawData()[i] >> 7) & 0x1); break; } diff --git a/source/gui/screen/MainMenu.cpp b/source/gui/screen/MainMenu.cpp index ab33f9326..a5cc99c34 100644 --- a/source/gui/screen/MainMenu.cpp +++ b/source/gui/screen/MainMenu.cpp @@ -100,6 +100,17 @@ void MainMenu::draw() const void MainMenu::update(touchPosition* touch) { + if (justSwitched) + { + if (keysHeld() & KEY_TOUCH) + { + return; + } + else + { + justSwitched = false; + } + } Screen::update(); for (MainMenuButton* button : buttons) { diff --git a/source/gui/screen/StorageScreen.cpp b/source/gui/screen/StorageScreen.cpp index 39211cdb7..06bb40f80 100644 --- a/source/gui/screen/StorageScreen.cpp +++ b/source/gui/screen/StorageScreen.cpp @@ -447,6 +447,17 @@ void StorageScreen::draw() const void StorageScreen::update(touchPosition* touch) { + if (justSwitched) + { + if (keysHeld() & KEY_TOUCH) + { + return; + } + else + { + justSwitched = false; + } + } Screen::update(); static bool sleep = true; u32 kDown = hidKeysDown(); diff --git a/source/picoc/platform/library_unix.c b/source/picoc/platform/library_unix.c index a69d93443..8b7f5d8b1 100644 --- a/source/picoc/platform/library_unix.c +++ b/source/picoc/platform/library_unix.c @@ -1,46 +1,27 @@ #include "interpreter.h" #include "scripthelpers.h" -// static const int FOUR = 0; -// static const int FIVE = 1; -// static const int SIX = 2; -// static const int SEVEN = 3; - void UnixSetupFunc() { } -void Ctest (struct ParseState *Parser, struct Value *ReturnValue, struct Value **Param, int NumArgs) -{ - printf("test(%d)\n", Param[0]->Val->Integer); - Param[0]->Val->Integer = 1234; -} - -void Clineno (struct ParseState *Parser, struct Value *ReturnValue, struct Value **Param, int NumArgs) -{ - ReturnValue->Val->Integer = Parser->Line; -} - /* list of all library functions and their prototypes */ struct LibraryFunction UnixFunctions[] = { - { Ctest, "void test(int);" }, - { Clineno, "int lineno();" }, - { gui_fpsCheck, "int gui_fpsCheck();" }, { gui_choice, "int gui_choice(char* lineOne, char* lineTwo);" }, { gui_warn, "void gui_warn(char* lineOne, char* lineTwo);"}, - { gui_menu6x5, "int gui_menu6x5(char* question, int options, char** labels, struct pkx* pokemon, enum Generation generation);" }, - { gui_menu20x2, "int gui_menu20x2(char* question, int options, char** labels);" }, + { gui_menu6x5, "int gui_menu_6x5(char* question, int options, char** labels, struct pkx* pokemon, enum Generation generation);" }, + { gui_menu20x2, "int gui_menu_20x2(char* question, int options, char** labels);" }, { gui_keyboard, "void gui_keyboard(char* out, char* hint, int maxChars);" }, { gui_numpad, "void gui_numpad(int* out, char* hint, int maxDigits);" }, { sav_sbo, "int sav_sbo();" }, { sav_gbo, "int sav_gbo();" }, - { sav_boxDecrypt, "void sav_boxDecrypt();" }, - { sav_boxEncrypt, "void sav_boxEncrypt();" }, + { sav_boxDecrypt, "void sav_box_decrypt();" }, + { sav_boxEncrypt, "void sav_box_encrypt();" }, { NULL, NULL } }; void PlatformLibraryInit(Picoc *pc) { - IncludeRegister(pc, "picoc_unix.h", &UnixSetupFunc, &UnixFunctions[0], "struct pkx { int species; int form; }; enum Generation { GEN_FOUR, GEN_FIVE, GEN_SIX, GEN_SEVEN, GEN_LGPE };"); + IncludeRegister(pc, "pksm.h", &UnixSetupFunc, &UnixFunctions[0], "struct pkx { int species; int form; }; enum Generation { GEN_FOUR, GEN_FIVE, GEN_SIX, GEN_SEVEN, GEN_LGPE };"); } diff --git a/source/utils/scripthelpers.cpp b/source/utils/scripthelpers.cpp index e77da7cbc..f65ac8635 100644 --- a/source/utils/scripthelpers.cpp +++ b/source/utils/scripthelpers.cpp @@ -32,21 +32,6 @@ extern "C" { #include "scripthelpers.h" - void gui_fpsCheck(struct ParseState *Parser, struct Value *ReturnValue, struct Value **Param, int NumArgs) - { - int i = 0; - while (aptMainLoop() && !(hidKeysDown() & KEY_B)) - { - hidScanInput(); - C3D_FrameBegin(C3D_FRAME_SYNCDRAW); - C2D_TargetClear(g_renderTargetTop, C2D_Color32(0,0,0,255)); - C2D_SceneBegin(g_renderTargetTop); - Gui::dynamicText(std::to_string(i++ % 300), 38, 47, FONT_SIZE_18, FONT_SIZE_18, COLOR_WHITE); - C3D_FrameEnd(0); - Gui::clearTextBufs(); - } - } - void gui_warn(struct ParseState *Parser, struct Value *ReturnValue, struct Value **Param, int NumArgs) { char* lineOne = (char*) Param[0]->Val->Pointer;