* Changed the favorite icon to 5 stars, which can be used as a ranking system. The more stars are selected, the higher the game will show up in the favorites list. Games without stars are not shown in the favorite list.

* Changed credit screen.
This commit is contained in:
e.bovendeur 2009-10-13 10:47:56 +00:00
parent fc8f4c2c7a
commit 62163b6512
7 changed files with 154 additions and 42 deletions

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
<pd><ViewState><e p="gui\source\mload" x="false"></e><e p="gui\source\settings" x="false"></e><e p="gui\source\images" x="false"></e><e p="gui\source\prompts" x="true"></e><e p="gui\source\banner" x="false"></e><e p="gui\source\cheats" x="false"></e><e p="gui\source\network" x="true"></e><e p="gui\source\unzip" x="false"></e><e p="gui\source\usbloader" x="false"></e><e p="gui\source\xml" x="false"></e><e p="gui\source\fonts" x="false"></e><e p="gui\source\ramdisc" x="false"></e><e p="gui\source\sounds" x="false"></e><e p="gui\source\wad" x="false"></e><e p="gui" x="true"></e><e p="gui\source\homebrewboot" x="false"></e><e p="gui\source\language" x="false"></e><e p="gui\source" x="true"></e><e p="gui\source\libwbfs" x="false"></e><e p="gui\source\libwiigui" x="true"></e><e p="gui\source\patches" x="false"></e></ViewState></pd> <pd><ViewState><e p="gui\source\mload" x="false"></e><e p="gui\source\settings" x="false"></e><e p="gui\source\sysmenu" x="false"></e><e p="gui\source\images" x="false"></e><e p="gui\source\prompts" x="false"></e><e p="gui\source\banner" x="false"></e><e p="gui\source\cheats" x="false"></e><e p="gui\source\network" x="false"></e><e p="gui\source\unzip" x="false"></e><e p="gui\source\usbloader" x="false"></e><e p="gui\source\xml" x="false"></e><e p="gui\source\fonts" x="false"></e><e p="gui\source\ramdisc" x="false"></e><e p="gui\source\sounds" x="false"></e><e p="gui\source\wad" x="false"></e><e p="gui" x="true"></e><e p="gui\source\homebrewboot" x="false"></e><e p="gui\source\language" x="false"></e><e p="gui\source" x="true"></e><e p="gui\source\libwbfs" x="false"></e><e p="gui\source\libwiigui" x="false"></e><e p="gui\source\patches" x="false"></e></ViewState></pd>

View File

@ -344,6 +344,9 @@ extern const u32 searchIcon_png_size;
extern const u8 abcIcon_png[]; extern const u8 abcIcon_png[];
extern const u32 abcIcon_png_size; extern const u32 abcIcon_png_size;
extern const u8 rankIcon_png[];
extern const u32 rankIcon_png_size;
extern const u8 playCountIcon_png[]; extern const u8 playCountIcon_png[];
extern const u32 playCountIcon_png_size; extern const u32 playCountIcon_png_size;

BIN
source/images/rankIcon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -417,6 +417,10 @@ int MenuDiscList() {
GuiImageData imgabcIcon(imgPath, abcIcon_png); GuiImageData imgabcIcon(imgPath, abcIcon_png);
snprintf(imgPath, sizeof(imgPath), "%sabcIcon_gray.png", CFG.theme_path); snprintf(imgPath, sizeof(imgPath), "%sabcIcon_gray.png", CFG.theme_path);
GuiImageData imgabcIcon_gray(imgPath, NULL); GuiImageData imgabcIcon_gray(imgPath, NULL);
snprintf(imgPath, sizeof(imgPath), "%srankIcon.png", CFG.theme_path);
GuiImageData imgrankIcon(imgPath, rankIcon_png);
snprintf(imgPath, sizeof(imgPath), "%srankIcon_gray.png", CFG.theme_path);
GuiImageData imgrankIcon_gray(imgPath, NULL);
snprintf(imgPath, sizeof(imgPath), "%splayCountIcon.png", CFG.theme_path); snprintf(imgPath, sizeof(imgPath), "%splayCountIcon.png", CFG.theme_path);
GuiImageData imgplayCountIcon(imgPath, playCountIcon_png); GuiImageData imgplayCountIcon(imgPath, playCountIcon_png);
snprintf(imgPath, sizeof(imgPath), "%splayCountIcon_gray.png", CFG.theme_path); snprintf(imgPath, sizeof(imgPath), "%splayCountIcon_gray.png", CFG.theme_path);
@ -568,14 +572,14 @@ int MenuDiscList() {
GuiButton searchBtn(&searchBtnImg_g,&searchBtnImg_g, ALIGN_LEFT, ALIGN_TOP, THEME.gamelist_search_x, THEME.gamelist_search_y, &trigA, &btnSoundOver, &btnClick,1, &searchBtnTT, -15, 52, 0, 3); GuiButton searchBtn(&searchBtnImg_g,&searchBtnImg_g, ALIGN_LEFT, ALIGN_TOP, THEME.gamelist_search_x, THEME.gamelist_search_y, &trigA, &btnSoundOver, &btnClick,1, &searchBtnTT, -15, 52, 0, 3);
searchBtn.SetAlpha(180); searchBtn.SetAlpha(180);
GuiTooltip abcBtnTT(tr("Sort alphabetically")); GuiTooltip abcBtnTT(Settings.fave ? tr("Sort by rank") : tr("Sort alphabetically"));
if (Settings.wsprompt == yes) if (Settings.wsprompt == yes)
abcBtnTT.SetWidescreen(CFG.widescreen); abcBtnTT.SetWidescreen(CFG.widescreen);
abcBtnTT.SetAlpha(THEME.tooltipAlpha); abcBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage abcBtnImg(&imgabcIcon); GuiImage abcBtnImg(Settings.fave ? &imgrankIcon : &imgabcIcon);
abcBtnImg.SetWidescreen(CFG.widescreen); abcBtnImg.SetWidescreen(CFG.widescreen);
// GuiImage abcBtnImg_g(abcBtnImg); abcBtnImg_g.SetGrayscale(); // GuiImage abcBtnImg_g(abcBtnImg); abcBtnImg_g.SetGrayscale();
GuiImage abcBtnImg_g(&imgabcIcon_gray); GuiImage abcBtnImg_g(Settings.fave ? &imgrankIcon_gray : &imgabcIcon_gray);
if(abcBtnImg_g.GetImage() == NULL) { abcBtnImg_g = abcBtnImg; abcBtnImg_g.SetGrayscale();} if(abcBtnImg_g.GetImage() == NULL) { abcBtnImg_g = abcBtnImg; abcBtnImg_g.SetGrayscale();}
abcBtnImg_g.SetWidescreen(CFG.widescreen); abcBtnImg_g.SetWidescreen(CFG.widescreen);
GuiButton abcBtn(&abcBtnImg_g,&abcBtnImg_g, ALIGN_LEFT, ALIGN_TOP, THEME.gamelist_abc_x, THEME.gamelist_abc_y, &trigA, &btnSoundOver, &btnClick,1,&abcBtnTT, -15, 52, 0, 3); GuiButton abcBtn(&abcBtnImg_g,&abcBtnImg_g, ALIGN_LEFT, ALIGN_TOP, THEME.gamelist_abc_x, THEME.gamelist_abc_y, &trigA, &btnSoundOver, &btnClick,1,&abcBtnTT, -15, 52, 0, 3);

View File

@ -222,28 +222,35 @@ void WindowCredits() {
txt[i]->SetPosition(70,y); txt[i]->SetPosition(70,y);
i++; i++;
txt[i] = new GuiText("dimok / nIxx"); txt[i] = new GuiText("nIxx / giantpune");
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(220,y); txt[i]->SetPosition(220,y);
i++; i++;
y+=24; y+=22;
txt[i] = new GuiText("giantpune / ardi"); txt[i] = new GuiText("ardi / lustar");
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(220,y); txt[i]->SetPosition(220,y);
i++; i++;
y+=24; y+=22;
txt[i] = new GuiText("r-win");
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(220,y);
i++;
y+=22;
char text[100]; char text[100];
sprintf(text, "hungyip84 / DrayX7 %s", tr("(both retired)")); sprintf(text, "hungyip84 / DrayX7 %s", tr("(retired)"));
txt[i] = new GuiText(text); txt[i] = new GuiText(text);
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(220,y); txt[i]->SetPosition(220,y);
i++; i++;
y+=24; y+=22;
txt[i] = new GuiText("lustar"); sprintf(text, "dimok %s", tr("(retired)"));
txt[i] = new GuiText(text);
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(220,y); txt[i]->SetPosition(220,y);
i++; i++;
@ -276,20 +283,20 @@ void WindowCredits() {
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(220,y); txt[i]->SetPosition(220,y);
i++; i++;
y+=24; y+=22;
sprintf(text, "CorneliousJD %s", tr("for hosting the update files")); sprintf(text, "CorneliousJD %s", tr("for hosting the update files"));
txt[i] = new GuiText(text); txt[i] = new GuiText(text);
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(220,y); txt[i]->SetPosition(220,y);
i++; i++;
y+=30; y+=22;
txt[i] = new GuiText(tr("Special thanks to:")); txt[i] = new GuiText(tr("Special thanks to:"));
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
txt[i]->SetPosition(70,y); txt[i]->SetPosition(70,y);
i++; i++;
y+=24; y+=22;
sprintf(text, "Waninkoko, Kwiirk & Hermes %s", tr("for the USB Loader source")); sprintf(text, "Waninkoko, Kwiirk & Hermes %s", tr("for the USB Loader source"));
txt[i] = new GuiText(text); txt[i] = new GuiText(text);
@ -980,6 +987,41 @@ WindowExitPrompt(const char *title, const char *msg, const char *btn1Label,
return choice; return choice;
} }
void SetupFavoriteButton(GuiButton *btnFavorite, int xPos, GuiImage *img, GuiSound *sndOver, GuiSound *sndClick, GuiTrigger *trig)
{
btnFavorite->SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
btnFavorite->SetPosition(xPos, -60);
btnFavorite->SetImage(img);
btnFavorite->SetSoundOver(sndOver);
btnFavorite->SetSoundClick(sndClick);
btnFavorite->SetTrigger(trig);
btnFavorite->SetEffectGrow();
}
u8 SetFavorite(GuiButton *fav1, GuiButton *fav2, GuiButton *fav3, GuiButton *fav4, GuiButton *fav5, u8* gameId, u8 favorite)
{
struct Game_NUM * game_num = CFG_get_game_num(gameId);
if (game_num) {
favoritevar = game_num->favorite;
playcount = game_num->count;
} else {
favoritevar = 0;
playcount = 0;
}
favoritevar = (favorite == favoritevar) ? 0 : favorite; // Press the current rank to reset the rank
CFG_save_game_num(gameId);
return favoritevar;
}
void SetFavoriteImages(GuiImage *b1, GuiImage *b2, GuiImage *b3, GuiImage *b4, GuiImage *b5, GuiImageData *on, GuiImageData *off)
{
b1->SetImage(favoritevar >= 1 ? on : off);
b2->SetImage(favoritevar >= 2 ? on : off);
b3->SetImage(favoritevar >= 3 ? on : off);
b4->SetImage(favoritevar >= 4 ? on : off);
b5->SetImage(favoritevar >= 5 ? on : off);
}
/**************************************************************************** /****************************************************************************
* GameWindowPrompt * GameWindowPrompt
* *
@ -1111,17 +1153,29 @@ int GameWindowPrompt() {
GuiButton btn3(&btn3Img,&btn3Img, 0, 4, 50, -40, &trigA, &btnSoundOver, &btnClick,1); GuiButton btn3(&btn3Img,&btn3Img, 0, 4, 50, -40, &trigA, &btnSoundOver, &btnClick,1);
btn3.SetLabel(&btn3Txt); btn3.SetLabel(&btn3Txt);
GuiImage btnFavoriteImg; GuiImage btnFavoriteImg1;
btnFavoriteImg.SetWidescreen(CFG.widescreen); btnFavoriteImg1.SetWidescreen(CFG.widescreen);
GuiImage btnFavoriteImg2;
btnFavoriteImg2.SetWidescreen(CFG.widescreen);
GuiImage btnFavoriteImg3;
btnFavoriteImg3.SetWidescreen(CFG.widescreen);
GuiImage btnFavoriteImg4;
btnFavoriteImg4.SetWidescreen(CFG.widescreen);
GuiImage btnFavoriteImg5;
btnFavoriteImg5.SetWidescreen(CFG.widescreen);
//GuiButton btnFavorite(&btnFavoriteImg,&btnFavoriteImg, 2, 5, -125, -60, &trigA, &btnSoundOver, &btnClick,1); //GuiButton btnFavorite(&btnFavoriteImg,&btnFavoriteImg, 2, 5, -125, -60, &trigA, &btnSoundOver, &btnClick,1);
GuiButton btnFavorite(imgFavorite.GetWidth(), imgFavorite.GetHeight()); GuiButton btnFavorite1(imgFavorite.GetWidth(), imgFavorite.GetHeight());
btnFavorite.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE); GuiButton btnFavorite2(imgFavorite.GetWidth(), imgFavorite.GetHeight());
btnFavorite.SetPosition(-125, -60); GuiButton btnFavorite3(imgFavorite.GetWidth(), imgFavorite.GetHeight());
btnFavorite.SetImage(&btnFavoriteImg); GuiButton btnFavorite4(imgFavorite.GetWidth(), imgFavorite.GetHeight());
btnFavorite.SetSoundOver(&btnSoundOver); GuiButton btnFavorite5(imgFavorite.GetWidth(), imgFavorite.GetHeight());
btnFavorite.SetSoundClick(&btnClick);
btnFavorite.SetTrigger(&trigA); SetupFavoriteButton(&btnFavorite1, -198, &btnFavoriteImg1, &btnSoundOver, &btnClick, &trigA);
btnFavorite.SetEffectGrow(); SetupFavoriteButton(&btnFavorite2, -171, &btnFavoriteImg2, &btnSoundOver, &btnClick, &trigA);
SetupFavoriteButton(&btnFavorite3, -144, &btnFavoriteImg3, &btnSoundOver, &btnClick, &trigA);
SetupFavoriteButton(&btnFavorite4, -117, &btnFavoriteImg4, &btnSoundOver, &btnClick, &trigA);
SetupFavoriteButton(&btnFavorite5, -90, &btnFavoriteImg5, &btnSoundOver, &btnClick, &trigA);
GuiImage btnLeftImg(&imgLeft); GuiImage btnLeftImg(&imgLeft);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
@ -1148,7 +1202,11 @@ int GameWindowPrompt() {
promptWindow.Append(&sizeTxt); promptWindow.Append(&sizeTxt);
promptWindow.Append(&btnLeft); promptWindow.Append(&btnLeft);
promptWindow.Append(&btnRight); promptWindow.Append(&btnRight);
promptWindow.Append(&btnFavorite); promptWindow.Append(&btnFavorite1);
promptWindow.Append(&btnFavorite2);
promptWindow.Append(&btnFavorite3);
promptWindow.Append(&btnFavorite4);
promptWindow.Append(&btnFavorite5);
} }
//check if unlocked //check if unlocked
@ -1277,7 +1335,7 @@ int GameWindowPrompt() {
favoritevar = 0; favoritevar = 0;
} }
playcntTxt.SetTextf("%s: %i",tr("Play Count"), playcount); playcntTxt.SetTextf("%s: %i",tr("Play Count"), playcount);
btnFavoriteImg.SetImage(favoritevar ? &imgFavorite : &imgNotFavorite); SetFavoriteImages(&btnFavoriteImg1, &btnFavoriteImg2, &btnFavoriteImg3, &btnFavoriteImg4, &btnFavoriteImg5, &imgFavorite, &imgNotFavorite);
nameTxt.SetPosition(0, 1); nameTxt.SetPosition(0, 1);
@ -1340,25 +1398,46 @@ int GameWindowPrompt() {
choice = 3; choice = 3;
promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50); promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
} }
else if (btnFavorite1.GetState() == STATE_CLICKED) {//switch favorite
else if (btnFavorite.GetState() == STATE_CLICKED) {//switch favorite
//if(isSdInserted()) { //if(isSdInserted()) {
if (isInserted(bootDevice)) { if (isInserted(bootDevice)) {
struct Game_NUM * game_num = CFG_get_game_num(header->id); SetFavorite(&btnFavorite1, &btnFavorite2, &btnFavorite3, &btnFavorite4, &btnFavorite5, header->id, 1);
if (game_num) { SetFavoriteImages(&btnFavoriteImg1, &btnFavoriteImg2, &btnFavoriteImg3, &btnFavoriteImg4, &btnFavoriteImg5, &imgFavorite, &imgNotFavorite);
playcount = game_num->count;
favoritevar = game_num->favorite;
} else {
playcount = 0;
favoritevar = 0;
}
favoritevar = (favoritevar + 1) % 2;
CFG_save_game_num(header->id);
btnFavoriteImg.SetImage(favoritevar ? &imgFavorite : &imgNotFavorite);
} }
btnFavorite.ResetState(); btnFavorite1.ResetState();
}
else if (btnFavorite2.GetState() == STATE_CLICKED) {//switch favorite
//if(isSdInserted()) {
if (isInserted(bootDevice)) {
SetFavorite(&btnFavorite1, &btnFavorite2, &btnFavorite3, &btnFavorite4, &btnFavorite5, header->id, 2);
SetFavoriteImages(&btnFavoriteImg1, &btnFavoriteImg2, &btnFavoriteImg3, &btnFavoriteImg4, &btnFavoriteImg5, &imgFavorite, &imgNotFavorite);
}
btnFavorite2.ResetState();
}
else if (btnFavorite3.GetState() == STATE_CLICKED) {//switch favorite
//if(isSdInserted()) {
if (isInserted(bootDevice)) {
SetFavorite(&btnFavorite1, &btnFavorite2, &btnFavorite3, &btnFavorite4, &btnFavorite5, header->id, 3);
SetFavoriteImages(&btnFavoriteImg1, &btnFavoriteImg2, &btnFavoriteImg3, &btnFavoriteImg4, &btnFavoriteImg5, &imgFavorite, &imgNotFavorite);
}
btnFavorite3.ResetState();
}
else if (btnFavorite4.GetState() == STATE_CLICKED) {//switch favorite
//if(isSdInserted()) {
if (isInserted(bootDevice)) {
SetFavorite(&btnFavorite1, &btnFavorite2, &btnFavorite3, &btnFavorite4, &btnFavorite5, header->id, 4);
SetFavoriteImages(&btnFavoriteImg1, &btnFavoriteImg2, &btnFavoriteImg3, &btnFavoriteImg4, &btnFavoriteImg5, &imgFavorite, &imgNotFavorite);
}
btnFavorite4.ResetState();
}
else if (btnFavorite5.GetState() == STATE_CLICKED) {//switch favorite
//if(isSdInserted()) {
if (isInserted(bootDevice)) {
SetFavorite(&btnFavorite1, &btnFavorite2, &btnFavorite3, &btnFavorite4, &btnFavorite5, header->id, 5);
SetFavoriteImages(&btnFavoriteImg1, &btnFavoriteImg2, &btnFavoriteImg3, &btnFavoriteImg4, &btnFavoriteImg5, &imgFavorite, &imgNotFavorite);
}
btnFavorite5.ResetState();
} }
// this next part is long because nobody could agree on what the left/right buttons should do // this next part is long because nobody could agree on what the left/right buttons should do
else if ((btnRight.GetState() == STATE_CLICKED) && (Settings.xflip == no)) {//next game else if ((btnRight.GetState() == STATE_CLICKED) && (Settings.xflip == no)) {//next game
promptWindow.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 50); promptWindow.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_OUT, 50);

View File

@ -96,6 +96,28 @@ s32 __Menu_EntryCmpCount(const void *a, const void *b) {
return ret; return ret;
} }
s32 __Menu_EntryCmpFavorite(const void *a, const void *b) {
s32 ret;
struct discHdr *hdr1 = (struct discHdr *)a;
struct discHdr *hdr2 = (struct discHdr *)b;
/* Compare Favorite (rank) */
u16 fav1 = 0;
u16 fav2 = 0;
struct Game_NUM* game_num1 = CFG_get_game_num(hdr1->id);
struct Game_NUM* game_num2 = CFG_get_game_num(hdr2->id);
if (game_num1) fav1 = game_num1->favorite;
if (game_num2) fav2 = game_num2->favorite;
ret = (s32) (fav2-fav1);
if (ret == 0) return stricmp(get_title(hdr1), get_title(hdr2));
return ret;
}
/**************************************************************************** /****************************************************************************
* Get PrevFilter * Get PrevFilter
***************************************************************************/ ***************************************************************************/
@ -396,6 +418,8 @@ int buildTitleList(int t, wchar_t* gameFilter, discHdr ** PgameList, u32 *PgameC
if (Settings.sort==pcount) { if (Settings.sort==pcount) {
qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmpCount); qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmpCount);
} else if (Settings.fave) {
qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmpFavorite);
} else { } else {
qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmp); qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmp);
} }
@ -481,6 +505,8 @@ int __Menu_GetGameList(int t, wchar_t* gameFilter, discHdr ** PgameList, u32 *Pg
if (Settings.sort==pcount) { if (Settings.sort==pcount) {
qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmpCount); qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmpCount);
} else if (Settings.fave) {
qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmpFavorite);
} else { } else {
qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmp); qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmp);
} }