mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-12-18 16:01:58 +01:00
* add a nice effect for the GamePromt. To aktivate set in Setup: Flip-X=DiskFlip
* remove the Disk-Shadow from dialogue_box_startgame.png (themers will scream). The Shadow now drawing from Loader * little changes for Widescreen-prompt-fix
This commit is contained in:
parent
b98baef239
commit
52fbd15569
@ -266,6 +266,7 @@ enum {
|
||||
yes,
|
||||
sysmenu,
|
||||
wtf,
|
||||
disk3d,
|
||||
};
|
||||
enum {
|
||||
us,
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 23 KiB |
Binary file not shown.
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 17 KiB |
@ -560,11 +560,13 @@ class GuiImage : public GuiElement
|
||||
//!Sets the image rotation angle for drawing
|
||||
//!\param a Angle (in degrees)
|
||||
void SetAngle(float a);
|
||||
//!Gets the image rotation angle for drawing
|
||||
float GetAngle();
|
||||
//!Sets the number of times to draw the image horizontally
|
||||
//!\param t Number of times to draw the image
|
||||
void SetTile(int t);
|
||||
// not NULL set horizontal scale to 0.75 //added
|
||||
void SetWidescreen(short w);
|
||||
// true set horizontal scale to 0.8 //added
|
||||
void SetWidescreen(bool w);
|
||||
//!Constantly called to draw the image
|
||||
void Draw();
|
||||
//!Gets the image data
|
||||
@ -595,6 +597,7 @@ class GuiImage : public GuiElement
|
||||
//!Does not alter the image data
|
||||
//!\param s Alpha amount to draw over the image
|
||||
void SetStripe(int s);
|
||||
s32 z;
|
||||
protected:
|
||||
int imgType; //!< Type of image data (IMAGE_TEXTURE, IMAGE_COLOR, IMAGE_DATA)
|
||||
u8 * image; //!< Poiner to image data. May be shared with GuiImageData data
|
||||
@ -654,7 +657,7 @@ class GuiText : public GuiElement
|
||||
//!Get the Horizontal Size of Text
|
||||
int GetTextWidth();
|
||||
// not NULL set horizontal scale to 0.75 //added
|
||||
void SetWidescreen(short w);
|
||||
void SetWidescreen(bool w);
|
||||
//!Constantly called to draw the text
|
||||
void Draw();
|
||||
protected:
|
||||
@ -684,7 +687,7 @@ class GuiTooltip : public GuiElement
|
||||
//!Sets the text of the GuiTooltip element
|
||||
//!\param t Text
|
||||
void SetText(const char * t);
|
||||
void SetWidescreen(short w); // timely a dummy
|
||||
void SetWidescreen(bool w); // timely a dummy
|
||||
//!Constantly called to draw the GuiButton
|
||||
void Draw();
|
||||
|
||||
|
78
source/libwiigui/gui_diskcover.cpp
Normal file
78
source/libwiigui/gui_diskcover.cpp
Normal file
@ -0,0 +1,78 @@
|
||||
#include "gui_diskcover.h"
|
||||
|
||||
|
||||
GuiDiskCover::GuiDiskCover()
|
||||
{
|
||||
deg_beta=0.0;
|
||||
eff_step=0;
|
||||
// spin_angle = 0;
|
||||
spin_speedup = 1.0;
|
||||
spin_up = false;
|
||||
}
|
||||
GuiDiskCover::GuiDiskCover(GuiImageData *Disk) : GuiImage(Disk)
|
||||
{
|
||||
deg_beta=0.0;
|
||||
eff_step=0;
|
||||
// spin_angle = 0;
|
||||
spin_speedup = 1.0;
|
||||
spin_up = false;
|
||||
}
|
||||
GuiDiskCover::~GuiDiskCover()
|
||||
{
|
||||
}
|
||||
|
||||
void GuiDiskCover::SetBeta(f32 beta)
|
||||
{
|
||||
deg_beta=beta;
|
||||
}
|
||||
void GuiDiskCover::SetBetaRotateEffect(f32 beta, u16 step)
|
||||
{
|
||||
eff_beta = beta/(f32)step;
|
||||
eff_step = step;
|
||||
}
|
||||
bool GuiDiskCover::GetBetaRotateEffect()
|
||||
{
|
||||
return eff_step != 0;
|
||||
}
|
||||
|
||||
void GuiDiskCover::SetSpin(bool Up)
|
||||
{
|
||||
spin_up = Up;
|
||||
}
|
||||
|
||||
void Menu_DrawDiskCover(f32 xpos, f32 ypos, f32 zpos, u16 width, u16 height, u16 distance,u8 data[],
|
||||
f32 deg_alpha, f32 deg_beta, f32 scaleX, f32 scaleY, u8 alpha, bool shadow);
|
||||
void Menu_DrawDiskCoverShadow(f32 xpos, f32 ypos, f32 zpos, u16 width, u16 height, u16 distance,u8 data[],
|
||||
f32 deg_alpha, f32 deg_beta, f32 scaleX, f32 scaleY, u8 alpha, bool shadow);
|
||||
|
||||
void GuiDiskCover::Draw()
|
||||
{
|
||||
LOCK(this);
|
||||
if(!image || !this->IsVisible())
|
||||
return;
|
||||
float currScale = this->GetScale();
|
||||
// Menu_DrawDiskCoverShadow(this->GetLeft(), this->GetTop(), 190, width, height, 40, image, imageangle, deg_beta, widescreen ? currScale*0.8 : currScale, currScale, this->GetAlpha(), true);
|
||||
Menu_DrawDiskCover(this->GetLeft(), this->GetTop(), 50, width, height, 55, image, imageangle, deg_beta, widescreen ? currScale*0.8 : currScale, currScale, 128, true);
|
||||
Menu_DrawDiskCover(this->GetLeft(), this->GetTop(), 50, width, height, 55, image, imageangle, deg_beta, widescreen ? currScale*0.8 : currScale, currScale, this->GetAlpha(), false);
|
||||
|
||||
if(eff_step)
|
||||
{
|
||||
deg_beta += eff_beta;
|
||||
eff_step--;
|
||||
}
|
||||
GuiImage::imageangle += spin_speedup;
|
||||
while(GuiImage::imageangle >= 360.0) GuiImage::imageangle -= 360.0;
|
||||
|
||||
if(spin_up)
|
||||
{
|
||||
if (spin_speedup < 11) // speed up
|
||||
spin_speedup += 0.20;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (spin_speedup > 1)
|
||||
spin_speedup -=0.05; //slow down
|
||||
}
|
||||
|
||||
this->UpdateEffects();
|
||||
}
|
42
source/libwiigui/gui_diskcover.h
Normal file
42
source/libwiigui/gui_diskcover.h
Normal file
@ -0,0 +1,42 @@
|
||||
#ifndef _GUIDISCCOVER_H_
|
||||
#define _GUIDISCCOVER_H_
|
||||
|
||||
#include "gui.h"
|
||||
|
||||
|
||||
class GuiDiskCover : public GuiImage
|
||||
{
|
||||
public:
|
||||
GuiDiskCover();
|
||||
GuiDiskCover(GuiImageData * img);
|
||||
~GuiDiskCover();
|
||||
void SetBeta(f32 beta);
|
||||
void SetBetaRotateEffect(f32 beta, u16 Step);
|
||||
bool GetBetaRotateEffect();
|
||||
|
||||
void SetSpin(bool Up);
|
||||
void Draw();
|
||||
private:
|
||||
f32 deg_beta;
|
||||
f32 eff_beta;
|
||||
u16 eff_step;
|
||||
|
||||
// f32 spin_angle;
|
||||
f32 spin_speedup;
|
||||
bool spin_up;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif /* _GUIDISCCOVER_H_ */
|
@ -405,6 +405,7 @@ void GuiElement::SetRumble(bool r)
|
||||
|
||||
int GuiElement::GetEffect()
|
||||
{
|
||||
LOCK(this);
|
||||
return effects;
|
||||
}
|
||||
|
||||
|
@ -117,6 +117,10 @@ void GuiImage::SetAngle(float a)
|
||||
LOCK(this);
|
||||
imageangle = a;
|
||||
}
|
||||
float GuiImage::GetAngle()
|
||||
{
|
||||
return imageangle;
|
||||
}
|
||||
|
||||
void GuiImage::SetTile(int t)
|
||||
{
|
||||
@ -124,7 +128,7 @@ void GuiImage::SetTile(int t)
|
||||
tile = t;
|
||||
}
|
||||
|
||||
void GuiImage::SetWidescreen(short w)
|
||||
void GuiImage::SetWidescreen(bool w)
|
||||
{
|
||||
LOCK(this);
|
||||
widescreen = w;
|
||||
@ -233,7 +237,7 @@ void GuiImage::Draw()
|
||||
if(tile > 0)
|
||||
{
|
||||
for(int i=0; i<tile; i++)
|
||||
Menu_DrawImg(currLeft+width*i, this->GetTop(), width, height, image, imageangle, widescreen ? currScale*0.80 : currScale, currScale, this->GetAlpha());
|
||||
Menu_DrawImg(currLeft+width*i, this->GetTop(), 0, width, height, image, imageangle, widescreen ? currScale*0.80 : currScale, currScale, this->GetAlpha());
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -241,7 +245,7 @@ void GuiImage::Draw()
|
||||
if(scale != 1)
|
||||
currLeft = currLeft - width/2 + (width*scale)/2;
|
||||
|
||||
Menu_DrawImg(currLeft, this->GetTop(), width, height, image, imageangle, widescreen ? currScale*0.80 : currScale, currScale, this->GetAlpha());
|
||||
Menu_DrawImg(currLeft, this->GetTop(), 0, width, height, image, imageangle, widescreen ? currScale*0.80 : currScale, currScale, this->GetAlpha());
|
||||
}
|
||||
|
||||
if(stripe > 0)
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include "gui.h"
|
||||
|
||||
static int currentSize = 0;
|
||||
static int currentWidescreen = 0;
|
||||
static int presetSize = 0;
|
||||
static int presetMaxWidth = 0;
|
||||
static int presetAlignmentHor = 0;
|
||||
@ -165,15 +166,21 @@ int GuiText::GetTextWidth()
|
||||
LOCK(this);
|
||||
int newSize = size*this->GetScale();
|
||||
|
||||
if(newSize != currentSize)
|
||||
if(newSize != currentSize || currentWidescreen != widescreen)
|
||||
{
|
||||
//fontSystem->changeSize(newSize);
|
||||
(font ? font : fontSystem)->changeSize(newSize, widescreen ? (newSize*3)>>2 : 0);
|
||||
(font ? font : fontSystem)->changeSize(newSize, widescreen ? newSize*0.8 : 0);
|
||||
currentSize = newSize;
|
||||
currentWidescreen = widescreen;
|
||||
}
|
||||
return (font ? font : fontSystem)->getWidth(text);
|
||||
}
|
||||
|
||||
void GuiText::SetWidescreen(bool w)
|
||||
{
|
||||
LOCK(this);
|
||||
widescreen = w;
|
||||
}
|
||||
/**
|
||||
* Draw the text on screen
|
||||
*/
|
||||
@ -191,11 +198,12 @@ void GuiText::Draw()
|
||||
|
||||
int newSize = size*this->GetScale();
|
||||
|
||||
if(newSize != currentSize)
|
||||
if(newSize != currentSize || currentWidescreen != widescreen)
|
||||
{
|
||||
//fontSystem->changeSize(newSize);
|
||||
(font ? font : fontSystem)->changeSize(newSize, widescreen ? (newSize*3)>>2 : 0);
|
||||
(font ? font : fontSystem)->changeSize(newSize, widescreen ? newSize*0.8 : 0);
|
||||
currentSize = newSize;
|
||||
currentWidescreen = widescreen;
|
||||
}
|
||||
|
||||
int voffset = 0;
|
||||
|
@ -72,7 +72,7 @@ void GuiTooltip::SetText(const char * t)
|
||||
width = leftImage.GetWidth() + tile_cnt * tileImage.GetWidth() + rightImage.GetWidth();
|
||||
}
|
||||
|
||||
void GuiTooltip::SetWidescreen(short){}
|
||||
void GuiTooltip::SetWidescreen(bool){}
|
||||
/*
|
||||
* Draw the Tooltip on screen
|
||||
*/
|
||||
|
216
source/menu.cpp
216
source/menu.cpp
@ -37,6 +37,7 @@
|
||||
#include "language.h"
|
||||
#include "libwiigui/gui_customoptionbrowser.h"
|
||||
#include "libwiigui/gui_gamebrowser.h"
|
||||
#include "libwiigui/gui_diskcover.h"
|
||||
#include "mp3s.h"
|
||||
#include "fatmounter.h"
|
||||
|
||||
@ -57,9 +58,9 @@ static GuiImageData * background = NULL;
|
||||
static char prozent[10] = " ";
|
||||
static char timet[50] = " ";
|
||||
static char sizeshow[20] = " ";
|
||||
static GuiText prTxt(prozent, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255}); //{0, 0, 0, 255});
|
||||
static GuiText timeTxt(prozent, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255}); //{0, 0, 0, 255});
|
||||
static GuiText sizeTxt(sizeshow, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255}); //{0, 0, 0, 255});
|
||||
static GuiText prTxt(prozent, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
static GuiText timeTxt(prozent, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
static GuiText sizeTxt(sizeshow, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
static GuiText *GameIDTxt = NULL;
|
||||
static GuiText *GameRegionTxt = NULL;
|
||||
static GuiSound * bgMusic = NULL;
|
||||
@ -201,9 +202,9 @@ static void WindowCredits(void * ptr)
|
||||
GuiImage starImg(&star);
|
||||
starImg.SetWidescreen(CFG.widescreen); //added
|
||||
starImg.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
starImg.SetPosition(500,335);
|
||||
starImg.SetPosition(505,350);
|
||||
|
||||
int numEntries = 24;
|
||||
int numEntries = 25;
|
||||
GuiText * txt[numEntries];
|
||||
|
||||
txt[i] = new GuiText(LANGUAGE.Credits, 26, (GXColor){255, 255, 255, 255});
|
||||
@ -246,6 +247,10 @@ static void WindowCredits(void * ptr)
|
||||
txt[i] = new GuiText("giantpune");
|
||||
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(320,y);
|
||||
i++;
|
||||
y+=22;
|
||||
txt[i] = new GuiText("ardi");
|
||||
txt[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP); txt[i]->SetPosition(320,y);
|
||||
i++;
|
||||
y+=24;
|
||||
|
||||
txt[i] = new GuiText("Design:");
|
||||
@ -347,7 +352,7 @@ static void WindowCredits(void * ptr)
|
||||
{
|
||||
#ifdef HW_RVL
|
||||
if(userInput[i].wpad.ir.valid)
|
||||
Menu_DrawImg(userInput[i].wpad.ir.x-48, userInput[i].wpad.ir.y-48,
|
||||
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);
|
||||
@ -435,6 +440,7 @@ WindowPrompt(const char *title, const char *msg, const char *btn1Label,
|
||||
GuiText btn1Txt(btn1Label, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255}); //{0, 0, 0, 255});
|
||||
GuiImage btn1Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes){
|
||||
btn1Txt.SetWidescreen(CFG.widescreen);
|
||||
btn1Img.SetWidescreen(CFG.widescreen);}///////////
|
||||
GuiButton btn1(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||
btn1.SetLabel(&btn1Txt);
|
||||
@ -448,6 +454,7 @@ WindowPrompt(const char *title, const char *msg, const char *btn1Label,
|
||||
GuiText btn2Txt(btn2Label, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255}); //{0, 0, 0, 255});
|
||||
GuiImage btn2Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes){
|
||||
btn2Txt.SetWidescreen(CFG.widescreen);
|
||||
btn2Img.SetWidescreen(CFG.widescreen);}///////////
|
||||
GuiButton btn2(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||
btn2.SetLabel(&btn2Txt);
|
||||
@ -462,6 +469,7 @@ WindowPrompt(const char *title, const char *msg, const char *btn1Label,
|
||||
GuiText btn3Txt(btn3Label, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255}); //{0, 0, 0, 255});
|
||||
GuiImage btn3Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes){
|
||||
btn3Txt.SetWidescreen(CFG.widescreen);
|
||||
btn3Img.SetWidescreen(CFG.widescreen);}///////////
|
||||
GuiButton btn3(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||
btn3.SetLabel(&btn3Txt);
|
||||
@ -476,6 +484,7 @@ WindowPrompt(const char *title, const char *msg, const char *btn1Label,
|
||||
GuiText btn4Txt(btn4Label, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255}); //{0, 0, 0, 255});
|
||||
GuiImage btn4Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes){
|
||||
btn4Txt.SetWidescreen(CFG.widescreen);
|
||||
btn4Img.SetWidescreen(CFG.widescreen);}///////////
|
||||
GuiButton btn4(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||
btn4.SetLabel(&btn4Txt);
|
||||
@ -489,10 +498,10 @@ WindowPrompt(const char *title, const char *msg, const char *btn1Label,
|
||||
|
||||
if ((Settings.wsprompt == yes) && (CFG.widescreen)){/////////////adjust buttons for widescreen
|
||||
msgTxt.SetMaxWidth(330);
|
||||
btn1Txt.SetFontSize(20);
|
||||
btn2Txt.SetFontSize(20);
|
||||
btn3Txt.SetFontSize(20);
|
||||
btn4Txt.SetFontSize(20);
|
||||
// btn1Txt.SetFontSize(20);
|
||||
// btn2Txt.SetFontSize(20);
|
||||
// btn3Txt.SetFontSize(20);
|
||||
// btn4Txt.SetFontSize(20);
|
||||
|
||||
if(btn2Label && !btn3Label && !btn4Label)
|
||||
{
|
||||
@ -754,15 +763,16 @@ WindowExitPrompt(const char *title, const char *msg, const char *btn1Label,
|
||||
titleTxt.SetPosition(-180,40);
|
||||
titleTxt.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
|
||||
|
||||
GuiText btn1Txt(" Close", 28, (GXColor){0, 0, 0, 255});
|
||||
GuiText closeTxt(" Close", 28, (GXColor){0, 0, 0, 255});
|
||||
GuiImage closeImg(&close);
|
||||
if (Settings.wsprompt == yes){
|
||||
closeTxt.SetWidescreen(CFG.widescreen);
|
||||
closeImg.SetWidescreen(CFG.widescreen);}///////////
|
||||
GuiButton closeBtn(close.GetWidth(), close.GetHeight());
|
||||
closeBtn.SetImage(&closeImg);
|
||||
closeBtn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
closeBtn.SetPosition(205,42);
|
||||
closeBtn.SetLabel(&btn1Txt);
|
||||
closeBtn.SetLabel(&closeTxt);
|
||||
closeBtn.SetRumble(false);
|
||||
closeBtn.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
|
||||
|
||||
@ -777,9 +787,10 @@ WindowExitPrompt(const char *title, const char *msg, const char *btn1Label,
|
||||
btn1.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
|
||||
btn1.SetPosition(0, 0);
|
||||
|
||||
GuiText btn2Txt(btn1Label, 38, (GXColor){0, 0, 0, 255});
|
||||
GuiText btn2Txt(btn1Label, 34, (GXColor){0, 0, 0, 255});
|
||||
GuiImage btn2Img(&button);
|
||||
if (Settings.wsprompt == yes){
|
||||
btn2Txt.SetWidescreen(CFG.widescreen);
|
||||
btn2Img.SetWidescreen(CFG.widescreen);}///////////
|
||||
GuiButton btn2(button.GetWidth(), button.GetHeight());
|
||||
btn2.SetLabel(&btn2Txt);
|
||||
@ -793,9 +804,10 @@ WindowExitPrompt(const char *title, const char *msg, const char *btn1Label,
|
||||
btn2.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_IN, 50);
|
||||
btn2.SetRumble(false);
|
||||
|
||||
GuiText btn3Txt(btn2Label, 38, (GXColor){0, 0, 0, 255});
|
||||
GuiText btn3Txt(btn2Label, 34, (GXColor){0, 0, 0, 255});
|
||||
GuiImage btn3Img(&button);
|
||||
if (Settings.wsprompt == yes){
|
||||
btn3Txt.SetWidescreen(CFG.widescreen);
|
||||
btn3Img.SetWidescreen(CFG.widescreen);}///////////
|
||||
GuiButton btn3(button.GetWidth(), button.GetHeight());
|
||||
btn3.SetLabel(&btn3Txt);
|
||||
@ -822,8 +834,8 @@ WindowExitPrompt(const char *title, const char *msg, const char *btn1Label,
|
||||
btn4.SetPosition(0,0);
|
||||
btn4.SetEffect(EFFECT_SLIDE_BOTTOM | EFFECT_SLIDE_IN, 50);
|
||||
|
||||
btn2Txt.SetFontSize(22);
|
||||
btn3Txt.SetFontSize(22);
|
||||
// btn2Txt.SetFontSize(22);
|
||||
// btn3Txt.SetFontSize(22);
|
||||
|
||||
GuiImage wiimoteImg(&wiimote);
|
||||
if (Settings.wsprompt == yes){wiimoteImg.SetWidescreen(CFG.widescreen);}
|
||||
@ -1019,10 +1031,12 @@ int GameWindowPrompt()
|
||||
GuiTooltip nameBtnTT(LANGUAGE.RenameGameonWBFS);
|
||||
if (Settings.wsprompt == yes)
|
||||
nameBtnTT.SetWidescreen(CFG.widescreen);
|
||||
GuiText msgTxt("", 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255}); //{50, 50, 50, 255});
|
||||
GuiText nameTxt("", 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255}); //{50, 50, 50, 255});
|
||||
if (Settings.wsprompt == yes)
|
||||
nameTxt.SetWidescreen(CFG.widescreen);
|
||||
GuiButton nameBtn(120,50);
|
||||
nameBtn.SetLabel(&msgTxt);
|
||||
nameBtn.SetLabelOver(&msgTxt);
|
||||
nameBtn.SetLabel(&nameTxt);
|
||||
// nameBtn.SetLabelOver(&nameTxt);
|
||||
nameBtn.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||
nameBtn.SetPosition(0,-122);
|
||||
nameBtn.SetSoundOver(&btnSoundOver);
|
||||
@ -1038,10 +1052,17 @@ int GameWindowPrompt()
|
||||
sizeTxt.SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
|
||||
sizeTxt.SetPosition(-60,70);
|
||||
|
||||
GuiImage diskImg;
|
||||
// GuiImage diskImg;
|
||||
GuiDiskCover diskImg;
|
||||
diskImg.SetWidescreen(CFG.widescreen);
|
||||
diskImg.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
diskImg.SetAngle(angle);
|
||||
GuiDiskCover diskImg2;
|
||||
diskImg2.SetWidescreen(CFG.widescreen);
|
||||
diskImg2.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||
diskImg2.SetPosition(0, -20);
|
||||
diskImg2.SetAngle(angle);
|
||||
diskImg2.SetBeta(180);
|
||||
|
||||
GuiButton btn1(160, 160);
|
||||
btn1.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||
@ -1057,6 +1078,7 @@ int GameWindowPrompt()
|
||||
GuiText btn2Txt(LANGUAGE.Back, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255}); //{0, 0, 0, 255});
|
||||
GuiImage btn2Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes){
|
||||
btn2Txt.SetWidescreen(CFG.widescreen);
|
||||
btn2Img.SetWidescreen(CFG.widescreen);}///////////
|
||||
GuiButton btn2(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||
//check if unlocked
|
||||
@ -1082,6 +1104,7 @@ int GameWindowPrompt()
|
||||
GuiText btn3Txt(LANGUAGE.settings, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255}); //{0, 0, 0, 255});
|
||||
GuiImage btn3Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes){
|
||||
btn3Txt.SetWidescreen(CFG.widescreen);
|
||||
btn3Img.SetWidescreen(CFG.widescreen);}
|
||||
GuiButton btn3(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||
btn3.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
|
||||
@ -1118,7 +1141,7 @@ int GameWindowPrompt()
|
||||
promptWindow.Append(&dialogBoxImg);
|
||||
promptWindow.Append(&nameBtn);
|
||||
promptWindow.Append(&sizeTxt);
|
||||
promptWindow.Append(&btn1);
|
||||
// promptWindow.Append(&btn1); // move down at last apended
|
||||
promptWindow.Append(&btn2);
|
||||
promptWindow.Append(&btnLeft);
|
||||
promptWindow.Append(&btnRight);
|
||||
@ -1129,8 +1152,12 @@ int GameWindowPrompt()
|
||||
promptWindow.Append(&btn3);
|
||||
}
|
||||
|
||||
short changed = 3;
|
||||
promptWindow.Append(&diskImg2);
|
||||
promptWindow.Append(&btn1);
|
||||
|
||||
short changed = -1;
|
||||
GuiImageData * diskCover = NULL;
|
||||
GuiImageData * diskCover2 = NULL;
|
||||
|
||||
promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
|
||||
|
||||
@ -1139,11 +1166,20 @@ int GameWindowPrompt()
|
||||
if (changed == 1){
|
||||
promptWindow.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_IN, 50);
|
||||
}
|
||||
if (changed == 2){
|
||||
else if (changed == 2){
|
||||
promptWindow.SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_IN, 50);
|
||||
}
|
||||
else if (changed == 3 || changed == 4)
|
||||
{
|
||||
if(diskCover2)
|
||||
delete diskCover2;
|
||||
diskCover2 = NULL;
|
||||
if(diskCover)
|
||||
diskCover2 = diskCover;
|
||||
diskCover = NULL;
|
||||
}
|
||||
|
||||
changed = 0;
|
||||
// changed = 0;
|
||||
//load disc image based or what game is seleted
|
||||
struct discHdr * header = &gameList[gameSelected];
|
||||
WBFS_GameSize(header->id, &size);
|
||||
@ -1163,72 +1199,93 @@ int GameWindowPrompt()
|
||||
strncat(gameName, "...", 3);
|
||||
}
|
||||
|
||||
snprintf(imgPath,sizeof(imgPath),"%s%s.png", CFG.disc_path, IDFull); //changed to current id
|
||||
|
||||
if (diskCover)
|
||||
delete diskCover;
|
||||
|
||||
snprintf(imgPath,sizeof(imgPath),"%s%s.png", CFG.disc_path, IDFull); //changed to current full id
|
||||
diskCover = new GuiImageData(imgPath,0);
|
||||
|
||||
if (!diskCover->GetImage())
|
||||
{
|
||||
delete diskCover;
|
||||
snprintf(imgPath, sizeof(imgPath), "%s%s.png", CFG.disc_path, ID); //changed to current full id
|
||||
snprintf(imgPath, sizeof(imgPath), "%s%s.png", CFG.disc_path, ID); //changed to current id
|
||||
diskCover = new GuiImageData(imgPath, 0);
|
||||
if (!diskCover->GetImage())
|
||||
{
|
||||
delete diskCover;
|
||||
snprintf(imgPath, sizeof(imgPath), "%snodisc.png", CFG.disc_path); //changed to nodisc.png
|
||||
diskCover = new GuiImageData(imgPath,nodisc_png);
|
||||
}
|
||||
}
|
||||
|
||||
diskImg.SetImage(diskCover);
|
||||
|
||||
|
||||
if (changed == 3){
|
||||
diskImg.SetBeta(180);
|
||||
diskImg.SetBetaRotateEffect(-90, 15);
|
||||
diskImg2.SetImage(diskCover2);
|
||||
diskImg2.SetAngle(diskImg.GetAngle());
|
||||
diskImg2.SetBeta(0);
|
||||
diskImg2.SetBetaRotateEffect(-90, 15);
|
||||
sizeTxt.SetEffect(EFFECT_FADE, -17);
|
||||
nameTxt.SetEffect(EFFECT_FADE, -17);
|
||||
ResumeGui();
|
||||
while(nameTxt.GetEffect() > 0 || diskImg.GetBetaRotateEffect()) usleep(50);
|
||||
HaltGui();
|
||||
diskImg.SetBetaRotateEffect(-90, 15);
|
||||
diskImg2.SetBetaRotateEffect(-90, 15);
|
||||
sizeTxt.SetEffect(EFFECT_FADE, 17);
|
||||
nameTxt.SetEffect(EFFECT_FADE, 17);
|
||||
}
|
||||
else if (changed == 4){
|
||||
diskImg.SetBeta(180);
|
||||
diskImg.SetBetaRotateEffect(90, 15);
|
||||
diskImg2.SetImage(diskCover2);
|
||||
diskImg2.SetAngle(diskImg.GetAngle());
|
||||
diskImg2.SetBeta(0);
|
||||
diskImg2.SetBetaRotateEffect(90, 15);
|
||||
sizeTxt.SetEffect(EFFECT_FADE, -17);
|
||||
nameTxt.SetEffect(EFFECT_FADE, -17);
|
||||
ResumeGui();
|
||||
while(nameTxt.GetEffect() > 0 || diskImg.GetBetaRotateEffect()) usleep(50);
|
||||
HaltGui();
|
||||
diskImg.SetBetaRotateEffect(90, 15);
|
||||
diskImg2.SetBetaRotateEffect(90, 15);
|
||||
sizeTxt.SetEffect(EFFECT_FADE, 17);
|
||||
nameTxt.SetEffect(EFFECT_FADE, 17);
|
||||
}
|
||||
|
||||
sizeTxt.SetText(sizeText);
|
||||
msgTxt.SetText(gameName);
|
||||
nameTxt.SetText(gameName);
|
||||
char* pch;
|
||||
|
||||
pch=strrchr((gameName),'_');
|
||||
|
||||
if (pch!=NULL){msgTxt.SetPosition(0, 16);}
|
||||
else {msgTxt.SetPosition(0, 1);}
|
||||
if (pch!=NULL){nameTxt.SetPosition(0, 16);}
|
||||
else {nameTxt.SetPosition(0, 1);}
|
||||
|
||||
|
||||
HaltGui();
|
||||
mainWindow->SetState(STATE_DISABLED);
|
||||
mainWindow->Append(&promptWindow);
|
||||
mainWindow->ChangeFocus(&promptWindow);
|
||||
if(changed != 3 && changed != 4) // changed==3 or changed==4 --> only Resume the GUI
|
||||
{
|
||||
HaltGui();
|
||||
mainWindow->SetState(STATE_DISABLED);
|
||||
mainWindow->Append(&promptWindow);
|
||||
mainWindow->ChangeFocus(&promptWindow);
|
||||
}
|
||||
ResumeGui();
|
||||
|
||||
float speedup = 1; //speedup increases while disc is selected
|
||||
|
||||
changed = 0;
|
||||
while(choice == -1)
|
||||
{
|
||||
VIDEO_WaitVSync();
|
||||
//angle++;
|
||||
angle = int(angle+speedup) % 360;
|
||||
//disc speedup and slowdown
|
||||
if (btn1.GetState() == STATE_SELECTED) { //if mouse over
|
||||
if (speedup < 11) // speed up
|
||||
{
|
||||
speedup = (speedup+0.20);
|
||||
}
|
||||
}
|
||||
else //if not mouse over
|
||||
{
|
||||
if (speedup > 1) {speedup = (speedup-0.05);} //slow down
|
||||
}
|
||||
if (speedup < 1)
|
||||
{
|
||||
speedup = 1;
|
||||
}
|
||||
diskImg.SetAngle(angle);
|
||||
|
||||
diskImg.SetSpin(btn1.GetState() == STATE_SELECTED);
|
||||
diskImg2.SetSpin(btn1.GetState() == STATE_SELECTED);
|
||||
if(shutdown == 1) //for power button
|
||||
{
|
||||
wiilight(0);
|
||||
Sys_Shutdown();
|
||||
}
|
||||
if(reset == 1)
|
||||
if(reset == 1) //for reset button
|
||||
Sys_Reboot();
|
||||
|
||||
if(btn1.GetState() == STATE_CLICKED) { //boot
|
||||
@ -1324,16 +1381,38 @@ int GameWindowPrompt()
|
||||
btnLeft.ResetState();
|
||||
break;
|
||||
}
|
||||
|
||||
else if((btnRight.GetState() == STATE_CLICKED) && (Settings.xflip == disk3d)){//next game
|
||||
// diskImg.SetBetaRotateEffect(45, 90);
|
||||
changed = 3;
|
||||
btnClick.Play();
|
||||
gameSelected = (gameSelected + 1) % gameCnt;
|
||||
btnRight.ResetState();
|
||||
break;
|
||||
}
|
||||
|
||||
else if((btnLeft.GetState() == STATE_CLICKED) && (Settings.xflip == disk3d)){//previous game
|
||||
// diskImg.SetBetaRotateEffect(-45, 90);
|
||||
// promptWindow.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 1/*50*/);
|
||||
changed = 4;
|
||||
btnClick.Play();
|
||||
gameSelected = (gameSelected - 1 + gameCnt) % gameCnt;
|
||||
btnLeft.ResetState();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
while(promptWindow.GetEffect() > 0) usleep(50);
|
||||
HaltGui();
|
||||
mainWindow->Remove(&promptWindow);
|
||||
|
||||
ResumeGui();
|
||||
if(changed != 3 && changed != 4) // changed==3 or changed==4 --> only Halt the GUI
|
||||
{
|
||||
mainWindow->Remove(&promptWindow);
|
||||
ResumeGui();
|
||||
}
|
||||
}
|
||||
delete diskCover;
|
||||
delete diskCover2;
|
||||
|
||||
return choice;
|
||||
}
|
||||
@ -1378,6 +1457,7 @@ DiscWait(const char *title, const char *msg, const char *btn1Label, const char *
|
||||
GuiText btn1Txt(btn1Label, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255}); //{0, 0, 0, 255});
|
||||
GuiImage btn1Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes){
|
||||
btn1Txt.SetWidescreen(CFG.widescreen);
|
||||
btn1Img.SetWidescreen(CFG.widescreen);}///////////
|
||||
GuiButton btn1(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||
|
||||
@ -1404,6 +1484,7 @@ DiscWait(const char *title, const char *msg, const char *btn1Label, const char *
|
||||
GuiText btn2Txt(btn2Label, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255}); //{0, 0, 0, 255});
|
||||
GuiImage btn2Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes){
|
||||
btn2Txt.SetWidescreen(CFG.widescreen);
|
||||
btn2Img.SetWidescreen(CFG.widescreen);}///////////
|
||||
GuiButton btn2(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||
btn2.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
|
||||
@ -1588,6 +1669,7 @@ int NetworkInitPromp(int choice2)
|
||||
GuiText btn1Txt(LANGUAGE.Cancel, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255}); //{0, 0, 0, 255});
|
||||
GuiImage btn1Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes){
|
||||
btn1Txt.SetWidescreen(CFG.widescreen);
|
||||
btn1Img.SetWidescreen(CFG.widescreen);}///////////
|
||||
GuiButton btn1(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||
btn1.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
|
||||
@ -1938,6 +2020,7 @@ ProgressDownloadWindow(int choice2)
|
||||
GuiText btn1Txt(LANGUAGE.Cancel, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255}); //{0, 0, 0, 255});
|
||||
GuiImage btn1Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes){
|
||||
btn1Txt.SetWidescreen(CFG.widescreen);
|
||||
btn1Img.SetWidescreen(CFG.widescreen);}
|
||||
GuiButton btn1(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||
btn1.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
|
||||
@ -2095,7 +2178,7 @@ UpdateGUI (void *arg)
|
||||
for(int i=3; i >= 0; i--) // so that player 1's cursor appears on top!
|
||||
{
|
||||
if(userInput[i].wpad.ir.valid)
|
||||
Menu_DrawImg(userInput[i].wpad.ir.x-48, userInput[i].wpad.ir.y-48,
|
||||
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)
|
||||
{
|
||||
@ -2263,6 +2346,7 @@ static int OnScreenKeyboard(char * var, u32 maxlen, int min)
|
||||
GuiText okBtnTxt(LANGUAGE.ok, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255}); //{0, 0, 0, 255});
|
||||
GuiImage okBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes){
|
||||
okBtnTxt.SetWidescreen(CFG.widescreen);
|
||||
okBtnImg.SetWidescreen(CFG.widescreen);}///////////
|
||||
GuiButton okBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||
|
||||
@ -2279,6 +2363,7 @@ static int OnScreenKeyboard(char * var, u32 maxlen, int min)
|
||||
GuiText cancelBtnTxt(LANGUAGE.Cancel, 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255}); //{0, 0, 0, 255});
|
||||
GuiImage cancelBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes){
|
||||
cancelBtnTxt.SetWidescreen(CFG.widescreen);
|
||||
cancelBtnImg.SetWidescreen(CFG.widescreen);}///////////
|
||||
GuiButton cancelBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||
cancelBtn.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
|
||||
@ -3716,6 +3801,7 @@ static int MenuSettings()
|
||||
backBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
|
||||
GuiImage backBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes){
|
||||
backBtnTxt.SetWidescreen(CFG.widescreen);
|
||||
backBtnImg.SetWidescreen(CFG.widescreen);}
|
||||
GuiButton backBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||
backBtn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
@ -4021,7 +4107,7 @@ static int MenuSettings()
|
||||
{
|
||||
if ( Settings.cios > 1 )
|
||||
Settings.cios = 0;
|
||||
if ( Settings.xflip > 3 )
|
||||
if ( Settings.xflip > 4 )
|
||||
Settings.xflip = 0;
|
||||
if ( Settings.qboot > 1 )
|
||||
Settings.qboot = 0;
|
||||
@ -4043,6 +4129,7 @@ static int MenuSettings()
|
||||
else if (Settings.xflip == yes) sprintf (options2.value[2],"%s/%s",LANGUAGE.Left,LANGUAGE.Prev);
|
||||
else if (Settings.xflip == sysmenu) sprintf (options2.value[2],"%s", LANGUAGE.LikeSysMenu);
|
||||
else if (Settings.xflip == wtf) sprintf (options2.value[2],"%s/%s",LANGUAGE.Right,LANGUAGE.Prev);
|
||||
else if (Settings.xflip == disk3d) sprintf (options2.value[2],"DiskFlip");
|
||||
|
||||
if (Settings.qboot == no) sprintf (options2.value[3],"%s",LANGUAGE.No);
|
||||
else if (Settings.qboot == yes) sprintf (options2.value[3],"%s",LANGUAGE.Yes);
|
||||
@ -4646,6 +4733,7 @@ int GameSettings(struct discHdr * header)
|
||||
saveBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
|
||||
GuiImage saveBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes){
|
||||
saveBtnTxt.SetWidescreen(CFG.widescreen);
|
||||
saveBtnImg.SetWidescreen(CFG.widescreen);}
|
||||
GuiButton saveBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||
saveBtn.SetScale(0.9);
|
||||
@ -4661,6 +4749,7 @@ int GameSettings(struct discHdr * header)
|
||||
cancelBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
|
||||
GuiImage cancelBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes){
|
||||
cancelBtnTxt.SetWidescreen(CFG.widescreen);
|
||||
cancelBtnImg.SetWidescreen(CFG.widescreen);}
|
||||
GuiButton cancelBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||
cancelBtn.SetScale(0.9);
|
||||
@ -4677,6 +4766,7 @@ int GameSettings(struct discHdr * header)
|
||||
deleteBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
|
||||
GuiImage deleteBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes){
|
||||
deleteBtnTxt.SetWidescreen(CFG.widescreen);
|
||||
deleteBtnImg.SetWidescreen(CFG.widescreen);}
|
||||
GuiButton deleteBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||
deleteBtn.SetScale(0.9);
|
||||
@ -5071,6 +5161,7 @@ int MenuOGG()
|
||||
backBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
|
||||
GuiImage backBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes){
|
||||
backBtnTxt.SetWidescreen(CFG.widescreen);
|
||||
backBtnImg.SetWidescreen(CFG.widescreen);}//////
|
||||
GuiButton backBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||
backBtn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
@ -5372,6 +5463,7 @@ int MenuMp3()
|
||||
cancelBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
|
||||
GuiImage cancelBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes){
|
||||
cancelBtnTxt.SetWidescreen(CFG.widescreen);
|
||||
cancelBtnImg.SetWidescreen(CFG.widescreen);}
|
||||
GuiButton cancelBtn(btnOutline.GetWidth(), btnOutline.GetHeight());
|
||||
cancelBtn.SetScale(0.9);
|
||||
|
100
source/video.cpp
100
source/video.cpp
@ -141,7 +141,7 @@ ResetVideo_Menu()
|
||||
GX_SetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY);
|
||||
|
||||
guMtxIdentity(GXmodelView2D);
|
||||
guMtxTransApply (GXmodelView2D, GXmodelView2D, 0.0F, 0.0F, -50.0F);
|
||||
guMtxTransApply (GXmodelView2D, GXmodelView2D, 0.0F, 0.0F, -200.0F);
|
||||
GX_LoadPosMtxImm(GXmodelView2D,GX_PNMTX0);
|
||||
|
||||
guOrtho(p,0,479,0,639,0,300);
|
||||
@ -240,7 +240,7 @@ void Menu_Render()
|
||||
*
|
||||
* Draws the specified image on screen using GX
|
||||
***************************************************************************/
|
||||
void Menu_DrawImg(f32 xpos, f32 ypos, u16 width, u16 height, u8 data[],
|
||||
void Menu_DrawImg(f32 xpos, f32 ypos, f32 zpos, u16 width, u16 height, u8 data[],
|
||||
f32 degrees, f32 scaleX, f32 scaleY, u8 alpha)
|
||||
{
|
||||
if(data == NULL)
|
||||
@ -265,7 +265,7 @@ void Menu_DrawImg(f32 xpos, f32 ypos, u16 width, u16 height, u8 data[],
|
||||
// guMtxConcat(m2,m1,m);
|
||||
guMtxConcat(m1,m2,m);
|
||||
|
||||
guMtxTransApply(m,m, xpos+width+0.5,ypos+height+0.5,0);
|
||||
guMtxTransApply(m,m, xpos+width+0.5,ypos+height+0.5,zpos);
|
||||
guMtxConcat (GXmodelView2D, m, mv);
|
||||
GX_LoadPosMtxImm (mv, GX_PNMTX0);
|
||||
|
||||
@ -325,3 +325,97 @@ void Menu_DrawRectangle(f32 x, f32 y, f32 width, f32 height, GXColor color, u8 f
|
||||
}
|
||||
GX_End();
|
||||
}
|
||||
|
||||
void Menu_DrawDiskCover(f32 xpos, f32 ypos, f32 zpos, u16 width, u16 height, u16 distance,u8 data[],
|
||||
f32 deg_alpha, f32 deg_beta, f32 scaleX, f32 scaleY, u8 alpha, bool shadow)
|
||||
{
|
||||
if(data == NULL)
|
||||
return;
|
||||
|
||||
GXTexObj texObj;
|
||||
|
||||
GX_InitTexObj(&texObj, data, width,height, GX_TF_RGBA8,GX_CLAMP, GX_CLAMP,GX_FALSE);
|
||||
GX_LoadTexObj(&texObj, GX_TEXMAP0);
|
||||
GX_InvalidateTexAll();
|
||||
|
||||
GX_SetTevOp (GX_TEVSTAGE0, GX_MODULATE);
|
||||
GX_SetVtxDesc (GX_VA_TEX0, GX_DIRECT);
|
||||
|
||||
|
||||
f32 cos_beta = cos(DegToRad(deg_beta));
|
||||
f32 s_offset_y = (zpos + (cos_beta * distance)) * tan(DegToRad(5));
|
||||
f32 s_offset_x = (cos_beta<0?-cos_beta:cos_beta) * s_offset_y;
|
||||
f32 s_offset_z = (s_offset_y<0 ? 0 : s_offset_y)*2;
|
||||
|
||||
Mtx m,m1,m2,m3,m4, mv;
|
||||
width *=.5;
|
||||
height*=.5;
|
||||
guMtxIdentity (m4);
|
||||
guMtxTransApply(m4,m4, 0, 0, distance);
|
||||
|
||||
guMtxIdentity (m1);
|
||||
guMtxScaleApply(m1,m1,scaleX,scaleY,1.0);
|
||||
Vector axis2 = (Vector) {0 , 1, 0 };
|
||||
guMtxRotAxisDeg (m2, &axis2, deg_beta);
|
||||
Vector axis = (Vector) {0 , 0, 1 };
|
||||
guMtxRotAxisDeg (m3, &axis, deg_alpha);
|
||||
// guMtxConcat(m2,m1,m);
|
||||
guMtxConcat(m3,m4,m3); // move distance then rotate z-axis
|
||||
guMtxConcat(m2,m3,m2); // rotate y-axis
|
||||
guMtxConcat(m1,m2,m); // scale
|
||||
|
||||
if(shadow)
|
||||
guMtxTransApply(m,m, xpos+width+0.5+s_offset_x,ypos+height+0.5+s_offset_y,zpos-s_offset_z);
|
||||
else
|
||||
guMtxTransApply(m,m, xpos+width+0.5,ypos+height+0.5,zpos);
|
||||
|
||||
|
||||
|
||||
guMtxConcat (GXmodelView2D, m, mv);
|
||||
GX_LoadPosMtxImm (mv, GX_PNMTX0);
|
||||
|
||||
if(shadow)
|
||||
{
|
||||
GX_Begin(GX_QUADS, GX_VTXFMT0,4);
|
||||
GX_Position3f32(-width, -height, 0);
|
||||
GX_Color4u8(0x60,0x60,0x60,alpha);
|
||||
GX_TexCoord2f32(0, 0);
|
||||
|
||||
GX_Position3f32(width, -height, 0);
|
||||
GX_Color4u8(0x60,0x60,0x60,alpha);
|
||||
GX_TexCoord2f32(1, 0);
|
||||
|
||||
GX_Position3f32(width, height, 0);
|
||||
GX_Color4u8(0x60,0x60,0x60,alpha);
|
||||
GX_TexCoord2f32(1, 1);
|
||||
|
||||
GX_Position3f32(-width, height, 0);
|
||||
GX_Color4u8(0x60,0x60,0x60,alpha);
|
||||
GX_TexCoord2f32(0, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
GX_Begin(GX_QUADS, GX_VTXFMT0,4);
|
||||
GX_Position3f32(-width, -height, 0);
|
||||
GX_Color4u8(0xFF,0xFF,0xFF,alpha);
|
||||
GX_TexCoord2f32(0, 0);
|
||||
|
||||
GX_Position3f32(width, -height, 0);
|
||||
GX_Color4u8(0xFF,0xFF,0xFF,alpha);
|
||||
GX_TexCoord2f32(1, 0);
|
||||
|
||||
GX_Position3f32(width, height, 0);
|
||||
GX_Color4u8(0xFF,0xFF,0xFF,alpha);
|
||||
GX_TexCoord2f32(1, 1);
|
||||
|
||||
GX_Position3f32(-width, height, 0);
|
||||
GX_Color4u8(0xFF,0xFF,0xFF,alpha);
|
||||
GX_TexCoord2f32(0, 1);
|
||||
}
|
||||
|
||||
GX_End();
|
||||
GX_LoadPosMtxImm (GXmodelView2D, GX_PNMTX0);
|
||||
|
||||
GX_SetTevOp (GX_TEVSTAGE0, GX_PASSCLR);
|
||||
GX_SetVtxDesc (GX_VA_TEX0, GX_NONE);
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ void InitVideo ();
|
||||
void StopGX();
|
||||
void ResetVideo_Menu();
|
||||
void Menu_Render();
|
||||
void Menu_DrawImg(f32 xpos, f32 ypos, u16 width, u16 height, u8 data[], f32 degrees, f32 scaleX, f32 scaleY, u8 alphaF );
|
||||
void Menu_DrawImg(f32 xpos, f32 ypos, f32 zpos, u16 width, u16 height, u8 data[], f32 degrees, f32 scaleX, f32 scaleY, u8 alphaF );
|
||||
void Menu_DrawRectangle(f32 x, f32 y, f32 width, f32 height, GXColor color, u8 filled);
|
||||
|
||||
extern int screenheight;
|
||||
|
Loading…
Reference in New Issue
Block a user