-added _flatflow to display covers not in boxmode. add boxmode=no to a plugin.ini. if all plugins selected have boxmode=no then boxmode will be set to off and the coverflow used will be _FLATFLOW.

This commit is contained in:
Fledge68 2018-09-26 13:26:01 -05:00
parent ecd02f27f4
commit e968a81322
5 changed files with 96 additions and 58 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 MiB

After

Width:  |  Height:  |  Size: 3.3 MiB

View File

@ -2187,7 +2187,25 @@ void CMenu::_initCF(void)
}
else
{
CoverFlow.setBoxMode(m_cfg.getBool("GENERAL", "box_mode", true));
m_plugin.GetEnabledPlugins(m_cfg, &enabledPluginsCount);
if(m_current_view == COVERFLOW_PLUGIN && enabledPluginsCount > 0)// 1 main source is plugin mode
{
int boxmode_cnt = 0;
for(u8 i = 0; m_plugin.PluginExist(i); ++i)
{
if(m_plugin.GetEnableStatus(m_cfg, m_plugin.getPluginMagic(i)))
{
if(m_plugin.GetBoxMode(i))
boxmode_cnt++;
}
}
if(boxmode_cnt == 0)
CoverFlow.setBoxMode(false);
else
CoverFlow.setBoxMode(true);
}
else
CoverFlow.setBoxMode(m_cfg.getBool("GENERAL", "box_mode", true));
CoverFlow.setSmallBoxMode(false);
}
CoverFlow.setCompression(m_cfg.getBool("GENERAL", "allow_texture_compression", true));

View File

@ -58,19 +58,66 @@ void CMenu::_showCF(bool refreshList)
if(!m_vid.showingWaitMessage())
_showWaitMessage();
/* create gameList */
/* create gameList based on sources selected */
_loadList();
/* autoboot stuff */
_hideWaitMessage();
/* if game list is empty display message letting user know */
wstringEx Msg;
wstringEx Pth;
if(m_gameList.empty())
{
if(m_source_cnt > 1)
{
Msg = _t("main8", L"game list empty!");
Pth = "";
}
else
{
switch(m_current_view)
{
case COVERFLOW_WII:
Msg = _t("main2", L"No games found in ");
Pth = wstringEx(fmt(wii_games_dir, DeviceName[currentPartition]));
break;
case COVERFLOW_GAMECUBE:
Msg = _t("main2", L"No games found in ");
Pth = wstringEx(fmt(gc_games_dir, DeviceName[currentPartition]));
break;
case COVERFLOW_CHANNEL:
Msg = _t("main3", L"No titles found in ");
Pth = wstringEx(fmt("%s:/%s/%s", DeviceName[currentPartition], emu_nands_dir, m_cfg.getString(CHANNEL_DOMAIN, "current_emunand").c_str()));
break;
case COVERFLOW_HOMEBREW:
Msg = _t("main4", L"No apps found in ");
Pth = wstringEx(fmt(HOMEBREW_DIR, DeviceName[currentPartition]));
break;
case COVERFLOW_PLUGIN:
m_plugin.GetEnabledPlugins(m_cfg, &enabledPluginsCount);
if(enabledPluginsCount == 0)
Msg = _t("main6", L"No plugins selected.");
else
Msg = _t("main5", L"No roms/items found.");
Pth = "";
break;
}
}
Msg.append(Pth);
m_btnMgr.setText(m_mainLblMessage, Msg);
m_btnMgr.show(m_mainLblMessage);
return;
}
/* if source menu button set to autoboot */
if(m_source_autoboot == true)
{ /* search for the requested file */
{ /* search game list for the requested title */
bool game_found = false;
for(vector<dir_discHdr>::iterator element = m_gameList.begin(); element != m_gameList.end(); ++element)
{
switch(m_autoboot_hdr.type)
{
case TYPE_CHANNEL:
//case TYPE_EMUCHANNEL:
case TYPE_WII_GAME:
case TYPE_GC_GAME:
if(strcmp(m_autoboot_hdr.id, element->id) == 0)
@ -90,7 +137,8 @@ void CMenu::_showCF(bool refreshList)
break;
}
}
if(game_found == true)
/* title found - launch it */
if(game_found == true)
{
gprintf("Game found, autobooting...\n");
_launch(&m_autoboot_hdr);
@ -98,56 +146,9 @@ void CMenu::_showCF(bool refreshList)
/* fail */
m_source_autoboot = false;
}
_hideWaitMessage();
}
wstringEx Msg;
wstringEx Pth;
if(m_gameList.empty())
{
if(m_source_cnt > 1)
{
Msg = _t("main8", L"game list empty!");
Pth = "";
}
else
{
switch(m_current_view)
{
case COVERFLOW_WII:
Msg = _t("main2", L"No games found in ");
Pth = wstringEx(fmt(wii_games_dir, DeviceName[currentPartition]));
break;
case COVERFLOW_GAMECUBE:
Msg = _t("main2", L"No games found in ");
Pth = wstringEx(fmt(gc_games_dir, DeviceName[currentPartition]));
break;
case COVERFLOW_CHANNEL:
Msg = _t("main3", L"No titles found in ");
Pth = wstringEx(fmt("%s:/%s/%s", DeviceName[currentPartition], emu_nands_dir, m_cfg.getString(CHANNEL_DOMAIN, "current_emunand").c_str()));
break;
case COVERFLOW_HOMEBREW:
Msg = _t("main4", L"No apps found in ");
Pth = wstringEx(fmt(HOMEBREW_DIR, DeviceName[currentPartition]));
break;
case COVERFLOW_PLUGIN:
m_plugin.GetEnabledPlugins(m_cfg, &enabledPluginsCount);
if(enabledPluginsCount == 0)
Msg = _t("main6", L"No plugins selected.");
else
Msg = _t("main5", L"No roms/items found.");
Pth = "";
break;
}
}
Msg.append(Pth);
m_btnMgr.setText(m_mainLblMessage, Msg);
m_btnMgr.show(m_mainLblMessage);
return;
}
/* setup for filter list and coverflow stuff */
/* setup categories and favorites for filtering the game list below */
if(refreshList && m_clearCats)// clear categories unless a source menu btn has selected one
{
// do not clear hidden categories to keep games hidden
@ -160,6 +161,7 @@ void CMenu::_showCF(bool refreshList)
if(m_cfg.getBool("GENERAL", "save_favorites_mode", false))
m_favorites = m_cfg.getBool(_domainFromView(), "favorites", false);
/* set CoverFlow domain to _COVERFLOW, _SMALLFLOW, _SIDEFLOW, _SHORTFLOW, or _FLATFLOW */
cf_domain = "_COVERFLOW";
if(!m_sourceflow && m_current_view == COVERFLOW_HOMEBREW && m_cfg.getBool(HOMEBREW_DOMAIN, "smallbox", true))
cf_domain = "_SMALLFLOW";
@ -172,11 +174,14 @@ void CMenu::_showCF(bool refreshList)
{
int sdc = 0;
int shc = 0;
int flatmode_cnt = 0;
for(u8 i = 0; m_plugin.PluginExist(i); ++i)
{
if(m_plugin.GetEnableStatus(m_cfg, m_plugin.getPluginMagic(i)))
{
if(_sideCover(m_plugin.PluginMagicWord))
if(!m_plugin.GetBoxMode(i))
flatmode_cnt++;
else if(_sideCover(m_plugin.PluginMagicWord))
sdc++;
else if(_shortCover(m_plugin.PluginMagicWord))
shc++;
@ -186,17 +191,24 @@ void CMenu::_showCF(bool refreshList)
cf_domain = "_SIDEFLOW";
else if(shc == enabledPluginsCount)
cf_domain = "_SHORTFLOW";
if(flatmode_cnt == enabledPluginsCount)
cf_domain = "_FLATFLOW";
}
}
m_numCFVersions = min(max(1, m_coverflow.getInt(cf_domain, "number_of_modes", 1)), 15);
/* get the number of layouts (modes) for the CoverFlow domain */
m_numCFVersions = min(max(1, m_coverflow.getInt(cf_domain, "number_of_modes", 1)), 15);// max layouts is 15
/* filter list and start coverflow coverloader */
/* get the current cf layout number and use it to load the data used for that layout */
_loadCFLayout(min(max(1, _getCFVersion()), (int)m_numCFVersions));
/* filter game list to create the cf cover list and start coverflow coverloader */
_initCF();
/* set the covers and titles to the positions and angles based on the cf layout */
CoverFlow.applySettings();
/* display game count unless sourceflow or homebrew */
/* display game count if not sourceflow or homebrew */
if(m_sourceflow || m_current_view == COVERFLOW_HOMEBREW)
return;

View File

@ -71,6 +71,7 @@ bool Plugin::AddPlugin(Config &plugin)
NewPlugin.romDir = plugin.getString(PLUGIN, "romDir");
NewPlugin.fileTypes = plugin.getString(PLUGIN, "fileTypes");
NewPlugin.Args = plugin.getStrings(PLUGIN, "arguments", '|');
NewPlugin.boxMode = plugin.getBool(PLUGIN, "boxmode", 1);
string PluginName = plugin.getString(PLUGIN, "displayname");
if(PluginName.size() < 2)
{
@ -155,6 +156,11 @@ u32 Plugin::GetCaseColor(u8 pos)
return Plugins[pos].caseColor;
}
bool Plugin::GetBoxMode(u8 pos)
{
return Plugins[pos].boxMode;
}
wstringEx Plugin::GetPluginName(u8 pos)
{
return Plugins[pos].DisplayName;

View File

@ -53,6 +53,7 @@ struct PluginOptions
u32 BannerSoundSize;
vector<string> Args;
wstringEx DisplayName;
bool boxMode;
};
class Plugin
@ -69,6 +70,7 @@ public:
wstringEx GetPluginName(u8 pos);
u32 getPluginMagic(u8 pos);
s8 GetPluginPosition(u32 magic);
bool GetBoxMode(u8 pos);
void init(const string& m_pluginsDir);
bool AddPlugin(Config &plugin);