2012-05-05 22:07:54 +02:00
|
|
|
#include "menu.hpp"
|
|
|
|
|
|
|
|
#include <string.h>
|
|
|
|
#include <gccore.h>
|
2012-10-13 00:25:22 +02:00
|
|
|
#include <cmath>
|
2012-05-05 22:07:54 +02:00
|
|
|
|
2012-10-13 00:25:22 +02:00
|
|
|
u8 m_max_plugins = 0;
|
|
|
|
u8 Plugin_curPage = 1;
|
|
|
|
u8 Plugin_Pages = 1;
|
2012-05-05 22:07:54 +02:00
|
|
|
|
2012-05-05 23:36:30 +02:00
|
|
|
// Plugin menu
|
2012-09-13 16:54:17 +02:00
|
|
|
s16 m_pluginLblPage;
|
|
|
|
s16 m_pluginBtnPageM;
|
|
|
|
s16 m_pluginBtnPageP;
|
|
|
|
s16 m_pluginBtnBack;
|
|
|
|
s16 m_pluginLblTitle;
|
2012-10-04 16:35:08 +02:00
|
|
|
s16 m_pluginLblCat[11];
|
|
|
|
s16 m_pluginBtn[11];
|
|
|
|
s16 m_pluginBtnCat[11];
|
|
|
|
s16 m_pluginBtnCats[11];
|
2012-09-13 16:54:17 +02:00
|
|
|
s16 m_pluginLblUser[4];
|
2012-12-28 15:19:40 +01:00
|
|
|
TexData m_pluginBg;
|
2012-05-05 23:36:30 +02:00
|
|
|
|
2012-05-05 22:07:54 +02:00
|
|
|
void CMenu::_hidePluginSettings(bool instant)
|
|
|
|
{
|
|
|
|
m_btnMgr.hide(m_pluginLblTitle, instant);
|
|
|
|
m_btnMgr.hide(m_pluginBtnBack, instant);
|
|
|
|
m_btnMgr.hide(m_pluginLblPage, instant);
|
|
|
|
m_btnMgr.hide(m_pluginBtnPageM, instant);
|
|
|
|
m_btnMgr.hide(m_pluginBtnPageP, instant);
|
2012-07-05 15:15:23 +02:00
|
|
|
for(u8 i = 0; i < ARRAY_SIZE(m_pluginLblUser); ++i)
|
2012-05-05 22:07:54 +02:00
|
|
|
{
|
2012-09-13 16:54:17 +02:00
|
|
|
if(m_pluginLblUser[i] != -1)
|
2012-05-05 22:07:54 +02:00
|
|
|
m_btnMgr.hide(m_pluginLblUser[i], instant);
|
|
|
|
}
|
2012-10-04 16:35:08 +02:00
|
|
|
for(u8 i = 0; i < 11; ++i)
|
2012-05-05 22:07:54 +02:00
|
|
|
{
|
|
|
|
m_btnMgr.hide(m_pluginLblCat[i]);
|
|
|
|
m_btnMgr.hide(m_pluginBtn[i]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void CMenu::_showPluginSettings(void)
|
|
|
|
{
|
|
|
|
_setBg(m_pluginBg, m_pluginBg);
|
2012-07-05 15:15:23 +02:00
|
|
|
for(u8 i = 0; i < ARRAY_SIZE(m_pluginLblUser); ++i)
|
2012-05-05 22:07:54 +02:00
|
|
|
{
|
2012-09-13 16:54:17 +02:00
|
|
|
if(m_pluginLblUser[i] != -1)
|
2012-05-05 22:07:54 +02:00
|
|
|
m_btnMgr.show(m_pluginLblUser[i]);
|
|
|
|
}
|
|
|
|
m_btnMgr.show(m_pluginLblTitle);
|
|
|
|
m_btnMgr.show(m_pluginBtnBack);
|
|
|
|
_updatePluginCheckboxes();
|
|
|
|
}
|
|
|
|
|
2012-10-04 16:35:08 +02:00
|
|
|
void CMenu::_updatePluginText(void)
|
|
|
|
{
|
|
|
|
u32 IteratorHelp = (Plugin_curPage - 1) * 10;
|
|
|
|
for(u8 i = 1; i < min(IteratorHelp+10, (u32)m_max_plugins)-IteratorHelp+1; i++)
|
|
|
|
m_btnMgr.setText(m_pluginLblCat[i], m_plugin.GetPluginName(i+IteratorHelp-1));
|
|
|
|
}
|
|
|
|
|
2012-05-05 22:07:54 +02:00
|
|
|
void CMenu::_updatePluginCheckboxes(void)
|
|
|
|
{
|
2012-05-05 23:36:30 +02:00
|
|
|
if(m_max_plugins > 10)
|
2012-05-05 22:07:54 +02:00
|
|
|
{
|
2012-10-04 16:35:08 +02:00
|
|
|
m_btnMgr.setText(m_pluginLblPage, wfmt(L"%i / %i", Plugin_curPage, Plugin_Pages));
|
2012-05-05 22:07:54 +02:00
|
|
|
m_btnMgr.show(m_pluginLblPage);
|
|
|
|
m_btnMgr.show(m_pluginBtnPageM);
|
|
|
|
m_btnMgr.show(m_pluginBtnPageP);
|
|
|
|
}
|
2012-10-04 16:35:08 +02:00
|
|
|
for(int i = 0; i < 11; ++i)
|
2012-05-05 22:07:54 +02:00
|
|
|
{
|
|
|
|
m_btnMgr.hide(m_pluginBtn[i]);
|
|
|
|
m_btnMgr.hide(m_pluginLblCat[i]);
|
|
|
|
}
|
2013-09-04 22:58:22 +02:00
|
|
|
const vector<bool> &EnabledPlugins = m_plugin.GetEnabledPlugins(m_cfg, &enabledPluginsCount);
|
2012-10-04 16:35:08 +02:00
|
|
|
/* ALL Button */
|
2012-10-13 00:25:22 +02:00
|
|
|
if(EnabledPlugins.size() == 0)
|
2012-10-04 16:35:08 +02:00
|
|
|
m_pluginBtn[0] = m_pluginBtnCats[0];
|
2012-05-05 22:07:54 +02:00
|
|
|
else
|
2012-10-04 16:35:08 +02:00
|
|
|
m_pluginBtn[0] = m_pluginBtnCat[0];
|
|
|
|
m_btnMgr.show(m_pluginBtn[0]);
|
|
|
|
m_btnMgr.show(m_pluginLblCat[0]);
|
|
|
|
/* Single Plugins */
|
|
|
|
u32 IteratorHelp = (Plugin_curPage - 1) * 10;
|
|
|
|
for(u8 i = 1; i < min(IteratorHelp+10, (u32)m_max_plugins)-IteratorHelp+1; ++i)
|
2012-05-05 22:07:54 +02:00
|
|
|
{
|
2012-10-13 00:25:22 +02:00
|
|
|
if(EnabledPlugins.size() == 0 || EnabledPlugins.at(i+IteratorHelp-1) == true)
|
2012-10-04 16:35:08 +02:00
|
|
|
m_pluginBtn[i] = m_pluginBtnCats[i];
|
|
|
|
else
|
2012-05-05 22:07:54 +02:00
|
|
|
m_pluginBtn[i] = m_pluginBtnCat[i];
|
2012-10-04 16:35:08 +02:00
|
|
|
m_btnMgr.show(m_pluginBtn[i]);
|
|
|
|
m_btnMgr.show(m_pluginLblCat[i]);
|
2012-05-05 22:07:54 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void CMenu::_PluginSettings()
|
|
|
|
{
|
2012-10-13 00:25:22 +02:00
|
|
|
u8 i = 0;
|
|
|
|
while(m_plugin.PluginExist(i)) i++;
|
|
|
|
Plugin_Pages = static_cast<int>(ceil(static_cast<float>(i)/static_cast<float>(10)));
|
|
|
|
m_max_plugins = i;
|
|
|
|
//gprintf("Plugins found: %i, Pages: %i\n", m_max_plugins, Plugin_Pages);
|
|
|
|
if(Plugin_Pages == 0)
|
|
|
|
return;
|
|
|
|
/* Only use Plugin Settings if Plugins are found */
|
2012-05-05 22:07:54 +02:00
|
|
|
SetupInput();
|
|
|
|
Plugin_curPage = 1;
|
|
|
|
_showPluginSettings();
|
2012-10-04 16:35:08 +02:00
|
|
|
_updatePluginText();
|
2012-09-09 20:35:15 +02:00
|
|
|
while(!m_exit)
|
2012-05-05 22:07:54 +02:00
|
|
|
{
|
|
|
|
_mainLoopCommon();
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
if(BTN_HOME_PRESSED || BTN_B_PRESSED || (BTN_A_PRESSED && m_btnMgr.selected(m_pluginBtnBack)))
|
2012-05-05 22:07:54 +02:00
|
|
|
{
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
//m_cfg.save();
|
2012-05-05 22:07:54 +02:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
else if(BTN_UP_PRESSED)
|
|
|
|
m_btnMgr.up();
|
|
|
|
else if(BTN_DOWN_PRESSED)
|
|
|
|
m_btnMgr.down();
|
|
|
|
if((BTN_MINUS_PRESSED || BTN_LEFT_PRESSED) || (BTN_A_PRESSED && m_btnMgr.selected(m_pluginBtnPageM)))
|
|
|
|
{
|
2012-10-04 16:35:08 +02:00
|
|
|
Plugin_curPage--;
|
|
|
|
if(Plugin_curPage == 0) Plugin_curPage = Plugin_Pages;
|
2012-05-05 22:07:54 +02:00
|
|
|
if(BTN_LEFT_PRESSED || BTN_MINUS_PRESSED)
|
|
|
|
m_btnMgr.click(m_pluginBtnPageM);
|
|
|
|
_updatePluginCheckboxes();
|
2012-10-04 16:35:08 +02:00
|
|
|
_updatePluginText();
|
2012-05-05 22:07:54 +02:00
|
|
|
}
|
|
|
|
else if(((BTN_PLUS_PRESSED || BTN_RIGHT_PRESSED)) || (BTN_A_PRESSED && m_btnMgr.selected(m_pluginBtnPageP)))
|
|
|
|
{
|
2012-10-04 16:35:08 +02:00
|
|
|
Plugin_curPage++;
|
|
|
|
if(Plugin_curPage > Plugin_Pages) Plugin_curPage = 1;
|
2012-05-05 22:07:54 +02:00
|
|
|
if(BTN_RIGHT_PRESSED || BTN_PLUS_PRESSED)
|
|
|
|
m_btnMgr.click(m_pluginBtnPageP);
|
|
|
|
_updatePluginCheckboxes();
|
2012-10-04 16:35:08 +02:00
|
|
|
_updatePluginText();
|
2012-05-05 22:07:54 +02:00
|
|
|
}
|
|
|
|
if(BTN_A_PRESSED)
|
|
|
|
{
|
2012-10-04 16:35:08 +02:00
|
|
|
u32 IteratorHelp = (Plugin_curPage - 1) * 10;
|
2012-10-04 18:07:26 +02:00
|
|
|
for(u8 i = 0; i < min(IteratorHelp+10, (u32)m_max_plugins)-IteratorHelp+1; ++i)
|
2012-05-05 22:07:54 +02:00
|
|
|
{
|
|
|
|
if(m_btnMgr.selected(m_pluginBtn[i]))
|
|
|
|
{
|
|
|
|
if(i == 0)
|
|
|
|
{
|
2013-09-04 22:58:22 +02:00
|
|
|
m_plugin.GetEnabledPlugins(m_cfg, &enabledPluginsCount);
|
2012-10-04 18:07:26 +02:00
|
|
|
for(u8 j = 0; m_plugin.PluginExist(j); j++)
|
2013-09-04 22:58:22 +02:00
|
|
|
m_plugin.SetEnablePlugin(m_cfg, j, (enabledPluginsCount == 0) ? 2 : 1);
|
2012-05-05 22:07:54 +02:00
|
|
|
}
|
|
|
|
else
|
2012-10-04 16:35:08 +02:00
|
|
|
m_plugin.SetEnablePlugin(m_cfg, i+IteratorHelp-1);
|
2012-05-05 22:07:54 +02:00
|
|
|
_updatePluginCheckboxes();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
_hidePluginSettings();
|
- PHASE 2 (finally!)
- New Coverflow theme format. no more emuflow, coverflow, brewflow. now we have coverflow, shortflow, sideflow, and smallflow.
- coverflow is the normal coverflow.
- shortflow is automatically used for plugins if all selected plugins require a short CD style cover such as GB, GBC, GBA, and playstation. if there's more let me know and i can add them.
- sideflow is automatically used for plugins if all selected plugins require a cover on its side such as SNES and Nintendo 64.
- smallflow is used if smallbox is set for homebrew and sourceflow.
- no more need for emuflow= with a source btn in the source menu. it is done automatically now using the plugins magic#
- each flow has its own number of modes/layouts. so now coveflow can have 8, smallfow 1, sideflow, 6, and shortflow 4 or whatever you want.
- adjust coverflow works with no problems. just choose the view first before entering the adjust coverflow menu.
- other minor code changes here and there.
- remember themes are now in themes_lite and the coverflow part is seperated and put in the coverflows folder with the same name as the theme or you can use a default coverflow named default.ini for all themes.
2016-05-11 19:58:36 +02:00
|
|
|
//_loadList();
|
|
|
|
m_load_view = true;
|
2012-05-05 22:07:54 +02:00
|
|
|
}
|
|
|
|
|
2012-11-03 20:16:03 +01:00
|
|
|
void CMenu::_initPluginSettingsMenu()
|
2012-05-05 22:07:54 +02:00
|
|
|
{
|
2012-11-03 20:16:03 +01:00
|
|
|
_addUserLabels(m_pluginLblUser, ARRAY_SIZE(m_pluginLblUser), "PLUGIN");
|
|
|
|
m_pluginBg = _texture("PLUGIN/BG", "texture", theme.bg, false);
|
2013-11-04 20:46:23 +01:00
|
|
|
m_pluginLblTitle = _addTitle("PLUGIN/TITLE", theme.titleFont, L"", 0, 10, 640, 60, theme.titleFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE);
|
|
|
|
m_pluginBtnBack = _addButton("PLUGIN/BACK_BTN", theme.btnFont, L"", 420, 400, 200, 48, theme.btnFontColor);
|
|
|
|
m_pluginLblPage = _addLabel("PLUGIN/PAGE_BTN", theme.btnFont, L"", 68, 400, 104, 48, theme.btnFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE, theme.btnTexC);
|
|
|
|
m_pluginBtnPageM = _addPicButton("PLUGIN/PAGE_MINUS", theme.btnTexMinus, theme.btnTexMinusS, 20, 400, 48, 48);
|
|
|
|
m_pluginBtnPageP = _addPicButton("PLUGIN/PAGE_PLUS", theme.btnTexPlus, theme.btnTexPlusS, 172, 400, 48, 48);
|
|
|
|
m_pluginBtnCat[0] = _addPicButton("PLUGIN/PLUGIN_0_BTN", theme.checkboxoff, theme.checkboxoffs, 270, 394, 44, 48);
|
|
|
|
m_pluginBtnCats[0] = _addPicButton("PLUGIN/PLUGIN_0_BTNS", theme.checkboxon, theme.checkboxons, 270, 394, 44, 48);
|
|
|
|
m_pluginLblCat[0] = _addLabel("PLUGIN/PLUGIN_0", theme.lblFont, L"", 325, 397, 100, 48, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
2012-05-05 22:07:54 +02:00
|
|
|
for(int i = 1; i < 6; ++i)
|
|
|
|
{ // Page 1
|
2013-11-04 20:46:23 +01:00
|
|
|
m_pluginBtnCat[i] = _addPicButton(fmt("PLUGIN/PLUGIN_%i_BTN", i), theme.checkboxoff, theme.checkboxoffs, 30, (39+i*58), 44, 48);
|
|
|
|
m_pluginBtnCats[i] = _addPicButton(fmt("PLUGIN/PLUGIN_%i_BTNS", i), theme.checkboxon, theme.checkboxons, 30, (39+i*58), 44, 48);
|
2012-11-03 20:16:03 +01:00
|
|
|
m_pluginLblCat[i] = _addLabel(fmt("PLUGIN/PLUGIN_%i", i), theme.lblFont, L"", 85, (42+i*58), 230, 48, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
2012-05-05 22:07:54 +02:00
|
|
|
// right half
|
2013-11-04 20:46:23 +01:00
|
|
|
m_pluginBtnCat[i+5] = _addPicButton(fmt("PLUGIN/PLUGIN_%i_BTN", i+5), theme.checkboxoff, theme.checkboxoffs, 325, (39+i*58), 44, 48);
|
|
|
|
m_pluginBtnCats[i+5] = _addPicButton(fmt("PLUGIN/PLUGIN_%i_BTNS", i+5), theme.checkboxon, theme.checkboxons, 325, (39+i*58), 44, 48);
|
2012-11-03 20:16:03 +01:00
|
|
|
m_pluginLblCat[i+5] = _addLabel(fmt("PLUGIN/PLUGIN_%i", i+5), theme.txtFont, L"", 380, (42+i*58), 230, 48, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
2012-05-05 22:07:54 +02:00
|
|
|
}
|
2012-07-29 00:38:46 +02:00
|
|
|
_setHideAnim(m_pluginLblTitle, "PLUGIN/TITLE", 0, 0, -2.f, 0.f);
|
|
|
|
_setHideAnim(m_pluginLblPage, "PLUGIN/PAGE_BTN", 0, 0, 1.f, -1.f);
|
|
|
|
_setHideAnim(m_pluginBtnPageM, "PLUGIN/PAGE_MINUS", 0, 0, 1.f, -1.f);
|
|
|
|
_setHideAnim(m_pluginBtnPageP, "PLUGIN/PAGE_PLUS", 0, 0, 1.f, -1.f);
|
|
|
|
_setHideAnim(m_pluginBtnBack, "PLUGIN/BACK_BTN", 0, 0, 1.f, -1.f);
|
2012-10-04 16:35:08 +02:00
|
|
|
for(u8 i = 0; i < 11; ++i)
|
2012-05-05 22:07:54 +02:00
|
|
|
{
|
|
|
|
_setHideAnim(m_pluginBtnCat[i], fmt("PLUGIN/PLUGIN_%i_BTN", i), 0, 0, 1.f, 0.f);
|
|
|
|
_setHideAnim(m_pluginBtnCats[i], fmt("PLUGIN/PLUGIN_%i_BTNS", i), 0, 0, 1.f, 0.f);
|
|
|
|
_setHideAnim(m_pluginLblCat[i], fmt("PLUGIN/PLUGIN_%i", i), 0, 0, 1.f, 0.f);
|
|
|
|
m_pluginBtn[i] = m_pluginBtnCat[i];
|
|
|
|
}
|
|
|
|
_hidePluginSettings(true);
|
|
|
|
_textPluginSettings();
|
|
|
|
}
|
|
|
|
|
|
|
|
void CMenu::_textPluginSettings(void)
|
|
|
|
{
|
2012-05-06 15:55:56 +02:00
|
|
|
m_btnMgr.setText(m_pluginLblTitle, _t("cfgpl1", L"Select Plugins"));
|
|
|
|
m_btnMgr.setText(m_pluginBtnBack, _t("cd1", L"Back"));
|
2012-10-13 00:25:22 +02:00
|
|
|
m_btnMgr.setText(m_pluginLblCat[0], _t("dl25", L"All"));
|
2012-05-05 22:07:54 +02:00
|
|
|
}
|