diff --git a/source/defines.h b/source/defines.h index ca9b854b..21a3ef05 100644 --- a/source/defines.h +++ b/source/defines.h @@ -14,7 +14,6 @@ #define SOURCE_FILENAME "source_menu.ini" #define TITLES_FILENAME "titles.ini" #define CTITLES_FILENAME "custom_titles.ini" -#define AGE_LOCK_FILENAME "age_lock.ini" #define TITLES_DUMP_FILENAME "titlesdump.ini" #define GAME_SETTINGS1_FILENAME "gameconfig1.ini" #define GAME_SETTINGS2_FILENAME "gameconfig2.ini" @@ -28,8 +27,6 @@ #define MUSIC_DOMAIN "MUSIC" #define FTP_DOMAIN "FTP" -#define AGE_LOCK_DEFAULT 13 - #define DEVELOPERS "FIX94, Fledge68, OverjoY" #define PAST_DEVELOPERS "Hibernatus, Narolez, Hulk, Miigotu, r-win" #define LOADER_AUTHOR "Kwiirk, Waninkoko, Hermes" diff --git a/source/menu/menu.cpp b/source/menu/menu.cpp index ba0d07f4..284dd527 100644 --- a/source/menu/menu.cpp +++ b/source/menu/menu.cpp @@ -1630,8 +1630,7 @@ void CMenu::_addUserLabels(s16 *ids, u32 start, u32 size, const char *domain) void CMenu::_initCF(void) { - Config dump, gameAgeList; - GameTDB gametdb; + Config dump; const char *domain = _domainFromView(); CoverFlow.clear(); @@ -1642,18 +1641,6 @@ void CMenu::_initCF(void) m_gcfg1.load(fmt("%s/" GAME_SETTINGS1_FILENAME, m_settingsDir.c_str())); - int ageLock = m_cfg.getInt("GENERAL", "age_lock"); - if (ageLock < 2 || ageLock > 19) - ageLock = 19; - if (ageLock < 19) - { - gameAgeList.load(fmt("%s/" AGE_LOCK_FILENAME, m_settingsDir.c_str())); - if(!gametdb.IsLoaded()) - { - gametdb.OpenFile(fmt("%s/wiitdb.xml", m_settingsDir.c_str())); - gametdb.SetLanguageCode(m_loc.getString(m_curLanguage, "gametdb_code", "EN").c_str()); - } - } const vector &EnabledPlugins = m_plugin.GetEnabledPlugins(m_cfg, &enabledPluginsCount); for(vector::iterator element = m_gameList.begin(); element != m_gameList.end(); ++element) @@ -1697,96 +1684,24 @@ void CMenu::_initCF(void) id = tmp; } } - bool ageLocked = false; - if(ageLock < 19) - { - int ageRated = min(max(gameAgeList.getInt(domain, id), 0), 19); - if(ageRated == 0 && gametdb.IsLoaded() && (element->type == TYPE_WII_GAME || element->type == TYPE_GC_GAME || element->type == TYPE_CHANNEL)) - { - const char *RatingValue = NULL; - if(gametdb.GetRatingValue(element->id, RatingValue)) - { - switch(gametdb.GetRating(element->id)) - { - case GAMETDB_RATING_TYPE_CERO: - if(RatingValue[0] == 'A') - ageRated = 3; - else if(RatingValue[0] == 'B') - ageRated = 12; - else if(RatingValue[0] == 'D') - ageRated = 15; - else if(RatingValue[0] == 'C') - ageRated = 17; - else if(RatingValue[0] == 'Z') - ageRated = 18; - break; - case GAMETDB_RATING_TYPE_ESRB: - if(RatingValue[0] == 'E') - ageRated = 6; - else if(memcmp(RatingValue, "EC", 2) == 0) - ageRated = 3; - else if(memcmp(RatingValue, "E10+", 4) == 0) - ageRated = 10; - else if(RatingValue[0] == 'T') - ageRated = 13; - else if(RatingValue[0] == 'M') - ageRated = 17; - else if(memcmp(RatingValue, "AO", 2) == 0) - ageRated = 18; - break; - case GAMETDB_RATING_TYPE_PEGI: - if(RatingValue[0] == '3') - ageRated = 3; - else if(RatingValue[0] == '7') - ageRated = 7; - else if(memcmp(RatingValue, "12", 2) == 0) - ageRated = 12; - else if(memcmp(RatingValue, "16", 2) == 0) - ageRated = 16; - else if(memcmp(RatingValue, "18", 2) == 0) - ageRated = 18; - break; - case GAMETDB_RATING_TYPE_GRB: - if(RatingValue[0] == 'A') - ageRated = 3; - else if(memcmp(RatingValue, "12", 2) == 0) - ageRated = 12; - else if(memcmp(RatingValue, "15", 2) == 0) - ageRated = 15; - else if(memcmp(RatingValue, "18", 2) == 0) - ageRated = 18; - break; - default: - break; - } - } - } - if(ageRated == 0) - ageRated = min(max(m_cfg.getInt("GENERAL", "age_lock_default", AGE_LOCK_DEFAULT), 2), 19); - if(ageRated == 0) - ageRated = AGE_LOCK_DEFAULT; - if(ageRated > ageLock) - ageLocked = true; - } if((!m_favorites || m_gcfg1.getBool("FAVORITES", id, false)) - && (!m_locked || !m_gcfg1.getBool("ADULTONLY", id, false)) - && !ageLocked) + && (!m_locked || !m_gcfg1.getBool("ADULTONLY", id, false))) { string catDomain; switch(element->type) { case TYPE_CHANNEL: - catDomain = "NAND"; + catDomain = "CHANNELS"; break; case TYPE_HOMEBREW: case TYPE_SOURCE: catDomain = "HOMEBREW"; break; case TYPE_GC_GAME: - catDomain = "DML"; + catDomain = "GAMECUBE"; break; case TYPE_WII_GAME: - catDomain = "GAMES"; + catDomain = "WII"; break; default: catDomain = (m_plugin.GetPluginName(m_plugin.GetPluginPosition(element->settings[0]))).toUTF8(); @@ -1883,10 +1798,8 @@ void CMenu::_initCF(void) CoverFlow.addItem(&(*element), playcount, lastPlayed); } } - if(gametdb.IsLoaded()) - gametdb.CloseFile(); m_gcfg1.unload(); - if (dumpGameLst) + if(dumpGameLst) { dump.save(true); m_cfg.setBool(domain, "dump_list", false); diff --git a/source/menu/menu.hpp b/source/menu/menu.hpp index ca8c7c6c..6b26d25a 100644 --- a/source/menu/menu.hpp +++ b/source/menu/menu.hpp @@ -419,8 +419,6 @@ private: s16 m_codeBtnKey[10]; s16 m_codeBtnBack; s16 m_codeBtnErase; - s16 m_codeBtnAge; - s16 m_codeLblAge; s16 m_codeLblUser[4]; //menu_wbfs s16 m_wbfsLblTitle; @@ -492,15 +490,15 @@ private: s16 m_gameSettingsLblDM_Widescreen; s16 m_gameSettingsBtnDM_Widescreen; - - s16 m_gameSettingsLblUSB_HID; - s16 m_gameSettingsBtnUSB_HID; + + s16 m_gameSettingsLblUSB_HID; + s16 m_gameSettingsBtnUSB_HID; - s16 m_gameSettingsLblNATIVE_CTL; - s16 m_gameSettingsBtnNATIVE_CTL; + s16 m_gameSettingsLblNATIVE_CTL; + s16 m_gameSettingsBtnNATIVE_CTL; - s16 m_gameSettingsLblDeflicker; - s16 m_gameSettingsBtnDeflicker; + s16 m_gameSettingsLblDeflicker; + s16 m_gameSettingsBtnDeflicker; s16 m_gameSettingsLblGCLoader; s16 m_gameSettingsLblGCLoader_Val; @@ -1038,7 +1036,7 @@ private: void _download(string gameId = string()); void _downloadBnr(const char *gameID); bool _LangSettings(void); - void _code(void); + bool _code(char code[4], bool erase = false); void _about(bool help = false); bool _wbfsOp(WBFS_OP op); void _cfTheme(void); diff --git a/source/menu/menu_code.cpp b/source/menu/menu_code.cpp index b3c4e5cf..56d4ec36 100644 --- a/source/menu/menu_code.cpp +++ b/source/menu/menu_code.cpp @@ -7,12 +7,10 @@ void CMenu::_hideCode(bool instant) m_btnMgr.hide(m_codeBtnKey[i], instant); m_btnMgr.hide(m_codeBtnBack, instant); m_btnMgr.hide(m_codeBtnErase, instant); - m_btnMgr.hide(m_codeBtnAge, instant); m_btnMgr.hide(m_codeLblTitle, instant); for(u8 i = 0; i < ARRAY_SIZE(m_codeLblUser); ++i) if(m_codeLblUser[i] != -1) m_btnMgr.hide(m_codeLblUser[i], instant); - m_btnMgr.hide(m_codeLblAge, true); } void CMenu::_showCode(void) @@ -25,169 +23,82 @@ void CMenu::_showCode(void) for(u8 i = 0; i < ARRAY_SIZE(m_codeLblUser); ++i) if(m_codeLblUser[i] != -1) m_btnMgr.show(m_codeLblUser[i]); - m_btnMgr.hide(m_codeLblAge, true); } -void CMenu::_code(void) +bool CMenu::_code(char code[4], bool erase) { - char code[4]; - _hideConfig(); - u32 n = 0; wchar_t codeLbl[] = L"_ _ _ _"; SetupInput(); - memset(code, 0, sizeof code); + memset(code, 0, 4); m_btnMgr.setText(m_codeLblTitle, codeLbl); _showCode(); - bool ageLockMode = false; - bool modeChanged = false; - bool goBack = false; - if (!m_locked) - { - m_btnMgr.show(m_codeBtnAge); + if(erase) m_btnMgr.show(m_codeBtnErase); - } + while(!m_exit) { - int c = -1; _mainLoopCommon(); - if (BTN_HOME_PRESSED) - goBack = true; - if (WPadIR_ANY()) + if(BTN_HOME_PRESSED) + break; + else if(WPadIR_ANY()) { - if (BTN_B_PRESSED) - goBack = true; - else if (BTN_UP_PRESSED) + if(BTN_B_PRESSED) + break; + else if(BTN_UP_PRESSED) m_btnMgr.up(); - else if (BTN_DOWN_PRESSED) + else if(BTN_DOWN_PRESSED) m_btnMgr.down(); - else if (BTN_A_PRESSED) + if(BTN_A_PRESSED) { - if (m_btnMgr.selected(m_codeBtnBack)) - goBack = true; - else if (m_btnMgr.selected(m_codeBtnErase)) + if(!m_locked && m_btnMgr.selected(m_codeBtnErase)) { - goBack = true; - _cfNeedsUpdate(); - if (ageLockMode) - m_cfg.remove("GENERAL", "age_lock"); - else - { - m_cfg.remove("GENERAL", "parent_code"); - m_locked = false; - } + memset(code, 0, 4); + m_cfg.remove("GENERAL", "parent_code"); + n = 0; + m_locked = false; + break; } - else if (m_btnMgr.selected(m_codeBtnAge)) - modeChanged = true; + if(m_btnMgr.selected(m_codeBtnBack)) + break; else - for (int i = 0; i < 10; ++i) - if (m_btnMgr.selected(m_codeBtnKey[i])) + for(int i = 0; i < 10; ++i) + if(m_btnMgr.selected(m_codeBtnKey[i])) { - c = i; + codeLbl[n * 2] = 'X'; + code[n++] = '0' + i; + m_btnMgr.setText(m_codeLblTitle, codeLbl); break; } } } - else if (!ageLockMode) - { - // Map buttons to numbers - c = -1; - if (BTN_UP_PRESSED) c = 0; - else if (BTN_LEFT_PRESSED) c = 1; - else if (BTN_RIGHT_PRESSED) c = 2; - else if (BTN_DOWN_PRESSED) c = 3; - else if (BTN_MINUS_PRESSED) c = 4; - else if (BTN_PLUS_PRESSED) c = 5; - else if (BTN_A_PRESSED) c = 6; - else if (BTN_B_PRESSED) c = 7; - else if (BTN_1_PRESSED) c = 8; - else if (BTN_2_PRESSED) c = 9; - } - - if (goBack) - { - if (!ageLockMode) - break; - modeChanged = true; - goBack = false; - } - // ageLockMode allows entry of numbers 2 - 19 - // a first digit of 0 is ignored - // a first digit of 2 - 9 is taken to mean a single digit number - // a first digit of 1 will be the start of a 2 digit number - else if (c != -1 && !(ageLockMode && (n == 0 && c == 0))) - { - codeLbl[n * 2] = ageLockMode ? '0' + c : 'X'; - code[n++] = '0' + c; - m_btnMgr.setText(m_codeLblTitle, codeLbl); - } - - if (modeChanged) - { - modeChanged = false; - memset(code, 0, sizeof code); - n = 0; - ageLockMode = !ageLockMode; - - if (ageLockMode) - { - int ageLockM = m_cfg.getInt("GENERAL", "age_lock"); - if (ageLockM < 2 || ageLockM > 19) - ageLockM = 19; - m_btnMgr.hide(m_codeBtnAge, true); - wchar_t ageLbl[40]; - wcsncpy(ageLbl, (_t("cd3", L"Age Lock")).c_str(), 35); - ageLbl[35] = 0; - swprintf(ageLbl, 40, L"%ls: %d", ageLbl, ageLockM); - m_btnMgr.setText(m_codeLblAge, ageLbl); - m_btnMgr.show(m_codeLblAge); - } - else if (!m_locked) - { - m_btnMgr.show(m_codeBtnAge); - m_btnMgr.hide(m_codeLblAge, true); - } - - for (u32 i = 0; i < sizeof code; i++) - codeLbl[i*2] = (ageLockMode && i > 1) ? ' ' : '_'; - m_btnMgr.setText(m_codeLblTitle, codeLbl); - } else { - if (ageLockMode) + // Map buttons to numbers + int c = -1; + if(BTN_UP_PRESSED) c = 0; + else if(BTN_LEFT_PRESSED) c = 1; + else if(BTN_RIGHT_PRESSED) c = 2; + else if(BTN_DOWN_PRESSED) c = 3; + else if(BTN_MINUS_PRESSED) c = 4; + else if(BTN_PLUS_PRESSED) c = 5; + else if(BTN_A_PRESSED) c = 6; + else if(BTN_B_PRESSED) c = 7; + else if(BTN_1_PRESSED) c = 8; + else if(BTN_2_PRESSED) c = 9; + + if(c != -1) { - if ((n >= 2) || (n == 1 && c > 1)) - { - modeChanged = true; - m_cfg.setString("GENERAL", "age_lock", string(code, 2).c_str()); - _cfNeedsUpdate(); } - } - else if (n >= sizeof code) - { - if (m_locked) - { - if (memcmp(code, m_cfg.getString("GENERAL", "parent_code").c_str(), 4) == 0) - { - m_locked = false; - _cfNeedsUpdate(); - } - else - error(_t("cfgg25", L"Password incorrect.")); - } - else - { - m_cfg.setString("GENERAL", "parent_code", string(code, 4).c_str()); - m_locked = true; - _cfNeedsUpdate(); - } - break; + codeLbl[n * 2] = 'X'; + code[n++] = '0' + c; + m_btnMgr.setText(m_codeLblTitle, codeLbl); } } } _hideCode(); - _showConfig(); + return n == sizeof code; } void CMenu::_initCodeMenu() @@ -198,14 +109,12 @@ void CMenu::_initCodeMenu() m_codeBtnKey[0] = _addButton("CODE/0_BTN", theme.btnFont, L"0", 270, 320, 100, 50, theme.btnFontColor); m_codeBtnErase = _addButton("CODE/ERASE_BTN", theme.btnFont, L"", 20, 400, 200, 48, theme.btnFontColor); m_codeBtnBack = _addButton("CODE/BACK_BTN", theme.btnFont, L"", 420, 400, 200, 48, theme.btnFontColor); - m_codeBtnAge = _addButton("CODE/AGE_BTN", theme.btnFont, L"", 220, 400, 200, 48, theme.btnFontColor); - m_codeLblAge = _addLabel("CODE/AGE", theme.lblFont, L"", 220, 412, 200, 20, theme.lblFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE); - for (int i = 0; i < 10; ++i) + for(int i = 0; i < 10; ++i) { char *codeText = fmt_malloc("CODE/%i_BTN", i); if(codeText == NULL) continue; - if (i > 0) + if(i > 0) { int x = i - 1; int y = x / 3; @@ -219,7 +128,6 @@ void CMenu::_initCodeMenu() } _setHideAnim(m_codeBtnErase, "CODE/ERASE_BTN", 0, 0, -2.f, 0.f); _setHideAnim(m_codeBtnBack, "CODE/BACK_BTN", 0, 0, 1.f, -1.f); - _setHideAnim(m_codeBtnAge, "CODE/AGE_BTN", 0, 0, -2.f, 0.f); _hideCode(true); _textCode(); @@ -229,6 +137,5 @@ void CMenu::_textCode(void) { m_btnMgr.setText(m_codeBtnBack, _t("cd1", L"Back")); m_btnMgr.setText(m_codeBtnErase, _t("cd2", L"Erase")); - m_btnMgr.setText(m_codeBtnAge, _t("cd3", L"Age Lock")); -// m_btnMgr.setText(m_codeLblTitle, L"_ _ _ _"); + m_btnMgr.setText(m_codeLblTitle, L"_ _ _ _"); } diff --git a/source/menu/menu_config.cpp b/source/menu/menu_config.cpp index bd14096b..a9d13cf5 100644 --- a/source/menu/menu_config.cpp +++ b/source/menu/menu_config.cpp @@ -184,8 +184,31 @@ int CMenu::_config1(void) _showConfig(); CoverFlow.startCoverLoader(); } - else if ((m_btnMgr.selected(m_configBtnUnlock)) || (m_btnMgr.selected(m_configBtnSetCode))) - _code(); + else if (m_btnMgr.selected(m_configBtnUnlock)) + { + char code[4]; + _hideConfig(); + if (_code(code) && memcmp(code, m_cfg.getString("GENERAL", "parent_code", "").c_str(), 4) == 0) + { + _cfNeedsUpdate(); + m_locked = false; + } + else + error(_t("cfgg25",L"Password incorrect.")); + _showConfig(); + } + else if (m_btnMgr.selected(m_configBtnSetCode)) + { + char code[4]; + _hideConfig(); + if (_code(code, true)) + { + _cfNeedsUpdate(); + m_cfg.setString("GENERAL", "parent_code", string(code, 4).c_str()); + m_locked = true; + } + _showConfig(); + } else if ((m_btnMgr.selected(m_configBtnPartitionP) || m_btnMgr.selected(m_configBtnPartitionM)) && m_current_view != COVERFLOW_MAX) { s8 direction = m_btnMgr.selected(m_configBtnPartitionP) ? 1 : -1;