-some cleanup stuff

-added alpha channel handling to covers up to 640x480
(homebrew icons should look fine now)
This commit is contained in:
fix94.1 2012-11-11 18:28:03 +00:00
parent ce84e11259
commit b2fdc18998
29 changed files with 547 additions and 428 deletions

View File

@ -226,34 +226,6 @@ void BannerWindow::ToogleGameSettings()
Brightness = (Brightness > 1.f ? 0.f : 200.f); Brightness = (Brightness > 1.f ? 0.f : 200.f);
} }
void BannerWindow::DrawRectangle(f32 x, f32 y, f32 width, f32 height, GXColor color)
{
Mtx modelViewMtx;
guMtxIdentity(modelViewMtx);
GX_LoadPosMtxImm(modelViewMtx, GX_PNMTX0);
GX_SetTevOp(GX_TEVSTAGE0, GX_PASSCLR);
GX_ClearVtxDesc();
GX_InvVtxCache();
GX_SetVtxDesc(GX_VA_POS, GX_DIRECT);
GX_SetVtxDesc(GX_VA_CLR0, GX_DIRECT);
GX_SetVtxDesc(GX_VA_TEX0, GX_NONE);
int i;
f32 x2 = x + width;
f32 y2 = y + height;
guVector v[] = { { x, y, 0.0f }, { x2, y, 0.0f }, { x2, y2, 0.0f }, { x, y2, 0.0f }, { x, y, 0.0f } };
GX_Begin(GX_TRIANGLEFAN, GX_VTXFMT0, 4);
for(i = 0; i < 4; i++)
{
GX_Position3f32(v[i].x, v[i].y, v[i].z);
GX_Color4u8(color.r, color.g, color.b, color.a);
}
GX_End();
GX_SetTevOp(GX_TEVSTAGE0, GX_MODULATE);
}
void BannerWindow::ReSetup_GX(void) void BannerWindow::ReSetup_GX(void)
{ {
// channel control // channel control

View File

@ -44,7 +44,7 @@ typedef struct _GC_OpeningBnr
class BannerWindow class BannerWindow
{ {
public: public:
BannerWindow(); BannerWindow();
void DeleteBanner(bool gamechange = false); void DeleteBanner(bool gamechange = false);
void LoadBanner(u8 *font1, u8 *font2); void LoadBanner(u8 *font1, u8 *font2);
@ -59,11 +59,10 @@ class BannerWindow
bool GetShowBanner() { return ShowBanner; } bool GetShowBanner() { return ShowBanner; }
void SetShowBanner(bool show) { ShowBanner = show; } void SetShowBanner(bool show) { ShowBanner = show; }
void ReSetup_GX(void); void ReSetup_GX(void);
protected: protected:
int MainLoop(); int MainLoop();
void Animate(void); void Animate(void);
void ChangeGame(Banner *banner); void ChangeGame(Banner *banner);
void DrawRectangle(f32 x, f32 y, f32 width, f32 height, GXColor color);
void Init(u8 *font1, u8 *font2); void Init(u8 *font1, u8 *font2);
static const float fBannerWidth = 608.f; static const float fBannerWidth = 608.f;

View File

@ -333,7 +333,7 @@ void WiiMovie::LoadNextFrame()
} }
STexture frame; STexture frame;
if(frame.fromTHP(VideoF.getData(), VideoF.getWidth(), VideoF.getHeight()) == STexture::TE_OK) if(frame.fromTHP(VideoF.getData(), VideoF.getWidth(), VideoF.getHeight()) == TE_OK)
Frames.push_back(frame); Frames.push_back(frame);
VideoF.dealloc(); VideoF.dealloc();
} }

View File

@ -59,6 +59,8 @@ static inline int loopNum(int i, int s)
return i < 0 ? (s - (-i % s)) % s : i % s; return i < 0 ? (s - (-i % s)) % s : i % s;
} }
CCoverFlow CoverFlow;
CCoverFlow::CCover::CCover(void) CCoverFlow::CCover::CCover(void)
{ {
index = 0; index = 0;
@ -189,6 +191,8 @@ CCoverFlow::CCoverFlow(void)
m_dvdskin_loaded = false; m_dvdskin_loaded = false;
m_loadingCovers = false; m_loadingCovers = false;
m_coverThrdBusy = false; m_coverThrdBusy = false;
m_renderTex = false;
m_renderingTex = NULL;
m_moved = false; m_moved = false;
m_selected = false; m_selected = false;
m_hideCover = false; m_hideCover = false;
@ -760,7 +764,7 @@ void CCoverFlow::_effectBg(const STexture &tex)
GX_End(); GX_End();
} }
void CCoverFlow::_effectBlur(CVideo &vid, bool vertical) void CCoverFlow::_effectBlur(bool vertical)
{ {
int kSize = m_blurRadius * 2 + 1; int kSize = m_blurRadius * 2 + 1;
GXTexObj texObj; GXTexObj texObj;
@ -892,7 +896,7 @@ void CCoverFlow::_effectBlur(CVideo &vid, bool vertical)
GX_Position3f32(x, y + h, 0.f); GX_Position3f32(x, y + h, 0.f);
GX_TexCoord2f32(0.f, 1.f); GX_TexCoord2f32(0.f, 1.f);
GX_End(); GX_End();
vid.renderToTexture(m_effectTex, true); m_vid.renderToTexture(m_effectTex, true);
} }
bool CCoverFlow::_effectVisible(void) bool CCoverFlow::_effectVisible(void)
@ -903,34 +907,34 @@ bool CCoverFlow::_effectVisible(void)
|| lo.shadowColorEnd.a > 0 || lo.shadowColorOff.a > 0; || lo.shadowColorEnd.a > 0 || lo.shadowColorOff.a > 0;
} }
void CCoverFlow::makeEffectTexture(CVideo &vid, const STexture &bg) void CCoverFlow::makeEffectTexture(const STexture &bg)
{ {
if (!_effectVisible()) return; if (!_effectVisible()) return;
int aa = 8; int aa = 8;
GX_SetDither(GX_DISABLE); GX_SetDither(GX_DISABLE);
vid.setAA(aa, true, m_effectTex.width, m_effectTex.height); m_vid.setAA(aa, true, m_effectTex.width, m_effectTex.height);
for (int i = 0; i < aa; ++i) for (int i = 0; i < aa; ++i)
{ {
vid.prepareAAPass(i); m_vid.prepareAAPass(i);
vid.setup2DProjection(false, true); m_vid.setup2DProjection(false, true);
_effectBg(bg); _effectBg(bg);
if (m_mirrorBlur) if (m_mirrorBlur)
_draw(CCoverFlow::CFDR_NORMAL, true, false); _draw(CCoverFlow::CFDR_NORMAL, true, false);
vid.shiftViewPort(m_shadowX, m_shadowY); m_vid.shiftViewPort(m_shadowX, m_shadowY);
_draw(CCoverFlow::CFDR_SHADOW, false, true); _draw(CCoverFlow::CFDR_SHADOW, false, true);
vid.renderAAPass(i); m_vid.renderAAPass(i);
} }
GX_SetPixelFmt(GX_PF_RGBA6_Z24, GX_ZC_LINEAR); GX_SetPixelFmt(GX_PF_RGBA6_Z24, GX_ZC_LINEAR);
GX_InvVtxCache(); GX_InvVtxCache();
GX_InvalidateTexAll(); GX_InvalidateTexAll();
vid.setup2DProjection(false, true); m_vid.setup2DProjection(false, true);
GX_SetViewport(0.f, 0.f, (float)m_effectTex.width, (float)m_effectTex.height, 0.f, 1.f); GX_SetViewport(0.f, 0.f, (float)m_effectTex.width, (float)m_effectTex.height, 0.f, 1.f);
GX_SetScissor(0, 0, m_effectTex.width, m_effectTex.height); GX_SetScissor(0, 0, m_effectTex.width, m_effectTex.height);
vid.drawAAScene(); m_vid.drawAAScene();
vid.renderToTexture(m_effectTex, true); m_vid.renderToTexture(m_effectTex, true);
_effectBlur(vid, false); _effectBlur(false);
_effectBlur(vid, true); _effectBlur(true);
GX_SetDither(GX_ENABLE); GX_SetDither(GX_ENABLE);
} }
@ -1532,6 +1536,24 @@ u64 CCoverFlow::getChanTitle(void) const
m_items[loopNum(m_covers[m_range / 2].index + m_jump, m_items.size())].hdr->settings[1]); m_items[loopNum(m_covers[m_range / 2].index + m_jump, m_items.size())].hdr->settings[1]);
} }
bool CCoverFlow::getRenderTex(void)
{
return m_renderTex;
}
void CCoverFlow::setRenderTex(bool val)
{
m_renderTex = val;
}
void CCoverFlow::RenderTex(void)
{
if(m_renderingTex == NULL || m_renderingTex->data == NULL)
return;
DrawTexture(m_renderingTex);
m_vid.renderToTexture(*m_renderingTex, true);
setRenderTex(false);
}
bool CCoverFlow::select(void) bool CCoverFlow::select(void)
{ {
@ -1837,34 +1859,46 @@ bool CCoverFlow::start(const char *id)
// Load resident textures // Load resident textures
if(!m_dvdskin_loaded) if(!m_dvdskin_loaded)
{ {
if(m_dvdSkin.fromJPG(dvdskin_jpg, dvdskin_jpg_size) != STexture::TE_OK) if(m_dvdSkin.fromJPG(dvdskin_jpg, dvdskin_jpg_size) != TE_OK)
return false; return false;
if(m_dvdSkin_Red.fromJPG(dvdskin_red_jpg, dvdskin_red_jpg_size) != STexture::TE_OK) if(m_dvdSkin_Red.fromJPG(dvdskin_red_jpg, dvdskin_red_jpg_size) != TE_OK)
return false; return false;
if(m_dvdSkin_Black.fromJPG(dvdskin_black_jpg, dvdskin_black_jpg_size) != STexture::TE_OK) if(m_dvdSkin_Black.fromJPG(dvdskin_black_jpg, dvdskin_black_jpg_size) != TE_OK)
return false; return false;
if(m_dvdSkin_Yellow.fromJPG(dvdskin_yellow_jpg, dvdskin_yellow_jpg_size) != STexture::TE_OK) if(m_dvdSkin_Yellow.fromJPG(dvdskin_yellow_jpg, dvdskin_yellow_jpg_size) != TE_OK)
return false; return false;
if(m_dvdSkin_GreenOne.fromJPG(dvdskin_greenone_jpg, dvdskin_greenone_jpg_size) != STexture::TE_OK) if(m_dvdSkin_GreenOne.fromJPG(dvdskin_greenone_jpg, dvdskin_greenone_jpg_size) != TE_OK)
return false; return false;
if(m_dvdSkin_GreenTwo.fromJPG(dvdskin_greentwo_jpg, dvdskin_greentwo_jpg_size) != STexture::TE_OK) if(m_dvdSkin_GreenTwo.fromJPG(dvdskin_greentwo_jpg, dvdskin_greentwo_jpg_size) != TE_OK)
return false; return false;
m_dvdskin_loaded = true; m_dvdskin_loaded = true;
} }
if(m_box) if(m_box)
{ {
if (m_pngLoadCover.empty() || STexture::TE_OK != m_loadingTexture.fromImageFile(m_pngLoadCover.c_str(), GX_TF_CMPR, 32, 512)) if(m_pngLoadCover.empty() || m_loadingTexture.fromImageFile(m_pngLoadCover.c_str(), GX_TF_CMPR, 32, 512) != TE_OK)
if (STexture::TE_OK != m_loadingTexture.fromPNG(loading_png, GX_TF_CMPR, 32, 512)) return false; {
if (m_pngNoCover.empty() || STexture::TE_OK != m_noCoverTexture.fromImageFile(m_pngNoCover.c_str(), GX_TF_CMPR, 32, 512)) if(m_loadingTexture.fromPNG(loading_png, GX_TF_CMPR, 32, 512) != TE_OK)
if (STexture::TE_OK != m_noCoverTexture.fromPNG(nopic_png, GX_TF_CMPR, 32, 512)) return false; return false;
}
if(m_pngNoCover.empty() || m_noCoverTexture.fromImageFile(m_pngNoCover.c_str(), GX_TF_CMPR, 32, 512) != TE_OK)
{
if(m_noCoverTexture.fromPNG(nopic_png, GX_TF_CMPR, 32, 512) != TE_OK)
return false;
}
} }
else else
{ {
if (m_pngLoadCoverFlat.empty() || STexture::TE_OK != m_loadingTexture.fromImageFile(m_pngLoadCoverFlat.c_str(), GX_TF_CMPR, 32, 512)) if(m_pngLoadCoverFlat.empty() || m_loadingTexture.fromImageFile(m_pngLoadCoverFlat.c_str(), GX_TF_CMPR, 32, 512) != TE_OK)
if (STexture::TE_OK != m_loadingTexture.fromJPG(flatloading_jpg, flatloading_jpg_size, GX_TF_CMPR, 32, 512)) return false; {
if (m_pngNoCoverFlat.empty() || STexture::TE_OK != m_noCoverTexture.fromImageFile(m_pngNoCoverFlat.c_str(), GX_TF_CMPR, 32, 512)) if(m_loadingTexture.fromJPG(flatloading_jpg, flatloading_jpg_size, GX_TF_CMPR, 32, 512) != TE_OK)
if (STexture::TE_OK != m_noCoverTexture.fromPNG(flatnopic_png, GX_TF_CMPR, 32, 512)) return false; return false;
}
if(m_pngNoCoverFlat.empty() || m_noCoverTexture.fromImageFile(m_pngNoCoverFlat.c_str(), GX_TF_CMPR, 32, 512) != TE_OK)
{
if(m_noCoverTexture.fromPNG(flatnopic_png, GX_TF_CMPR, 32, 512) != TE_OK)
return false;
}
} }
m_covers.clear(); m_covers.clear();
m_covers.resize(m_range); m_covers.resize(m_range);
@ -2003,7 +2037,7 @@ u32 CCoverFlow::_currentPos(void) const
return m_covers[m_range / 2].index; return m_covers[m_range / 2].index;
} }
void CCoverFlow::mouse(CVideo &vid, int chan, int x, int y) void CCoverFlow::mouse(int chan, int x, int y)
{ {
if (m_covers.empty()) return; if (m_covers.empty()) return;
@ -2012,10 +2046,10 @@ void CCoverFlow::mouse(CVideo &vid, int chan, int x, int y)
m_mouse[chan] = -1; m_mouse[chan] = -1;
else else
{ {
vid.prepareStencil(); m_vid.prepareStencil();
_draw(CCoverFlow::CFDR_STENCIL, false, false); _draw(CCoverFlow::CFDR_STENCIL, false, false);
vid.renderStencil(); m_vid.renderStencil();
m_mouse[chan] = vid.stencilVal(x, y) - 1; m_mouse[chan] = m_vid.stencilVal(x, y) - 1;
} }
if (m != m_mouse[chan]) if (m != m_mouse[chan])
{ {
@ -2025,17 +2059,17 @@ void CCoverFlow::mouse(CVideo &vid, int chan, int x, int y)
} }
} }
bool CCoverFlow::mouseOver(CVideo &vid, int x, int y) bool CCoverFlow::mouseOver(int x, int y)
{ {
if (m_covers.empty()) return false; if (m_covers.empty()) return false;
vid.prepareStencil(); m_vid.prepareStencil();
_draw(CCoverFlow::CFDR_STENCIL, false, false); _draw(CCoverFlow::CFDR_STENCIL, false, false);
vid.renderStencil(); m_vid.renderStencil();
vid.prepareStencil(); m_vid.prepareStencil();
_draw(CCoverFlow::CFDR_STENCIL, false, false); _draw(CCoverFlow::CFDR_STENCIL, false, false);
vid.renderStencil(); m_vid.renderStencil();
return vid.stencilVal(x, y) == (int)m_range / 2 + 1; return m_vid.stencilVal(x, y) == (int)m_range / 2 + 1;
} }
bool CCoverFlow::findId(const char *id, bool instant) bool CCoverFlow::findId(const char *id, bool instant)
@ -2519,20 +2553,21 @@ public:
bool CCoverFlow::preCacheCover(const char *id, const u8 *png, bool full) bool CCoverFlow::preCacheCover(const char *id, const u8 *png, bool full)
{ {
if (m_cachePath.empty()) return false; if(m_cachePath.empty())
return false;
STexture tex; STexture tex;
u8 textureFmt = m_compressTextures ? GX_TF_CMPR : GX_TF_RGB565; u8 textureFmt = m_compressTextures ? GX_TF_CMPR : GX_TF_RGB565;
if(tex.fromPNG(png, textureFmt, 32) != TE_OK)
if (STexture::TE_OK != tex.fromPNG(png, textureFmt, 32)) return false; return false;
u32 bufSize = fixGX_GetTexBufferSize(tex.width, tex.height, tex.format, tex.maxLOD > 0 ? GX_TRUE : GX_FALSE, tex.maxLOD); u32 bufSize = fixGX_GetTexBufferSize(tex.width, tex.height, tex.format, tex.maxLOD > 0 ? GX_TRUE : GX_FALSE, tex.maxLOD);
uLongf zBufferSize = m_compressCache ? bufSize + bufSize / 100 + 12 : bufSize; uLongf zBufferSize = m_compressCache ? bufSize + bufSize / 100 + 12 : bufSize;
u8 *zBuffer = m_compressCache ? (u8*)MEM2_alloc(zBufferSize) : tex.data; u8 *zBuffer = m_compressCache ? (u8*)MEM2_alloc(zBufferSize) : tex.data;
if (!!zBuffer && (!m_compressCache || compress(zBuffer, &zBufferSize, tex.data, bufSize) == Z_OK)) if(zBuffer != NULL && (!m_compressCache || compress(zBuffer, &zBufferSize, tex.data, bufSize) == Z_OK))
{ {
FILE *file = fopen(fmt("%s/%s.wfc", m_cachePath.c_str(), id), "wb"); FILE *file = fopen(fmt("%s/%s.wfc", m_cachePath.c_str(), id), "wb");
if (file != 0) if(file != NULL)
{ {
SWFCHeader header(tex, full, m_compressCache); SWFCHeader header(tex, full, m_compressCache);
fwrite(&header, 1, sizeof header, file); fwrite(&header, 1, sizeof header, file);
@ -2549,7 +2584,7 @@ bool CCoverFlow::fullCoverCached(const char *id)
bool found = false; bool found = false;
FILE *file = fopen(fmt("%s/%s.wfc", m_cachePath.c_str(), id), "rb"); FILE *file = fopen(fmt("%s/%s.wfc", m_cachePath.c_str(), id), "rb");
if (file != 0) if(file != NULL)
{ {
SWFCHeader header; SWFCHeader header;
found = fread(&header, 1, sizeof header, file) == sizeof header found = fread(&header, 1, sizeof header, file) == sizeof header
@ -2566,12 +2601,19 @@ bool CCoverFlow::_loadCoverTexPNG(u32 i, bool box, bool hq, bool blankBoxCover)
if (!m_loadingCovers) return false; if (!m_loadingCovers) return false;
u8 textureFmt = m_compressTextures ? GX_TF_CMPR : GX_TF_RGB565; u8 textureFmt = m_compressTextures ? GX_TF_CMPR : GX_TF_RGB565;
const char *path = box ? (blankBoxCover ? m_items[i].blankBoxPicPath.c_str() :
m_items[i].boxPicPath.c_str()) : m_items[i].picPath.c_str();
STexture tex; STexture tex;
tex.thread = true;
const char *path = box ? (blankBoxCover ? m_items[i].blankBoxPicPath.c_str() : m_items[i].boxPicPath.c_str()) : m_items[i].picPath.c_str(); m_renderingTex = &tex;
if (STexture::TE_OK != tex.fromImageFile(path, textureFmt, 32)) return false; if(tex.fromImageFile(path, textureFmt, 32) != TE_OK)
{
if (!m_loadingCovers) return false; m_renderingTex = NULL;
return false;
}
m_renderingTex = NULL;
if(!m_loadingCovers)
return false;
LWP_MutexLock(m_mutex); LWP_MutexLock(m_mutex);
m_items[i].texture.Cleanup(); m_items[i].texture.Cleanup();
@ -2605,7 +2647,7 @@ bool CCoverFlow::_loadCoverTexPNG(u32 i, bool box, bool hq, bool blankBoxCover)
else else
strncpy(gamePath, m_items[i].hdr->id, sizeof(gamePath)); strncpy(gamePath, m_items[i].hdr->id, sizeof(gamePath));
FILE *file = fopen(fmt("%s/%s.wfc", m_cachePath.c_str(), gamePath), "wb"); FILE *file = fopen(fmt("%s/%s.wfc", m_cachePath.c_str(), gamePath), "wb");
if (file != 0) if(file != NULL)
{ {
SWFCHeader header(tex, box, m_compressCache); SWFCHeader header(tex, box, m_compressCache);
fwrite(&header, 1, sizeof header, file); fwrite(&header, 1, sizeof header, file);

View File

@ -71,14 +71,14 @@ public:
void flip(bool force = false, bool f = true); void flip(bool force = false, bool f = true);
void cancel(void); void cancel(void);
bool selected(void) const { return m_selected; } bool selected(void) const { return m_selected; }
void makeEffectTexture(CVideo &vid, const STexture &bg); void makeEffectTexture(const STexture &bg);
void drawText(bool withRectangle = false); void drawText(bool withRectangle = false);
void draw(void); void draw(void);
void drawEffect(void); void drawEffect(void);
void hideCover(void); void hideCover(void);
void showCover(void); void showCover(void);
void mouse(CVideo &vid, int chan, int x, int y); void mouse(int chan, int x, int y);
bool mouseOver(CVideo &vid, int x, int y); bool mouseOver(int x, int y);
// Accessors for settings // Accessors for settings
void setCompression(bool enable) { m_compressTextures = enable; } void setCompression(bool enable) { m_compressTextures = enable; }
bool getBoxMode(void) const { return m_box;} bool getBoxMode(void) const { return m_box;}
@ -131,6 +131,10 @@ public:
dir_discHdr * getNextHdr(void) const; dir_discHdr * getNextHdr(void) const;
wstringEx getTitle(void) const; wstringEx getTitle(void) const;
u64 getChanTitle(void) const; u64 getChanTitle(void) const;
//
bool getRenderTex(void);
void setRenderTex(bool);
void RenderTex(void);
private: private:
enum DrawMode { CFDR_NORMAL, CFDR_STENCIL, CFDR_SHADOW }; enum DrawMode { CFDR_NORMAL, CFDR_STENCIL, CFDR_SHADOW };
struct SLayout struct SLayout
@ -238,6 +242,10 @@ private:
volatile bool m_loadingCovers; volatile bool m_loadingCovers;
volatile bool m_coverThrdBusy; volatile bool m_coverThrdBusy;
volatile bool m_moved; volatile bool m_moved;
//
volatile bool m_renderTex;
STexture *m_renderingTex;
//
volatile int m_hqCover; volatile int m_hqCover;
bool m_selected; bool m_selected;
int m_tickCount; int m_tickCount;
@ -299,7 +307,7 @@ 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; u32 _currentPos(void) const;
void _effectBg(const STexture &tex); void _effectBg(const STexture &tex);
void _effectBlur(CVideo &vid, bool vertical); void _effectBlur(bool vertical);
bool _effectVisible(void); bool _effectVisible(void);
void _drawMirrorZ(void); void _drawMirrorZ(void);
void _drawTitle(int i, bool mirror, bool rectangle); void _drawTitle(int i, bool mirror, bool rectangle);
@ -349,4 +357,6 @@ private:
CCoverFlow &operator=(const CCoverFlow &); CCoverFlow &operator=(const CCoverFlow &);
}; };
extern CCoverFlow CoverFlow;
#endif // !defined(__COVERFLOW_HPP) #endif // !defined(__COVERFLOW_HPP)

View File

@ -29,16 +29,16 @@ bool CCursor::init(const char *png, bool wideFix, CColor shadowColor, float shad
m_wideFix = wideFix; m_wideFix = wideFix;
m_x = -1; m_x = -1;
m_y = -1; m_y = -1;
if (STexture::TE_OK != m_texture.fromImageFile(png)) if(m_texture.fromImageFile(png) != TE_OK)
{ {
if (chan == 0) if(chan == 0)
ok = STexture::TE_OK == m_texture.fromPNG(player1_point_png); ok = (m_texture.fromPNG(player1_point_png) == TE_OK);
else if (chan == 1) else if(chan == 1)
ok = STexture::TE_OK == m_texture.fromPNG(player2_point_png); ok = (m_texture.fromPNG(player2_point_png) == TE_OK);
else if (chan == 2) else if(chan == 2)
ok = STexture::TE_OK == m_texture.fromPNG(player3_point_png); ok = (m_texture.fromPNG(player3_point_png) == TE_OK);
else if (chan == 3) else if(chan == 3)
ok = STexture::TE_OK == m_texture.fromPNG(player4_point_png); ok = (m_texture.fromPNG(player4_point_png) == TE_OK);
} }
if (ok && shadow) if (ok && shadow)
{ {

View File

@ -50,15 +50,14 @@ bool CFanart::load(Config &m_globalConfig, const char *path, const char *id)
strncpy(dir, fmt("%s/%s", path, id), 63); strncpy(dir, fmt("%s/%s", path, id), 63);
STexture fanBg, fanBgLq; STexture fanBg, fanBgLq;
STexture::TexErr texErr = fanBg.fromImageFile(fmt("%s/background.png", dir)); TexErr texErr = fanBg.fromImageFile(fmt("%s/background.png", dir));
if(texErr == STexture::TE_ERROR) if(texErr == TE_ERROR)
{ {
memset(dir,0, 64); memset(dir,0, 64);
strncpy(dir, fmt("%s/%.3s", path, id), 63); strncpy(dir, fmt("%s/%.3s", path, id), 63);
texErr = fanBg.fromImageFile(fmt("%s/background.png", dir)); texErr = fanBg.fromImageFile(fmt("%s/background.png", dir));
} }
if(texErr == TE_OK)
if (texErr == STexture::TE_OK)
{ {
char cfg_char[64]; char cfg_char[64];
memset(cfg_char,0, 64); memset(cfg_char,0, 64);
@ -195,7 +194,7 @@ void CFanart::draw(bool front)
CFanartElement::CFanartElement(Config &cfg, const char *dir, int artwork) CFanartElement::CFanartElement(Config &cfg, const char *dir, int artwork)
: m_artwork(artwork), m_isValid(false) : m_artwork(artwork), m_isValid(false)
{ {
m_isValid = m_art.fromImageFile(fmt("%s/artwork%d.png", dir, artwork)) == STexture::TE_OK; m_isValid = (m_art.fromImageFile(fmt("%s/artwork%d.png", dir, artwork)) == TE_OK);
if (!m_isValid) return; if (!m_isValid) return;
const char *section = fmt("artwork%d", artwork); const char *section = fmt("artwork%d", artwork);

View File

@ -10,7 +10,7 @@ template <class T> static inline T loopNum(T i, T s)
STexture CButtonsMgr::_noTexture; STexture CButtonsMgr::_noTexture;
bool CButtonsMgr::init(CVideo &vid) bool CButtonsMgr::init()
{ {
m_elts.clear(); m_elts.clear();
for(int chan = WPAD_MAX_WIIMOTES-1; chan >= 0; chan--) for(int chan = WPAD_MAX_WIIMOTES-1; chan >= 0; chan--)
@ -23,7 +23,6 @@ bool CButtonsMgr::init(CVideo &vid)
m_noclick = false; m_noclick = false;
m_nohover = false; m_nohover = false;
m_mouse = false; m_mouse = false;
m_vid = vid;
soundInit(); soundInit();
return true; return true;

View File

@ -26,7 +26,7 @@ struct SButtonTextureSet
class CButtonsMgr class CButtonsMgr
{ {
public: public:
bool init(CVideo &vid); bool init();
void setRumble(bool enabled) { m_rumbleEnabled = enabled; } void setRumble(bool enabled) { m_rumbleEnabled = enabled; }
void reserve(u32 capacity) { m_elts.reserve(capacity); } void reserve(u32 capacity) { m_elts.reserve(capacity); }
s16 addButton(SFont font, const wstringEx &text, int x, int y, u32 width, u32 height, const CColor &color, s16 addButton(SFont font, const wstringEx &text, int x, int y, u32 width, u32 height, const CColor &color,
@ -149,7 +149,6 @@ private:
bool m_noclick; bool m_noclick;
bool m_nohover; bool m_nohover;
bool m_mouse; bool m_mouse;
CVideo m_vid;
private: private:
void _drawBtn(SButton &b, bool selected, bool click); void _drawBtn(SButton &b, bool selected, bool click);
void _drawLbl(SLabel &b); void _drawLbl(SLabel &b);

View File

@ -1,10 +1,13 @@
#include <unistd.h>
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
#include <ogcsys.h> #include <ogcsys.h>
#include <malloc.h> #include <malloc.h>
#include <cmath> #include <cmath>
#include "memory/mem2.hpp"
#include "texture.hpp" #include "texture.hpp"
#include "coverflow.hpp"
#include "memory/mem2.hpp"
#include "pngu.h" #include "pngu.h"
#include "gcvid.h" #include "gcvid.h"
@ -59,6 +62,21 @@ static inline void _convertToFlippedRGBA(u8 *dst, const u8 *src, u32 width, u32
} }
} }
static inline void _convertToRGBA(u8 *dst, const u8 *src, u32 width, u32 height)
{
for (u32 y = 0; y < height; ++y)
{
for (u32 x = 0; x < width; ++x)
{
u32 i = (x + y * width) * 4;
dst[i] = src[coordsRGBA8(x, y, width) + 1];
dst[i + 1] = src[coordsRGBA8(x, y, width) + 32];
dst[i + 2] = src[coordsRGBA8(x, y, width) + 33];
dst[i + 3] = src[coordsRGBA8(x, y, width)];
}
}
}
static inline void _convertToRGBA8(u8 *dst, const u8 *src, u32 width, u32 height) static inline void _convertToRGBA8(u8 *dst, const u8 *src, u32 width, u32 height)
{ {
for (u32 y = 0; y < height; ++y) for (u32 y = 0; y < height; ++y)
@ -213,7 +231,7 @@ bool STexture::CopyTexture(const STexture &tex)
return true; return true;
} }
STexture::TexErr STexture::fromImageFile(const char *filename, u8 f, u32 minMipSize, u32 maxMipSize) TexErr STexture::fromImageFile(const char *filename, u8 f, u32 minMipSize, u32 maxMipSize)
{ {
Cleanup(); Cleanup();
FILE *file = fopen(filename, "rb"); FILE *file = fopen(filename, "rb");
@ -250,7 +268,7 @@ STexture::TexErr STexture::fromImageFile(const char *filename, u8 f, u32 minMipS
return result; return result;
} }
STexture::TexErr STexture::fromTHP(const u8 *src, u32 w, u32 h) TexErr STexture::fromTHP(const u8 *src, u32 w, u32 h)
{ {
width = w; width = w;
height = h; height = h;
@ -288,7 +306,7 @@ STexture::TexErr STexture::fromTHP(const u8 *src, u32 w, u32 h)
return TE_OK; return TE_OK;
} }
STexture::TexErr STexture::fromJPG(const u8 *buffer, const u32 buffer_size, u8 f, u32 minMipSize, u32 maxMipSize) TexErr STexture::fromJPG(const u8 *buffer, const u32 buffer_size, u8 f, u32 minMipSize, u32 maxMipSize)
{ {
Cleanup(); Cleanup();
@ -413,7 +431,7 @@ STexture::TexErr STexture::fromJPG(const u8 *buffer, const u32 buffer_size, u8 f
return TE_OK; return TE_OK;
} }
STexture::TexErr STexture::fromPNG(const u8 *buffer, u8 f, u32 minMipSize, u32 maxMipSize) TexErr STexture::fromPNG(const u8 *buffer, u8 f, u32 minMipSize, u32 maxMipSize)
{ {
Cleanup(); Cleanup();
u8 maxLODTmp = 0; u8 maxLODTmp = 0;
@ -467,7 +485,24 @@ STexture::TexErr STexture::fromPNG(const u8 *buffer, u8 f, u32 minMipSize, u32 m
memset(tmpData2, 0, Size2); memset(tmpData2, 0, Size2);
PNGU_DecodeToRGBA8(ctx, imgProp.imgWidth, imgProp.imgHeight, tmpData2, 0, 0xFF); PNGU_DecodeToRGBA8(ctx, imgProp.imgWidth, imgProp.imgHeight, tmpData2, 0, 0xFF);
PNGU_ReleaseImageContext(ctx); PNGU_ReleaseImageContext(ctx);
if((imgProp.imgColorType == PNGU_COLOR_TYPE_GRAY_ALPHA
|| imgProp.imgColorType == PNGU_COLOR_TYPE_RGB_ALPHA)
&& imgProp.imgWidth <= 640 && imgProp.imgHeight <= 480 && thread)
{
format = GX_TF_RGBA8;
width = imgProp.imgWidth;
height = imgProp.imgHeight;
dataSize = GX_GetTexBufferSize(width, height, format, GX_FALSE, 0);
data = (u8*)MEM2_alloc(dataSize);
_convertToRGBA8(data, tmpData2, width, height);
DCFlushRange(data, dataSize);
CoverFlow.setRenderTex(true);
while(CoverFlow.getRenderTex())
usleep(50);
_convertToRGBA(tmpData2, data, width, height);
DCFlushRange(tmpData2, Size2);
Cleanup();
}
tmpData2 = _genMipMaps(tmpData2, imgProp.imgWidth, imgProp.imgHeight, maxLODTmp, baseWidth, baseHeight); tmpData2 = _genMipMaps(tmpData2, imgProp.imgWidth, imgProp.imgHeight, maxLODTmp, baseWidth, baseHeight);
if(tmpData2 == NULL) if(tmpData2 == NULL)
{ {

View File

@ -4,10 +4,17 @@
#include <gccore.h> #include <gccore.h>
enum TexErr
{
TE_OK = 0,
TE_ERROR,
TE_NOMEM
};
class STexture class STexture
{ {
public: public:
STexture(void) : data(NULL), dataSize(0), width(0), height(0), format(-1), maxLOD(0) { } STexture(void) : data(NULL), dataSize(0), width(0), height(0), format(-1), maxLOD(0), thread(false) { }
void Cleanup(); void Cleanup();
bool CopyTexture(const STexture &tex); bool CopyTexture(const STexture &tex);
u8 *data; u8 *data;
@ -16,8 +23,7 @@ public:
u32 height; u32 height;
u8 format; u8 format;
u8 maxLOD; u8 maxLOD;
// Utility funcs bool thread;
enum TexErr { TE_OK, TE_ERROR, TE_NOMEM };
// Get from PNG, if not found from JPG // Get from PNG, if not found from JPG
TexErr fromImageFile(const char *filename, u8 f = -1, u32 minMipSize = 0, u32 maxMipSize = 0); TexErr fromImageFile(const char *filename, u8 f = -1, u32 minMipSize = 0, u32 maxMipSize = 0);
// This function doesn't use MEM2 if the PNG is loaded from memory and there's no mip mapping // This function doesn't use MEM2 if the PNG is loaded from memory and there's no mip mapping

View File

@ -236,9 +236,9 @@ void CVideo::renderToTexture(STexture &tex, bool clear)
{ {
tex.dataSize = GX_GetTexBufferSize(tex.width, tex.height, tex.format, GX_FALSE, 0); tex.dataSize = GX_GetTexBufferSize(tex.width, tex.height, tex.format, GX_FALSE, 0);
tex.data = (u8*)MEM2_alloc(tex.dataSize); tex.data = (u8*)MEM2_alloc(tex.dataSize);
}
if(tex.data == NULL) if(tex.data == NULL)
return; return;
}
GX_DrawDone(); GX_DrawDone();
GX_SetCopyFilter(GX_FALSE, NULL, GX_FALSE, NULL); GX_SetCopyFilter(GX_FALSE, NULL, GX_FALSE, NULL);
GX_SetTexCopySrc(0, 0, tex.width, tex.height); GX_SetTexCopySrc(0, 0, tex.width, tex.height);
@ -542,6 +542,7 @@ void CVideo::_showWaitMessages(CVideo *m)
if(waitItr + 1 == m->m_waitMessages.end() || waitItr == m->m_waitMessages.begin()) if(waitItr + 1 == m->m_waitMessages.end() || waitItr == m->m_waitMessages.begin())
PNGfadeDirection *= (-1); PNGfadeDirection *= (-1);
waitFrames = frames; waitFrames = frames;
m->render();
} }
else else
VIDEO_WaitVSync(); VIDEO_WaitVSync();
@ -643,7 +644,6 @@ void CVideo::waitMessage(const STexture &tex)
GX_Position3f32((float)((640 - tex.width) / 2), (float)((480 + tex.height) / 2), 0.f); GX_Position3f32((float)((640 - tex.width) / 2), (float)((480 + tex.height) / 2), 0.f);
GX_TexCoord2f32(0.f, 1.f); GX_TexCoord2f32(0.f, 1.f);
GX_End(); GX_End();
render();
} }
s32 CVideo::TakeScreenshot(const char *path) s32 CVideo::TakeScreenshot(const char *path)
@ -653,3 +653,74 @@ s32 CVideo::TakeScreenshot(const char *path)
PNGU_ReleaseImageContext (ctx); PNGU_ReleaseImageContext (ctx);
return ret; return ret;
} }
void DrawTexture(const STexture *tex)
{
if(tex == NULL)
return;
Mtx modelViewMtx;
GXTexObj texObj;
GX_SetNumChans(1);
GX_ClearVtxDesc();
GX_SetVtxDesc(GX_VA_POS, GX_DIRECT);
GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_F32, 0);
GX_SetVtxDesc(GX_VA_CLR0, GX_DIRECT);
GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GX_SetVtxDesc(GX_VA_TEX0, GX_DIRECT);
GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GX_SetNumTexGens(1);
GX_SetTevOp(GX_TEVSTAGE0, GX_MODULATE);
GX_SetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GX_SetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY);
GX_SetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR);
GX_SetAlphaUpdate(GX_TRUE);
GX_SetCullMode(GX_CULL_NONE);
GX_SetZMode(GX_DISABLE, GX_LEQUAL, GX_TRUE);
guMtxIdentity(modelViewMtx);
GX_LoadPosMtxImm(modelViewMtx, GX_PNMTX0);
GX_InitTexObj(&texObj, tex->data, tex->width, tex->height, tex->format, GX_CLAMP, GX_CLAMP, GX_FALSE);
GX_LoadTexObj(&texObj, GX_TEXMAP0);
GX_Begin(GX_QUADS, GX_VTXFMT0, 4);
GX_Position2f32(0.f, 0.f);
GX_Color4u8(0xFF, 0xFF, 0xFF, 0xFF);
GX_TexCoord2f32(0.f, 0.f);
GX_Position2f32(tex->width, 0.f);
GX_Color4u8(0xFF, 0xFF, 0xFF, 0xFF);
GX_TexCoord2f32(1.f, 0.f);
GX_Position2f32(tex->width, tex->height);
GX_Color4u8(0xFF, 0xFF, 0xFF, 0xFF);
GX_TexCoord2f32(1.f, 1.f);
GX_Position2f32(0.f, tex->height);
GX_Color4u8(0xFF, 0xFF, 0xFF, 0xFF);
GX_TexCoord2f32(0.f, 1.f);
GX_End();
}
void DrawRectangle(f32 x, f32 y, f32 width, f32 height, GXColor color)
{
Mtx modelViewMtx;
guMtxIdentity(modelViewMtx);
GX_LoadPosMtxImm(modelViewMtx, GX_PNMTX0);
GX_SetTevOp(GX_TEVSTAGE0, GX_PASSCLR);
GX_ClearVtxDesc();
GX_InvVtxCache();
GX_SetVtxDesc(GX_VA_POS, GX_DIRECT);
GX_SetVtxDesc(GX_VA_CLR0, GX_DIRECT);
GX_SetVtxDesc(GX_VA_TEX0, GX_NONE);
int i;
f32 x2 = x + width;
f32 y2 = y + height;
guVector v[] = { { x, y, 0.0f }, { x2, y, 0.0f }, { x2, y2, 0.0f }, { x, y2, 0.0f }, { x, y, 0.0f } };
GX_Begin(GX_TRIANGLEFAN, GX_VTXFMT0, 4);
for(i = 0; i < 4; i++)
{
GX_Position3f32(v[i].x, v[i].y, v[i].z);
GX_Color4u8(color.r, color.g, color.b, color.a);
}
GX_End();
GX_SetTevOp(GX_TEVSTAGE0, GX_MODULATE);
}

View File

@ -119,5 +119,8 @@ private:
CVideo(const CVideo &); CVideo(const CVideo &);
}; };
void DrawTexture(const STexture *tex);
void DrawRectangle(f32 x, f32 y, f32 width, f32 height, GXColor color);
extern CVideo m_vid; extern CVideo m_vid;
#endif //!defined(__VIDEO_HPP) #endif //!defined(__VIDEO_HPP)

View File

@ -340,7 +340,7 @@ void CMenu::init()
} }
} }
} }
m_cf.init(m_base_font, m_base_font_size, m_vid.vid_50hz()); CoverFlow.init(m_base_font, m_base_font_size, m_vid.vid_50hz());
//Make important folders first. //Make important folders first.
fsop_MakeFolder((char *)m_dataDir.c_str()); //D'OH! fsop_MakeFolder((char *)m_dataDir.c_str()); //D'OH!
@ -434,7 +434,7 @@ void CMenu::init()
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_btnMgr.init(m_vid); m_btnMgr.init();
MusicPlayer.Init(m_cfg, m_musicDir, sfmt("%s/music", m_themeDataDir.c_str())); MusicPlayer.Init(m_cfg, m_musicDir, sfmt("%s/music", m_themeDataDir.c_str()));
m_music_info = m_cfg.getBool("GENERAL", "display_music_info", true); m_music_info = m_cfg.getBool("GENERAL", "display_music_info", true);
@ -452,7 +452,7 @@ void CMenu::init()
LWP_MutexInit(&m_mutex, 0); LWP_MutexInit(&m_mutex, 0);
m_cf.setSoundVolume(m_cfg.getInt("GENERAL", "sound_volume_coverflow", 255)); CoverFlow.setSoundVolume(m_cfg.getInt("GENERAL", "sound_volume_coverflow", 255));
m_btnMgr.setSoundVolume(m_cfg.getInt("GENERAL", "sound_volume_gui", 255)); m_btnMgr.setSoundVolume(m_cfg.getInt("GENERAL", "sound_volume_gui", 255));
m_bnrSndVol = m_cfg.getInt("GENERAL", "sound_volume_bnr", 255); m_bnrSndVol = m_cfg.getInt("GENERAL", "sound_volume_bnr", 255);
m_bnr_settings = m_cfg.getBool("GENERAL", "banner_in_settings", true); m_bnr_settings = m_cfg.getBool("GENERAL", "banner_in_settings", true);
@ -502,7 +502,7 @@ void CMenu::cleanup()
soundDeinit(); soundDeinit();
m_vid.cleanup(); m_vid.cleanup();
m_cf.shutdown(); CoverFlow.shutdown();
wiiLightOff(); wiiLightOff();
_deinitNetwork(); _deinitNetwork();
@ -652,10 +652,10 @@ void CMenu::_loadCFCfg()
const char *domain = "_COVERFLOW"; const char *domain = "_COVERFLOW";
//gprintf("Preparing to load sounds from %s\n", m_themeDataDir.c_str()); //gprintf("Preparing to load sounds from %s\n", m_themeDataDir.c_str());
m_cf.setCachePath(m_cacheDir.c_str(), !m_cfg.getBool("GENERAL", "keep_png", true), m_cfg.getBool("GENERAL", "compress_cache", false)); CoverFlow.setCachePath(m_cacheDir.c_str(), !m_cfg.getBool("GENERAL", "keep_png", true), m_cfg.getBool("GENERAL", "compress_cache", false));
m_cf.setBufferSize(m_cfg.getInt("GENERAL", "cover_buffer", 20)); CoverFlow.setBufferSize(m_cfg.getInt("GENERAL", "cover_buffer", 20));
// Coverflow Sounds // Coverflow Sounds
m_cf.setSounds( CoverFlow.setSounds(
new GuiSound(fmt("%s/%s", m_themeDataDir.c_str(), m_theme.getString(domain, "sound_flip").c_str())), new GuiSound(fmt("%s/%s", m_themeDataDir.c_str(), m_theme.getString(domain, "sound_flip").c_str())),
_sound(theme.soundSet, domain, "sound_hover", hover_wav, hover_wav_size, "default_btn_hover", false), _sound(theme.soundSet, domain, "sound_hover", hover_wav, hover_wav_size, "default_btn_hover", false),
_sound(theme.soundSet, domain, "sound_select", click_wav, click_wav_size, "default_btn_click", false), _sound(theme.soundSet, domain, "sound_select", click_wav, click_wav_size, "default_btn_click", false),
@ -666,9 +666,9 @@ void CMenu::_loadCFCfg()
string texNoCover = sfmt("%s/%s", m_themeDataDir.c_str(), m_theme.getString(domain, "missing_cover_box").c_str()); string texNoCover = sfmt("%s/%s", m_themeDataDir.c_str(), m_theme.getString(domain, "missing_cover_box").c_str());
string texLoadingFlat = sfmt("%s/%s", m_themeDataDir.c_str(), m_theme.getString(domain, "loading_cover_flat").c_str()); string texLoadingFlat = sfmt("%s/%s", m_themeDataDir.c_str(), m_theme.getString(domain, "loading_cover_flat").c_str());
string texNoCoverFlat = sfmt("%s/%s", m_themeDataDir.c_str(), m_theme.getString(domain, "missing_cover_flat").c_str()); string texNoCoverFlat = sfmt("%s/%s", m_themeDataDir.c_str(), m_theme.getString(domain, "missing_cover_flat").c_str());
m_cf.setTextures(texLoading, texLoadingFlat, texNoCover, texNoCoverFlat); CoverFlow.setTextures(texLoading, texLoadingFlat, texNoCover, texNoCoverFlat);
// Font // Font
m_cf.setFont(_font(theme.fontSet, domain, "font", TITLEFONT), m_theme.getColor(domain, "font_color", CColor(0xFFFFFFFF))); CoverFlow.setFont(_font(theme.fontSet, domain, "font", TITLEFONT), m_theme.getColor(domain, "font_color", CColor(0xFFFFFFFF)));
// Coverflow Count // Coverflow Count
m_numCFVersions = min(max(2, m_theme.getInt("_COVERFLOW", "number_of_modes", 2)), 15); m_numCFVersions = min(max(2, m_theme.getInt("_COVERFLOW", "number_of_modes", 2)), 15);
} }
@ -735,31 +735,31 @@ void CMenu::_loadCFLayout(int version, bool forceAA, bool otherScrnFmt)
int max_fsaa = m_theme.getInt(domain, "max_fsaa", 3); int max_fsaa = m_theme.getInt(domain, "max_fsaa", 3);
_setAA(forceAA ? max_fsaa : min(max_fsaa, m_cfg.getInt("GENERAL", "max_fsaa", 3))); _setAA(forceAA ? max_fsaa : min(max_fsaa, m_cfg.getInt("GENERAL", "max_fsaa", 3)));
m_cf.setTextureQuality(m_theme.getFloat(domain, "tex_lod_bias", -3.f), CoverFlow.setTextureQuality(m_theme.getFloat(domain, "tex_lod_bias", -3.f),
m_theme.getInt(domain, "tex_aniso", 2), m_theme.getInt(domain, "tex_aniso", 2),
m_theme.getBool(domain, "tex_edge_lod", true)); m_theme.getBool(domain, "tex_edge_lod", true));
m_cf.setRange(_getCFInt(domain, "rows", (smallbox && homebrew) ? 5 : 1, sf), _getCFInt(domain, "columns", 9, sf)); CoverFlow.setRange(_getCFInt(domain, "rows", (smallbox && homebrew) ? 5 : 1, sf), _getCFInt(domain, "columns", 9, sf));
m_cf.setCameraPos(false, CoverFlow.setCameraPos(false,
_getCFV3D(domain, "camera_pos", Vector3D(0.f, 1.5f, 5.f), sf), _getCFV3D(domain, "camera_pos", Vector3D(0.f, 1.5f, 5.f), sf),
_getCFV3D(domain, "camera_aim", Vector3D(0.f, 0.f, -1.f), sf)); _getCFV3D(domain, "camera_aim", Vector3D(0.f, 0.f, -1.f), sf));
m_cf.setCameraPos(true, CoverFlow.setCameraPos(true,
_getCFV3D(domainSel, "camera_pos", Vector3D(0.f, 1.5f, 5.f), sf), _getCFV3D(domainSel, "camera_pos", Vector3D(0.f, 1.5f, 5.f), sf),
_getCFV3D(domainSel, "camera_aim", Vector3D(0.f, 0.f, -1.f), sf)); _getCFV3D(domainSel, "camera_aim", Vector3D(0.f, 0.f, -1.f), sf));
m_cf.setCameraOsc(false, CoverFlow.setCameraOsc(false,
_getCFV3D(domain, "camera_osc_speed", Vector3D(2.f, 1.1f, 1.3f), sf), _getCFV3D(domain, "camera_osc_speed", Vector3D(2.f, 1.1f, 1.3f), sf),
_getCFV3D(domain, "camera_osc_amp", Vector3D(0.1f, 0.2f, 0.1f), sf)); _getCFV3D(domain, "camera_osc_amp", Vector3D(0.1f, 0.2f, 0.1f), sf));
m_cf.setCameraOsc(true, CoverFlow.setCameraOsc(true,
_getCFV3D(domainSel, "camera_osc_speed", Vector3D(), sf), _getCFV3D(domainSel, "camera_osc_speed", Vector3D(), sf),
_getCFV3D(domainSel, "camera_osc_amp", Vector3D(), sf)); _getCFV3D(domainSel, "camera_osc_amp", Vector3D(), sf));
float def_cvr_posX = (smallbox && homebrew) ? 1.f : 1.6f; float def_cvr_posX = (smallbox && homebrew) ? 1.f : 1.6f;
float def_cvr_posY = (smallbox && homebrew) ? -0.6f : 0.f; float def_cvr_posY = (smallbox && homebrew) ? -0.6f : 0.f;
m_cf.setCoverPos(false, CoverFlow.setCoverPos(false,
_getCFV3D(domain, "left_pos", Vector3D(-def_cvr_posX, def_cvr_posY, 0.f), sf), _getCFV3D(domain, "left_pos", Vector3D(-def_cvr_posX, def_cvr_posY, 0.f), sf),
_getCFV3D(domain, "right_pos", Vector3D(def_cvr_posX, def_cvr_posY, 0.f), sf), _getCFV3D(domain, "right_pos", Vector3D(def_cvr_posX, def_cvr_posY, 0.f), sf),
_getCFV3D(domain, "center_pos", Vector3D(0.f, def_cvr_posY, 1.f), sf), _getCFV3D(domain, "center_pos", Vector3D(0.f, def_cvr_posY, 1.f), sf),
@ -767,47 +767,47 @@ void CMenu::_loadCFLayout(int version, bool forceAA, bool otherScrnFmt)
def_cvr_posX = (smallbox && homebrew) ? 1.f : 4.6f; def_cvr_posX = (smallbox && homebrew) ? 1.f : 4.6f;
float def_cvr_posX1 = (smallbox && homebrew) ? 0.f : -0.6f; float def_cvr_posX1 = (smallbox && homebrew) ? 0.f : -0.6f;
m_cf.setCoverPos(true, CoverFlow.setCoverPos(true,
_getCFV3D(domainSel, "left_pos", Vector3D(-def_cvr_posX, def_cvr_posY, 0.f), sf), _getCFV3D(domainSel, "left_pos", Vector3D(-def_cvr_posX, def_cvr_posY, 0.f), sf),
_getCFV3D(domainSel, "right_pos", Vector3D(def_cvr_posX, def_cvr_posY, 0.f), sf), _getCFV3D(domainSel, "right_pos", Vector3D(def_cvr_posX, def_cvr_posY, 0.f), sf),
_getCFV3D(domainSel, "center_pos", Vector3D(def_cvr_posX1, 0.f, 2.6f), sf), _getCFV3D(domainSel, "center_pos", Vector3D(def_cvr_posX1, 0.f, 2.6f), sf),
_getCFV3D(domainSel, "row_center_pos", Vector3D(0.f, def_cvr_posY, 0.f), sf)); _getCFV3D(domainSel, "row_center_pos", Vector3D(0.f, def_cvr_posY, 0.f), sf));
m_cf.setCoverAngleOsc(false, CoverFlow.setCoverAngleOsc(false,
m_theme.getVector3D(domain, "cover_osc_speed", Vector3D(2.f, 2.f, 0.f)), m_theme.getVector3D(domain, "cover_osc_speed", Vector3D(2.f, 2.f, 0.f)),
m_theme.getVector3D(domain, "cover_osc_amp", Vector3D(5.f, 10.f, 0.f))); m_theme.getVector3D(domain, "cover_osc_amp", Vector3D(5.f, 10.f, 0.f)));
m_cf.setCoverAngleOsc(true, CoverFlow.setCoverAngleOsc(true,
m_theme.getVector3D(domainSel, "cover_osc_speed", Vector3D(2.1f, 2.1f, 0.f)), m_theme.getVector3D(domainSel, "cover_osc_speed", Vector3D(2.1f, 2.1f, 0.f)),
m_theme.getVector3D(domainSel, "cover_osc_amp", Vector3D(2.f, 5.f, 0.f))); m_theme.getVector3D(domainSel, "cover_osc_amp", Vector3D(2.f, 5.f, 0.f)));
m_cf.setCoverPosOsc(false, CoverFlow.setCoverPosOsc(false,
m_theme.getVector3D(domain, "cover_pos_osc_speed"), m_theme.getVector3D(domain, "cover_pos_osc_speed"),
m_theme.getVector3D(domain, "cover_pos_osc_amp")); m_theme.getVector3D(domain, "cover_pos_osc_amp"));
m_cf.setCoverPosOsc(true, CoverFlow.setCoverPosOsc(true,
m_theme.getVector3D(domainSel, "cover_pos_osc_speed"), m_theme.getVector3D(domainSel, "cover_pos_osc_speed"),
m_theme.getVector3D(domainSel, "cover_pos_osc_amp")); m_theme.getVector3D(domainSel, "cover_pos_osc_amp"));
float spacerX = (smallbox && homebrew) ? 1.f : 0.35f; float spacerX = (smallbox && homebrew) ? 1.f : 0.35f;
m_cf.setSpacers(false, CoverFlow.setSpacers(false,
m_theme.getVector3D(domain, "left_spacer", Vector3D(-spacerX, 0.f, 0.f)), m_theme.getVector3D(domain, "left_spacer", Vector3D(-spacerX, 0.f, 0.f)),
m_theme.getVector3D(domain, "right_spacer", Vector3D(spacerX, 0.f, 0.f))); m_theme.getVector3D(domain, "right_spacer", Vector3D(spacerX, 0.f, 0.f)));
m_cf.setSpacers(true, CoverFlow.setSpacers(true,
m_theme.getVector3D(domainSel, "left_spacer", Vector3D(-spacerX, 0.f, 0.f)), m_theme.getVector3D(domainSel, "left_spacer", Vector3D(-spacerX, 0.f, 0.f)),
m_theme.getVector3D(domainSel, "right_spacer", Vector3D(spacerX, 0.f, 0.f))); m_theme.getVector3D(domainSel, "right_spacer", Vector3D(spacerX, 0.f, 0.f)));
m_cf.setDeltaAngles(false, CoverFlow.setDeltaAngles(false,
m_theme.getVector3D(domain, "left_delta_angle"), m_theme.getVector3D(domain, "left_delta_angle"),
m_theme.getVector3D(domain, "right_delta_angle")); m_theme.getVector3D(domain, "right_delta_angle"));
m_cf.setDeltaAngles(true, CoverFlow.setDeltaAngles(true,
m_theme.getVector3D(domainSel, "left_delta_angle"), m_theme.getVector3D(domainSel, "left_delta_angle"),
m_theme.getVector3D(domainSel, "right_delta_angle")); m_theme.getVector3D(domainSel, "right_delta_angle"));
float angleY = (smallbox && homebrew) ? 0.f : 70.f; float angleY = (smallbox && homebrew) ? 0.f : 70.f;
m_cf.setAngles(false, CoverFlow.setAngles(false,
m_theme.getVector3D(domain, "left_angle", Vector3D(0.f, angleY, 0.f)), m_theme.getVector3D(domain, "left_angle", Vector3D(0.f, angleY, 0.f)),
m_theme.getVector3D(domain, "right_angle", Vector3D(0.f, -angleY, 0.f)), m_theme.getVector3D(domain, "right_angle", Vector3D(0.f, -angleY, 0.f)),
m_theme.getVector3D(domain, "center_angle"), m_theme.getVector3D(domain, "center_angle"),
@ -816,101 +816,101 @@ void CMenu::_loadCFLayout(int version, bool forceAA, bool otherScrnFmt)
angleY = (smallbox && homebrew) ? 0.f : 90.f; angleY = (smallbox && homebrew) ? 0.f : 90.f;
float angleY1 = (smallbox && homebrew) ? 0.f : 380.f; float angleY1 = (smallbox && homebrew) ? 0.f : 380.f;
float angleX = (smallbox && homebrew) ? 0.f : -45.f; float angleX = (smallbox && homebrew) ? 0.f : -45.f;
m_cf.setAngles(true, CoverFlow.setAngles(true,
m_theme.getVector3D(domainSel, "left_angle", Vector3D(angleX, angleY, 0.f)), m_theme.getVector3D(domainSel, "left_angle", Vector3D(angleX, angleY, 0.f)),
m_theme.getVector3D(domainSel, "right_angle", Vector3D(angleX, -angleY, 0.f)), m_theme.getVector3D(domainSel, "right_angle", Vector3D(angleX, -angleY, 0.f)),
m_theme.getVector3D(domainSel, "center_angle", Vector3D(0.f, angleY1, 0.f)), m_theme.getVector3D(domainSel, "center_angle", Vector3D(0.f, angleY1, 0.f)),
m_theme.getVector3D(domainSel, "row_center_angle")); m_theme.getVector3D(domainSel, "row_center_angle"));
angleX = smallbox ? 0.f : 55.f; angleX = smallbox ? 0.f : 55.f;
m_cf.setTitleAngles(false, CoverFlow.setTitleAngles(false,
_getCFFloat(domain, "text_left_angle", -angleX, sf), _getCFFloat(domain, "text_left_angle", -angleX, sf),
_getCFFloat(domain, "text_right_angle", angleX, sf), _getCFFloat(domain, "text_right_angle", angleX, sf),
_getCFFloat(domain, "text_center_angle", 0.f, sf)); _getCFFloat(domain, "text_center_angle", 0.f, sf));
m_cf.setTitleAngles(true, CoverFlow.setTitleAngles(true,
_getCFFloat(domainSel, "text_left_angle", -angleX, sf), _getCFFloat(domainSel, "text_left_angle", -angleX, sf),
_getCFFloat(domainSel, "text_right_angle", angleX, sf), _getCFFloat(domainSel, "text_right_angle", angleX, sf),
_getCFFloat(domainSel, "text_center_angle", 0.f, sf)); _getCFFloat(domainSel, "text_center_angle", 0.f, sf));
m_cf.setTitlePos(false, CoverFlow.setTitlePos(false,
_getCFV3D(domain, "text_left_pos", Vector3D(-4.f, 0.f, 1.3f), sf), _getCFV3D(domain, "text_left_pos", Vector3D(-4.f, 0.f, 1.3f), sf),
_getCFV3D(domain, "text_right_pos", Vector3D(4.f, 0.f, 1.3f), sf), _getCFV3D(domain, "text_right_pos", Vector3D(4.f, 0.f, 1.3f), sf),
_getCFV3D(domain, "text_center_pos", Vector3D(0.f, 0.f, 2.6f), sf)); _getCFV3D(domain, "text_center_pos", Vector3D(0.f, 0.f, 2.6f), sf));
m_cf.setTitlePos(true, CoverFlow.setTitlePos(true,
_getCFV3D(domainSel, "text_left_pos", Vector3D(-4.f, 0.f, 1.3f), sf), _getCFV3D(domainSel, "text_left_pos", Vector3D(-4.f, 0.f, 1.3f), sf),
_getCFV3D(domainSel, "text_right_pos", Vector3D(4.f, 0.f, 1.3f), sf), _getCFV3D(domainSel, "text_right_pos", Vector3D(4.f, 0.f, 1.3f), sf),
_getCFV3D(domainSel, "text_center_pos", Vector3D(1.7f, 1.8f, 1.6f), sf)); _getCFV3D(domainSel, "text_center_pos", Vector3D(1.7f, 1.8f, 1.6f), sf));
m_cf.setTitleWidth(false, CoverFlow.setTitleWidth(false,
_getCFFloat(domain, "text_side_wrap_width", 500.f, sf), _getCFFloat(domain, "text_side_wrap_width", 500.f, sf),
_getCFFloat(domain, "text_center_wrap_width", 500.f, sf)); _getCFFloat(domain, "text_center_wrap_width", 500.f, sf));
m_cf.setTitleWidth(true, CoverFlow.setTitleWidth(true,
_getCFFloat(domainSel, "text_side_wrap_width", 500.f, sf), _getCFFloat(domainSel, "text_side_wrap_width", 500.f, sf),
_getCFFloat(domainSel, "text_center_wrap_width", 310.f, sf)); _getCFFloat(domainSel, "text_center_wrap_width", 310.f, sf));
m_cf.setTitleStyle(false, CoverFlow.setTitleStyle(false,
_textStyle(domain.c_str(), "text_side_style", FTGX_ALIGN_MIDDLE | FTGX_JUSTIFY_CENTER), _textStyle(domain.c_str(), "text_side_style", FTGX_ALIGN_MIDDLE | FTGX_JUSTIFY_CENTER),
_textStyle(domain.c_str(), "text_center_style", FTGX_ALIGN_MIDDLE | FTGX_JUSTIFY_CENTER)); _textStyle(domain.c_str(), "text_center_style", FTGX_ALIGN_MIDDLE | FTGX_JUSTIFY_CENTER));
m_cf.setTitleStyle(true, CoverFlow.setTitleStyle(true,
_textStyle(domainSel.c_str(), "text_side_style", FTGX_ALIGN_MIDDLE | FTGX_JUSTIFY_CENTER), _textStyle(domainSel.c_str(), "text_side_style", FTGX_ALIGN_MIDDLE | FTGX_JUSTIFY_CENTER),
_textStyle(domainSel.c_str(), "text_center_style", FTGX_ALIGN_TOP | FTGX_JUSTIFY_RIGHT)); _textStyle(domainSel.c_str(), "text_center_style", FTGX_ALIGN_TOP | FTGX_JUSTIFY_RIGHT));
m_cf.setColors(false, CoverFlow.setColors(false,
m_theme.getColor(domain, "color_beg", 0xCFFFFFFF), m_theme.getColor(domain, "color_beg", 0xCFFFFFFF),
m_theme.getColor(domain, "color_end", 0x3FFFFFFF), m_theme.getColor(domain, "color_end", 0x3FFFFFFF),
m_theme.getColor(domain, "color_off", 0x7FFFFFFF)); m_theme.getColor(domain, "color_off", 0x7FFFFFFF));
m_cf.setColors(true, CoverFlow.setColors(true,
m_theme.getColor(domainSel, "color_beg", 0x7FFFFFFF), m_theme.getColor(domainSel, "color_beg", 0x7FFFFFFF),
m_theme.getColor(domainSel, "color_end", 0x1FFFFFFF), m_theme.getColor(domainSel, "color_end", 0x1FFFFFFF),
m_theme.getColor(domain, "color_off", 0x7FFFFFFF)); // Mouse not used once a selection has been made m_theme.getColor(domain, "color_off", 0x7FFFFFFF)); // Mouse not used once a selection has been made
m_cf.setMirrorAlpha(m_theme.getFloat(domain, "mirror_alpha", 0.25f), m_theme.getFloat(domain, "title_mirror_alpha", 0.2f)); // Doesn't depend on selection CoverFlow.setMirrorAlpha(m_theme.getFloat(domain, "mirror_alpha", 0.25f), m_theme.getFloat(domain, "title_mirror_alpha", 0.2f)); // Doesn't depend on selection
m_cf.setMirrorBlur(m_theme.getBool(domain, "mirror_blur", true)); // Doesn't depend on selection CoverFlow.setMirrorBlur(m_theme.getBool(domain, "mirror_blur", true)); // Doesn't depend on selection
m_cf.setShadowColors(false, CoverFlow.setShadowColors(false,
m_theme.getColor(domain, "color_shadow_center", 0x00000000), m_theme.getColor(domain, "color_shadow_center", 0x00000000),
m_theme.getColor(domain, "color_shadow_beg", 0x00000000), m_theme.getColor(domain, "color_shadow_beg", 0x00000000),
m_theme.getColor(domain, "color_shadow_end", 0x00000000), m_theme.getColor(domain, "color_shadow_end", 0x00000000),
m_theme.getColor(domain, "color_shadow_off", 0x00000000)); m_theme.getColor(domain, "color_shadow_off", 0x00000000));
m_cf.setShadowColors(true, CoverFlow.setShadowColors(true,
m_theme.getColor(domainSel, "color_shadow_center", 0x0000007F), m_theme.getColor(domainSel, "color_shadow_center", 0x0000007F),
m_theme.getColor(domainSel, "color_shadow_beg", 0x0000007F), m_theme.getColor(domainSel, "color_shadow_beg", 0x0000007F),
m_theme.getColor(domainSel, "color_shadow_end", 0x0000007F), m_theme.getColor(domainSel, "color_shadow_end", 0x0000007F),
m_theme.getColor(domainSel, "color_shadow_off", 0x0000007F)); m_theme.getColor(domainSel, "color_shadow_off", 0x0000007F));
m_cf.setShadowPos(m_theme.getFloat(domain, "shadow_scale", 1.1f), CoverFlow.setShadowPos(m_theme.getFloat(domain, "shadow_scale", 1.1f),
m_theme.getFloat(domain, "shadow_x"), m_theme.getFloat(domain, "shadow_x"),
m_theme.getFloat(domain, "shadow_y")); m_theme.getFloat(domain, "shadow_y"));
float spacerY = (smallbox && homebrew) ? 0.60f : 2.f; float spacerY = (smallbox && homebrew) ? 0.60f : 2.f;
m_cf.setRowSpacers(false, CoverFlow.setRowSpacers(false,
m_theme.getVector3D(domain, "top_spacer", Vector3D(0.f, spacerY, 0.f)), m_theme.getVector3D(domain, "top_spacer", Vector3D(0.f, spacerY, 0.f)),
m_theme.getVector3D(domain, "bottom_spacer", Vector3D(0.f, -spacerY, 0.f))); m_theme.getVector3D(domain, "bottom_spacer", Vector3D(0.f, -spacerY, 0.f)));
m_cf.setRowSpacers(true, CoverFlow.setRowSpacers(true,
m_theme.getVector3D(domainSel, "top_spacer", Vector3D(0.f, spacerY, 0.f)), m_theme.getVector3D(domainSel, "top_spacer", Vector3D(0.f, spacerY, 0.f)),
m_theme.getVector3D(domainSel, "bottom_spacer", Vector3D(0.f, -spacerY, 0.f))); m_theme.getVector3D(domainSel, "bottom_spacer", Vector3D(0.f, -spacerY, 0.f)));
m_cf.setRowDeltaAngles(false, CoverFlow.setRowDeltaAngles(false,
m_theme.getVector3D(domain, "top_delta_angle"), m_theme.getVector3D(domain, "top_delta_angle"),
m_theme.getVector3D(domain, "bottom_delta_angle")); m_theme.getVector3D(domain, "bottom_delta_angle"));
m_cf.setRowDeltaAngles(true, CoverFlow.setRowDeltaAngles(true,
m_theme.getVector3D(domainSel, "top_delta_angle"), m_theme.getVector3D(domainSel, "top_delta_angle"),
m_theme.getVector3D(domainSel, "bottom_delta_angle")); m_theme.getVector3D(domainSel, "bottom_delta_angle"));
m_cf.setRowAngles(false, CoverFlow.setRowAngles(false,
m_theme.getVector3D(domain, "top_angle"), m_theme.getVector3D(domain, "top_angle"),
m_theme.getVector3D(domain, "bottom_angle")); m_theme.getVector3D(domain, "bottom_angle"));
m_cf.setRowAngles(true, CoverFlow.setRowAngles(true,
m_theme.getVector3D(domainSel, "top_angle"), m_theme.getVector3D(domainSel, "top_angle"),
m_theme.getVector3D(domainSel, "bottom_angle")); m_theme.getVector3D(domainSel, "bottom_angle"));
@ -921,25 +921,25 @@ void CMenu::_loadCFLayout(int version, bool forceAA, bool otherScrnFmt)
: Vector3D(1.f, 0.5f, 1.f)) : Vector3D(1.f, 0.5f, 1.f))
: Vector3D(1.f, 1.f, 1.f); : Vector3D(1.f, 1.f, 1.f);
m_cf.setCoverScale(false, CoverFlow.setCoverScale(false,
m_theme.getVector3D(domain, "left_scale", def_cvr_scale), m_theme.getVector3D(domain, "left_scale", def_cvr_scale),
m_theme.getVector3D(domain, "right_scale", def_cvr_scale), m_theme.getVector3D(domain, "right_scale", def_cvr_scale),
m_theme.getVector3D(domain, "center_scale", def_cvr_scale), m_theme.getVector3D(domain, "center_scale", def_cvr_scale),
m_theme.getVector3D(domain, "row_center_scale", def_cvr_scale)); m_theme.getVector3D(domain, "row_center_scale", def_cvr_scale));
m_cf.setCoverScale(true, CoverFlow.setCoverScale(true,
m_theme.getVector3D(domainSel, "left_scale", def_cvr_scale), m_theme.getVector3D(domainSel, "left_scale", def_cvr_scale),
m_theme.getVector3D(domainSel, "right_scale", def_cvr_scale), m_theme.getVector3D(domainSel, "right_scale", def_cvr_scale),
m_theme.getVector3D(domainSel, "center_scale", def_cvr_scale), m_theme.getVector3D(domainSel, "center_scale", def_cvr_scale),
m_theme.getVector3D(domainSel, "row_center_scale", def_cvr_scale)); m_theme.getVector3D(domainSel, "row_center_scale", def_cvr_scale));
float flipX = (smallbox && homebrew) ? 359.f : 180.f; float flipX = (smallbox && homebrew) ? 359.f : 180.f;
m_cf.setCoverFlipping( CoverFlow.setCoverFlipping(
_getCFV3D(domainSel, "flip_pos", Vector3D(), sf), _getCFV3D(domainSel, "flip_pos", Vector3D(), sf),
_getCFV3D(domainSel, "flip_angle", Vector3D(0.f, flipX, 0.f), sf), _getCFV3D(domainSel, "flip_angle", Vector3D(0.f, flipX, 0.f), sf),
_getCFV3D(domainSel, "flip_scale", def_cvr_scale, sf)); _getCFV3D(domainSel, "flip_scale", def_cvr_scale, sf));
m_cf.setBlur( CoverFlow.setBlur(
m_theme.getInt(domain, "blur_resolution", 1), m_theme.getInt(domain, "blur_resolution", 1),
m_theme.getInt(domain, "blur_radius", 2), m_theme.getInt(domain, "blur_radius", 2),
m_theme.getFloat(domain, "blur_factor", 1.f)); m_theme.getFloat(domain, "blur_factor", 1.f));
@ -1248,7 +1248,7 @@ vector<STexture> CMenu::_textures(const char *domain, const char *key)
if (i != theme.texSet.end()) if (i != theme.texSet.end())
textures.push_back(i->second); textures.push_back(i->second);
STexture tex; STexture tex;
if (STexture::TE_OK == tex.fromImageFile(fmt("%s/%s", m_themeDataDir.c_str(), filename.c_str()))) if(tex.fromImageFile(fmt("%s/%s", m_themeDataDir.c_str(), filename.c_str())) == TE_OK)
{ {
theme.texSet[filename] = tex; theme.texSet[filename] = tex;
textures.push_back(tex); textures.push_back(tex);
@ -1274,7 +1274,7 @@ STexture CMenu::_texture(const char *domain, const char *key, STexture &def, boo
return i->second; return i->second;
/* Load from image file */ /* Load from image file */
STexture tex; STexture tex;
if(STexture::TE_OK == tex.fromImageFile(fmt("%s/%s", m_themeDataDir.c_str(), filename.c_str()))) if(tex.fromImageFile(fmt("%s/%s", m_themeDataDir.c_str(), filename.c_str())) == TE_OK)
{ {
if(freeDef && def.data != NULL) if(freeDef && def.data != NULL)
{ {
@ -1596,8 +1596,8 @@ void CMenu::_initCF(void)
GameTDB gametdb; GameTDB gametdb;
const char *domain = _domainFromView(); const char *domain = _domainFromView();
m_cf.clear(); CoverFlow.clear();
m_cf.reserve(m_gameList.size()); CoverFlow.reserve(m_gameList.size());
const vector<bool> &EnabledPlugins = m_plugin.GetEnabledPlugins(m_cfg); const vector<bool> &EnabledPlugins = m_plugin.GetEnabledPlugins(m_cfg);
@ -1880,9 +1880,9 @@ void CMenu::_initCF(void)
if(EnabledPlugins.size() == 0) //all plugins if(EnabledPlugins.size() == 0) //all plugins
{ {
if(coverFolder.size() > 0) if(coverFolder.size() > 0)
m_cf.addItem(&(*element), fmt("%s/%s/%s.png", m_picDir.c_str(), coverFolder.c_str(), tempname.c_str()), fmt("%s/%s/%s.png", m_boxPicDir.c_str(), coverFolder.c_str(), tempname.c_str()), fmt("%s/%s", m_boxPicDir.c_str(), blankCoverName.c_str()), playcount, lastPlayed); CoverFlow.addItem(&(*element), fmt("%s/%s/%s.png", m_picDir.c_str(), coverFolder.c_str(), tempname.c_str()), fmt("%s/%s/%s.png", m_boxPicDir.c_str(), coverFolder.c_str(), tempname.c_str()), fmt("%s/%s", m_boxPicDir.c_str(), blankCoverName.c_str()), playcount, lastPlayed);
else else
m_cf.addItem(&(*element), fmt("%s/%s.png", m_picDir.c_str(), tempname.c_str()), fmt("%s/%s.png", m_boxPicDir.c_str(), tempname.c_str()), fmt("%s/%s", m_boxPicDir.c_str(), blankCoverName.c_str()), playcount, lastPlayed); CoverFlow.addItem(&(*element), fmt("%s/%s.png", m_picDir.c_str(), tempname.c_str()), fmt("%s/%s.png", m_boxPicDir.c_str(), tempname.c_str()), fmt("%s/%s", m_boxPicDir.c_str(), blankCoverName.c_str()), playcount, lastPlayed);
} }
else else
{ {
@ -1891,18 +1891,18 @@ void CMenu::_initCF(void)
if(EnabledPlugins.at(j) == true && element->settings[0] == m_plugin.getPluginMagic(j)) if(EnabledPlugins.at(j) == true && element->settings[0] == m_plugin.getPluginMagic(j))
{ {
if(coverFolder.size() > 0) if(coverFolder.size() > 0)
m_cf.addItem(&(*element), fmt("%s/%s/%s.png", m_picDir.c_str(), coverFolder.c_str(), tempname.c_str()), fmt("%s/%s/%s.png", m_boxPicDir.c_str(), coverFolder.c_str(), tempname.c_str()), fmt("%s/%s", m_boxPicDir.c_str(), blankCoverName.c_str()), playcount, lastPlayed); CoverFlow.addItem(&(*element), fmt("%s/%s/%s.png", m_picDir.c_str(), coverFolder.c_str(), tempname.c_str()), fmt("%s/%s/%s.png", m_boxPicDir.c_str(), coverFolder.c_str(), tempname.c_str()), fmt("%s/%s", m_boxPicDir.c_str(), blankCoverName.c_str()), playcount, lastPlayed);
else else
m_cf.addItem(&(*element), fmt("%s/%s.png", m_picDir.c_str(), tempname.c_str()), fmt("%s/%s.png", m_boxPicDir.c_str(), tempname.c_str()), fmt("%s/%s", m_boxPicDir.c_str(), blankCoverName.c_str()), playcount, lastPlayed); CoverFlow.addItem(&(*element), fmt("%s/%s.png", m_picDir.c_str(), tempname.c_str()), fmt("%s/%s.png", m_boxPicDir.c_str(), tempname.c_str()), fmt("%s/%s", m_boxPicDir.c_str(), blankCoverName.c_str()), playcount, lastPlayed);
break; break;
} }
} }
} }
} }
else if(element->type == TYPE_HOMEBREW) else if(element->type == TYPE_HOMEBREW)
m_cf.addItem(&(*element), fmt("%s/icon.png", element->path), fmt("%s/%s.png", m_boxPicDir.c_str(), id.c_str()), fmt("%s/%s", m_boxPicDir.c_str(), blankCoverName.c_str()), playcount, lastPlayed); CoverFlow.addItem(&(*element), fmt("%s/icon.png", element->path), fmt("%s/%s.png", m_boxPicDir.c_str(), id.c_str()), fmt("%s/%s", m_boxPicDir.c_str(), blankCoverName.c_str()), playcount, lastPlayed);
else else
m_cf.addItem(&(*element), fmt("%s/%s.png", m_picDir.c_str(), id.c_str()), fmt("%s/%s.png", m_boxPicDir.c_str(), id.c_str()), fmt("%s/%s", m_boxPicDir.c_str(), blankCoverName.c_str()), playcount, lastPlayed); CoverFlow.addItem(&(*element), fmt("%s/%s.png", m_picDir.c_str(), id.c_str()), fmt("%s/%s.png", m_boxPicDir.c_str(), id.c_str()), fmt("%s/%s", m_boxPicDir.c_str(), blankCoverName.c_str()), playcount, lastPlayed);
} }
} }
m_gcfg1.unload(); m_gcfg1.unload();
@ -1911,33 +1911,34 @@ void CMenu::_initCF(void)
dump.save(true); dump.save(true);
m_cfg.setBool(domain, "dump_list", false); m_cfg.setBool(domain, "dump_list", false);
} }
m_cf.setBoxMode(m_cfg.getBool("GENERAL", "box_mode", true)); CoverFlow.setBoxMode(m_cfg.getBool("GENERAL", "box_mode", true));
m_cf.setCompression(m_cfg.getBool("GENERAL", "allow_texture_compression", true)); CoverFlow.setCompression(m_cfg.getBool("GENERAL", "allow_texture_compression", true));
m_cf.setBufferSize(m_cfg.getInt("GENERAL", "cover_buffer", 20)); CoverFlow.setBufferSize(m_cfg.getInt("GENERAL", "cover_buffer", 20));
m_cf.setSorting((Sorting)m_cfg.getInt(domain, "sort", 0)); CoverFlow.setSorting((Sorting)m_cfg.getInt(domain, "sort", 0));
m_cf.setHQcover(m_cfg.getBool("GENERAL", "cover_use_hq", false)); CoverFlow.setHQcover(m_cfg.getBool("GENERAL", "cover_use_hq", false));
m_cf.start(); CoverFlow.start();
if (m_curGameId.empty() || !m_cf.findId(m_curGameId.c_str(), true)) if (m_curGameId.empty() || !CoverFlow.findId(m_curGameId.c_str(), true))
m_cf.findId(m_cfg.getString(domain, "current_item").c_str(), true); CoverFlow.findId(m_cfg.getString(domain, "current_item").c_str(), true);
} }
void CMenu::_mainLoopCommon(bool withCF, bool adjusting) void CMenu::_mainLoopCommon(bool withCF, bool adjusting)
{ {
if(withCF) if(withCF)
m_cf.tick(); CoverFlow.tick();
m_btnMgr.tick(); m_btnMgr.tick();
m_fa.tick(); m_fa.tick();
m_cf.setFanartPlaying(m_fa.isLoaded()); m_fa.hideCover() ? CoverFlow.hideCover() : CoverFlow.showCover();
m_cf.setFanartTextColor(m_fa.getTextColor(m_theme.getColor("_COVERFLOW", "font_color", CColor(0xFFFFFFFF)))); CoverFlow.setFanartPlaying(m_fa.isLoaded());
CoverFlow.setFanartTextColor(m_fa.getTextColor(m_theme.getColor("_COVERFLOW", "font_color", CColor(0xFFFFFFFF))));
m_vid.prepare();
m_vid.setup2DProjection();
_updateBg(); _updateBg();
if(CoverFlow.getRenderTex())
m_fa.hideCover() ? m_cf.hideCover() : m_cf.showCover(); CoverFlow.RenderTex();
if(withCF) if(withCF)
m_cf.makeEffectTexture(m_vid, m_lqBg); CoverFlow.makeEffectTexture(m_lqBg);
if(withCF && m_aa > 0) if(withCF && m_aa > 0)
{ {
m_vid.setAA(m_aa, true); m_vid.setAA(m_aa, true);
@ -1947,11 +1948,11 @@ void CMenu::_mainLoopCommon(bool withCF, bool adjusting)
m_vid.setup2DProjection(false, true); m_vid.setup2DProjection(false, true);
_drawBg(); _drawBg();
m_fa.draw(false); m_fa.draw(false);
m_cf.draw(); CoverFlow.draw();
m_vid.setup2DProjection(false, true); m_vid.setup2DProjection(false, true);
m_cf.drawEffect(); CoverFlow.drawEffect();
if(!m_banner.GetSelectedGame()) if(!m_banner.GetSelectedGame())
m_cf.drawText(adjusting); CoverFlow.drawText(adjusting);
m_vid.renderAAPass(i); m_vid.renderAAPass(i);
} }
m_vid.setup2DProjection(); m_vid.setup2DProjection();
@ -1959,17 +1960,15 @@ void CMenu::_mainLoopCommon(bool withCF, bool adjusting)
} }
else else
{ {
m_vid.prepare();
m_vid.setup2DProjection();
_drawBg(); _drawBg();
m_fa.draw(false); m_fa.draw(false);
if(withCF) if(withCF)
{ {
m_cf.draw(); CoverFlow.draw();
m_vid.setup2DProjection(); m_vid.setup2DProjection();
m_cf.drawEffect(); CoverFlow.drawEffect();
if(!m_banner.GetSelectedGame()) if(!m_banner.GetSelectedGame())
m_cf.drawText(adjusting); CoverFlow.drawText(adjusting);
} }
} }
if(m_fa.isLoaded()) if(m_fa.isLoaded())
@ -2061,7 +2060,6 @@ void CMenu::_updateBg(void)
Mtx modelViewMtx; Mtx modelViewMtx;
GXTexObj texObj; GXTexObj texObj;
GXTexObj texObj2; GXTexObj texObj2;
Mtx44 projMtx;
if (m_bgCrossFade == 0) return; if (m_bgCrossFade == 0) return;
m_bgCrossFade = max(0, (int)m_bgCrossFade - 14); m_bgCrossFade = max(0, (int)m_bgCrossFade - 14);
@ -2071,10 +2069,6 @@ void CMenu::_updateBg(void)
m_curBg = m_nextBg; m_curBg = m_nextBg;
return; return;
} }
m_vid.prepare();
GX_SetViewport(0.f, 0.f, 640.f, 480.f, 0.f, 1.f);
guOrtho(projMtx, 0.f, 480.f, 0.f, 640.f, 0.f, 1000.0f);
GX_LoadProjectionMtx(projMtx, GX_ORTHOGRAPHIC);
GX_ClearVtxDesc(); GX_ClearVtxDesc();
GX_SetNumTevStages(m_prevBg.data == NULL ? 1 : 2); GX_SetNumTevStages(m_prevBg.data == NULL ? 1 : 2);
GX_SetNumChans(0); GX_SetNumChans(0);
@ -2252,7 +2246,7 @@ bool CMenu::_loadChannelList(void)
bool CMenu::_loadList(void) bool CMenu::_loadList(void)
{ {
m_cf.clear(); CoverFlow.clear();
if((m_current_view == COVERFLOW_CHANNEL && m_cfg.getBool(CHANNEL_DOMAIN, "disable", true)) if((m_current_view == COVERFLOW_CHANNEL && m_cfg.getBool(CHANNEL_DOMAIN, "disable", true))
|| (m_current_view != COVERFLOW_CHANNEL && NandHandle.EmulationEnabled())) || (m_current_view != COVERFLOW_CHANNEL && NandHandle.EmulationEnabled()))
{ {
@ -2419,7 +2413,7 @@ void CMenu::_stopSounds(void)
} }
} }
m_btnMgr.stopSounds(); m_btnMgr.stopSounds();
m_cf.stopSound(); CoverFlow.stopSound();
m_gameSound.Stop(); m_gameSound.Stop();
} }
@ -2582,11 +2576,11 @@ void CMenu::_cleanupDefaultFont()
string CMenu::_getId() string CMenu::_getId()
{ {
string id; string id;
if(!NoGameID(m_cf.getHdr()->type)) if(!NoGameID(CoverFlow.getHdr()->type))
id = m_cf.getId(); id = CoverFlow.getId();
else else
{ {
dir_discHdr *hdr = m_cf.getHdr(); dir_discHdr *hdr = CoverFlow.getHdr();
string tempname(hdr->path); string tempname(hdr->path);
if(hdr->type == TYPE_HOMEBREW) if(hdr->type == TYPE_HOMEBREW)
{ {

View File

@ -53,7 +53,6 @@ private:
}; };
CCursor m_cursor[WPAD_MAX_WIIMOTES]; CCursor m_cursor[WPAD_MAX_WIIMOTES];
CButtonsMgr m_btnMgr; CButtonsMgr m_btnMgr;
CCoverFlow m_cf;
CFanart m_fa; CFanart m_fa;
Config m_cfg; Config m_cfg;
Config m_loc; Config m_loc;

View File

@ -123,7 +123,7 @@ void CMenu::_getIDCats(void)
m_categories.at(k) = '1'; m_categories.at(k) = '1';
} }
} }
m_btnMgr.setText(m_categoryLblTitle, m_cf.getTitle()); m_btnMgr.setText(m_categoryLblTitle, CoverFlow.getTitle());
} }
void CMenu::_setIDCats(void) void CMenu::_setIDCats(void)
@ -213,7 +213,7 @@ void CMenu::_CategorySettings(bool fromGameSet)
while(!m_exit) while(!m_exit)
{ {
_mainLoopCommon(); _mainLoopCommon();
m_cf.tick(); CoverFlow.tick();
if(!m_btnMgr.selected(lastBtn)) if(!m_btnMgr.selected(lastBtn))
m_btnMgr.noHover(false); m_btnMgr.noHover(false);
@ -260,7 +260,7 @@ void CMenu::_CategorySettings(bool fromGameSet)
{ {
_setIDCats(); _setIDCats();
_hideCategorySettings(); _hideCategorySettings();
m_cf.right(); CoverFlow.right();
curPage = 1; curPage = 1;
m_categories.assign(m_max_categories, '0'); m_categories.assign(m_max_categories, '0');
_getIDCats(); _getIDCats();
@ -270,7 +270,7 @@ void CMenu::_CategorySettings(bool fromGameSet)
{ {
_setIDCats(); _setIDCats();
_hideCategorySettings(); _hideCategorySettings();
m_cf.left(); CoverFlow.left();
curPage = 1; curPage = 1;
m_categories.assign(m_max_categories, '0'); m_categories.assign(m_max_categories, '0');
_getIDCats(); _getIDCats();

View File

@ -174,11 +174,11 @@ void CMenu::_hideCFTheme(bool instant)
void CMenu::_showCFTheme(u32 curParam, int version, bool wide) void CMenu::_showCFTheme(u32 curParam, int version, bool wide)
{ {
const CMenu::SCFParamDesc &p = CMenu::_cfParams[curParam]; const CMenu::SCFParamDesc &p = CMenu::_cfParams[curParam];
bool selected = m_cf.selected(); bool selected = CoverFlow.selected();
string domUnsel(sfmt(_cfDomain(), version)); string domUnsel(sfmt(_cfDomain(), version));
string domSel(sfmt(_cfDomain(true), version)); string domSel(sfmt(_cfDomain(true), version));
m_cf.simulateOtherScreenFormat(p.scrnFmt && wide != m_vid.wide()); CoverFlow.simulateOtherScreenFormat(p.scrnFmt && wide != m_vid.wide());
_setBg(m_mainBg, m_mainBgLQ); _setBg(m_mainBg, m_mainBgLQ);
m_btnMgr.show(m_cfThemeBtnSave); m_btnMgr.show(m_cfThemeBtnSave);
m_btnMgr.show(m_cfThemeBtnCancel); m_btnMgr.show(m_cfThemeBtnCancel);
@ -292,7 +292,7 @@ void CMenu::_showCFTheme(u32 curParam, int version, bool wide)
m_btnMgr.show(m_cfThemeBtnValP[k]); m_btnMgr.show(m_cfThemeBtnValP[k]);
break; break;
case CMenu::SCFParamDesc::PDT_TXTSTYLE: case CMenu::SCFParamDesc::PDT_TXTSTYLE:
m_btnMgr.setText(m_cfThemeLblVal[k], styleToTxt(_textStyle(domain.c_str(), key.c_str(), m_cf.selected() ? FTGX_JUSTIFY_RIGHT | FTGX_ALIGN_TOP : FTGX_JUSTIFY_CENTER | FTGX_ALIGN_BOTTOM))); m_btnMgr.setText(m_cfThemeLblVal[k], styleToTxt(_textStyle(domain.c_str(), key.c_str(), CoverFlow.selected() ? FTGX_JUSTIFY_RIGHT | FTGX_ALIGN_TOP : FTGX_JUSTIFY_CENTER | FTGX_ALIGN_BOTTOM)));
for (int j = 1; j < 4; ++j) for (int j = 1; j < 4; ++j)
{ {
m_btnMgr.hide(m_cfThemeLblVal[k + j]); m_btnMgr.hide(m_cfThemeLblVal[k + j]);
@ -320,7 +320,7 @@ void CMenu::_cfTheme(void)
_initCF(); _initCF();
_showCFTheme(curParam, cfVersion, wide); _showCFTheme(curParam, cfVersion, wide);
_loadCFLayout(cfVersion, true, wide != m_vid.wide()); _loadCFLayout(cfVersion, true, wide != m_vid.wide());
m_cf.applySettings(); CoverFlow.applySettings();
while(!m_exit) while(!m_exit)
{ {
_mainLoopCommon(true); _mainLoopCommon(true);
@ -338,14 +338,14 @@ void CMenu::_cfTheme(void)
if(BTN_B_HELD && BTN_1_PRESSED) if(BTN_B_HELD && BTN_1_PRESSED)
{ {
copyVersion = cfVersion; copyVersion = cfVersion;
copySelected = m_cf.selected(); copySelected = CoverFlow.selected();
copyWide = wide; copyWide = wide;
} }
else if(copyVersion > 0 && BTN_B_HELD && BTN_2_PRESSED) else if(copyVersion > 0 && BTN_B_HELD && BTN_2_PRESSED)
{ {
string domSrc(sfmt(_cfDomain(copySelected), copyVersion)); string domSrc(sfmt(_cfDomain(copySelected), copyVersion));
string domDst(sfmt(_cfDomain(m_cf.selected()), cfVersion)); string domDst(sfmt(_cfDomain(CoverFlow.selected()), cfVersion));
if (copyVersion != cfVersion || copySelected != m_cf.selected()) if (copyVersion != cfVersion || copySelected != CoverFlow.selected())
m_theme.copyDomain(domDst, domSrc); m_theme.copyDomain(domDst, domSrc);
else if (copyWide != wide) else if (copyWide != wide)
for (u32 i = 0; i < ARRAY_SIZE(CMenu::_cfParams); ++i) for (u32 i = 0; i < ARRAY_SIZE(CMenu::_cfParams); ++i)
@ -370,9 +370,9 @@ void CMenu::_cfTheme(void)
} }
_showCFTheme(curParam, cfVersion, wide); _showCFTheme(curParam, cfVersion, wide);
_loadCFLayout(cfVersion, true, wide != m_vid.wide()); _loadCFLayout(cfVersion, true, wide != m_vid.wide());
m_cf.applySettings(); CoverFlow.applySettings();
} }
bool sel = m_cf.selected(); bool sel = CoverFlow.selected();
if (BTN_B_HELD) if (BTN_B_HELD)
{ {
if (BTN_PLUS_PRESSED || BTN_MINUS_PRESSED) if (BTN_PLUS_PRESSED || BTN_MINUS_PRESSED)
@ -380,28 +380,28 @@ void CMenu::_cfTheme(void)
s8 direction = BTN_PLUS_PRESSED ? 1 : -1; s8 direction = BTN_PLUS_PRESSED ? 1 : -1;
curParam = loopNum(curParam + direction, ARRAY_SIZE(CMenu::_cfParams)); curParam = loopNum(curParam + direction, ARRAY_SIZE(CMenu::_cfParams));
if (CMenu::_cfParams[curParam].domain == CMenu::SCFParamDesc::PDD_SELECTED) if (CMenu::_cfParams[curParam].domain == CMenu::SCFParamDesc::PDD_SELECTED)
m_cf.select(); CoverFlow.select();
_showCFTheme(curParam, cfVersion, wide); _showCFTheme(curParam, cfVersion, wide);
} }
} }
else if (!sel) else if (!sel)
{ {
if (BTN_PLUS_PRESSED) if (BTN_PLUS_PRESSED)
m_cf.pageDown(); CoverFlow.pageDown();
else if (BTN_MINUS_PRESSED) else if (BTN_MINUS_PRESSED)
m_cf.pageUp(); CoverFlow.pageUp();
} }
if (BTN_LEFT_REPEAT) if (BTN_LEFT_REPEAT)
m_cf.left(); CoverFlow.left();
else if (BTN_RIGHT_REPEAT) else if (BTN_RIGHT_REPEAT)
m_cf.right(); CoverFlow.right();
if (sel && !m_cf.selected()) if (sel && !CoverFlow.selected())
m_cf.select(); CoverFlow.select();
if (BTN_A_PRESSED) if (BTN_A_PRESSED)
{ {
if (m_btnMgr.selected(m_cfThemeBtnSave)) if (m_btnMgr.selected(m_cfThemeBtnSave))
{ {
m_cf.stopCoverLoader(); CoverFlow.stopCoverLoader();
m_theme.save(); m_theme.save();
break; break;
} }
@ -417,31 +417,31 @@ void CMenu::_cfTheme(void)
cfVersion = 1 + loopNum(cfVersion, m_numCFVersions); cfVersion = 1 + loopNum(cfVersion, m_numCFVersions);
_showCFTheme(curParam, cfVersion, wide); _showCFTheme(curParam, cfVersion, wide);
_loadCFLayout(cfVersion, true, wide != m_vid.wide()); _loadCFLayout(cfVersion, true, wide != m_vid.wide());
m_cf.applySettings(); CoverFlow.applySettings();
} }
else if (m_btnMgr.selected(m_cfThemeBtnSelect)) else if (m_btnMgr.selected(m_cfThemeBtnSelect))
{ {
if (m_cf.selected()) if (CoverFlow.selected())
m_cf.cancel(); CoverFlow.cancel();
else else
m_cf.select(); CoverFlow.select();
_showCFTheme(curParam, cfVersion, wide); _showCFTheme(curParam, cfVersion, wide);
_loadCFLayout(cfVersion, true, wide != m_vid.wide()); _loadCFLayout(cfVersion, true, wide != m_vid.wide());
m_cf.applySettings(); CoverFlow.applySettings();
} }
else if (m_btnMgr.selected(m_cfThemeBtnWide)) else if (m_btnMgr.selected(m_cfThemeBtnWide))
{ {
wide = !wide; wide = !wide;
_showCFTheme(curParam, cfVersion, wide); _showCFTheme(curParam, cfVersion, wide);
_loadCFLayout(cfVersion, true, wide != m_vid.wide()); _loadCFLayout(cfVersion, true, wide != m_vid.wide());
m_cf.applySettings(); CoverFlow.applySettings();
} }
else if (m_btnMgr.selected(m_cfThemeBtnParamP) || m_btnMgr.selected(m_cfThemeBtnParamM)) else if (m_btnMgr.selected(m_cfThemeBtnParamP) || m_btnMgr.selected(m_cfThemeBtnParamM))
{ {
s8 direction = m_btnMgr.selected(m_cfThemeBtnParamP) ? 1 : -1; s8 direction = m_btnMgr.selected(m_cfThemeBtnParamP) ? 1 : -1;
curParam = loopNum(curParam + direction, ARRAY_SIZE(CMenu::_cfParams)); curParam = loopNum(curParam + direction, ARRAY_SIZE(CMenu::_cfParams));
if (CMenu::_cfParams[curParam].domain == CMenu::SCFParamDesc::PDD_SELECTED) if (CMenu::_cfParams[curParam].domain == CMenu::SCFParamDesc::PDD_SELECTED)
m_cf.select(); CoverFlow.select();
_showCFTheme(curParam, cfVersion, wide); _showCFTheme(curParam, cfVersion, wide);
} }
} }
@ -453,7 +453,7 @@ void CMenu::_cfTheme(void)
_cfParam(m_btnMgr.selected(m_cfThemeBtnValP[i]), i, CMenu::_cfParams[curParam], cfVersion, wide); _cfParam(m_btnMgr.selected(m_cfThemeBtnValP[i]), i, CMenu::_cfParams[curParam], cfVersion, wide);
_showCFTheme(curParam, cfVersion, wide); _showCFTheme(curParam, cfVersion, wide);
_loadCFLayout(cfVersion, true, wide != m_vid.wide()); _loadCFLayout(cfVersion, true, wide != m_vid.wide());
m_cf.applySettings(); CoverFlow.applySettings();
break; break;
} }
} }
@ -461,19 +461,19 @@ void CMenu::_cfTheme(void)
_showCFTheme(curParam, cfVersion, wide); _showCFTheme(curParam, cfVersion, wide);
else else
_hideCFTheme(); _hideCFTheme();
m_cf.flip(true, curParam == 16); CoverFlow.flip(true, curParam == 16);
} }
_hideCFTheme(); _hideCFTheme();
_loadCFLayout(1); _loadCFLayout(1);
m_cf.clear(); CoverFlow.clear();
m_cf.simulateOtherScreenFormat(false); CoverFlow.simulateOtherScreenFormat(false);
} }
void CMenu::_cfParam(bool inc, int i, const CMenu::SCFParamDesc &p, int cfVersion, bool wide) void CMenu::_cfParam(bool inc, int i, const CMenu::SCFParamDesc &p, int cfVersion, bool wide)
{ {
int k = i / 4; int k = i / 4;
string key(p.key[k]); string key(p.key[k]);
const char *d = _cfDomain((p.domain != CMenu::SCFParamDesc::PDD_NORMAL && m_cf.selected()) || p.domain == CMenu::SCFParamDesc::PDD_SELECTED); const char *d = _cfDomain((p.domain != CMenu::SCFParamDesc::PDD_NORMAL && CoverFlow.selected()) || p.domain == CMenu::SCFParamDesc::PDD_SELECTED);
string domain(sfmt(d, cfVersion)); string domain(sfmt(d, cfVersion));
float step = p.step[k]; float step = p.step[k];
if (!wide && p.scrnFmt && (p.paramType[k] == CMenu::SCFParamDesc::PDT_V3D || p.paramType[k] == CMenu::SCFParamDesc::PDT_FLOAT || p.paramType[k] == CMenu::SCFParamDesc::PDT_INT)) if (!wide && p.scrnFmt && (p.paramType[k] == CMenu::SCFParamDesc::PDT_V3D || p.paramType[k] == CMenu::SCFParamDesc::PDT_FLOAT || p.paramType[k] == CMenu::SCFParamDesc::PDT_INT))
@ -542,7 +542,7 @@ void CMenu::_cfParam(bool inc, int i, const CMenu::SCFParamDesc &p, int cfVersio
} }
case CMenu::SCFParamDesc::PDT_TXTSTYLE: case CMenu::SCFParamDesc::PDT_TXTSTYLE:
{ {
int i = styleToIdx(_textStyle(domain.c_str(), key.c_str(), m_cf.selected() ? FTGX_JUSTIFY_RIGHT | FTGX_ALIGN_TOP : FTGX_JUSTIFY_CENTER | FTGX_ALIGN_BOTTOM)); int i = styleToIdx(_textStyle(domain.c_str(), key.c_str(), CoverFlow.selected() ? FTGX_JUSTIFY_RIGHT | FTGX_ALIGN_TOP : FTGX_JUSTIFY_CENTER | FTGX_ALIGN_BOTTOM));
i = loopNum(i + (int)step, 9); i = loopNum(i + (int)step, 9);
m_theme.setString(domain, key, styleToTxt(g_txtStyles[i])); m_theme.setString(domain, key, styleToTxt(g_txtStyles[i]));
break; break;

View File

@ -53,7 +53,7 @@ u32 CMenu::_downloadCheatFileAsync(void *obj)
return -2; return -2;
} }
string id = m->m_cf.getId(); string id = CoverFlow.getId();
char type = id[0] == 'S' ? 'R' : id[0]; char type = id[0] == 'S' ? 'R' : id[0];
block cheatfile = downloadfile(buffer, bufferSize, fmt(GECKOURL, type, id.c_str()), CMenu::_downloadProgress, m); block cheatfile = downloadfile(buffer, bufferSize, fmt(GECKOURL, type, id.c_str()), CMenu::_downloadProgress, m);
@ -81,7 +81,7 @@ void CMenu::_CheatSettings()
{ {
SetupInput(); SetupInput();
string id = m_cf.getId(); string id = CoverFlow.getId();
m_cheatSettingsPage = 1; m_cheatSettingsPage = 1;
int txtavailable = m_cheatfile.openTxtfile(fmt("%s/%s.txt", m_txtCheatDir.c_str(), id.c_str())); int txtavailable = m_cheatfile.openTxtfile(fmt("%s/%s.txt", m_txtCheatDir.c_str(), id.c_str()));

View File

@ -82,13 +82,13 @@ void CMenu::_showConfig(void)
void CMenu::_cfNeedsUpdate(void) void CMenu::_cfNeedsUpdate(void)
{ {
if (!m_cfNeedsUpdate) if (!m_cfNeedsUpdate)
m_cf.clear(); CoverFlow.clear();
m_cfNeedsUpdate = true; m_cfNeedsUpdate = true;
} }
void CMenu::_config(int page) void CMenu::_config(int page)
{ {
m_curGameId = m_cf.getId(); m_curGameId = CoverFlow.getId();
m_cfNeedsUpdate = false; m_cfNeedsUpdate = false;
int change = CONFIG_PAGE_NO_CHANGE; int change = CONFIG_PAGE_NO_CHANGE;
while(!m_exit) while(!m_exit)
@ -183,11 +183,11 @@ int CMenu::_config1(void)
if (m_btnMgr.selected(m_configBtnDownload)) if (m_btnMgr.selected(m_configBtnDownload))
{ {
_cfNeedsUpdate(); _cfNeedsUpdate();
m_cf.stopCoverLoader(true); CoverFlow.stopCoverLoader(true);
_hideConfig(); _hideConfig();
_download(); _download();
_showConfig(); _showConfig();
m_cf.startCoverLoader(); CoverFlow.startCoverLoader();
} }
else if ((m_btnMgr.selected(m_configBtnUnlock)) || (m_btnMgr.selected(m_configBtnSetCode))) else if ((m_btnMgr.selected(m_configBtnUnlock)) || (m_btnMgr.selected(m_configBtnSetCode)))
_code(); _code();
@ -199,14 +199,14 @@ int CMenu::_config1(void)
else if (m_btnMgr.selected(m_configBtnCfg4)) else if (m_btnMgr.selected(m_configBtnCfg4))
{ {
_cfNeedsUpdate(); _cfNeedsUpdate();
m_cf.stopCoverLoader(true); CoverFlow.stopCoverLoader(true);
_hideConfig(); _hideConfig();
if(m_current_view != COVERFLOW_PLUGIN) if(m_current_view != COVERFLOW_PLUGIN)
_NandEmuCfg(); _NandEmuCfg();
else else
_PluginSettings(); _PluginSettings();
_showConfig(); _showConfig();
m_cf.startCoverLoader(); CoverFlow.startCoverLoader();
} }
} }
} }

View File

@ -122,7 +122,7 @@ void CMenu::_showGameSettings(void)
{ {
wstringEx title(_t("cfgg1", L"Settings")); wstringEx title(_t("cfgg1", L"Settings"));
title += L" ["; title += L" [";
title += wstringEx(m_cf.getId()); title += wstringEx(CoverFlow.getId());
title += L"]"; title += L"]";
m_btnMgr.setText(m_gameSettingsLblTitle, title); m_btnMgr.setText(m_gameSettingsLblTitle, title);
_setBg(m_gameSettingsBg, m_gameSettingsBg); _setBg(m_gameSettingsBg, m_gameSettingsBg);
@ -131,7 +131,7 @@ void CMenu::_showGameSettings(void)
m_btnMgr.show(m_gameSettingsBtnPageP); m_btnMgr.show(m_gameSettingsBtnPageP);
m_btnMgr.show(m_gameSettingsBtnBack); m_btnMgr.show(m_gameSettingsBtnBack);
m_btnMgr.show(m_gameSettingsLblTitle); m_btnMgr.show(m_gameSettingsLblTitle);
if(m_cf.getHdr()->type == TYPE_GC_GAME) if(CoverFlow.getHdr()->type == TYPE_GC_GAME)
{ {
if(m_new_dml) if(m_new_dml)
g_numGCfPages = 3; g_numGCfPages = 3;
@ -140,7 +140,7 @@ void CMenu::_showGameSettings(void)
} }
else else
{ {
if(m_current_view == COVERFLOW_USB && _checkSave(string((const char *)m_cf.getHdr()->id), false)) if(m_current_view == COVERFLOW_USB && _checkSave(string((const char *)CoverFlow.getHdr()->id), false))
g_numGCfPages = 5; g_numGCfPages = 5;
else else
g_numGCfPages = 4; g_numGCfPages = 4;
@ -150,7 +150,7 @@ void CMenu::_showGameSettings(void)
{ {
m_btnMgr.show(m_gameSettingsLblCover); m_btnMgr.show(m_gameSettingsLblCover);
m_btnMgr.show(m_gameSettingsBtnCover); m_btnMgr.show(m_gameSettingsBtnCover);
if(m_cf.getHdr()->type == TYPE_GC_GAME) if(CoverFlow.getHdr()->type == TYPE_GC_GAME)
{ {
m_btnMgr.show(m_gameSettingsLblDMLGameVideo); m_btnMgr.show(m_gameSettingsLblDMLGameVideo);
m_btnMgr.show(m_gameSettingsLblDMLVideo); m_btnMgr.show(m_gameSettingsLblDMLVideo);
@ -187,7 +187,7 @@ void CMenu::_showGameSettings(void)
{ {
m_btnMgr.hide(m_gameSettingsLblCover); m_btnMgr.hide(m_gameSettingsLblCover);
m_btnMgr.hide(m_gameSettingsBtnCover); m_btnMgr.hide(m_gameSettingsBtnCover);
if(m_cf.getHdr()->type == TYPE_GC_GAME) if(CoverFlow.getHdr()->type == TYPE_GC_GAME)
{ {
m_btnMgr.hide(m_gameSettingsLblGClanguage); m_btnMgr.hide(m_gameSettingsLblGClanguage);
m_btnMgr.hide(m_gameSettingsLblGClanguageVal); m_btnMgr.hide(m_gameSettingsLblGClanguageVal);
@ -227,7 +227,7 @@ void CMenu::_showGameSettings(void)
m_btnMgr.show(m_gameSettingsBtnDebuggerP); m_btnMgr.show(m_gameSettingsBtnDebuggerP);
m_btnMgr.show(m_gameSettingsBtnDebuggerM); m_btnMgr.show(m_gameSettingsBtnDebuggerM);
if(m_cf.getHdr()->type != TYPE_GC_GAME) if(CoverFlow.getHdr()->type != TYPE_GC_GAME)
{ {
m_btnMgr.show(m_gameSettingsLblHooktype); m_btnMgr.show(m_gameSettingsLblHooktype);
m_btnMgr.show(m_gameSettingsLblHooktypeVal); m_btnMgr.show(m_gameSettingsLblHooktypeVal);
@ -248,7 +248,7 @@ void CMenu::_showGameSettings(void)
m_btnMgr.hide(m_gameSettingsBtnDebuggerP); m_btnMgr.hide(m_gameSettingsBtnDebuggerP);
m_btnMgr.hide(m_gameSettingsBtnDebuggerM); m_btnMgr.hide(m_gameSettingsBtnDebuggerM);
if(m_cf.getHdr()->type != TYPE_GC_GAME) if(CoverFlow.getHdr()->type != TYPE_GC_GAME)
{ {
m_btnMgr.hide(m_gameSettingsLblHooktype); m_btnMgr.hide(m_gameSettingsLblHooktype);
m_btnMgr.hide(m_gameSettingsLblHooktypeVal); m_btnMgr.hide(m_gameSettingsLblHooktypeVal);
@ -264,7 +264,7 @@ void CMenu::_showGameSettings(void)
} }
if (m_gameSettingsPage == 3) if (m_gameSettingsPage == 3)
{ {
if(m_cf.getHdr()->type != TYPE_GC_GAME) if(CoverFlow.getHdr()->type != TYPE_GC_GAME)
{ {
m_btnMgr.show(m_gameSettingsLblPatchVidModes); m_btnMgr.show(m_gameSettingsLblPatchVidModes);
m_btnMgr.show(m_gameSettingsLblPatchVidModesVal); m_btnMgr.show(m_gameSettingsLblPatchVidModesVal);
@ -276,7 +276,7 @@ void CMenu::_showGameSettings(void)
m_btnMgr.show(m_gameSettingsLblCountryPatch); m_btnMgr.show(m_gameSettingsLblCountryPatch);
m_btnMgr.show(m_gameSettingsBtnCountryPatch); m_btnMgr.show(m_gameSettingsBtnCountryPatch);
if(m_cf.getHdr()->type == TYPE_WII_GAME) if(CoverFlow.getHdr()->type == TYPE_WII_GAME)
{ {
m_btnMgr.show(m_gameSettingsLblAspectRatio); m_btnMgr.show(m_gameSettingsLblAspectRatio);
m_btnMgr.show(m_gameSettingsLblAspectRatioVal); m_btnMgr.show(m_gameSettingsLblAspectRatioVal);
@ -305,7 +305,7 @@ void CMenu::_showGameSettings(void)
} }
else else
{ {
if(m_cf.getHdr()->type != TYPE_GC_GAME) if(CoverFlow.getHdr()->type != TYPE_GC_GAME)
{ {
m_btnMgr.hide(m_gameSettingsLblPatchVidModes); m_btnMgr.hide(m_gameSettingsLblPatchVidModes);
m_btnMgr.hide(m_gameSettingsLblPatchVidModesVal); m_btnMgr.hide(m_gameSettingsLblPatchVidModesVal);
@ -344,7 +344,7 @@ void CMenu::_showGameSettings(void)
} }
if (m_gameSettingsPage == 4) if (m_gameSettingsPage == 4)
{ {
if(m_cf.getHdr()->type == TYPE_CHANNEL) if(CoverFlow.getHdr()->type == TYPE_CHANNEL)
{ {
m_btnMgr.show(m_gameSettingsLblCustom); m_btnMgr.show(m_gameSettingsLblCustom);
m_btnMgr.show(m_gameSettingsBtnCustom); m_btnMgr.show(m_gameSettingsBtnCustom);
@ -354,13 +354,13 @@ void CMenu::_showGameSettings(void)
m_btnMgr.show(m_gameSettingsBtnLaunchNK); m_btnMgr.show(m_gameSettingsBtnLaunchNK);
} }
} }
else if(m_cf.getHdr()->type == TYPE_WII_GAME) else if(CoverFlow.getHdr()->type == TYPE_WII_GAME)
{ {
m_btnMgr.show(m_gameSettingsLblEmulationVal); m_btnMgr.show(m_gameSettingsLblEmulationVal);
m_btnMgr.show(m_gameSettingsLblEmulation); m_btnMgr.show(m_gameSettingsLblEmulation);
m_btnMgr.show(m_gameSettingsBtnEmulationP); m_btnMgr.show(m_gameSettingsBtnEmulationP);
m_btnMgr.show(m_gameSettingsBtnEmulationM); m_btnMgr.show(m_gameSettingsBtnEmulationM);
if(_checkSave(string((const char *)m_cf.getHdr()->id), true)) if(_checkSave(string((const char *)CoverFlow.getHdr()->id), true))
{ {
m_btnMgr.show(m_gameSettingsLblExtractSave); m_btnMgr.show(m_gameSettingsLblExtractSave);
m_btnMgr.show(m_gameSettingsBtnExtractSave); m_btnMgr.show(m_gameSettingsBtnExtractSave);
@ -407,13 +407,13 @@ void CMenu::_showGameSettings(void)
if(m_gameSettingsLblUser[i] != -1) if(m_gameSettingsLblUser[i] != -1)
m_btnMgr.show(m_gameSettingsLblUser[i]); m_btnMgr.show(m_gameSettingsLblUser[i]);
string id(m_cf.getId()); string id(CoverFlow.getId());
int page = m_gameSettingsPage; int page = m_gameSettingsPage;
u32 maxpage = g_numGCfPages; u32 maxpage = g_numGCfPages;
m_btnMgr.setText(m_gameSettingsLblPage, wfmt(L"%i / %i", page, maxpage)); m_btnMgr.setText(m_gameSettingsLblPage, wfmt(L"%i / %i", page, maxpage));
m_btnMgr.setText(m_gameSettingsBtnOcarina, _optBoolToString(m_gcfg2.getOptBool(id, "cheat"))); m_btnMgr.setText(m_gameSettingsBtnOcarina, _optBoolToString(m_gcfg2.getOptBool(id, "cheat")));
if(m_cf.getHdr()->type == TYPE_GC_GAME) if(CoverFlow.getHdr()->type == TYPE_GC_GAME)
{ {
m_btnMgr.setText(m_gameSettingsBtnDM_Widescreen, _optBoolToString(m_gcfg2.getOptBool(id, "dm_widescreen", 0))); m_btnMgr.setText(m_gameSettingsBtnDM_Widescreen, _optBoolToString(m_gcfg2.getOptBool(id, "dm_widescreen", 0)));
m_btnMgr.setText(m_gameSettingsBtnDevoMemcardEmu, _optBoolToString(m_gcfg2.getOptBool(id, "devo_memcard_emu", 0))); m_btnMgr.setText(m_gameSettingsBtnDevoMemcardEmu, _optBoolToString(m_gcfg2.getOptBool(id, "devo_memcard_emu", 0)));
@ -475,7 +475,7 @@ void CMenu::_showGameSettings(void)
void CMenu::_gameSettings(void) void CMenu::_gameSettings(void)
{ {
m_gcfg2.load(fmt("%s/" GAME_SETTINGS2_FILENAME, m_settingsDir.c_str())); m_gcfg2.load(fmt("%s/" GAME_SETTINGS2_FILENAME, m_settingsDir.c_str()));
string id(m_cf.getId()); string id(CoverFlow.getId());
m_gameSettingsPage = 1; m_gameSettingsPage = 1;
_showGameSettings(); _showGameSettings();
@ -664,11 +664,11 @@ void CMenu::_gameSettings(void)
} }
else if (m_btnMgr.selected(m_gameSettingsBtnCover)) else if (m_btnMgr.selected(m_gameSettingsBtnCover))
{ {
m_cf.stopCoverLoader(true); CoverFlow.stopCoverLoader(true);
_hideGameSettings(); _hideGameSettings();
_download(id); _download(id);
_showGameSettings(); _showGameSettings();
m_cf.startCoverLoader(); CoverFlow.startCoverLoader();
} }
else if (m_btnMgr.selected(m_gameSettingsBtnCheat)) else if (m_btnMgr.selected(m_gameSettingsBtnCheat))
{ {
@ -722,11 +722,11 @@ void CMenu::_gameSettings(void)
{ {
if (m_btnMgr.selected(m_gameSettingsBtnCover)) if (m_btnMgr.selected(m_gameSettingsBtnCover))
{ {
m_cf.stopCoverLoader(true); // Empty cover cache CoverFlow.stopCoverLoader(true); // Empty cover cache
remove(fmt("%s/%s.png", m_picDir.c_str(), m_cf.getId().c_str())); remove(fmt("%s/%s.png", m_picDir.c_str(), CoverFlow.getId().c_str()));
remove(fmt("%s/%s.png", m_boxPicDir.c_str(), m_cf.getId().c_str())); remove(fmt("%s/%s.png", m_boxPicDir.c_str(), CoverFlow.getId().c_str()));
remove(fmt("%s/%s.wfc", m_cacheDir.c_str(), m_cf.getId().c_str())); remove(fmt("%s/%s.wfc", m_cacheDir.c_str(), CoverFlow.getId().c_str()));
m_cf.startCoverLoader(); CoverFlow.startCoverLoader();
} }
} }

View File

@ -114,13 +114,13 @@ int CMenu::_configSnd(void)
{ {
m_cfg.setInt("GENERAL", "sound_volume_coverflow", min(m_cfg.getInt("GENERAL", "sound_volume_coverflow", 255) + step, 255)); m_cfg.setInt("GENERAL", "sound_volume_coverflow", min(m_cfg.getInt("GENERAL", "sound_volume_coverflow", 255) + step, 255));
_showConfigSnd(); _showConfigSnd();
m_cf.setSoundVolume(m_cfg.getInt("GENERAL", "sound_volume_coverflow", 255)); CoverFlow.setSoundVolume(m_cfg.getInt("GENERAL", "sound_volume_coverflow", 255));
} }
else if (m_btnMgr.selected(m_configSndBtnCFVolM)) else if (m_btnMgr.selected(m_configSndBtnCFVolM))
{ {
m_cfg.setInt("GENERAL", "sound_volume_coverflow", max(m_cfg.getInt("GENERAL", "sound_volume_coverflow", 255) - step, 0)); m_cfg.setInt("GENERAL", "sound_volume_coverflow", max(m_cfg.getInt("GENERAL", "sound_volume_coverflow", 255) - step, 0));
_showConfigSnd(); _showConfigSnd();
m_cf.setSoundVolume(m_cfg.getInt("GENERAL", "sound_volume_coverflow", 255)); CoverFlow.setSoundVolume(m_cfg.getInt("GENERAL", "sound_volume_coverflow", 255));
} }
} }
} }

View File

@ -514,7 +514,7 @@ int CMenu::_coverDownloader(bool missingOnly)
id = (const char *)m_gameList[i].id; id = (const char *)m_gameList[i].id;
path = sfmt("%s/%s.png", m_boxPicDir.c_str(), id.c_str()); path = sfmt("%s/%s.png", m_boxPicDir.c_str(), id.c_str());
} }
if(!missingOnly || (!m_cf.fullCoverCached(id.c_str()) && !checkPNGFile(path.c_str()))) if(!missingOnly || (!CoverFlow.fullCoverCached(id.c_str()) && !checkPNGFile(path.c_str())))
{ {
if(m_gameList[i].type == TYPE_PLUGIN) if(m_gameList[i].type == TYPE_PLUGIN)
pluginCoverList.push_back(m_gameList[i]); pluginCoverList.push_back(m_gameList[i]);
@ -726,7 +726,7 @@ int CMenu::_coverDownloader(bool missingOnly)
LWP_MutexLock(m_mutex); LWP_MutexLock(m_mutex);
_setThrdMsg(wfmt(_fmt("dlmsg10", L"Making %s"), sfmt("%s.wfc", coverList[i].c_str()).c_str()), listWeight + dlWeight * (float)(step + 1) / (float)nbSteps); _setThrdMsg(wfmt(_fmt("dlmsg10", L"Making %s"), sfmt("%s.wfc", coverList[i].c_str()).c_str()), listWeight + dlWeight * (float)(step + 1) / (float)nbSteps);
LWP_MutexUnlock(m_mutex); LWP_MutexUnlock(m_mutex);
if (m_cf.preCacheCover(coverList[i].c_str(), download.data, true)) if (CoverFlow.preCacheCover(coverList[i].c_str(), download.data, true))
{ {
++count; ++count;
success = true; success = true;
@ -874,7 +874,7 @@ int CMenu::_coverDownloader(bool missingOnly)
LWP_MutexLock(m_mutex); LWP_MutexLock(m_mutex);
_setThrdMsg(wfmt(_fmt("dlmsg10", L"Making %s"), sfmt("%s.wfc", coverList[i].c_str()).c_str()), listWeight + dlWeight * (float)(step + 1) / (float)nbSteps); _setThrdMsg(wfmt(_fmt("dlmsg10", L"Making %s"), sfmt("%s.wfc", coverList[i].c_str()).c_str()), listWeight + dlWeight * (float)(step + 1) / (float)nbSteps);
LWP_MutexUnlock(m_mutex); LWP_MutexUnlock(m_mutex);
if (m_cf.preCacheCover(coverList[i].c_str(), download.data, true)) if (CoverFlow.preCacheCover(coverList[i].c_str(), download.data, true))
{ {
++count; ++count;
success = true; success = true;
@ -1021,7 +1021,7 @@ int CMenu::_coverDownloader(bool missingOnly)
LWP_MutexLock(m_mutex); LWP_MutexLock(m_mutex);
_setThrdMsg(wfmt(_fmt("dlmsg10", L"Making %s"), sfmt("%s.wfc", coverList[i].c_str()).c_str()), listWeight + dlWeight * (float)(step + 1) / (float)nbSteps); _setThrdMsg(wfmt(_fmt("dlmsg10", L"Making %s"), sfmt("%s.wfc", coverList[i].c_str()).c_str()), listWeight + dlWeight * (float)(step + 1) / (float)nbSteps);
LWP_MutexUnlock(m_mutex); LWP_MutexUnlock(m_mutex);
if (m_cf.preCacheCover(coverList[i].c_str(), download.data, false)) if (CoverFlow.preCacheCover(coverList[i].c_str(), download.data, false))
{ {
++countFlat; ++countFlat;
success = true; success = true;
@ -1164,7 +1164,7 @@ int CMenu::_coverDownloader(bool missingOnly)
LWP_MutexLock(m_mutex); LWP_MutexLock(m_mutex);
_setThrdMsg(wfmt(_fmt("dlmsg10", L"Making %s"), sfmt("%s.wfc", coverList[i].c_str()).c_str()), listWeight + dlWeight * (float)(step + 1) / (float)nbSteps); _setThrdMsg(wfmt(_fmt("dlmsg10", L"Making %s"), sfmt("%s.wfc", coverList[i].c_str()).c_str()), listWeight + dlWeight * (float)(step + 1) / (float)nbSteps);
LWP_MutexUnlock(m_mutex); LWP_MutexUnlock(m_mutex);
if (m_cf.preCacheCover(coverList[i].c_str(), download.data, false)) if (CoverFlow.preCacheCover(coverList[i].c_str(), download.data, false))
{ {
++countFlat; ++countFlat;
success = true; success = true;
@ -1210,13 +1210,13 @@ void CMenu::_download(string gameId)
m_thrdStop = false; m_thrdStop = false;
m_thrdMessageAdded = false; m_thrdMessageAdded = false;
if(gameId.size() && m_cf.getHdr()->type == TYPE_PLUGIN) if(gameId.size() && CoverFlow.getHdr()->type == TYPE_PLUGIN)
{ {
char gamePath[256]; char gamePath[256];
if(string(m_cf.getHdr()->path).find_last_of("/") != string::npos) if(string(CoverFlow.getHdr()->path).find_last_of("/") != string::npos)
strncpy(gamePath, &m_cf.getHdr()->path[string(m_cf.getHdr()->path).find_last_of("/")+1], sizeof(gamePath)); strncpy(gamePath, &CoverFlow.getHdr()->path[string(CoverFlow.getHdr()->path).find_last_of("/")+1], sizeof(gamePath));
else else
strncpy(gamePath, m_cf.getHdr()->path, sizeof(gamePath)); strncpy(gamePath, CoverFlow.getHdr()->path, sizeof(gamePath));
m_coverDLGameId = gamePath; m_coverDLGameId = gamePath;
} }
else else

View File

@ -309,7 +309,7 @@ void CMenu::_hideGame(bool instant)
{ {
m_gameSelected = false; m_gameSelected = false;
m_fa.unload(); m_fa.unload();
m_cf.showCover(); CoverFlow.showCover();
m_btnMgr.hide(m_gameBtnPlay, instant); m_btnMgr.hide(m_gameBtnPlay, instant);
m_btnMgr.hide(m_gameBtnBack, instant); m_btnMgr.hide(m_gameBtnBack, instant);
m_btnMgr.hide(m_gameBtnPlayFull, instant); m_btnMgr.hide(m_gameBtnPlayFull, instant);
@ -330,16 +330,16 @@ void CMenu::_hideGame(bool instant)
void CMenu::_showGame(void) void CMenu::_showGame(void)
{ {
m_cf.showCover(); CoverFlow.showCover();
if (m_fa.load(m_cfg, m_fanartDir.c_str(), m_cf.getId().c_str())) if (m_fa.load(m_cfg, m_fanartDir.c_str(), CoverFlow.getId().c_str()))
{ {
STexture bg, bglq; STexture bg, bglq;
m_fa.getBackground(bg, bglq); m_fa.getBackground(bg, bglq);
_setBg(bg, bglq); _setBg(bg, bglq);
if (m_fa.hideCover()) if (m_fa.hideCover())
m_cf.hideCover(); CoverFlow.hideCover();
} }
else else
_setBg(m_mainBg, m_mainBgLQ); _setBg(m_mainBg, m_mainBgLQ);
@ -382,7 +382,7 @@ void CMenu::_game(bool launch)
m_gameSelected = true; m_gameSelected = true;
} }
m_zoom_banner = m_cfg.getBool(_domainFromView(), "show_full_banner", false) && !NoGameID(m_cf.getHdr()->type); m_zoom_banner = m_cfg.getBool(_domainFromView(), "show_full_banner", false) && !NoGameID(CoverFlow.getHdr()->type);
if(m_banner.GetZoomSetting() != m_zoom_banner) if(m_banner.GetZoomSetting() != m_zoom_banner)
m_banner.ToogleZoom(); m_banner.ToogleZoom();
@ -392,7 +392,7 @@ void CMenu::_game(bool launch)
if(startGameSound < 1) if(startGameSound < 1)
startGameSound++; startGameSound++;
u64 chantitle = m_cf.getChanTitle(); u64 chantitle = CoverFlow.getChanTitle();
if(startGameSound == -5) if(startGameSound == -5)
{ {
@ -424,7 +424,7 @@ void CMenu::_game(bool launch)
m_banner.DeleteBanner(); m_banner.DeleteBanner();
break; break;
} }
else if(BTN_PLUS_PRESSED && m_GameTDBLoaded && (m_cf.getHdr()->type == TYPE_WII_GAME || m_cf.getHdr()->type == TYPE_GC_GAME || m_cf.getHdr()->type == TYPE_CHANNEL)) else if(BTN_PLUS_PRESSED && m_GameTDBLoaded && (CoverFlow.getHdr()->type == TYPE_WII_GAME || CoverFlow.getHdr()->type == TYPE_GC_GAME || CoverFlow.getHdr()->type == TYPE_CHANNEL))
{ {
_hideGame(); _hideGame();
m_banner.SetShowBanner(false); m_banner.SetShowBanner(false);
@ -437,7 +437,7 @@ void CMenu::_game(bool launch)
} }
else if(BTN_MINUS_PRESSED) else if(BTN_MINUS_PRESSED)
{ {
const char *videoPath = fmt("%s/%.3s.thp", m_videoDir.c_str(), m_cf.getId().c_str()); const char *videoPath = fmt("%s/%.3s.thp", m_videoDir.c_str(), CoverFlow.getId().c_str());
FILE *file = fopen(videoPath, "r"); FILE *file = fopen(videoPath, "r");
if(file) if(file)
{ {
@ -490,7 +490,7 @@ void CMenu::_game(bool launch)
const char *domain = _domainFromView(); const char *domain = _domainFromView();
int cfVersion = 1+loopNum((m_cfg.getInt(domain, "last_cf_mode", 1)-1) + direction, m_numCFVersions); int cfVersion = 1+loopNum((m_cfg.getInt(domain, "last_cf_mode", 1)-1) + direction, m_numCFVersions);
_loadCFLayout(cfVersion); _loadCFLayout(cfVersion);
m_cf.applySettings(); CoverFlow.applySettings();
m_cfg.setInt(domain, "last_cf_mode" , cfVersion); m_cfg.setInt(domain, "last_cf_mode" , cfVersion);
} }
else if(launch || BTN_A_PRESSED) else if(launch || BTN_A_PRESSED)
@ -527,7 +527,7 @@ void CMenu::_game(bool launch)
m_banner.DeleteBanner(); m_banner.DeleteBanner();
break; break;
} }
else if((m_btnMgr.selected(m_gameBtnToogle) || m_btnMgr.selected(m_gameBtnToogleFull)) && !NoGameID(m_cf.getHdr()->type)) else if((m_btnMgr.selected(m_gameBtnToogle) || m_btnMgr.selected(m_gameBtnToogleFull)) && !NoGameID(CoverFlow.getHdr()->type))
{ {
m_zoom_banner = m_banner.ToogleZoom(); m_zoom_banner = m_banner.ToogleZoom();
m_cfg.setBool(_domainFromView(), "show_full_banner", m_zoom_banner); m_cfg.setBool(_domainFromView(), "show_full_banner", m_zoom_banner);
@ -553,7 +553,7 @@ void CMenu::_game(bool launch)
m_gameSound.FreeMemory(); m_gameSound.FreeMemory();
CheckGameSoundThread(); CheckGameSoundThread();
m_banner.DeleteBanner(); m_banner.DeleteBanner();
dir_discHdr *hdr = m_cf.getHdr(); dir_discHdr *hdr = CoverFlow.getHdr();
m_gcfg2.load(fmt("%s/" GAME_SETTINGS2_FILENAME, m_settingsDir.c_str())); m_gcfg2.load(fmt("%s/" GAME_SETTINGS2_FILENAME, m_settingsDir.c_str()));
if(currentPartition != SD && hdr->type == TYPE_GC_GAME && m_show_dml == 2 && (strstr(hdr->path, ".iso") == NULL || if(currentPartition != SD && hdr->type == TYPE_GC_GAME && m_show_dml == 2 && (strstr(hdr->path, ".iso") == NULL ||
!m_devo_installed || min((u32)m_gcfg2.getInt(hdr->id, "gc_loader", 0), ARRAY_SIZE(CMenu::_GCLoader) - 1u) == 1)) !m_devo_installed || min((u32)m_gcfg2.getInt(hdr->id, "gc_loader", 0), ARRAY_SIZE(CMenu::_GCLoader) - 1u) == 1))
@ -597,7 +597,7 @@ void CMenu::_game(bool launch)
currentPartition = SD; currentPartition = SD;
} }
m_cf.clear(); CoverFlow.clear();
_showWaitMessage(); _showWaitMessage();
exitHandler(PRIILOADER_DEF); //Making wiiflow ready to boot something exitHandler(PRIILOADER_DEF); //Making wiiflow ready to boot something
@ -631,41 +631,41 @@ void CMenu::_game(bool launch)
m_gcfg2.unload(); m_gcfg2.unload();
_showGame(); _showGame();
_initCF(); _initCF();
m_cf.select(); 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 (m_cf.mouseOver(m_vid, m_cursor[chan].x(), m_cursor[chan].y())) if (CoverFlow.mouseOver(m_cursor[chan].x(), m_cursor[chan].y()))
m_cf.flip(); CoverFlow.flip();
} }
} }
if((startGameSound == 1 || startGameSound < -8) && (BTN_UP_REPEAT || RIGHT_STICK_UP)) if((startGameSound == 1 || startGameSound < -8) && (BTN_UP_REPEAT || RIGHT_STICK_UP))
{ {
if(m_gameSoundThread != LWP_THREAD_NULL) if(m_gameSoundThread != LWP_THREAD_NULL)
CheckGameSoundThread(); CheckGameSoundThread();
m_cf.up(); CoverFlow.up();
startGameSound = -10; startGameSound = -10;
} }
if((startGameSound == 1 || startGameSound < -8) && (BTN_RIGHT_REPEAT || RIGHT_STICK_RIGHT)) if((startGameSound == 1 || startGameSound < -8) && (BTN_RIGHT_REPEAT || RIGHT_STICK_RIGHT))
{ {
if(m_gameSoundThread != LWP_THREAD_NULL) if(m_gameSoundThread != LWP_THREAD_NULL)
CheckGameSoundThread(); CheckGameSoundThread();
m_cf.right(); CoverFlow.right();
startGameSound = -10; startGameSound = -10;
} }
if((startGameSound == 1 || startGameSound < -8) && (BTN_DOWN_REPEAT || RIGHT_STICK_DOWN)) if((startGameSound == 1 || startGameSound < -8) && (BTN_DOWN_REPEAT || RIGHT_STICK_DOWN))
{ {
if(m_gameSoundThread != LWP_THREAD_NULL) if(m_gameSoundThread != LWP_THREAD_NULL)
CheckGameSoundThread(); CheckGameSoundThread();
m_cf.down(); CoverFlow.down();
startGameSound = -10; startGameSound = -10;
} }
if((startGameSound == 1 || startGameSound < -8) && (BTN_LEFT_REPEAT || RIGHT_STICK_LEFT)) if((startGameSound == 1 || startGameSound < -8) && (BTN_LEFT_REPEAT || RIGHT_STICK_LEFT))
{ {
if(m_gameSoundThread != LWP_THREAD_NULL) if(m_gameSoundThread != LWP_THREAD_NULL)
CheckGameSoundThread(); CheckGameSoundThread();
m_cf.left(); CoverFlow.left();
startGameSound = -10; startGameSound = -10;
} }
if(startGameSound == -10) if(startGameSound == -10)
@ -687,7 +687,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_gameBtnToogleFull); m_btnMgr.hide(m_gameBtnToogleFull);
if(m_gameLblUser[4] != -1 && !NoGameID(m_cf.getHdr()->type)) if(m_gameLblUser[4] != -1 && !NoGameID(CoverFlow.getHdr()->type))
m_btnMgr.show(m_gameLblUser[4]); m_btnMgr.show(m_gameLblUser[4]);
for(u8 i = 0; i < ARRAY_SIZE(m_gameLblUser) - 1; ++i) for(u8 i = 0; i < ARRAY_SIZE(m_gameLblUser) - 1; ++i)
{ {
@ -701,7 +701,7 @@ void CMenu::_game(bool launch)
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 ((m_cf.getHdr()->type != TYPE_HOMEBREW && m_cf.getHdr()->type != TYPE_CHANNEL) && !m_locked) if ((CoverFlow.getHdr()->type != TYPE_HOMEBREW && CoverFlow.getHdr()->type != TYPE_CHANNEL) && !m_locked)
m_btnMgr.show(m_gameBtnDelete); m_btnMgr.show(m_gameBtnDelete);
} }
else else
@ -723,7 +723,7 @@ void CMenu::_game(bool launch)
m_btnMgr.hide(m_gameBtnToogle); m_btnMgr.hide(m_gameBtnToogle);
if(m_gameLblUser[4] != -1) if(m_gameLblUser[4] != -1)
{ {
if(!NoGameID(m_cf.getHdr()->type) && !m_zoom_banner) if(!NoGameID(CoverFlow.getHdr()->type) && !m_zoom_banner)
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);
@ -1408,7 +1408,7 @@ void CMenu::_initGameMenu()
_addUserLabels(m_gameLblUser, ARRAY_SIZE(m_gameLblUser), "GAME"); _addUserLabels(m_gameLblUser, ARRAY_SIZE(m_gameLblUser), "GAME");
m_gameBg = _texture("GAME/BG", "texture", theme.bg, false); m_gameBg = _texture("GAME/BG", "texture", theme.bg, false);
if (m_theme.loaded() && STexture::TE_OK == bgLQ.fromImageFile(fmt("%s/%s", m_themeDataDir.c_str(), m_theme.getString("GAME/BG", "texture").c_str()), GX_TF_CMPR, 64, 64)) if(m_theme.loaded() && bgLQ.fromImageFile(fmt("%s/%s", m_themeDataDir.c_str(), m_theme.getString("GAME/BG", "texture").c_str()), GX_TF_CMPR, 64, 64) == TE_OK)
m_gameBgLQ = bgLQ; m_gameBgLQ = bgLQ;
m_gameBtnPlay = _addButton("GAME/PLAY_BTN", theme.btnFont, L"", 420, 344, 200, 56, theme.btnFontColor); m_gameBtnPlay = _addButton("GAME/PLAY_BTN", theme.btnFont, L"", 420, 344, 200, 56, theme.btnFontColor);
@ -1468,7 +1468,7 @@ void CMenu::_gameSoundThread(CMenu *m)
m->m_gamesound_changed = false; m->m_gamesound_changed = false;
CurrentBanner.ClearBanner(); CurrentBanner.ClearBanner();
dir_discHdr *GameHdr = m->m_cf.getHdr(); dir_discHdr *GameHdr = CoverFlow.getHdr();
if(GameHdr->type == TYPE_PLUGIN) if(GameHdr->type == TYPE_PLUGIN)
{ {
m_banner.DeleteBanner(); m_banner.DeleteBanner();

View File

@ -318,7 +318,7 @@ void CMenu::_textGameInfo(void)
{ {
char GameID[7]; char GameID[7];
GameID[6] = '\0'; GameID[6] = '\0';
strncpy(GameID, m_cf.getId().c_str(), 6); strncpy(GameID, CoverFlow.getId().c_str(), 6);
if(gametdb.GetTitle(GameID, TMP_Char)) if(gametdb.GetTitle(GameID, TMP_Char))
{ {
gameinfo_Title_w.fromUTF8(TMP_Char); gameinfo_Title_w.fromUTF8(TMP_Char);

View File

@ -55,7 +55,7 @@ bool CMenu::_Home(void)
} }
else if(m_btnMgr.selected(m_homeBtnUpdate) && !m_locked) else if(m_btnMgr.selected(m_homeBtnUpdate) && !m_locked)
{ {
m_cf.stopCoverLoader(true); CoverFlow.stopCoverLoader(true);
_hideHome(); _hideHome();
_system(); _system();
remove(m_ver.c_str()); remove(m_ver.c_str());
@ -65,7 +65,7 @@ bool CMenu::_Home(void)
break; break;
} }
_showHome(); _showHome();
m_cf.startCoverLoader(); CoverFlow.startCoverLoader();
} }
else if(m_btnMgr.selected(m_homeBtnHelp)) else if(m_btnMgr.selected(m_homeBtnHelp))
{ {

View File

@ -478,16 +478,16 @@ void CMenu::_getGrabStatus(void)
gGrabStatus[chan] = GBTN_B & PAD_ButtonsHeld(chan); gGrabStatus[chan] = GBTN_B & PAD_ButtonsHeld(chan);
if((wGrabStatus[chan] && wX[chan] > 0 && wd[chan]->ir.x < wX[chan] - 30) if((wGrabStatus[chan] && wX[chan] > 0 && wd[chan]->ir.x < wX[chan] - 30)
|| (gGrabStatus[chan] && gX[chan] > 0 && stickPointer_x[chan] < gX[chan])) || (gGrabStatus[chan] && gX[chan] > 0 && stickPointer_x[chan] < gX[chan]))
m_cf.left(); CoverFlow.left();
if((wGrabStatus[chan] && wX[chan] > 0 && wd[chan]->ir.x > wX[chan] + 30) if((wGrabStatus[chan] && wX[chan] > 0 && wd[chan]->ir.x > wX[chan] + 30)
|| (gGrabStatus[chan] && gX[chan] > 0 && stickPointer_x[chan] > gX[chan])) || (gGrabStatus[chan] && gX[chan] > 0 && stickPointer_x[chan] > gX[chan]))
m_cf.right(); CoverFlow.right();
if((wGrabStatus[chan] && wY[chan] > 0 && wd[chan]->ir.y < wY[chan] - 30) if((wGrabStatus[chan] && wY[chan] > 0 && wd[chan]->ir.y < wY[chan] - 30)
|| (gGrabStatus[chan] && gY[chan] > 0 && stickPointer_y[chan] < gY[chan])) || (gGrabStatus[chan] && gY[chan] > 0 && stickPointer_y[chan] < gY[chan]))
m_cf.up(); CoverFlow.up();
if((wGrabStatus[chan] && wY[chan] > 0 && wd[chan]->ir.y > wY[chan] + 30) if((wGrabStatus[chan] && wY[chan] > 0 && wd[chan]->ir.y > wY[chan] + 30)
|| (gGrabStatus[chan] && gY[chan] > 0 && stickPointer_y[chan] > gY[chan])) || (gGrabStatus[chan] && gY[chan] > 0 && stickPointer_y[chan] > gY[chan]))
m_cf.down(); CoverFlow.down();
if(wGrabStatus[chan]) if(wGrabStatus[chan])
{ {
wX[chan] = wd[chan]->ir.x; wX[chan] = wd[chan]->ir.x;

View File

@ -181,9 +181,9 @@ void CMenu::_showMain(void)
void CMenu::LoadView(void) void CMenu::LoadView(void)
{ {
m_curGameId = m_cf.getId(); m_curGameId = CoverFlow.getId();
_hideMain(true); _hideMain(true);
m_cf.clear(); CoverFlow.clear();
if(!m_vid.showingWaitMessage()) if(!m_vid.showingWaitMessage())
_showWaitMessage(); _showWaitMessage();
m_favorites = false; m_favorites = false;
@ -193,7 +193,7 @@ void CMenu::LoadView(void)
_showMain(); _showMain();
_initCF(); _initCF();
_loadCFLayout(m_cfg.getInt(_domainFromView(), "last_cf_mode", 1)); _loadCFLayout(m_cfg.getInt(_domainFromView(), "last_cf_mode", 1));
m_cf.applySettings(); CoverFlow.applySettings();
char *mode = (m_current_view == COVERFLOW_CHANNEL && m_cfg.getBool(CHANNEL_DOMAIN, "disable", true)) char *mode = (m_current_view == COVERFLOW_CHANNEL && m_cfg.getBool(CHANNEL_DOMAIN, "disable", true))
? (char *)CHANNEL_DOMAIN : (char *)DeviceName[currentPartition]; ? (char *)CHANNEL_DOMAIN : (char *)DeviceName[currentPartition];
@ -325,9 +325,9 @@ int CMenu::main(void)
else if(BTN_A_PRESSED) else if(BTN_A_PRESSED)
{ {
if(m_btnMgr.selected(m_mainBtnPrev)) if(m_btnMgr.selected(m_mainBtnPrev))
m_cf.pageUp(); CoverFlow.pageUp();
else if(m_btnMgr.selected(m_mainBtnNext)) else if(m_btnMgr.selected(m_mainBtnNext))
m_cf.pageDown(); CoverFlow.pageDown();
else if(m_btnMgr.selected(m_mainBtnQuit)) else if(m_btnMgr.selected(m_mainBtnQuit))
{ {
_hideMain(); _hideMain();
@ -405,7 +405,7 @@ int CMenu::main(void)
{ {
/* Cleanup for Disc Booter */ /* Cleanup for Disc Booter */
_hideMain(true); _hideMain(true);
m_cf.clear(); CoverFlow.clear();
_showWaitMessage(); _showWaitMessage();
m_gameSound.Stop(); m_gameSound.Stop();
CheckGameSoundThread(); CheckGameSoundThread();
@ -424,10 +424,10 @@ int CMenu::main(void)
{ {
m_favorites = !m_favorites; m_favorites = !m_favorites;
m_cfg.setBool(_domainFromView(), "favorites", m_favorites); m_cfg.setBool(_domainFromView(), "favorites", m_favorites);
m_curGameId = m_cf.getId(); m_curGameId = CoverFlow.getId();
_initCF(); _initCF();
} }
else if(!m_cf.empty() && m_cf.select()) else if(!CoverFlow.empty() && CoverFlow.select())
{ {
_hideMain(); _hideMain();
_game(BTN_B_HELD); _game(BTN_B_HELD);
@ -435,7 +435,7 @@ int CMenu::main(void)
break; break;
if(BTN_B_HELD) if(BTN_B_HELD)
bUsed = true; bUsed = true;
m_cf.cancel(); CoverFlow.cancel();
_showMain(); _showMain();
} }
} }
@ -482,11 +482,11 @@ int CMenu::main(void)
int sorting = m_cfg.getInt(domain, "sort", SORT_ALPHA); int sorting = m_cfg.getInt(domain, "sort", SORT_ALPHA);
if (sorting != SORT_ALPHA && sorting != SORT_PLAYERS && sorting != SORT_WIFIPLAYERS && sorting != SORT_GAMEID) if (sorting != SORT_ALPHA && sorting != SORT_PLAYERS && sorting != SORT_WIFIPLAYERS && sorting != SORT_GAMEID)
{ {
m_cf.setSorting((Sorting)SORT_ALPHA); CoverFlow.setSorting((Sorting)SORT_ALPHA);
m_cfg.setInt(domain, "sort", SORT_ALPHA); m_cfg.setInt(domain, "sort", SORT_ALPHA);
} }
wchar_t c[2] = {0, 0}; wchar_t c[2] = {0, 0};
m_btnMgr.selected(m_mainBtnPrev) ? m_cf.prevLetter(c) : m_cf.nextLetter(c); m_btnMgr.selected(m_mainBtnPrev) ? CoverFlow.prevLetter(c) : CoverFlow.nextLetter(c);
m_showtimer = 60; m_showtimer = 60;
curLetter.clear(); curLetter.clear();
curLetter = wstringEx(c); curLetter = wstringEx(c);
@ -506,24 +506,24 @@ int CMenu::main(void)
} }
else if(WROLL_LEFT) else if(WROLL_LEFT)
{ {
m_cf.left(); CoverFlow.left();
bUsed = true; bUsed = true;
} }
else if(WROLL_RIGHT) else if(WROLL_RIGHT)
{ {
m_cf.right(); CoverFlow.right();
bUsed = true; bUsed = true;
} }
if(!BTN_B_HELD) if(!BTN_B_HELD)
{ {
if(BTN_UP_REPEAT || RIGHT_STICK_UP) if(BTN_UP_REPEAT || RIGHT_STICK_UP)
m_cf.up(); CoverFlow.up();
else if(BTN_RIGHT_REPEAT || RIGHT_STICK_RIGHT) else if(BTN_RIGHT_REPEAT || RIGHT_STICK_RIGHT)
m_cf.right(); CoverFlow.right();
else if(BTN_DOWN_REPEAT || RIGHT_STICK_DOWN) else if(BTN_DOWN_REPEAT || RIGHT_STICK_DOWN)
m_cf.down(); CoverFlow.down();
else if(BTN_LEFT_REPEAT || RIGHT_STICK_LEFT) else if(BTN_LEFT_REPEAT || RIGHT_STICK_LEFT)
m_cf.left(); CoverFlow.left();
else if(BTN_1_PRESSED || BTN_2_PRESSED) else if(BTN_1_PRESSED || BTN_2_PRESSED)
{ {
if (!m_btnMgr.selected(m_mainBtnQuit)) if (!m_btnMgr.selected(m_mainBtnQuit))
@ -532,7 +532,7 @@ int CMenu::main(void)
s8 direction = BTN_1_PRESSED ? 1 : -1; s8 direction = BTN_1_PRESSED ? 1 : -1;
int cfVersion = 1+loopNum((m_cfg.getInt(domain, "last_cf_mode", 1)-1) + direction, m_numCFVersions); int cfVersion = 1+loopNum((m_cfg.getInt(domain, "last_cf_mode", 1)-1) + direction, m_numCFVersions);
_loadCFLayout(cfVersion); _loadCFLayout(cfVersion);
m_cf.applySettings(); CoverFlow.applySettings();
m_cfg.setInt(domain, "last_cf_mode", cfVersion); m_cfg.setInt(domain, "last_cf_mode", cfVersion);
} }
} }
@ -541,14 +541,14 @@ int CMenu::main(void)
if(b_lr_mode) if(b_lr_mode)
MusicPlayer.Previous(); MusicPlayer.Previous();
else else
m_cf.pageUp(); CoverFlow.pageUp();
} }
else if(BTN_PLUS_PRESSED) else if(BTN_PLUS_PRESSED)
{ {
if(b_lr_mode) if(b_lr_mode)
MusicPlayer.Next(); MusicPlayer.Next();
else else
m_cf.pageDown(); CoverFlow.pageDown();
} }
} }
else else
@ -562,11 +562,11 @@ int CMenu::main(void)
int sorting = m_cfg.getInt(domain, "sort", SORT_ALPHA); int sorting = m_cfg.getInt(domain, "sort", SORT_ALPHA);
if(sorting != SORT_ALPHA && sorting != SORT_PLAYERS && sorting != SORT_WIFIPLAYERS && sorting != SORT_GAMEID) if(sorting != SORT_ALPHA && sorting != SORT_PLAYERS && sorting != SORT_WIFIPLAYERS && sorting != SORT_GAMEID)
{ {
m_cf.setSorting((Sorting)SORT_ALPHA); CoverFlow.setSorting((Sorting)SORT_ALPHA);
m_cfg.setInt(domain, "sort", SORT_ALPHA); m_cfg.setInt(domain, "sort", SORT_ALPHA);
} }
wchar_t c[2] = {0, 0}; wchar_t c[2] = {0, 0};
BTN_UP_PRESSED ? m_cf.prevLetter(c) : m_cf.nextLetter(c); BTN_UP_PRESSED ? CoverFlow.prevLetter(c) : CoverFlow.nextLetter(c);
curLetter.clear(); curLetter.clear();
curLetter = wstringEx(c); curLetter = wstringEx(c);
@ -588,7 +588,7 @@ int CMenu::main(void)
{ {
bUsed = true; bUsed = true;
if(b_lr_mode) if(b_lr_mode)
m_cf.pageUp(); CoverFlow.pageUp();
else else
MusicPlayer.Previous(); MusicPlayer.Previous();
} }
@ -596,7 +596,7 @@ int CMenu::main(void)
{ {
bUsed = true; bUsed = true;
if(b_lr_mode) if(b_lr_mode)
m_cf.pageDown(); CoverFlow.pageDown();
else else
MusicPlayer.Next(); MusicPlayer.Next();
} }
@ -605,7 +605,7 @@ int CMenu::main(void)
bUsed = true; bUsed = true;
u32 sort = 0; u32 sort = 0;
sort = loopNum((m_cfg.getInt(domain, "sort", 0)) + 1, SORT_MAX - 1); sort = loopNum((m_cfg.getInt(domain, "sort", 0)) + 1, SORT_MAX - 1);
m_cf.setSorting((Sorting)sort); CoverFlow.setSorting((Sorting)sort);
m_cfg.setInt(domain, "sort", sort); m_cfg.setInt(domain, "sort", sort);
wstringEx curSort ; wstringEx curSort ;
if(sort == SORT_ALPHA) if(sort == SORT_ALPHA)
@ -802,15 +802,15 @@ int CMenu::main(void)
for(int chan = WPAD_MAX_WIIMOTES-1; chan >= 0; chan--) for(int chan = WPAD_MAX_WIIMOTES-1; chan >= 0; chan--)
{ {
if(WPadIR_Valid(chan) || (m_show_pointer[chan] && !WPadIR_Valid(chan))) if(WPadIR_Valid(chan) || (m_show_pointer[chan] && !WPadIR_Valid(chan)))
m_cf.mouse(m_vid, chan, m_cursor[chan].x(), m_cursor[chan].y()); CoverFlow.mouse(chan, m_cursor[chan].x(), m_cursor[chan].y());
else else
m_cf.mouse(m_vid, chan, -1, -1); CoverFlow.mouse(chan, -1, -1);
} }
} }
ScanInput(); ScanInput();
if(m_reload || BTN_B_HELD) if(m_reload || BTN_B_HELD)
{ {
m_cf.clear(); CoverFlow.clear();
_showWaitMessage(); _showWaitMessage();
exitHandler(PRIILOADER_DEF); //Making wiiflow ready to boot something exitHandler(PRIILOADER_DEF); //Making wiiflow ready to boot something
_launchHomebrew(fmt("%s/boot.dol", m_appDir.c_str()), m_homebrewArgs); _launchHomebrew(fmt("%s/boot.dol", m_appDir.c_str()), m_homebrewArgs);
@ -861,7 +861,7 @@ void CMenu::_initMainMenu()
STexture emptyTex; STexture emptyTex;
m_mainBg = _texture("MAIN/BG", "texture", theme.bg, false); m_mainBg = _texture("MAIN/BG", "texture", theme.bg, false);
if (m_theme.loaded() && STexture::TE_OK == bgLQ.fromImageFile(fmt("%s/%s", m_themeDataDir.c_str(), m_theme.getString("MAIN/BG", "texture").c_str()), GX_TF_CMPR, 64, 64)) if(m_theme.loaded() && bgLQ.fromImageFile(fmt("%s/%s", m_themeDataDir.c_str(), m_theme.getString("MAIN/BG", "texture").c_str()), GX_TF_CMPR, 64, 64) == TE_OK)
m_mainBgLQ = bgLQ; m_mainBgLQ = bgLQ;
texQuit.fromPNG(btnquit_png); texQuit.fromPNG(btnquit_png);

View File

@ -103,28 +103,23 @@ void CMenu::_updateSourceBtns(void)
string ImgName; string ImgName;
u8 j = (Source_curPage - 1) * 12; u8 j = (Source_curPage - 1) * 12;
for (u8 i = 0; i < 12; ++i) for(u8 i = 0; i < 12; ++i)
{ {
STexture texConsoleImg; STexture texConsoleImg;
STexture texConsoleImgs; STexture texConsoleImgs;
ImgName = m_source.getString(fmt("BUTTON_%i", i + j),"image", ""); ImgName = m_source.getString(fmt("BUTTON_%i", i + j),"image", "");
if(!STexture::TE_OK == texConsoleImg.fromImageFile(fmt("%s/%s", m_themeDataDir.c_str(), ImgName.c_str()))) if(texConsoleImg.fromImageFile(fmt("%s/%s", m_themeDataDir.c_str(), ImgName.c_str())) != TE_OK)
{
if(!STexture::TE_OK == texConsoleImg.fromImageFile(fmt("%s/%s", m_sourceDir.c_str(), ImgName.c_str())))
{ {
if(texConsoleImg.fromImageFile(fmt("%s/%s", m_sourceDir.c_str(), ImgName.c_str())) != TE_OK)
texConsoleImg.fromPNG(favoriteson_png); texConsoleImg.fromPNG(favoriteson_png);
} }
}
ImgName = m_source.getString(fmt("BUTTON_%i", i + j),"image_s", ""); ImgName = m_source.getString(fmt("BUTTON_%i", i + j),"image_s", "");
if(!STexture::TE_OK == texConsoleImgs.fromImageFile(fmt("%s/%s", m_themeDataDir.c_str(), ImgName.c_str()))) if(texConsoleImgs.fromImageFile(fmt("%s/%s", m_themeDataDir.c_str(), ImgName.c_str())) != TE_OK)
{
if(!STexture::TE_OK == texConsoleImgs.fromImageFile(fmt("%s/%s", m_sourceDir.c_str(), ImgName.c_str())))
{ {
if(texConsoleImgs.fromImageFile(fmt("%s/%s", m_sourceDir.c_str(), ImgName.c_str())) != TE_OK)
texConsoleImgs.fromPNG(favoritesons_png); texConsoleImgs.fromPNG(favoritesons_png);
} }
}
m_btnMgr.setBtnTexture(m_sourceBtnSource[i], texConsoleImg, texConsoleImgs); m_btnMgr.setBtnTexture(m_sourceBtnSource[i], texConsoleImg, texConsoleImgs);
string source = m_source.getString(fmt("BUTTON_%i", i + j), "source", ""); string source = m_source.getString(fmt("BUTTON_%i", i + j), "source", "");
@ -426,27 +421,23 @@ void CMenu::_initSourceMenu()
int col; int col;
string ImgName; string ImgName;
for ( int i = 0; i < 12; ++i) for(u8 i = 0; i < 12; ++i)
{ {
STexture texConsoleImg; STexture texConsoleImg;
STexture texConsoleImgs; STexture texConsoleImgs;
ImgName = m_source.getString(fmt("BUTTON_%i", i),"image", ""); ImgName = m_source.getString(fmt("BUTTON_%i", i),"image", "");
if(!STexture::TE_OK == texConsoleImg.fromImageFile(fmt("%s/%s", m_themeDataDir.c_str(), ImgName.c_str()))) if(texConsoleImg.fromImageFile(fmt("%s/%s", m_themeDataDir.c_str(), ImgName.c_str())) != TE_OK)
{
if(!STexture::TE_OK == texConsoleImg.fromImageFile(fmt("%s/%s", m_sourceDir.c_str(), ImgName.c_str())))
{ {
if(texConsoleImg.fromImageFile(fmt("%s/%s", m_sourceDir.c_str(), ImgName.c_str())) != TE_OK)
texConsoleImg.fromPNG(favoriteson_png); texConsoleImg.fromPNG(favoriteson_png);
} }
}
ImgName = m_source.getString(fmt("BUTTON_%i", i),"image_s", ""); ImgName = m_source.getString(fmt("BUTTON_%i", i),"image_s", "");
if(!STexture::TE_OK == texConsoleImgs.fromImageFile(fmt("%s/%s", m_themeDataDir.c_str(), ImgName.c_str()))) if(texConsoleImgs.fromImageFile(fmt("%s/%s", m_themeDataDir.c_str(), ImgName.c_str())) != TE_OK)
{
if(!STexture::TE_OK == texConsoleImgs.fromImageFile(fmt("%s/%s", m_sourceDir.c_str(), ImgName.c_str())))
{ {
if(texConsoleImgs.fromImageFile(fmt("%s/%s", m_sourceDir.c_str(), ImgName.c_str())) != TE_OK)
texConsoleImgs.fromPNG(favoritesons_png); texConsoleImgs.fromPNG(favoritesons_png);
} }
}
row = i / 4; row = i / 4;
col = i - (row * 4); col = i - (row * 4);

View File

@ -227,7 +227,7 @@ int CMenu::_GCcopyGame(void *obj)
{ {
CMenu &m = *(CMenu *)obj; CMenu &m = *(CMenu *)obj;
string GC_Path(m.m_cf.getHdr()->path); string GC_Path(CoverFlow.getHdr()->path);
if(strcasestr(GC_Path.c_str(), "boot.bin") != NULL) if(strcasestr(GC_Path.c_str(), "boot.bin") != NULL)
GC_Path.erase(GC_Path.end() - 13, GC_Path.end()); GC_Path.erase(GC_Path.end() - 13, GC_Path.end());
else else
@ -274,7 +274,7 @@ bool CMenu::_wbfsOp(CMenu::WBFS_OP op)
bool upd_dml = false; bool upd_dml = false;
bool upd_emu = false; bool upd_emu = false;
bool out = false; bool out = false;
string cfPos = m_cf.getNextId(); string cfPos = CoverFlow.getNextId();
SetupInput(); SetupInput();
_showWBFS(op); _showWBFS(op);
@ -284,7 +284,7 @@ bool CMenu::_wbfsOp(CMenu::WBFS_OP op)
m_btnMgr.setText(m_wbfsLblDialog, _t("wbfsadddlg", L"Please insert the disc you want to copy, then click on Go.")); m_btnMgr.setText(m_wbfsLblDialog, _t("wbfsadddlg", L"Please insert the disc you want to copy, then click on Go."));
break; break;
case CMenu::WO_REMOVE_GAME: case CMenu::WO_REMOVE_GAME:
m_btnMgr.setText(m_wbfsLblDialog, wfmt(_fmt("wbfsremdlg", L"To permanently remove the game: %s, click on Go."), (u8*)m_cf.getTitle().toUTF8().c_str())); m_btnMgr.setText(m_wbfsLblDialog, wfmt(_fmt("wbfsremdlg", L"To permanently remove the game: %s, click on Go."), (u8*)CoverFlow.getTitle().toUTF8().c_str()));
break; break;
case CMenu::WO_FORMAT: case CMenu::WO_FORMAT:
break; break;
@ -377,30 +377,30 @@ bool CMenu::_wbfsOp(CMenu::WBFS_OP op)
} }
break; break;
case CMenu::WO_REMOVE_GAME: case CMenu::WO_REMOVE_GAME:
if(m_cf.getHdr()->type == TYPE_GC_GAME) if(CoverFlow.getHdr()->type == TYPE_GC_GAME)
{ {
if(strcasestr(m_cf.getHdr()->path, "boot.bin") != NULL) if(strcasestr(CoverFlow.getHdr()->path, "boot.bin") != NULL)
{ {
string GC_Path(m_cf.getHdr()->path); string GC_Path(CoverFlow.getHdr()->path);
GC_Path.erase(GC_Path.end() - 13, GC_Path.end()); GC_Path.erase(GC_Path.end() - 13, GC_Path.end());
fsop_deleteFolder(GC_Path.c_str()); fsop_deleteFolder(GC_Path.c_str());
} }
else else
fsop_deleteFile(m_cf.getHdr()->path); fsop_deleteFile(CoverFlow.getHdr()->path);
upd_dml = true; upd_dml = true;
} }
else if(m_cf.getHdr()->type == TYPE_PLUGIN) else if(CoverFlow.getHdr()->type == TYPE_PLUGIN)
{ {
fsop_deleteFile(m_cf.getHdr()->path); fsop_deleteFile(CoverFlow.getHdr()->path);
upd_emu = true; upd_emu = true;
} }
else if(m_cf.getHdr()->type == TYPE_WII_GAME) else if(CoverFlow.getHdr()->type == TYPE_WII_GAME)
{ {
WBFS_RemoveGame((u8 *)m_cf.getId().c_str(), m_cf.getHdr()->path); WBFS_RemoveGame((u8 *)CoverFlow.getId().c_str(), CoverFlow.getHdr()->path);
upd_usb = true; upd_usb = true;
} }
if(m_cfg.getBool("GENERAL", "delete_cover_and_game", false)) if(m_cfg.getBool("GENERAL", "delete_cover_and_game", false))
RemoveCover(m_cf.getId().c_str()); RemoveCover(CoverFlow.getId().c_str());
m_btnMgr.show(m_wbfsPBar); m_btnMgr.show(m_wbfsPBar);
m_btnMgr.setProgress(m_wbfsPBar, 0.f, true); m_btnMgr.setProgress(m_wbfsPBar, 0.f, true);
m_btnMgr.setProgress(m_wbfsPBar, 1.f); m_btnMgr.setProgress(m_wbfsPBar, 1.f);
@ -413,7 +413,7 @@ bool CMenu::_wbfsOp(CMenu::WBFS_OP op)
case CMenu::WO_FORMAT: case CMenu::WO_FORMAT:
break; break;
case CMenu::WO_COPY_GAME: case CMenu::WO_COPY_GAME:
string GC_Path(m_cf.getHdr()->path); string GC_Path(CoverFlow.getHdr()->path);
if(strcasestr(GC_Path.c_str(), "boot.bin") != NULL) if(strcasestr(GC_Path.c_str(), "boot.bin") != NULL)
GC_Path.erase(GC_Path.end() - 13, GC_Path.end()); GC_Path.erase(GC_Path.end() - 13, GC_Path.end());
else else
@ -430,8 +430,8 @@ bool CMenu::_wbfsOp(CMenu::WBFS_OP op)
m_btnMgr.hide(m_wbfsBtnBack); m_btnMgr.hide(m_wbfsBtnBack);
m_btnMgr.show(m_wbfsLblMessage); m_btnMgr.show(m_wbfsLblMessage);
m_btnMgr.setText(m_wbfsLblMessage, L""); m_btnMgr.setText(m_wbfsLblMessage, L"");
cfPos = string(m_cf.getHdr()->id); cfPos = string(CoverFlow.getHdr()->id);
m_btnMgr.setText(m_wbfsLblDialog, wfmt(_fmt("wbfsop10", L"Copying [%s] %s..."), m_cf.getHdr()->id, m_cf.getTitle().toUTF8().c_str())); m_btnMgr.setText(m_wbfsLblDialog, wfmt(_fmt("wbfsop10", L"Copying [%s] %s..."), CoverFlow.getHdr()->id, CoverFlow.getTitle().toUTF8().c_str()));
done = true; done = true;
upd_dml = true; upd_dml = true;
m_thrdWorking = true; m_thrdWorking = true;
@ -481,7 +481,7 @@ bool CMenu::_wbfsOp(CMenu::WBFS_OP op)
_loadList(); _loadList();
_initCF(); _initCF();
m_cf.findId(cfPos.c_str(), true); CoverFlow.findId(cfPos.c_str(), true);
} }
else if(done && op == CMenu::WO_COPY_GAME) else if(done && op == CMenu::WO_COPY_GAME)
{ {