mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-12-25 03:11:58 +01:00
- fix to keep the background music going on the game selected screen. if game/banner sound only plays once (not looping) the background music will play again.
- added flipped cover zoom and movement. so now when you flip a cover you can zoom in and out with '+' and '-' to read and see the back cover better. Use the control pad to move it if you need to. only works with pressing the buttons not holding them down. - added option to delete a cached cover (.wfc file) for plugins. in case for some reason you have a strange looking cover while viewing plugin covers just select the cover and then click on delete - it won't delete the game or cover png, just the covers wfc file in the cache. then when you go back it should be recreated. for other covers you can just delete and redownload via the settings menu.
This commit is contained in:
parent
6aa07a7b7b
commit
a2b7953b55
BIN
out/boot.dol
BIN
out/boot.dol
Binary file not shown.
Before Width: | Height: | Size: 3.1 MiB After Width: | Height: | Size: 3.1 MiB |
@ -2763,19 +2763,24 @@ void CCoverFlow::_dropHQLOD(int i)
|
|||||||
m_items[i].texture = newTex;
|
m_items[i].texture = newTex;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *CCoverFlow::getPathId(const dir_discHdr *curHdr)
|
const char *CCoverFlow::getPathId(const dir_discHdr *curHdr, bool extension)
|
||||||
{
|
{
|
||||||
const char *gamePath = NULL;
|
const char *TitleOrID = NULL;
|
||||||
if(NoGameID(curHdr->type))
|
if(NoGameID(curHdr->type))
|
||||||
{
|
{
|
||||||
if(strrchr(curHdr->path, '/') != NULL)
|
if(strrchr(curHdr->path, '/') != NULL)
|
||||||
gamePath = strrchr(curHdr->path, '/') + 1;
|
{
|
||||||
|
if(curHdr->type == TYPE_HOMEBREW || extension)
|
||||||
|
TitleOrID = strrchr(curHdr->path, '/') + 1;//returns title.ext or folder name for boot.dol
|
||||||
else
|
else
|
||||||
gamePath = curHdr->path;
|
TitleOrID = fmt("%ls", curHdr->title);// title without extension in lowercase
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
gamePath = curHdr->id;
|
TitleOrID = curHdr->path;//title for scummvm
|
||||||
return gamePath;
|
}
|
||||||
|
else
|
||||||
|
TitleOrID = curHdr->id;// ID for Wii, GC, & Channels
|
||||||
|
return TitleOrID;
|
||||||
}
|
}
|
||||||
|
|
||||||
CCoverFlow::CLRet CCoverFlow::_loadCoverTex(u32 i, bool box, bool hq, bool blankBoxCover)
|
CCoverFlow::CLRet CCoverFlow::_loadCoverTex(u32 i, bool box, bool hq, bool blankBoxCover)
|
||||||
|
@ -134,7 +134,7 @@ public:
|
|||||||
const dir_discHdr * getSpecificHdr(u32) const;
|
const dir_discHdr * getSpecificHdr(u32) const;
|
||||||
wstringEx getTitle(void) const;
|
wstringEx getTitle(void) const;
|
||||||
u64 getChanTitle(void) const;
|
u64 getChanTitle(void) const;
|
||||||
const char *getPathId(const dir_discHdr *curHdr);
|
const char *getPathId(const dir_discHdr *curHdr, bool extension = true);
|
||||||
//
|
//
|
||||||
bool getRenderTex(void);
|
bool getRenderTex(void);
|
||||||
void setRenderTex(bool);
|
void setRenderTex(bool);
|
||||||
|
@ -1880,33 +1880,40 @@ void CMenu::_mainLoopCommon(bool withCF, bool adjusting)
|
|||||||
}
|
}
|
||||||
m_btnMgr.draw();
|
m_btnMgr.draw();
|
||||||
ScanInput();
|
ScanInput();
|
||||||
|
// check if we need to start screensaver
|
||||||
if(!m_vid.showingWaitMessage())
|
if(!m_vid.showingWaitMessage())
|
||||||
{
|
{
|
||||||
if(!m_cfg.getBool("GENERAL", "screensaver_disabled", false))
|
if(!m_cfg.getBool("GENERAL", "screensaver_disabled", false))
|
||||||
m_vid.screensaver(NoInputTime(), m_cfg.getInt("GENERAL", "screensaver_idle_seconds", 60));
|
m_vid.screensaver(NoInputTime(), m_cfg.getInt("GENERAL", "screensaver_idle_seconds", 60));
|
||||||
m_vid.render();
|
m_vid.render();
|
||||||
}
|
}
|
||||||
|
// check if power button is pressed and exit wiiflow
|
||||||
if(Sys_Exiting())
|
if(Sys_Exiting())
|
||||||
exitHandler(BUTTON_CALLBACK);
|
exitHandler(BUTTON_CALLBACK);
|
||||||
|
// check if we need to start playing the game/banner sound
|
||||||
if(withCF && m_gameSelected && m_gamesound_changed && !m_soundThrdBusy && !m_gameSound.IsPlaying() && MusicPlayer.GetVolume() == 0)
|
if(withCF && m_gameSelected && m_gamesound_changed && !m_soundThrdBusy &&
|
||||||
|
!m_gameSound.IsPlaying() && MusicPlayer.GetVolume() == 0)
|
||||||
{
|
{
|
||||||
CheckGameSoundThread();
|
CheckGameSoundThread();// stop sound loading thread
|
||||||
m_gameSound.Play(m_bnrSndVol);
|
m_gameSound.Play(m_bnrSndVol);// play sound
|
||||||
m_gamesound_changed = false;
|
m_gamesound_changed = false;
|
||||||
}
|
}
|
||||||
|
// stop game/banner sound if game no longer selected or new game selected
|
||||||
else if(!m_gameSelected)
|
else if(!m_gameSelected)
|
||||||
m_gameSound.Stop();
|
m_gameSound.Stop();
|
||||||
|
// decrease volume to zero if plugin video playing or game/banner sound is loaded and ready to play
|
||||||
MusicPlayer.Tick(m_video_playing || (m_gameSelected &&
|
// also switch to next song if current song is done
|
||||||
m_gameSound.IsLoaded()) || m_gameSound.IsPlaying());
|
MusicPlayer.Tick(m_video_playing ||
|
||||||
|
(m_gameSelected && m_gamesound_changed && m_gameSound.IsLoaded()) ||
|
||||||
|
(m_gameSound.IsPlaying() && !m_gamesound_changed));
|
||||||
|
// set song title and display it if music info is allowed
|
||||||
if(MusicPlayer.SongChanged() && m_music_info)
|
if(MusicPlayer.SongChanged() && m_music_info)
|
||||||
{
|
{
|
||||||
m_btnMgr.setText(m_mainLblCurMusic, MusicPlayer.GetFileName(), true);
|
m_btnMgr.setText(m_mainLblCurMusic, MusicPlayer.GetFileName(), true);
|
||||||
m_btnMgr.show(m_mainLblCurMusic);
|
m_btnMgr.show(m_mainLblCurMusic);
|
||||||
MusicPlayer.DisplayTime = time(NULL);
|
MusicPlayer.DisplayTime = time(NULL);
|
||||||
}
|
}
|
||||||
|
// hide song title if it's displaying and been >3 seconds
|
||||||
else if(MusicPlayer.DisplayTime > 0 && time(NULL) - MusicPlayer.DisplayTime > 3)
|
else if(MusicPlayer.DisplayTime > 0 && time(NULL) - MusicPlayer.DisplayTime > 3)
|
||||||
{
|
{
|
||||||
MusicPlayer.DisplayTime = 0;
|
MusicPlayer.DisplayTime = 0;
|
||||||
@ -2480,40 +2487,6 @@ void CMenu::_cleanupDefaultFont()
|
|||||||
m_wbf2_font = NULL;
|
m_wbf2_font = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *CMenu::_getId()
|
|
||||||
{
|
|
||||||
char tmp[MAX_FAT_PATH];
|
|
||||||
memset(tmp, 0, MAX_FAT_PATH);
|
|
||||||
const char *id = NULL;
|
|
||||||
const dir_discHdr *hdr = CoverFlow.getHdr();
|
|
||||||
if(hdr->type == TYPE_HOMEBREW)
|
|
||||||
id = strrchr(hdr->path, '/') + 1;
|
|
||||||
else if(hdr->type == TYPE_PLUGIN)
|
|
||||||
{
|
|
||||||
if(strstr(hdr->path, ":/") != NULL)
|
|
||||||
{
|
|
||||||
if(*(strchr(hdr->path, '/') + 1) != '\0')
|
|
||||||
strcat(tmp, strchr(hdr->path, '/') + 1);
|
|
||||||
else
|
|
||||||
strcat(tmp, hdr->path);
|
|
||||||
if(strchr(tmp, '/') != NULL)
|
|
||||||
*(strchr(tmp, '/') + 1) = '\0';
|
|
||||||
}
|
|
||||||
strcat(tmp, fmt("%ls",hdr->title));
|
|
||||||
id = tmp;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
id = hdr->id;
|
|
||||||
if(hdr->type == TYPE_GC_GAME && hdr->settings[0] == 1) /* disc 2 */
|
|
||||||
{
|
|
||||||
strcat(tmp, fmt("%.6s_2", hdr->id));
|
|
||||||
id = tmp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *CMenu::_domainFromView()
|
const char *CMenu::_domainFromView()
|
||||||
{
|
{
|
||||||
if(m_sourceflow)
|
if(m_sourceflow)
|
||||||
|
@ -1092,7 +1092,6 @@ private:
|
|||||||
void _buildMenus(void);
|
void _buildMenus(void);
|
||||||
void _cleanupDefaultFont();
|
void _cleanupDefaultFont();
|
||||||
void _Theme_Cleanup();
|
void _Theme_Cleanup();
|
||||||
const char *_getId(void);
|
|
||||||
const char *_domainFromView(void);
|
const char *_domainFromView(void);
|
||||||
const char *_cfDomain(bool selected = false);
|
const char *_cfDomain(bool selected = false);
|
||||||
void UpdateCache(u32 view = COVERFLOW_MAX);
|
void UpdateCache(u32 view = COVERFLOW_MAX);
|
||||||
|
@ -129,7 +129,7 @@ void CMenu::_getIDCats(void)
|
|||||||
default:
|
default:
|
||||||
catDomain = (m_plugin.GetPluginName(m_plugin.GetPluginPosition(hdr->settings[0]))).toUTF8();
|
catDomain = (m_plugin.GetPluginName(m_plugin.GetPluginPosition(hdr->settings[0]))).toUTF8();
|
||||||
}
|
}
|
||||||
id = _getId();
|
id = CoverFlow.getPathId(hdr, false);
|
||||||
const char *idCats = m_cat.getString(catDomain, id, "").c_str();
|
const char *idCats = m_cat.getString(catDomain, id, "").c_str();
|
||||||
u8 numIdCats = strlen(idCats);
|
u8 numIdCats = strlen(idCats);
|
||||||
if(numIdCats != 0)
|
if(numIdCats != 0)
|
||||||
|
@ -426,11 +426,21 @@ bool CMenu::_startVideo()
|
|||||||
|
|
||||||
void CMenu::_game(bool launch)
|
void CMenu::_game(bool launch)
|
||||||
{
|
{
|
||||||
|
bool coverFlipped = false;
|
||||||
|
int cf_version = 1;
|
||||||
|
string domain;
|
||||||
|
string key;
|
||||||
|
Vector3D v;
|
||||||
|
Vector3D savedv;
|
||||||
|
|
||||||
|
dir_discHdr *hdr = (dir_discHdr*)MEM2_alloc(sizeof(dir_discHdr));
|
||||||
|
memcpy(hdr, CoverFlow.getHdr(), sizeof(dir_discHdr));
|
||||||
|
|
||||||
m_zoom_banner = m_cfg.getBool(_domainFromView(), "show_full_banner", false);
|
m_zoom_banner = m_cfg.getBool(_domainFromView(), "show_full_banner", false);
|
||||||
if(NoGameID(CoverFlow.getHdr()->type))
|
if(NoGameID(hdr->type))
|
||||||
{
|
{
|
||||||
bool video_available = (m_current_view == COVERFLOW_PLUGIN && fsop_FileExist(fmt("%s.thp", getVideoDefaultPath(m_videoDir)))) ||
|
bool video_available = (m_current_view == COVERFLOW_PLUGIN && fsop_FileExist(fmt("%s.thp", getVideoDefaultPath(m_videoDir)))) ||
|
||||||
fsop_FileExist(fmt("%s.thp", getVideoPath(m_videoDir, CoverFlow.getPathId(CoverFlow.getHdr()))));
|
fsop_FileExist(fmt("%s.thp", getVideoPath(m_videoDir, CoverFlow.getPathId(hdr))));
|
||||||
m_zoom_banner = m_zoom_banner && video_available;
|
m_zoom_banner = m_zoom_banner && video_available;
|
||||||
m_cfg.setBool(_domainFromView(), "show_full_banner", m_zoom_banner);
|
m_cfg.setBool(_domainFromView(), "show_full_banner", m_zoom_banner);
|
||||||
}
|
}
|
||||||
@ -455,10 +465,39 @@ void CMenu::_game(bool launch)
|
|||||||
|
|
||||||
if(startGameSound == 0)
|
if(startGameSound == 0)
|
||||||
{
|
{
|
||||||
m_gameSelected = true;
|
m_gameSelected = true;// mark game selected and load sound/banner for main loop to start playing
|
||||||
startGameSound = 1;
|
startGameSound = 1;
|
||||||
_playGameSound();
|
_playGameSound();
|
||||||
}
|
}
|
||||||
|
if(coverFlipped &&
|
||||||
|
(BTN_PLUS_PRESSED || BTN_MINUS_PRESSED ||
|
||||||
|
BTN_LEFT_PRESSED || BTN_RIGHT_PRESSED ||
|
||||||
|
BTN_UP_PRESSED || BTN_DOWN_PRESSED))
|
||||||
|
{
|
||||||
|
float step = 0.05f;
|
||||||
|
if(BTN_PLUS_PRESSED || BTN_MINUS_PRESSED)
|
||||||
|
{
|
||||||
|
if(BTN_MINUS_PRESSED)
|
||||||
|
step = -step;
|
||||||
|
v.z = min(max(-15.f, v.z + step), 15.f);
|
||||||
|
}
|
||||||
|
else if(BTN_LEFT_PRESSED || BTN_RIGHT_PRESSED)
|
||||||
|
{
|
||||||
|
if(BTN_LEFT_PRESSED)
|
||||||
|
step = -step;
|
||||||
|
v.x = min(max(-15.f, v.x + step), 15.f);
|
||||||
|
}
|
||||||
|
else if(BTN_UP_PRESSED || BTN_DOWN_PRESSED)
|
||||||
|
{
|
||||||
|
if(BTN_UP_PRESSED)
|
||||||
|
step = -step;
|
||||||
|
v.y = min(max(-15.f, v.y + step), 15.f);
|
||||||
|
}
|
||||||
|
m_coverflow.setVector3D(domain, key, v);
|
||||||
|
_loadCFLayout(cf_version, true);
|
||||||
|
CoverFlow.applySettings();
|
||||||
|
CoverFlow.flip(true, true);
|
||||||
|
}
|
||||||
if(BTN_B_PRESSED && !m_locked && (m_btnMgr.selected(m_gameBtnFavoriteOn) || m_btnMgr.selected(m_gameBtnFavoriteOff)))
|
if(BTN_B_PRESSED && !m_locked && (m_btnMgr.selected(m_gameBtnFavoriteOn) || m_btnMgr.selected(m_gameBtnFavoriteOff)))
|
||||||
{
|
{
|
||||||
_hideGame();
|
_hideGame();
|
||||||
@ -475,18 +514,18 @@ void CMenu::_game(bool launch)
|
|||||||
_cleanupBanner();
|
_cleanupBanner();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if(BTN_PLUS_PRESSED && m_GameTDBAvailable && (CoverFlow.getHdr()->type == TYPE_WII_GAME || CoverFlow.getHdr()->type == TYPE_GC_GAME || CoverFlow.getHdr()->type == TYPE_CHANNEL))
|
else if(BTN_PLUS_PRESSED && !coverFlipped && m_GameTDBAvailable && !NoGameID(hdr->type))
|
||||||
{
|
{
|
||||||
_hideGame();
|
_hideGame();
|
||||||
m_banner.SetShowBanner(false);
|
m_banner.SetShowBanner(false);
|
||||||
m_gameSelected = true;
|
m_gameSelected = true;// guess its reset to true to keep game/banner sound playing (if it is) during gameinfo menu
|
||||||
_gameinfo();
|
_gameinfo();
|
||||||
_showGame();
|
_showGame();
|
||||||
m_banner.SetShowBanner(true);
|
m_banner.SetShowBanner(true);
|
||||||
if(!m_gameSound.IsPlaying())
|
if(!m_gameSound.IsPlaying())
|
||||||
startGameSound = -6;
|
startGameSound = -6;
|
||||||
}
|
}
|
||||||
else if(BTN_MINUS_PRESSED)
|
else if(BTN_MINUS_PRESSED && !coverFlipped)
|
||||||
{
|
{
|
||||||
if(m_video_playing)
|
if(m_video_playing)
|
||||||
{
|
{
|
||||||
@ -500,7 +539,7 @@ void CMenu::_game(bool launch)
|
|||||||
else
|
else
|
||||||
_startVideo();
|
_startVideo();
|
||||||
}
|
}
|
||||||
else if((BTN_1_PRESSED) || (BTN_2_PRESSED))
|
else if((BTN_1_PRESSED || BTN_2_PRESSED) && !coverFlipped)
|
||||||
{
|
{
|
||||||
s8 direction = BTN_1_PRESSED ? 1 : -1;
|
s8 direction = BTN_1_PRESSED ? 1 : -1;
|
||||||
const char *domain = _domainFromView();
|
const char *domain = _domainFromView();
|
||||||
@ -519,11 +558,27 @@ void CMenu::_game(bool launch)
|
|||||||
{
|
{
|
||||||
_hideGame();
|
_hideGame();
|
||||||
m_banner.SetShowBanner(false);
|
m_banner.SetShowBanner(false);
|
||||||
|
if(hdr->type == TYPE_PLUGIN)
|
||||||
|
{
|
||||||
|
const char *wfcPath = NULL;
|
||||||
|
const char *coverDir = NULL;
|
||||||
|
if(m_cfg.getBool(PLUGIN_DOMAIN, "subfolder_cache"))
|
||||||
|
coverDir = m_plugin.GetCoverFolderName(hdr->settings[0]);
|
||||||
|
if(coverDir == NULL || strlen(coverDir) == 0)
|
||||||
|
wfcPath = fmt("%s/%s.wfc", m_cacheDir.c_str(), CoverFlow.getPathId(hdr, false));
|
||||||
|
else
|
||||||
|
wfcPath = fmt("%s/%s/%s.wfc", m_cacheDir.c_str(), coverDir, CoverFlow.getPathId(hdr, false));
|
||||||
|
fsop_deleteFile(wfcPath);
|
||||||
|
m_load_view = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
if(_wbfsOp(WO_REMOVE_GAME))
|
if(_wbfsOp(WO_REMOVE_GAME))
|
||||||
{
|
{
|
||||||
_cleanupBanner();
|
_cleanupBanner();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
m_banner.SetShowBanner(true);
|
m_banner.SetShowBanner(true);
|
||||||
if(!m_gameSound.IsPlaying())
|
if(!m_gameSound.IsPlaying())
|
||||||
startGameSound = -6;
|
startGameSound = -6;
|
||||||
@ -531,16 +586,16 @@ void CMenu::_game(bool launch)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(m_btnMgr.selected(m_gameBtnFavoriteOn) || m_btnMgr.selected(m_gameBtnFavoriteOff))
|
else if(m_btnMgr.selected(m_gameBtnFavoriteOn) || m_btnMgr.selected(m_gameBtnFavoriteOff))
|
||||||
m_gcfg1.setBool("FAVORITES", _getId(), !m_gcfg1.getBool("FAVORITES", _getId(), false));
|
m_gcfg1.setBool("FAVORITES", CoverFlow.getPathId(hdr, false), !m_gcfg1.getBool("FAVORITES", CoverFlow.getPathId(hdr, false), false));
|
||||||
else if(m_btnMgr.selected(m_gameBtnAdultOn) || m_btnMgr.selected(m_gameBtnAdultOff))
|
else if(m_btnMgr.selected(m_gameBtnAdultOn) || m_btnMgr.selected(m_gameBtnAdultOff))
|
||||||
m_gcfg1.setBool("ADULTONLY", _getId(), !m_gcfg1.getBool("ADULTONLY", _getId(), false));
|
m_gcfg1.setBool("ADULTONLY", CoverFlow.getPathId(hdr, false), !m_gcfg1.getBool("ADULTONLY", CoverFlow.getPathId(hdr, false), false));
|
||||||
else if(m_btnMgr.selected(m_gameBtnBack) || m_btnMgr.selected(m_gameBtnBackFull))
|
else if(m_btnMgr.selected(m_gameBtnBack) || m_btnMgr.selected(m_gameBtnBackFull))
|
||||||
{
|
{
|
||||||
_cleanupBanner();
|
_cleanupBanner();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if((m_btnMgr.selected(m_gameBtnToggle) || m_btnMgr.selected(m_gameBtnToggleFull))
|
else if((m_btnMgr.selected(m_gameBtnToggle) || m_btnMgr.selected(m_gameBtnToggleFull))
|
||||||
&& (!NoGameID(CoverFlow.getHdr()->type) || m_video_playing))
|
&& (!NoGameID(hdr->type) || m_video_playing))
|
||||||
{
|
{
|
||||||
m_zoom_banner = m_banner.ToggleZoom();
|
m_zoom_banner = m_banner.ToggleZoom();
|
||||||
m_cfg.setBool(_domainFromView(), "show_full_banner", m_zoom_banner);
|
m_cfg.setBool(_domainFromView(), "show_full_banner", m_zoom_banner);
|
||||||
@ -550,10 +605,10 @@ void CMenu::_game(bool launch)
|
|||||||
m_btnMgr.hide(m_gameBtnBackFull);
|
m_btnMgr.hide(m_gameBtnBackFull);
|
||||||
m_btnMgr.hide(m_gameBtnToggleFull);
|
m_btnMgr.hide(m_gameBtnToggleFull);
|
||||||
}
|
}
|
||||||
else if(m_btnMgr.selected(m_gameBtnSettings) && (CoverFlow.getHdr()->type == TYPE_WII_GAME || CoverFlow.getHdr()->type == TYPE_GC_GAME || CoverFlow.getHdr()->type == TYPE_CHANNEL))
|
else if(m_btnMgr.selected(m_gameBtnSettings) && !NoGameID(hdr->type))
|
||||||
{
|
{
|
||||||
_hideGame();
|
_hideGame();
|
||||||
m_gameSelected = true;
|
m_gameSelected = true;// reset to true to make sure sound plays during settings
|
||||||
|
|
||||||
m_banner.ToggleGameSettings();
|
m_banner.ToggleGameSettings();
|
||||||
_gameSettings();
|
_gameSettings();
|
||||||
@ -568,8 +623,6 @@ void CMenu::_game(bool launch)
|
|||||||
_hideGame();
|
_hideGame();
|
||||||
MusicPlayer.Stop();
|
MusicPlayer.Stop();
|
||||||
_cleanupBanner();
|
_cleanupBanner();
|
||||||
dir_discHdr *hdr = (dir_discHdr*)MEM2_alloc(sizeof(dir_discHdr));
|
|
||||||
memcpy(hdr, CoverFlow.getHdr(), sizeof(dir_discHdr));
|
|
||||||
m_gcfg2.load(fmt("%s/" GAME_SETTINGS2_FILENAME, m_settingsDir.c_str()));
|
m_gcfg2.load(fmt("%s/" GAME_SETTINGS2_FILENAME, m_settingsDir.c_str()));
|
||||||
// change to current games partition and set last_view for recall later
|
// change to current games partition and set last_view for recall later
|
||||||
m_cfg.setInt("GENERAL", "last_view", m_current_view);
|
m_cfg.setInt("GENERAL", "last_view", m_current_view);
|
||||||
@ -631,16 +684,38 @@ void CMenu::_game(bool launch)
|
|||||||
WPAD_SetVRes(chan, m_vid.width() + m_cursor[chan].width(), m_vid.height() + m_cursor[chan].height());
|
WPAD_SetVRes(chan, m_vid.width() + m_cursor[chan].width(), m_vid.height() + m_cursor[chan].height());
|
||||||
m_gcfg2.unload();
|
m_gcfg2.unload();
|
||||||
_showGame();
|
_showGame();
|
||||||
//_initCF();
|
|
||||||
//CoverFlow.select();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for(int chan = WPAD_MAX_WIIMOTES-1; chan >= 0; chan--)
|
for(int chan = WPAD_MAX_WIIMOTES-1; chan >= 0; chan--)
|
||||||
|
{
|
||||||
if(CoverFlow.mouseOver(m_cursor[chan].x(), m_cursor[chan].y()))
|
if(CoverFlow.mouseOver(m_cursor[chan].x(), m_cursor[chan].y()))
|
||||||
CoverFlow.flip();
|
{
|
||||||
|
cf_version = m_cfg.getInt(_domainFromView(), "last_cf_mode", 1);
|
||||||
|
domain = fmt("%s_%i_S", cf_domain, cf_version);
|
||||||
|
key = "flip_pos";
|
||||||
|
if(!m_vid.wide())
|
||||||
|
key += "_4_3";
|
||||||
|
coverFlipped = !coverFlipped;
|
||||||
|
if(coverFlipped)
|
||||||
|
{
|
||||||
|
v = m_coverflow.getVector3D(domain, key);
|
||||||
|
savedv = v;
|
||||||
|
CoverFlow.flip(true, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_coverflow.setVector3D(domain, key, savedv);
|
||||||
|
_loadCFLayout(cf_version, true);
|
||||||
|
CoverFlow.applySettings();
|
||||||
|
CoverFlow.flip(true, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!coverFlipped)
|
||||||
|
{
|
||||||
if((startGameSound == 1 || startGameSound < -8) && (BTN_UP_REPEAT || RIGHT_STICK_UP))
|
if((startGameSound == 1 || startGameSound < -8) && (BTN_UP_REPEAT || RIGHT_STICK_UP))
|
||||||
{
|
{
|
||||||
_cleanupBanner(true);
|
_cleanupBanner(true);
|
||||||
@ -667,12 +742,14 @@ void CMenu::_game(bool launch)
|
|||||||
}
|
}
|
||||||
if(startGameSound == -10)
|
if(startGameSound == -10)
|
||||||
{
|
{
|
||||||
m_gameSelected = false;
|
m_gameSelected = false; // deselect game if moved to new cover
|
||||||
_setBg(m_gameBg, m_gameBgLQ);
|
_setBg(m_gameBg, m_gameBgLQ);
|
||||||
|
memcpy(hdr, CoverFlow.getHdr(), sizeof(dir_discHdr));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(m_show_zone_game && !m_zoom_banner)
|
if(m_show_zone_game && !m_zoom_banner)
|
||||||
{
|
{
|
||||||
bool b = m_gcfg1.getBool("FAVORITES", _getId(), false);
|
bool b = m_gcfg1.getBool("FAVORITES", CoverFlow.getPathId(hdr, false), false);
|
||||||
m_btnMgr.show(b ? m_gameBtnFavoriteOn : m_gameBtnFavoriteOff);
|
m_btnMgr.show(b ? m_gameBtnFavoriteOn : m_gameBtnFavoriteOff);
|
||||||
m_btnMgr.hide(b ? m_gameBtnFavoriteOff : m_gameBtnFavoriteOn);
|
m_btnMgr.hide(b ? m_gameBtnFavoriteOff : m_gameBtnFavoriteOn);
|
||||||
m_btnMgr.show(m_gameBtnPlay);
|
m_btnMgr.show(m_gameBtnPlay);
|
||||||
@ -684,7 +761,7 @@ void CMenu::_game(bool launch)
|
|||||||
m_btnMgr.hide(m_gameBtnPlayFull);
|
m_btnMgr.hide(m_gameBtnPlayFull);
|
||||||
m_btnMgr.hide(m_gameBtnBackFull);
|
m_btnMgr.hide(m_gameBtnBackFull);
|
||||||
m_btnMgr.hide(m_gameBtnToggleFull);
|
m_btnMgr.hide(m_gameBtnToggleFull);
|
||||||
if(m_gameLblUser[4] != -1 && !NoGameID(CoverFlow.getHdr()->type) && !m_fa.isLoaded())
|
if(m_gameLblUser[4] != -1 && !NoGameID(hdr->type) && !m_fa.isLoaded())
|
||||||
m_btnMgr.show(m_gameLblUser[4]);
|
m_btnMgr.show(m_gameLblUser[4]);
|
||||||
else
|
else
|
||||||
m_btnMgr.hide(m_gameLblUser[4]);
|
m_btnMgr.hide(m_gameLblUser[4]);
|
||||||
@ -695,13 +772,13 @@ void CMenu::_game(bool launch)
|
|||||||
}
|
}
|
||||||
if(!m_locked)
|
if(!m_locked)
|
||||||
{
|
{
|
||||||
b = m_gcfg1.getBool("ADULTONLY", _getId(), false);
|
b = m_gcfg1.getBool("ADULTONLY", CoverFlow.getPathId(hdr, false), false);
|
||||||
m_btnMgr.show(b ? m_gameBtnAdultOn : m_gameBtnAdultOff);
|
m_btnMgr.show(b ? m_gameBtnAdultOn : m_gameBtnAdultOff);
|
||||||
m_btnMgr.hide(b ? m_gameBtnAdultOff : m_gameBtnAdultOn);
|
m_btnMgr.hide(b ? m_gameBtnAdultOff : m_gameBtnAdultOn);
|
||||||
m_btnMgr.show(m_gameBtnSettings);
|
m_btnMgr.show(m_gameBtnSettings);
|
||||||
}
|
}
|
||||||
if((CoverFlow.getHdr()->type != TYPE_HOMEBREW && (CoverFlow.getHdr()->type != TYPE_CHANNEL ||
|
if((hdr->type != TYPE_HOMEBREW && (hdr->type != TYPE_CHANNEL ||
|
||||||
(m_cfg.getBool(CHANNEL_DOMAIN, "emu_nand", false) && CoverFlow.getHdr()->type == TYPE_CHANNEL))) && !m_locked)
|
(m_cfg.getBool(CHANNEL_DOMAIN, "emu_nand", false) && hdr->type == TYPE_CHANNEL))) && !m_locked)
|
||||||
m_btnMgr.show(m_gameBtnDelete);
|
m_btnMgr.show(m_gameBtnDelete);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -723,7 +800,7 @@ void CMenu::_game(bool launch)
|
|||||||
m_btnMgr.hide(m_gameBtnToggle);
|
m_btnMgr.hide(m_gameBtnToggle);
|
||||||
if(m_gameLblUser[4] != -1)
|
if(m_gameLblUser[4] != -1)
|
||||||
{
|
{
|
||||||
if(!NoGameID(CoverFlow.getHdr()->type) && !m_zoom_banner && !m_fa.isLoaded())
|
if(!NoGameID(hdr->type) && !m_zoom_banner && !m_fa.isLoaded())
|
||||||
m_btnMgr.show(m_gameLblUser[4]);
|
m_btnMgr.show(m_gameLblUser[4]);
|
||||||
else
|
else
|
||||||
m_btnMgr.hide(m_gameLblUser[4], true);
|
m_btnMgr.hide(m_gameLblUser[4], true);
|
||||||
@ -733,6 +810,12 @@ void CMenu::_game(bool launch)
|
|||||||
m_btnMgr.hide(m_gameLblUser[i]);
|
m_btnMgr.hide(m_gameLblUser[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(coverFlipped)
|
||||||
|
{
|
||||||
|
m_coverflow.setVector3D(domain, key, savedv);
|
||||||
|
_loadCFLayout(cf_version, true);
|
||||||
|
CoverFlow.applySettings();
|
||||||
|
}
|
||||||
m_gcfg1.save(true);
|
m_gcfg1.save(true);
|
||||||
_hideGame();
|
_hideGame();
|
||||||
}
|
}
|
||||||
|
@ -124,7 +124,7 @@ void Musicplayer::Stop()
|
|||||||
MusicStopped = true;
|
MusicStopped = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Musicplayer::Tick(bool attenuate)
|
void Musicplayer::Tick(bool attenuate)// attenuate means fade to zero volume
|
||||||
{
|
{
|
||||||
if(FileNames.empty())
|
if(FileNames.empty())
|
||||||
return;
|
return;
|
||||||
|
Loading…
Reference in New Issue
Block a user