mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-11-01 00:55:06 +01:00
- now when changing coverflow layout with '1' and '2' the current cover stays as the current cover.
This commit is contained in:
parent
0e58df8918
commit
f9f23f9048
BIN
out/boot.dol
BIN
out/boot.dol
Binary file not shown.
Before Width: | Height: | Size: 3.3 MiB After Width: | Height: | Size: 3.3 MiB |
@ -659,7 +659,7 @@ void CCoverFlow::startCoverLoader(void)
|
|||||||
m_loadingCovers = true;
|
m_loadingCovers = true;
|
||||||
m_moved = true;
|
m_moved = true;
|
||||||
|
|
||||||
LWP_CreateThread(&coverLoaderThread, _coverLoader, this, coverThreadStack, coverThreadStackSize, 30);
|
LWP_CreateThread(&coverLoaderThread, _coverLoader, this, coverThreadStack, coverThreadStackSize, 40);
|
||||||
//gprintf("Coverflow started!\n");
|
//gprintf("Coverflow started!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1603,12 +1603,60 @@ void CCoverFlow::cancel(void)
|
|||||||
_playSound(m_cancelSound);
|
_playSound(m_cancelSound);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CCoverFlow::defaultLoad(void)
|
u32 CCoverFlow::_currentPos(void) const
|
||||||
{
|
{
|
||||||
_loadAllCovers(0);
|
if (m_covers == NULL) return 0;
|
||||||
|
|
||||||
|
return m_covers[m_range / 2].index;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CCoverFlow::_setCurPos(u32 index)
|
||||||
|
{
|
||||||
|
_loadAllCovers(index);
|
||||||
_updateAllTargets(true);
|
_updateAllTargets(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CCoverFlow::_setCurPosToID(const char *id, bool instant, bool path)
|
||||||
|
{
|
||||||
|
LockMutex lock(m_mutex);
|
||||||
|
u32 i, curPos = _currentPos();
|
||||||
|
|
||||||
|
if(m_items.empty() || (instant && m_covers == NULL) || strlen(id) == 0)
|
||||||
|
return false;
|
||||||
|
//
|
||||||
|
for(i = 0; i < m_items.size(); ++i)
|
||||||
|
{
|
||||||
|
if(path)
|
||||||
|
{
|
||||||
|
//homebrew folder or rom title.ext
|
||||||
|
const char *name = strrchr(m_items[i].hdr->path, '/');
|
||||||
|
if(name != NULL && strcmp(name + 1, id) == 0)
|
||||||
|
break;
|
||||||
|
else if(strcmp(m_items[i].hdr->path, id) == 0)// scummvm
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if(strcmp(m_items[i].hdr->id, id) == 0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(i >= m_items.size())
|
||||||
|
return false;
|
||||||
|
m_jump = 0;
|
||||||
|
if (instant)
|
||||||
|
{
|
||||||
|
_loadAllCovers(i);
|
||||||
|
_updateAllTargets(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int j = (int)i - (int)curPos;
|
||||||
|
if (abs(j) <= (int)m_items.size() / 2)
|
||||||
|
_setJump(j);
|
||||||
|
else
|
||||||
|
_setJump(j < 0 ? j + (int)m_items.size() : j - (int)m_items.size());
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void CCoverFlow::_updateAllTargets(bool instant)
|
void CCoverFlow::_updateAllTargets(bool instant)
|
||||||
{
|
{
|
||||||
m_targetCameraPos = m_selected ? m_loSelected.camera : m_loNormal.camera;
|
m_targetCameraPos = m_selected ? m_loSelected.camera : m_loNormal.camera;
|
||||||
@ -2047,13 +2095,6 @@ void CCoverFlow::_right(int repeatDelay, u32 step)
|
|||||||
m_covers[m_range / 2].pos -= _coverMovesP();
|
m_covers[m_range / 2].pos -= _coverMovesP();
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 CCoverFlow::_currentPos(void) const
|
|
||||||
{
|
|
||||||
if (m_covers == NULL) return 0;
|
|
||||||
|
|
||||||
return m_covers[m_range / 2].index;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CCoverFlow::mouse(int chan, int x, int y)
|
void CCoverFlow::mouse(int chan, int x, int y)
|
||||||
{
|
{
|
||||||
if (m_covers == NULL) return;
|
if (m_covers == NULL) return;
|
||||||
@ -2098,47 +2139,6 @@ void CCoverFlow::setSelected(int i)
|
|||||||
select();
|
select();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CCoverFlow::findId(const char *id, bool instant, bool path)
|
|
||||||
{
|
|
||||||
LockMutex lock(m_mutex);
|
|
||||||
u32 i, curPos = _currentPos();
|
|
||||||
|
|
||||||
if(m_items.empty() || (instant && m_covers == NULL) || strlen(id) == 0)
|
|
||||||
return false;
|
|
||||||
//
|
|
||||||
for(i = 0; i < m_items.size(); ++i)
|
|
||||||
{
|
|
||||||
if(path)
|
|
||||||
{
|
|
||||||
//homebrew folder or rom title.ext
|
|
||||||
const char *name = strrchr(m_items[i].hdr->path, '/');
|
|
||||||
if(name != NULL && strcmp(name + 1, id) == 0)
|
|
||||||
break;
|
|
||||||
else if(strcmp(m_items[i].hdr->path, id) == 0)// scummvm
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else if(strcmp(m_items[i].hdr->id, id) == 0)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if(i >= m_items.size())
|
|
||||||
return false;
|
|
||||||
m_jump = 0;
|
|
||||||
if (instant)
|
|
||||||
{
|
|
||||||
_loadAllCovers(i);
|
|
||||||
_updateAllTargets(true);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int j = (int)i - (int)curPos;
|
|
||||||
if (abs(j) <= (int)m_items.size() / 2)
|
|
||||||
_setJump(j);
|
|
||||||
else
|
|
||||||
_setJump(j < 0 ? j + (int)m_items.size() : j - (int)m_items.size());
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CCoverFlow::pageUp(void)
|
void CCoverFlow::pageUp(void)
|
||||||
{
|
{
|
||||||
if (m_covers == NULL) return;
|
if (m_covers == NULL) return;
|
||||||
@ -2880,6 +2880,7 @@ CCoverFlow::CLRet CCoverFlow::_loadCoverTex(u32 i, bool box, bool hq, bool blank
|
|||||||
fclose(fp);
|
fclose(fp);
|
||||||
return _loadCoverTexPNG(i, box, hq, blankBoxCover) ? CL_OK : CL_ERROR;
|
return _loadCoverTexPNG(i, box, hq, blankBoxCover) ? CL_OK : CL_ERROR;
|
||||||
}
|
}
|
||||||
|
DCFlushRange(&header, sizeof(header));
|
||||||
//make sure wfc cache file matches what we want
|
//make sure wfc cache file matches what we want
|
||||||
if(header.newFmt == 1 && (header.full != 0) == box && (header.cmpr != 0) == m_compressTextures)
|
if(header.newFmt == 1 && (header.full != 0) == box && (header.cmpr != 0) == m_compressTextures)
|
||||||
{
|
{
|
||||||
@ -2907,13 +2908,13 @@ CCoverFlow::CLRet CCoverFlow::_loadCoverTex(u32 i, bool box, bool hq, bool blank
|
|||||||
fclose(fp);
|
fclose(fp);
|
||||||
return _loadCoverTexPNG(i, box, hq, blankBoxCover) ? CL_OK : CL_ERROR;
|
return _loadCoverTexPNG(i, box, hq, blankBoxCover) ? CL_OK : CL_ERROR;
|
||||||
}
|
}
|
||||||
|
DCFlushRange(tex.data, texLen);
|
||||||
}
|
}
|
||||||
if(!allocFailed)
|
if(!allocFailed)
|
||||||
{
|
{
|
||||||
LockMutex lock(m_mutex);
|
LockMutex lock(m_mutex);
|
||||||
TexHandle.Cleanup(m_items[i].texture);
|
TexHandle.Cleanup(m_items[i].texture);
|
||||||
m_items[i].texture = tex;
|
m_items[i].texture = tex;
|
||||||
DCFlushRange(tex.data, texLen);
|
|
||||||
m_items[i].state = STATE_Ready;
|
m_items[i].state = STATE_Ready;
|
||||||
m_items[i].boxTexture = header.full != 0;
|
m_items[i].boxTexture = header.full != 0;
|
||||||
success = true;
|
success = true;
|
||||||
|
@ -50,13 +50,14 @@ public:
|
|||||||
bool start(const string &m_imgsDir);
|
bool start(const string &m_imgsDir);
|
||||||
void stopCoverLoader(bool empty = false);
|
void stopCoverLoader(bool empty = false);
|
||||||
void startCoverLoader(void);
|
void startCoverLoader(void);
|
||||||
void defaultLoad(void);
|
u32 _currentPos(void) const;
|
||||||
|
void _setCurPos(u32 index);
|
||||||
|
bool _setCurPosToID(const char *id, bool instant = false, bool path = false);
|
||||||
//
|
//
|
||||||
void simulateOtherScreenFormat(bool s);
|
void simulateOtherScreenFormat(bool s);
|
||||||
// Commands
|
// Commands
|
||||||
void tick(void);
|
void tick(void);
|
||||||
void setSelected(int i);
|
void setSelected(int i);
|
||||||
bool findId(const char *id, bool instant = false, bool path = false);
|
|
||||||
void pageUp(void);
|
void pageUp(void);
|
||||||
void pageDown(void);
|
void pageDown(void);
|
||||||
void nextLetter(wchar_t *c);
|
void nextLetter(wchar_t *c);
|
||||||
@ -316,7 +317,6 @@ private:
|
|||||||
static const u32 coverThreadStackSize;
|
static const u32 coverThreadStackSize;
|
||||||
private:
|
private:
|
||||||
void _draw(DrawMode dm = CFDR_NORMAL, bool mirror = false, bool blend = true);
|
void _draw(DrawMode dm = CFDR_NORMAL, bool mirror = false, bool blend = true);
|
||||||
u32 _currentPos(void) const;
|
|
||||||
void _effectBg(const TexData * &tex);
|
void _effectBg(const TexData * &tex);
|
||||||
void _effectBlur(bool vertical);
|
void _effectBlur(bool vertical);
|
||||||
bool _effectVisible(void);
|
bool _effectVisible(void);
|
||||||
|
@ -2226,8 +2226,8 @@ void CMenu::_initCF(void)
|
|||||||
path = true;
|
path = true;
|
||||||
strncpy(cur_item, m_cfg.getString(_domainFromView(), "current_item").c_str(), 63);
|
strncpy(cur_item, m_cfg.getString(_domainFromView(), "current_item").c_str(), 63);
|
||||||
}
|
}
|
||||||
if(!CoverFlow.findId(cur_item, true, path))
|
if(!CoverFlow._setCurPosToID(cur_item, true, path))
|
||||||
CoverFlow.defaultLoad();
|
CoverFlow._setCurPos(0);
|
||||||
CoverFlow.startCoverLoader();
|
CoverFlow.startCoverLoader();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -599,11 +599,13 @@ void CMenu::_game(bool launch)
|
|||||||
/* switch coverflow layout */
|
/* switch coverflow layout */
|
||||||
else if((BTN_1_PRESSED || BTN_2_PRESSED) && !coverFlipped && !m_video_playing)
|
else if((BTN_1_PRESSED || BTN_2_PRESSED) && !coverFlipped && !m_video_playing)
|
||||||
{
|
{
|
||||||
|
u32 curPos = CoverFlow._currentPos();
|
||||||
s8 direction = BTN_1_PRESSED ? 1 : -1;
|
s8 direction = BTN_1_PRESSED ? 1 : -1;
|
||||||
int cfVersion = loopNum((_getCFVersion() - 1) + direction, m_numCFVersions) + 1;
|
int cfVersion = loopNum((_getCFVersion() - 1) + direction, m_numCFVersions) + 1;
|
||||||
_loadCFLayout(cfVersion);
|
|
||||||
CoverFlow.applySettings();
|
|
||||||
_setCFVersion(cfVersion);
|
_setCFVersion(cfVersion);
|
||||||
|
_loadCFLayout(cfVersion);
|
||||||
|
CoverFlow._setCurPos(curPos);
|
||||||
|
CoverFlow.applySettings();
|
||||||
}
|
}
|
||||||
else if(launch || BTN_A_PRESSED)
|
else if(launch || BTN_A_PRESSED)
|
||||||
{
|
{
|
||||||
|
@ -648,10 +648,12 @@ int CMenu::main(void)
|
|||||||
/* change coverflow layout/mode */
|
/* change coverflow layout/mode */
|
||||||
else if(BTN_1_PRESSED || BTN_2_PRESSED)
|
else if(BTN_1_PRESSED || BTN_2_PRESSED)
|
||||||
{
|
{
|
||||||
|
u32 curPos = CoverFlow._currentPos();
|
||||||
s8 direction = BTN_1_PRESSED ? 1 : -1;
|
s8 direction = BTN_1_PRESSED ? 1 : -1;
|
||||||
int cfVersion = 1 + loopNum((_getCFVersion() - 1) + direction, m_numCFVersions);
|
int cfVersion = 1 + loopNum((_getCFVersion() - 1) + direction, m_numCFVersions);
|
||||||
_setCFVersion(cfVersion);
|
_setCFVersion(cfVersion);
|
||||||
_loadCFLayout(cfVersion);
|
_loadCFLayout(cfVersion);
|
||||||
|
CoverFlow._setCurPos(curPos);
|
||||||
CoverFlow.applySettings();
|
CoverFlow.applySettings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ void SoundHandler::Init()
|
|||||||
for(u32 i = 0; i < MAX_DECODERS; ++i)
|
for(u32 i = 0; i < MAX_DECODERS; ++i)
|
||||||
DecoderList[i] = NULL;
|
DecoderList[i] = NULL;
|
||||||
|
|
||||||
LWP_CreateThread(&SoundThread, UpdateThread, this, SoundStack, SoundStackSize, LWP_PRIO_HIGHEST);
|
LWP_CreateThread(&SoundThread, UpdateThread, this, SoundStack, SoundStackSize, 64);
|
||||||
gprintf("Running sound thread\n");
|
gprintf("Running sound thread\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user