*Changed the code for CreditsWindow

*Added ButtonsHold and ButtonsPressed functions
*Some cleanups
This commit is contained in:
dimok321 2009-06-01 13:35:43 +00:00
parent 24d98683b3
commit 976ea2041c
6 changed files with 147 additions and 142 deletions

View File

@ -196,7 +196,7 @@ GuiCustomOptionBrowser::GuiCustomOptionBrowser(int w, int h, customOptionList *
optionValOver[i] = new GuiText(NULL, 20, (GXColor){THEME.settingsTxt_r, THEME.settingsTxt_g, THEME.settingsTxt_b, 0xff});
optionValOver[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
optionBtn[i] = new GuiButton(width,GAMESELECTSIZE);//(width-28,GAMESELECTSIZE);
optionBtn[i] = new GuiButton(width-28,GAMESELECTSIZE);
optionBtn[i]->SetParent(this);
optionBtn[i]->SetLabel(optionTxt[i], 0);
optionBtn[i]->SetLabel(optionVal[i], 1);
@ -491,12 +491,7 @@ void GuiCustomOptionBrowser::Update(GuiTrigger * t)
scrollbarBoxBtn->Draw();
usleep(10000 * scrolldelay);
}
WPAD_ScanPads();
u8 cnt, buttons = NULL;
/* Get pressed buttons */
for (cnt = 0; cnt < 4; cnt++)
buttons |= WPAD_ButtonsHeld(cnt);
if (buttons == WPAD_BUTTON_A)
if (ButtonsHold() == WPAD_BUTTON_A)
{
}
else
@ -528,12 +523,7 @@ void GuiCustomOptionBrowser::Update(GuiTrigger * t)
}
WPAD_ScanPads();
u8 cnt, buttons = NULL;
/* Get pressed buttons */
for (cnt = 0; cnt < 4; cnt++)
buttons |= WPAD_ButtonsHeld(cnt);
if (buttons == WPAD_BUTTON_A)
if (ButtonsHold() == WPAD_BUTTON_A)
{
}
else

View File

@ -411,12 +411,7 @@ void GuiGameBrowser::Update(GuiTrigger * t)
scrollbarBoxBtn->Draw();
usleep(10000 * scrolldelay);
}
WPAD_ScanPads();
u8 cnt, buttons = NULL;
/* Get pressed buttons */
for (cnt = 0; cnt < 4; cnt++)
buttons |= WPAD_ButtonsHeld(cnt);
if (buttons == WPAD_BUTTON_A)
if (ButtonsHold() == WPAD_BUTTON_A)
{
}
else
@ -446,12 +441,7 @@ void GuiGameBrowser::Update(GuiTrigger * t)
scrollbarBoxBtn->Draw();
usleep(10000 * scrolldelay);
}
WPAD_ScanPads();
u8 cnt, buttons = NULL;
/* Get pressed buttons */
for (cnt = 0; cnt < 4; cnt++)
buttons |= WPAD_ButtonsHeld(cnt);
if (buttons == WPAD_BUTTON_A)
if (ButtonsHold() == WPAD_BUTTON_A)
{
}
else
@ -459,8 +449,6 @@ void GuiGameBrowser::Update(GuiTrigger * t)
arrowUpBtn->ResetState();
}
}
WPAD_ScanPads();
u8 cnt, buttons = NULL;/////////////////////////////////////////////////////scroll by holding B and tilt wiimote
int position1 = 0;
@ -471,10 +459,7 @@ void GuiGameBrowser::Update(GuiTrigger * t)
position2 = position1;
}
for (cnt = 0; cnt < 4; cnt++)
buttons |= WPAD_ButtonsHeld(cnt);
if (buttons == WPAD_BUTTON_B && position1 > 0)
if (ButtonsHold() == WPAD_BUTTON_B && position1 > 0)
{
scrollbarBoxBtn->ScrollIsOn(1);
if (position2 > position1)
@ -524,7 +509,7 @@ void GuiGameBrowser::Update(GuiTrigger * t)
}
}
else if (!buttons)
else if(ButtonsHold() != WPAD_BUTTON_B)
{
scrollbarBoxBtn->ScrollIsOn(0);
position2 = 0;

View File

@ -345,11 +345,9 @@ void GuiGameCarousel::Update(GuiTrigger * t)
if(!focus || gameCnt <= pagesize || (game[bob[0]]->GetEffect() && game[bob[pagesize-1]]->GetEffect()))
return; // skip navigation
if (t->Left() || btnLeft->GetState() == STATE_CLICKED) {
WPAD_ScanPads();
u16 buttons = 0;
for(int i=0; i<4; i++)
buttons |= WPAD_ButtonsHeld(i);
if (t->Left() || btnLeft->GetState() == STATE_CLICKED) {
u16 buttons = ButtonsHold();
if(!((buttons & WPAD_BUTTON_A) || (buttons & WPAD_BUTTON_MINUS) || t->Left())) {
btnLeft->ResetState();
speed = SHIFT_SPEED;
@ -380,10 +378,8 @@ void GuiGameCarousel::Update(GuiTrigger * t)
}
else if(t->Right() || btnRight->GetState() == STATE_CLICKED) {
WPAD_ScanPads();
u16 buttons = 0;
for(int i=0; i<4; i++)
buttons |= WPAD_ButtonsHeld(i);
u16 buttons = ButtonsHold();
if(!((buttons & WPAD_BUTTON_A) || (buttons & WPAD_BUTTON_PLUS) || t->Right())) {
btnRight->ResetState();
speed=SHIFT_SPEED;

View File

@ -50,20 +50,17 @@ extern FreeTypeGX *fontClock; //CLOCK
static GuiImage * coverImg = NULL;
static GuiImageData * cover = NULL;
//char GamesHDD[320][14];
static struct discHdr *gameList = NULL;
static GuiImageData * pointer[4];
static GuiImage * bgImg = NULL;
static GuiButton * btnLogo = NULL;
static GuiImageData * background = NULL;
static GuiText prTxt(NULL, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
static GuiText timeTxt(NULL, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
static GuiText sizeTxt(NULL, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
static GuiText *GameIDTxt = NULL;
static GuiText *GameRegionTxt = NULL;
static GuiText * GameIDTxt = NULL;
static GuiText * GameRegionTxt = NULL;
static GuiSound * bgMusic = NULL;
static wbfs_t *hdd = NULL;
static wbfs_t * hdd = NULL;
static u32 gameCnt = 0;
static s32 gameSelected = 0, gameStart = 0;
static GuiWindow * mainWindow = NULL;
@ -168,14 +165,11 @@ HaltGui()
* WindowCredits
* Display credits
***************************************************************************/
static void WindowCredits(void * ptr)
void WindowCredits()
{
int angle = 0;
GuiSound * creditsMusic = NULL;
if(btnLogo->GetState() != STATE_CLICKED) {
return;
}
s32 thetimeofbg = bgMusic->GetPlayTime();
StopOgg();
@ -184,8 +178,6 @@ static void WindowCredits(void * ptr)
creditsMusic->SetLoop(1);
creditsMusic->Play();
btnLogo->ResetState();
bool exit = false;
int i = 0;
int y = 20;
@ -330,48 +322,40 @@ static void WindowCredits(void * ptr)
creditsWindow.Append(&creditsWindowBox);
creditsWindow.Append(&starImg);
creditsWindow.SetEffect(EFFECT_FADE, 30);
HaltGui();
mainWindow->SetState(STATE_DISABLED);
mainWindow->Append(&creditsWindow);
ResumeGui();
while(!exit)
{
creditsWindow.Draw();
angle ++;
angle = int(angle) % 360;
usleep(12000);
angle++;
if(angle > 360)
angle = 0;
usleep(12000);
starImg.SetAngle(angle);
if(ButtonsPressed() != 0)
exit = true;
for(i=3; i >= 0; i--)
{
#ifdef HW_RVL
if(userInput[i].wpad.ir.valid)
Menu_DrawImg(userInput[i].wpad.ir.x-48, userInput[i].wpad.ir.y-48, 200.0,
96, 96, pointer[i]->GetImage(), userInput[i].wpad.ir.angle, CFG.widescreen? 0.8 : 1, 1, 255);
if(Settings.rumble == RumbleOn){
DoRumble(i);
}
#endif
}
Menu_Render();
for(i=0; i < 4; i++)
{
if(userInput[i].wpad.btns_d || userInput[i].pad.btns_d)
exit = true;
}
}
// clear buttons pressed
for(i=0; i < 4; i++)
{
userInput[i].wpad.btns_d = 0;
userInput[i].pad.btns_d = 0;
}
creditsMusic->Stop();
for(i=0; i < numEntries; i++)
delete txt[i];
delete creditsMusic;
creditsWindow.SetEffect(EFFECT_FADE, -30);
while(creditsWindow.GetEffect() > 0) usleep(50);
HaltGui();
mainWindow->Remove(&creditsWindow);
mainWindow->SetState(STATE_DEFAULT);
for(i=0; i < numEntries; i++) {
delete txt[i];
txt[i] = NULL;
}
ResumeGui();
if(!strcmp("", CFG.oggload_path) || !strcmp("notset", CFG.ogg_path)) {
bgMusic->Play();
} else {
@ -4559,16 +4543,16 @@ static int MenuSettings()
GuiImage logoImg(&logo);
GuiImageData logoOver(credits_button_over_png);
GuiImage logoImgOver(&logoOver);
btnLogo = new GuiButton(logoImg.GetWidth(), logoImg.GetHeight());
btnLogo->SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
btnLogo->SetPosition(0, -35);
btnLogo->SetImage(&logoImg);
btnLogo->SetImageOver(&logoImgOver);
btnLogo->SetEffectGrow();
btnLogo->SetSoundOver(&btnSoundOver);
btnLogo->SetSoundClick(&btnClick);
btnLogo->SetTrigger(&trigA);
btnLogo->SetUpdateCallback(WindowCredits);
GuiButton btnLogo(logoImg.GetWidth(), logoImg.GetHeight());
btnLogo.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
btnLogo.SetPosition(0, -35);
btnLogo.SetImage(&logoImg);
btnLogo.SetImageOver(&logoImgOver);
btnLogo.SetEffectGrow();
btnLogo.SetSoundOver(&btnSoundOver);
btnLogo.SetSoundClick(&btnClick);
btnLogo.SetTrigger(&trigA);
customOptionList options2(9);
GuiCustomOptionBrowser optionBrowser2(396, 280, &options2, CFG.theme_path, "bg_options_settings.png", bg_options_settings_png, 0, 150);
@ -4601,7 +4585,7 @@ static int MenuSettings()
w.Append(&backBtn);
w.Append(&lockBtn);
w.Append(&updateBtn);
w.Append(btnLogo);
w.Append(&btnLogo);
w.Append(&homo);
//set triggers for tabs
page1Btn.RemoveTrigger(1);
@ -5036,7 +5020,7 @@ static int MenuSettings()
w.Append(&backBtn);
w.Append(&lockBtn);
w.Append(&updateBtn);
w.Append(btnLogo);
w.Append(&btnLogo);
mainWindow->Append(&optionBrowser2);
mainWindow->Append(&page1Btn);
@ -5306,7 +5290,7 @@ static int MenuSettings()
mainWindow->Remove(&page2Btn);
mainWindow->Remove(&tabBtn);
mainWindow->Remove(&page3Btn);
w.Remove(btnLogo);
w.Remove(&btnLogo);
w.Remove(&backBtn);
w.Remove(&lockBtn);
w.Remove(&updateBtn);
@ -5322,13 +5306,36 @@ static int MenuSettings()
w.Append(&backBtn);
w.Append(&lockBtn);
w.Append(&updateBtn);
w.Append(btnLogo);
w.Append(&btnLogo);
} else {
WindowPrompt(LANGUAGE.NoSDcardinserted, LANGUAGE.InsertaSDCardtousethatoption, LANGUAGE.ok, 0,0,0);
}
updateBtn.ResetState();
}
if(btnLogo.GetState() == STATE_CLICKED) {
mainWindow->Remove(&optionBrowser2);
mainWindow->Remove(&page1Btn);
mainWindow->Remove(&page2Btn);
mainWindow->Remove(&tabBtn);
mainWindow->Remove(&page3Btn);
w.Remove(&btnLogo);
w.Remove(&backBtn);
w.Remove(&lockBtn);
w.Remove(&updateBtn);
WindowCredits();
mainWindow->Append(&optionBrowser2);
mainWindow->Append(&page1Btn);
mainWindow->Append(&page2Btn);
mainWindow->Append(&tabBtn);
mainWindow->Append(&page3Btn);
w.Append(&backBtn);
w.Append(&lockBtn);
w.Append(&updateBtn);
w.Append(&btnLogo);
btnLogo.ResetState();
}
if(lockBtn.GetState() == STATE_CLICKED)
{
if (!strcmp("", Settings.unlockCode))
@ -5443,8 +5450,6 @@ static int MenuSettings()
}
}
HaltGui();
delete btnLogo;
btnLogo = NULL;
mainWindow->Remove(&optionBrowser2);
mainWindow->Remove(&w);
ResumeGui();
@ -6304,16 +6309,16 @@ int MainMenu(int menu)
delete background;
delete bgImg;
delete mainWindow;
delete pointer[0];
delete pointer[1];
delete pointer[2];
delete pointer[3];
mainWindow = NULL;
delete pointer[0];
delete pointer[1];
delete pointer[2];
delete pointer[3];
delete GameRegionTxt;
delete GameIDTxt;
delete cover;
delete coverImg;
mainWindow = NULL;
ExitApp();
struct discHdr *header = &gameList[gameSelected];
@ -6346,7 +6351,7 @@ int MainMenu(int menu)
break;
case eng:
configbytes[0] = 0x01;
configbytes[0] = 0x01;
break;
case ger:

View File

@ -41,33 +41,61 @@ void Wpad_Disconnect(void)
/* Shutdown Wiimote subsystem */
WPAD_Shutdown();
}
u32 ButtonsHold(void) {
int i;
u32 buttons = 0;
WPAD_ScanPads();
PAD_ScanPads();
for(i=3; i >= 0; i--)
{
buttons |= PAD_ButtonsHeld(i);
buttons |= WPAD_ButtonsHeld(i);
}
return buttons;
}
u32 ButtonsPressed(void) {
int i;
u32 buttons = 0;
WPAD_ScanPads();
PAD_ScanPads();
for(i=3; i >= 0; i--)
{
buttons |= PAD_ButtonsDown(i);
buttons |= WPAD_ButtonsDown(i);
}
return buttons;
/* Don't remove this commented out code it might be useful for checking which buttons were pressed/hold
if(buttons & (PAD_BUTTON_LEFT | PAD_BUTTON_RIGHT | PAD_BUTTON_DOWN | PAD_BUTTON_UP
| PAD_BUTTON_A | PAD_BUTTON_B | PAD_BUTTON_X | PAD_BUTTON_Y | PAD_BUTTON_MENU
| PAD_BUTTON_START | WPAD_BUTTON_2 | WPAD_BUTTON_1
| WPAD_BUTTON_B | WPAD_BUTTON_A | WPAD_BUTTON_MINUS
| WPAD_BUTTON_HOME | WPAD_BUTTON_LEFT | WPAD_BUTTON_RIGHT
| WPAD_BUTTON_DOWN | WPAD_BUTTON_UP | WPAD_BUTTON_PLUS
| WPAD_NUNCHUK_BUTTON_Z | WPAD_NUNCHUK_BUTTON_C
| WPAD_CLASSIC_BUTTON_UP | WPAD_CLASSIC_BUTTON_LEFT
| WPAD_CLASSIC_BUTTON_ZR | WPAD_CLASSIC_BUTTON_X
| WPAD_CLASSIC_BUTTON_A | WPAD_CLASSIC_BUTTON_Y
| WPAD_CLASSIC_BUTTON_B | WPAD_CLASSIC_BUTTON_ZL
| WPAD_CLASSIC_BUTTON_FULL_R | WPAD_CLASSIC_BUTTON_PLUS
| WPAD_CLASSIC_BUTTON_HOME | WPAD_CLASSIC_BUTTON_MINUS
| WPAD_CLASSIC_BUTTON_FULL_L | WPAD_CLASSIC_BUTTON_DOWN
| WPAD_CLASSIC_BUTTON_RIGHT | WPAD_GUITAR_HERO_3_BUTTON_STRUM_UP
| WPAD_GUITAR_HERO_3_BUTTON_YELLOW | WPAD_GUITAR_HERO_3_BUTTON_GREEN
| WPAD_GUITAR_HERO_3_BUTTON_BLUE | WPAD_GUITAR_HERO_3_BUTTON_RED
| WPAD_GUITAR_HERO_3_BUTTON_ORANGE | WPAD_GUITAR_HERO_3_BUTTON_PLUS
| WPAD_GUITAR_HERO_3_BUTTON_MINUS | WPAD_GUITAR_HERO_3_BUTTON_STRUM_DOWN)
)
*/
}
u32 Wpad_GetButtons(void)
{
u32 buttons = 0, cnt;
/* Scan pads */
WPAD_ScanPads();
/* Get pressed buttons */
for (cnt = 0; cnt < MAX_WIIMOTES; cnt++)
buttons |= WPAD_ButtonsDown(cnt);
return buttons;
}
u32 Wpad_WaitButtons(void)
{
u32 buttons = 0;
/* Wait for button pressing */
while (!buttons) {
buttons = Wpad_GetButtons();
VIDEO_WaitVSync();
}
return buttons;
}

View File

@ -1,7 +1,8 @@
#ifndef _WPAD_H_
#define _WPAD_H_
#include <wiiuse/wpad.h>
#include <wiiuse/wpad.h>
#include <ogc/pad.h>
#ifdef __cplusplus
extern "C"
@ -10,9 +11,9 @@ extern "C"
/* Prototypes */
s32 Wpad_Init(void);
void Wpad_Disconnect(void);
u32 Wpad_GetButtons(void);
u32 Wpad_WaitButtons(void);
void Wpad_Disconnect(void);
u32 ButtonsPressed(void);
u32 ButtonsHold(void);
#ifdef __cplusplus
}