mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-12-28 12:51:52 +01:00
- fix for issue #318. favorites and adult_only in gameconfig1 and categories in categories_lite will now use the platform name and game ID if using the plugin database files. if either the platform name or game ID are not available we will still use old method of plugin magic and game title. With new method if old plugin magic and game title is found it will be converted to platform name and game ID. because of this it is recommended to backup gameconfig1 and categories_lite just in case you have issues with new WFL and need to go back to old WFL.
Titlesdump.ini has also been updated to new method and will now include output of the filtered game list for plugins. Set [GENERAL] dump_list=yes before starting WFL. set it to 'no' when done dumping your lists.
This commit is contained in:
parent
4be2d6efda
commit
c4b949acab
BIN
out/boot.dol
BIN
out/boot.dol
Binary file not shown.
Before Width: | Height: | Size: 4.4 MiB After Width: | Height: | Size: 4.4 MiB |
@ -2018,88 +2018,124 @@ void CMenu::_initCF(void)
|
||||
CoverFlow.clear();
|
||||
CoverFlow.reserve(m_gameList.size());
|
||||
|
||||
string requiredCats;
|
||||
string selectedCats;
|
||||
string hiddenCats;
|
||||
char id[74];
|
||||
char catID[64];
|
||||
char cfgKey1[74];
|
||||
char cfgKey2[74];
|
||||
char catKey1[64];
|
||||
char catKey2[64];
|
||||
|
||||
// filter list based on categories and favorites
|
||||
// filter list based on categories, favorites, and adult only
|
||||
for(vector<dir_discHdr>::iterator hdr = m_gameList.begin(); hdr != m_gameList.end(); ++hdr)
|
||||
{
|
||||
requiredCats = m_cat.getString("GENERAL", "required_categories", "");
|
||||
selectedCats = m_cat.getString("GENERAL", "selected_categories", "");
|
||||
hiddenCats = m_cat.getString("GENERAL", "hidden_categories", "");
|
||||
|
||||
const char *favDomain = "FAVORITES";
|
||||
const char *adultDomain = "ADULTONLY";
|
||||
|
||||
memset(id, 0, 74);
|
||||
memset(catID, 0, 64);
|
||||
|
||||
if(m_sourceflow)
|
||||
if(m_sourceflow && !m_source.getBool(sfmt("button_%i", hdr->settings[0]), "hidden", false))
|
||||
{
|
||||
if(m_source.getBool(sfmt("button_%i", hdr->settings[0]), "hidden", false) == false)
|
||||
CoverFlow.addItem(&(*hdr), 0, 0);
|
||||
CoverFlow.addItem(&(*hdr), 0, 0);// no filtering for sourceflow
|
||||
continue;
|
||||
}
|
||||
else if(hdr->type == TYPE_HOMEBREW)
|
||||
|
||||
string favDomain = "FAVORITES";
|
||||
string adultDomain = "ADULTONLY";
|
||||
if(hdr->type == TYPE_PLUGIN)
|
||||
{
|
||||
wcstombs(id, hdr->title, 63);
|
||||
strcpy(catID, id);
|
||||
favDomain = "FAVORITES_PLUGINS";
|
||||
adultDomain = "ADULTONLY_PLUGINS";
|
||||
}
|
||||
|
||||
// 1 is the one used. 2 is a temp copied to 1.
|
||||
string catDomain1 = "";
|
||||
string catDomain2 = "";
|
||||
memset(catKey1, 0, 64);
|
||||
memset(catKey2, 0, 64);
|
||||
memset(cfgKey1, 0, 74);
|
||||
memset(cfgKey2, 0, 74);
|
||||
|
||||
if(hdr->type == TYPE_HOMEBREW)
|
||||
wcstombs(cfgKey1, hdr->title, 63);// uses title which is the folder name in apps.
|
||||
else if(hdr->type == TYPE_PLUGIN)
|
||||
{
|
||||
if(m_cat.hasDomain("PLUGINS"))// if using new style categories_lite.ini
|
||||
strncpy(m_plugin.PluginMagicWord, fmt("%08x", hdr->settings[0]), 8);
|
||||
|
||||
// old pre 5.4.4 method which uses plugin magic/title of game
|
||||
if(strrchr(hdr->path, '/') != NULL)
|
||||
wcstombs(catKey1, hdr->title, 63);
|
||||
else
|
||||
memcpy(catKey1, hdr->path, 63);// scummvm
|
||||
strcpy(cfgKey1, fmt("%s/%s", m_plugin.PluginMagicWord, catKey1));
|
||||
|
||||
// if game has an id from the plugin database we use the new method which uses platform name/id
|
||||
if(strcmp(hdr->id, "PLUGIN") != 0 && !m_platform.getString("PLUGINS", m_plugin.PluginMagicWord, "").empty())
|
||||
{
|
||||
strcpy(cfgKey2, fmt("%s/%s", m_platform.getString("PLUGINS", m_plugin.PluginMagicWord).c_str(), hdr->id));
|
||||
if(m_gcfg1.has(favDomain, cfgKey1) && !m_gcfg1.has(favDomain, cfgKey2))// convert old [DOMAIN] key= to new [DOMAIN] key=
|
||||
{
|
||||
m_gcfg1.setString(favDomain, cfgKey2, m_gcfg1.getString(favDomain, cfgKey1));
|
||||
m_gcfg1.remove(favDomain, cfgKey1);// remove old method from cfg1
|
||||
}
|
||||
if(m_gcfg1.has(adultDomain, cfgKey1) && !m_gcfg1.has(adultDomain, cfgKey2))// convert old [DOMAIN] key= to new [DOMAIN] key=
|
||||
{
|
||||
m_gcfg1.setString(adultDomain, cfgKey2, m_gcfg1.getString(adultDomain, cfgKey1));
|
||||
m_gcfg1.remove(adultDomain, cfgKey1);// remove old method from cfg1
|
||||
}
|
||||
strcpy(cfgKey1, cfgKey2);// copy 2 temp to 1 to use.
|
||||
}
|
||||
}
|
||||
else // wii, gc, channels
|
||||
strcpy(cfgKey1, hdr->id);
|
||||
|
||||
if((!m_favorites || m_gcfg1.getBool(favDomain, cfgKey1, false))
|
||||
&& (!m_locked || !m_gcfg1.getBool(adultDomain, cfgKey1, false)))
|
||||
{
|
||||
string requiredCats = m_cat.getString("GENERAL", "required_categories", "");
|
||||
string selectedCats = m_cat.getString("GENERAL", "selected_categories", "");
|
||||
string hiddenCats = m_cat.getString("GENERAL", "hidden_categories", "");
|
||||
|
||||
if(hdr->type == TYPE_PLUGIN && m_cat.hasDomain("PLUGINS"))// if using the optional PLUGINS domain for categories_lite.ini
|
||||
{
|
||||
requiredCats = m_cat.getString("PLUGINS", "required_categories", "");
|
||||
selectedCats = m_cat.getString("PLUGINS", "selected_categories", "");
|
||||
hiddenCats = m_cat.getString("PLUGINS", "hidden_categories", "");
|
||||
}
|
||||
|
||||
strncpy(m_plugin.PluginMagicWord, fmt("%08x", hdr->settings[0]), 8);
|
||||
if(strrchr(hdr->path, '/') != NULL)
|
||||
wcstombs(catID, hdr->title, 63);
|
||||
else
|
||||
strncpy(catID, hdr->path, 63);// scummvm
|
||||
strcpy(id, m_plugin.PluginMagicWord);
|
||||
strcat(id, fmt("/%s", catID));
|
||||
favDomain = "FAVORITES_PLUGINS";
|
||||
adultDomain = "ADULTONLY_PLUGINS";
|
||||
}
|
||||
else // wii, gc, channels
|
||||
{
|
||||
strcpy(id, hdr->id);
|
||||
strcpy(catID, id);
|
||||
}
|
||||
|
||||
u8 numReqCats = requiredCats.length();
|
||||
u8 numSelCats = selectedCats.length();
|
||||
u8 numHidCats = hiddenCats.length();
|
||||
|
||||
if((!m_favorites || m_gcfg1.getBool(favDomain, id, false))
|
||||
&& (!m_locked || !m_gcfg1.getBool(adultDomain, id, false)))
|
||||
{
|
||||
string catDomain = "";
|
||||
u8 numReqCats = requiredCats.length();
|
||||
u8 numSelCats = selectedCats.length();
|
||||
u8 numHidCats = hiddenCats.length();
|
||||
|
||||
if(hdr->type == TYPE_CHANNEL)
|
||||
catDomain = "NAND";
|
||||
catDomain1 = "NAND";
|
||||
else if(hdr->type == TYPE_EMUCHANNEL)
|
||||
catDomain = "CHANNELS";
|
||||
catDomain1 = "CHANNELS";
|
||||
else if(hdr->type == TYPE_GC_GAME)
|
||||
catDomain = "GAMECUBE";
|
||||
catDomain1 = "GAMECUBE";
|
||||
else if(hdr->type == TYPE_WII_GAME)
|
||||
catDomain = "WII";
|
||||
catDomain1 = "WII";
|
||||
else if(hdr->type == TYPE_HOMEBREW)
|
||||
catDomain = "HOMEBREW";
|
||||
else
|
||||
catDomain = m_plugin.PluginMagicWord;
|
||||
catDomain1 = "HOMEBREW";
|
||||
else //hdr->type == TYPE_PLUGIN
|
||||
{
|
||||
// old categories method use [MAGIC] and game title as the key.
|
||||
catDomain1 = m_plugin.PluginMagicWord;
|
||||
// catKey1 already set above
|
||||
|
||||
// if game has an id from the plugin database we use the new method which uses [platform name] and id as the key
|
||||
if(strcmp(hdr->id, "PLUGIN") != 0 && !m_platform.getString("PLUGINS", m_plugin.PluginMagicWord, "").empty())
|
||||
{
|
||||
catDomain2 = m_platform.getString("PLUGINS", m_plugin.PluginMagicWord);
|
||||
strcpy(catKey2, hdr->id);
|
||||
if(m_cat.has(catDomain1, catKey1) && !m_cat.has(catDomain2, catKey2))// convert old [DOMAIN] key= to new [DOMAIN] key=
|
||||
{
|
||||
m_cat.setString(catDomain2, catKey2, m_cat.getString(catDomain1, catKey1));
|
||||
m_cat.remove(catDomain1, catKey1);// remove old method from categories cfg
|
||||
}
|
||||
strcpy(catKey1, catKey2);// copy 2 temp to 1 to use.
|
||||
catDomain1 = catDomain2;
|
||||
}
|
||||
}
|
||||
|
||||
if(numReqCats != 0 || numSelCats != 0 || numHidCats != 0) // if all 0 skip checking cats and show all games
|
||||
{
|
||||
string idCats= m_cat.getString(catDomain, catID, "");
|
||||
string idCats= m_cat.getString(catDomain1, catKey1, "");
|
||||
u8 numIdCats = idCats.length();
|
||||
if(numIdCats == 0)
|
||||
m_cat.remove(catDomain, catID);
|
||||
m_cat.remove(catDomain1, catKey1);
|
||||
bool inaCat = false;
|
||||
bool inHiddenCat = false;
|
||||
int reqMatch = 0;
|
||||
@ -2162,41 +2198,23 @@ void CMenu::_initCF(void)
|
||||
}
|
||||
}
|
||||
|
||||
if(dumpGameLst && !NoGameID(hdr->type))
|
||||
{
|
||||
const char *domain = NULL;
|
||||
switch(hdr->type)
|
||||
{
|
||||
case TYPE_CHANNEL:
|
||||
domain = "NAND";
|
||||
break;
|
||||
case TYPE_EMUCHANNEL:
|
||||
domain = "CHANNELS";
|
||||
break;
|
||||
case TYPE_GC_GAME:
|
||||
domain = "GAMECUBE";
|
||||
break;
|
||||
default:
|
||||
domain = "WII";
|
||||
break;
|
||||
}
|
||||
dump.setWString(domain, id, hdr->title);
|
||||
}
|
||||
if(dumpGameLst && (!NoGameID(hdr->type) || (hdr->type == TYPE_PLUGIN && strcmp(hdr->id, "PLUGIN") != 0)))
|
||||
dump.setWString(catDomain1, catKey1, hdr->title);
|
||||
|
||||
if(hdr->type == TYPE_PLUGIN && m_plugin.GetEnabledStatus(m_plugin.GetPluginPosition(hdr->settings[0])))
|
||||
CoverFlow.addItem(&(*hdr), 0, 0);
|
||||
else
|
||||
{
|
||||
int playcount = m_gcfg1.getInt("PLAYCOUNT", id, 0);
|
||||
unsigned int lastPlayed = m_gcfg1.getUInt("LASTPLAYED", id, 0);
|
||||
int playcount = m_gcfg1.getInt("PLAYCOUNT", cfgKey1, 0);
|
||||
unsigned int lastPlayed = m_gcfg1.getUInt("LASTPLAYED", cfgKey1, 0);
|
||||
CoverFlow.addItem(&(*hdr), playcount, lastPlayed);
|
||||
}
|
||||
}
|
||||
/* remove them if false to keep file short */
|
||||
if(!m_gcfg1.getBool(favDomain, id))
|
||||
m_gcfg1.remove(favDomain, id);
|
||||
if(!m_gcfg1.getBool(adultDomain, id))
|
||||
m_gcfg1.remove(adultDomain, id);
|
||||
if(!m_gcfg1.getBool(favDomain, cfgKey1))
|
||||
m_gcfg1.remove(favDomain, cfgKey1);
|
||||
if(!m_gcfg1.getBool(adultDomain, cfgKey1))
|
||||
m_gcfg1.remove(adultDomain, cfgKey1);
|
||||
}
|
||||
|
||||
if(CoverFlow.empty())
|
||||
@ -2208,7 +2226,7 @@ void CMenu::_initCF(void)
|
||||
if(dumpGameLst)
|
||||
{
|
||||
dump.save(true);
|
||||
m_cfg.setBool("GENERAL", "dump_list", false);
|
||||
//m_cfg.setBool("GENERAL", "dump_list", false);
|
||||
}
|
||||
|
||||
/*********************** sort coverflow list ***********************/
|
||||
|
@ -14,7 +14,7 @@ TexData m_categoryBg;
|
||||
vector<char> m_categories;
|
||||
static u8 curPage;
|
||||
char id[64];
|
||||
const char *catDomain = NULL;
|
||||
string catDomain;
|
||||
bool gameSet;
|
||||
string genDomain;
|
||||
|
||||
@ -134,6 +134,7 @@ void CMenu::_updateCatCheckboxes(void)
|
||||
void CMenu::_getGameCategories(void)
|
||||
{
|
||||
const dir_discHdr *hdr = CoverFlow.getHdr();
|
||||
/* get the domain text [TEXT] */
|
||||
switch(hdr->type)
|
||||
{
|
||||
case TYPE_CHANNEL:
|
||||
@ -152,20 +153,27 @@ void CMenu::_getGameCategories(void)
|
||||
catDomain = "WII";
|
||||
break;
|
||||
default:
|
||||
catDomain = m_plugin.PluginMagicWord;
|
||||
if(strcmp(hdr->id, "PLUGIN") != 0 && !m_platform.getString("PLUGINS", m_plugin.PluginMagicWord, "").empty())
|
||||
catDomain = m_platform.getString("PLUGINS", m_plugin.PluginMagicWord);// console/platform from platform.ini
|
||||
else
|
||||
catDomain = m_plugin.PluginMagicWord;// no platform.ini - we use plugin magic
|
||||
}
|
||||
|
||||
/* get KEY text (before =) */
|
||||
memset(id, 0, 64);
|
||||
if(NoGameID(hdr->type))
|
||||
if(hdr->type == TYPE_HOMEBREW)
|
||||
wcstombs(id, hdr->title, sizeof(id) - 1);//we use title(folder) because no ID and filenames are all boot.dol or boot.elf
|
||||
else if(hdr->type == TYPE_PLUGIN && strcmp(hdr->id, "PLUGIN") == 0)// no ID from plugin database files
|
||||
{
|
||||
if(strrchr(hdr->path, '/') != NULL)
|
||||
wcstombs(id, hdr->title, sizeof(id) - 1);
|
||||
wcstombs(id, hdr->title, sizeof(id) - 1);// without ID we can't use database files. title is the rom filename without extension or custom title.
|
||||
else
|
||||
strcpy(id, hdr->path);// scummvm
|
||||
memcpy(id, hdr->path, 63);// scummvm
|
||||
}
|
||||
else
|
||||
strcpy(id, hdr->id);
|
||||
strcpy(id, hdr->id);// wii, gc, channels, and plugin games with an ID from database files
|
||||
|
||||
/* get the game's categories uing the domain and key */
|
||||
const char *gameCats = m_cat.getString(catDomain, id, "").c_str();
|
||||
if(strlen(gameCats) > 0)
|
||||
{
|
||||
|
@ -162,9 +162,18 @@ void CMenu::_hideConfigGame(bool instant)
|
||||
void CMenu::_showConfigGame()
|
||||
{
|
||||
vector<string> custom_servers = stringToVector(m_cfg.getString("custom_servers", "servers"), '|');
|
||||
|
||||
bool b;
|
||||
string adultDomain;
|
||||
if(GameHdr->type == TYPE_PLUGIN)
|
||||
adultDomain = "ADULTONLY_PLUGINS";
|
||||
else
|
||||
adultDomain = "ADULTONLY";
|
||||
|
||||
u8 i;
|
||||
string id;
|
||||
char gameTitle[64];
|
||||
memset(gameTitle, 0 , 64);
|
||||
|
||||
if(GameHdr->type == TYPE_HOMEBREW)
|
||||
{
|
||||
@ -174,18 +183,20 @@ void CMenu::_showConfigGame()
|
||||
else if(GameHdr->type == TYPE_PLUGIN)
|
||||
{
|
||||
strncpy(m_plugin.PluginMagicWord, fmt("%08x", GameHdr->settings[0]), 8);
|
||||
if(strrchr(GameHdr->path, '/') != NULL)
|
||||
// if game has an id from the plugin database we use the new method which uses platform name/id
|
||||
if(strcmp(GameHdr->id, "PLUGIN") != 0 && !m_platform.getString("PLUGINS", m_plugin.PluginMagicWord, "").empty())
|
||||
id =sfmt("%s/%s", m_platform.getString("PLUGINS", m_plugin.PluginMagicWord).c_str(), GameHdr->id);
|
||||
else // old pre 5.4.4 method which uses plugin magic/title of game
|
||||
{
|
||||
wcstombs(gameTitle, GameHdr->title, 63);
|
||||
id = string(m_plugin.PluginMagicWord) + "/" + string(gameTitle);
|
||||
if(strrchr(GameHdr->path, '/') != NULL)
|
||||
wcstombs(gameTitle, GameHdr->title, 63);
|
||||
else
|
||||
memcpy(gameTitle, GameHdr->path, 63);// scummvm
|
||||
id = sfmt("%s/%s", m_plugin.PluginMagicWord, gameTitle);
|
||||
}
|
||||
else
|
||||
id = string(m_plugin.PluginMagicWord) + "/" + GameHdr->path;
|
||||
}
|
||||
else
|
||||
{
|
||||
id = GameHdr->id;
|
||||
}
|
||||
|
||||
_setBg(m_gameSettingsBg, m_gameSettingsBg);
|
||||
for(i = 0; i < ARRAY_SIZE(m_gameSettingsLblUser); ++i)
|
||||
@ -203,10 +214,10 @@ void CMenu::_showConfigGame()
|
||||
{
|
||||
m_configGameMaxPgs = 1;
|
||||
m_btnMgr.setText(m_configLbl1, _t("cfgg58", L"Adult only"));
|
||||
if(GameHdr->type == TYPE_PLUGIN)
|
||||
m_btnMgr.setText(m_configBtn1, m_gcfg1.getBool("ADULTONLY_PLUGINS", id, false) ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
else
|
||||
m_btnMgr.setText(m_configBtn1, m_gcfg1.getBool("ADULTONLY", id, false) ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
b = m_gcfg1.getBool(adultDomain, id, false);
|
||||
if(!b)
|
||||
m_gcfg1.remove(adultDomain, id);
|
||||
m_btnMgr.setText(m_configBtn1, b ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
m_btnMgr.show(m_configLbl1);
|
||||
m_btnMgr.show(m_configBtn1);
|
||||
|
||||
@ -228,7 +239,10 @@ void CMenu::_showConfigGame()
|
||||
if(m_configGamePage == 1)
|
||||
{
|
||||
m_btnMgr.setText(m_configLbl1, _t("cfgg58", L"Adult only"));
|
||||
m_btnMgr.setText(m_configBtn1, m_gcfg1.getBool("ADULTONLY", id, false) ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
b = m_gcfg1.getBool(adultDomain, id, false);
|
||||
if(!b)
|
||||
m_gcfg1.remove(adultDomain, id);
|
||||
m_btnMgr.setText(m_configBtn1, b ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
|
||||
m_btnMgr.setText(m_configLbl2, _t("cfgg10", L"IOS"));
|
||||
i = m_gcfg2.getUInt(id, "ios", 0);
|
||||
@ -430,10 +444,16 @@ void CMenu::_configGame(const dir_discHdr *hdr, bool disc)
|
||||
vector<string> custom_servers = stringToVector(m_cfg.getString("custom_servers", "servers"), '|');
|
||||
m_gcfg2.load(fmt("%s/" GAME_SETTINGS2_FILENAME, m_settingsDir.c_str()));
|
||||
GameHdr = hdr;// set for global use in other fuctions
|
||||
string adultDomain;
|
||||
if(hdr->type == TYPE_PLUGIN)
|
||||
adultDomain = "ADULTONLY_PLUGINS";
|
||||
else
|
||||
adultDomain = "ADULTONLY";
|
||||
u8 i;
|
||||
string id;
|
||||
//s8 direction;
|
||||
char gameTitle[64];
|
||||
memset(gameTitle, 0 , 64);
|
||||
|
||||
if(GameHdr->type == TYPE_HOMEBREW)
|
||||
{
|
||||
@ -443,18 +463,20 @@ void CMenu::_configGame(const dir_discHdr *hdr, bool disc)
|
||||
else if(GameHdr->type == TYPE_PLUGIN)
|
||||
{
|
||||
strncpy(m_plugin.PluginMagicWord, fmt("%08x", GameHdr->settings[0]), 8);
|
||||
if(strrchr(GameHdr->path, '/') != NULL)
|
||||
// if game has an id from the plugin database we use the new method which uses platform name/id
|
||||
if(strcmp(GameHdr->id, "PLUGIN") != 0 && !m_platform.getString("PLUGINS", m_plugin.PluginMagicWord, "").empty())
|
||||
id =sfmt("%s/%s", m_platform.getString("PLUGINS", m_plugin.PluginMagicWord).c_str(), GameHdr->id);
|
||||
else // old pre 5.4.4 method which uses plugin magic/title of game
|
||||
{
|
||||
wcstombs(gameTitle, GameHdr->title, 63);
|
||||
id = string(m_plugin.PluginMagicWord) + "/" + string(gameTitle);
|
||||
if(strrchr(GameHdr->path, '/') != NULL)
|
||||
wcstombs(gameTitle, GameHdr->title, 63);
|
||||
else
|
||||
memcpy(gameTitle, GameHdr->path, 63);// scummvm
|
||||
id = sfmt("%s/%s", m_plugin.PluginMagicWord, gameTitle);
|
||||
}
|
||||
else
|
||||
id = string(m_plugin.PluginMagicWord) + "/" + GameHdr->path;
|
||||
}
|
||||
else
|
||||
{
|
||||
id = GameHdr->id;
|
||||
}
|
||||
|
||||
m_configGamePage = 1;
|
||||
_showConfigGame();
|
||||
@ -502,11 +524,11 @@ void CMenu::_configGame(const dir_discHdr *hdr, bool disc)
|
||||
}
|
||||
else
|
||||
{
|
||||
if(GameHdr->type == TYPE_PLUGIN)
|
||||
m_gcfg1.setBool("ADULTONLY_PLUGINS", id, !m_gcfg1.getBool("ADULTONLY_PLUGINS", id, false));
|
||||
else
|
||||
m_gcfg1.setBool("ADULTONLY", id, !m_gcfg1.getBool("ADULTONLY", id, false));
|
||||
m_btnMgr.setText(m_configBtn1, m_gcfg1.getBool("ADULTONLY", id, false) ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
m_gcfg1.setBool(adultDomain, id, !m_gcfg1.getBool(adultDomain, id, false));
|
||||
bool b = m_gcfg1.getBool(adultDomain, id);
|
||||
if(!b)
|
||||
m_gcfg1.remove(adultDomain, id);
|
||||
m_btnMgr.setText(m_configBtn1, b ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
}
|
||||
}
|
||||
else if(m_btnMgr.selected(m_configBtn2))
|
||||
|
@ -208,27 +208,31 @@ void CMenu::_game(bool launch)
|
||||
memcpy(hdr, CoverFlow.getHdr(), sizeof(dir_discHdr));
|
||||
_setCurrentItem(hdr);
|
||||
|
||||
char id[74];
|
||||
char catID[64];
|
||||
memset(id, 0, 74);
|
||||
memset(catID, 0, 64);
|
||||
char gcfg1Key[74];
|
||||
char gameTitle[64];
|
||||
memset(gcfg1Key, 0, sizeof(gcfg1Key));
|
||||
memset(gameTitle, 0, sizeof(gameTitle));
|
||||
|
||||
if(hdr->type == TYPE_HOMEBREW)
|
||||
wcstombs(id, hdr->title, 63);
|
||||
wcstombs(gcfg1Key, hdr->title, 63);// uses title which is the folder name in apps.
|
||||
else if(hdr->type == TYPE_PLUGIN)
|
||||
{
|
||||
strncpy(m_plugin.PluginMagicWord, fmt("%08x", hdr->settings[0]), 8);
|
||||
if(strrchr(hdr->path, '/') != NULL)
|
||||
wcstombs(catID, hdr->title, 63);
|
||||
else
|
||||
strcpy(catID, hdr->path);// scummvm
|
||||
strcpy(id, m_plugin.PluginMagicWord);
|
||||
strcat(id, fmt("/%s", catID));
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy(id, hdr->id);
|
||||
|
||||
// if game has an id from the plugin database we use the new method which uses platform name/id
|
||||
if(strcmp(hdr->id, "PLUGIN") != 0 && !m_platform.getString("PLUGINS", m_plugin.PluginMagicWord, "").empty())
|
||||
strncpy(gcfg1Key, fmt("%s/%s", m_platform.getString("PLUGINS", m_plugin.PluginMagicWord).c_str(), hdr->id), 73);
|
||||
else // old pre 5.4.4 method which uses plugin magic/title of game
|
||||
{
|
||||
if(strrchr(hdr->path, '/') != NULL)
|
||||
wcstombs(gameTitle, hdr->title, 63);
|
||||
else
|
||||
memcpy(gameTitle, hdr->path, 63);// scummvm
|
||||
strncpy(gcfg1Key, fmt("%s/%s", m_plugin.PluginMagicWord, gameTitle), 73);
|
||||
}
|
||||
}
|
||||
else // wii, gc, channels
|
||||
strcpy(gcfg1Key, hdr->id);
|
||||
|
||||
m_zoom_banner = m_cfg.getBool(_domainFromView(), "show_full_banner", false);
|
||||
|
||||
@ -432,9 +436,17 @@ void CMenu::_game(bool launch)
|
||||
else if(m_btnMgr.selected(m_gameBtnFavoriteOn) || m_btnMgr.selected(m_gameBtnFavoriteOff))
|
||||
{
|
||||
if(hdr->type == TYPE_PLUGIN)
|
||||
m_gcfg1.setBool("FAVORITES_PLUGINS", id, !m_gcfg1.getBool("FAVORITES_PLUGINS", id, false));
|
||||
{
|
||||
m_gcfg1.setBool("FAVORITES_PLUGINS", gcfg1Key, !m_gcfg1.getBool("FAVORITES_PLUGINS", gcfg1Key, false));
|
||||
if(!m_gcfg1.getBool("FAVORITES_PLUGINS", gcfg1Key, false))
|
||||
m_gcfg1.remove("FAVORITES_PLUGINS", gcfg1Key);
|
||||
}
|
||||
else
|
||||
m_gcfg1.setBool("FAVORITES", id, !m_gcfg1.getBool("FAVORITES", id, false));
|
||||
{
|
||||
m_gcfg1.setBool("FAVORITES", gcfg1Key, !m_gcfg1.getBool("FAVORITES", gcfg1Key, false));
|
||||
if(!m_gcfg1.getBool("FAVORITES", gcfg1Key, false))
|
||||
m_gcfg1.remove("FAVORITES", gcfg1Key);
|
||||
}
|
||||
if(m_favorites)
|
||||
m_refreshGameList = true;
|
||||
}
|
||||
@ -549,25 +561,30 @@ void CMenu::_game(bool launch)
|
||||
memcpy(hdr, CoverFlow.getHdr(), sizeof(dir_discHdr));// get new game header
|
||||
_setCurrentItem(hdr);
|
||||
|
||||
memset(id, 0, 74);
|
||||
memset(catID, 0, 64);
|
||||
|
||||
memset(gcfg1Key, 0, sizeof(gcfg1Key));
|
||||
memset(gameTitle, 0, sizeof(gameTitle));
|
||||
|
||||
if(hdr->type == TYPE_HOMEBREW)
|
||||
wcstombs(id, hdr->title, 64);
|
||||
wcstombs(gcfg1Key, hdr->title, 63);// uses title which is the folder name in apps.
|
||||
else if(hdr->type == TYPE_PLUGIN)
|
||||
{
|
||||
strncpy(m_plugin.PluginMagicWord, fmt("%08x", hdr->settings[0]), 8);
|
||||
if(strrchr(hdr->path, '/') != NULL)
|
||||
wcstombs(catID, hdr->title, 63);
|
||||
else
|
||||
strcpy(catID, hdr->path);// scummvm
|
||||
strcpy(id, m_plugin.PluginMagicWord);
|
||||
strcat(id, fmt("/%s", catID));
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy(id, hdr->id);
|
||||
|
||||
// if game has an id from the plugin database we use the new method which uses platform name/id
|
||||
if(strcmp(hdr->id, "PLUGIN") != 0 && !m_platform.getString("PLUGINS", m_plugin.PluginMagicWord, "").empty())
|
||||
strncpy(gcfg1Key, fmt("%s/%s", m_platform.getString("PLUGINS", m_plugin.PluginMagicWord).c_str(), hdr->id), 73);
|
||||
else // old pre 5.4.4 method which uses plugin magic/title of game
|
||||
{
|
||||
if(strrchr(hdr->path, '/') != NULL)
|
||||
wcstombs(gameTitle, hdr->title, 63);
|
||||
else
|
||||
memcpy(gameTitle, hdr->path, 63);// scummvm
|
||||
strncpy(gcfg1Key, fmt("%s/%s", m_plugin.PluginMagicWord, gameTitle), 73);
|
||||
}
|
||||
}
|
||||
else // wii, gc, channels
|
||||
strcpy(gcfg1Key, hdr->id);
|
||||
|
||||
if(m_newGame)
|
||||
{
|
||||
m_newGame = false;
|
||||
@ -614,9 +631,15 @@ void CMenu::_game(bool launch)
|
||||
m_btnMgr.show(m_gameBtnCategories);
|
||||
bool b;
|
||||
if(hdr->type == TYPE_PLUGIN)
|
||||
b = m_gcfg1.getBool("FAVORITES_PLUGINS", id, false);
|
||||
{
|
||||
b = m_gcfg1.getBool("FAVORITES_PLUGINS", gcfg1Key, false);
|
||||
if(!b) m_gcfg1.remove("FAVORITES_PLUGINS", gcfg1Key);
|
||||
}
|
||||
else
|
||||
b = m_gcfg1.getBool("FAVORITES", id, false);
|
||||
{
|
||||
b = m_gcfg1.getBool("FAVORITES", gcfg1Key, false);
|
||||
if(!b) m_gcfg1.remove("FAVORITES", gcfg1Key);
|
||||
}
|
||||
m_btnMgr.show(b ? m_gameBtnFavoriteOn : m_gameBtnFavoriteOff);
|
||||
m_btnMgr.hide(b ? m_gameBtnFavoriteOff : m_gameBtnFavoriteOn);
|
||||
for(u8 i = 0; i < ARRAY_SIZE(m_gameLblUser); ++i)
|
||||
|
Loading…
Reference in New Issue
Block a user