mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-12-26 20:01:55 +01:00
eaec483ce6
added Miigotu's game info synopsis and about fix. added Miigotu's multichoice buttons fix - now button font size can be different than label font size. changed game info genre to display the whole genre. changed theme choice button to not display in uppercase.
160 lines
4.4 KiB
C++
160 lines
4.4 KiB
C++
|
|
// Buttons
|
|
|
|
#ifndef __GUI_HPP
|
|
#define __GUI_HPP
|
|
|
|
#include "wiiuse/wpad.h"
|
|
#include <ogc/pad.h>
|
|
|
|
#include "video.hpp"
|
|
#include "FreeTypeGX.h"
|
|
#include "wstringEx.hpp"
|
|
#include "smartptr.hpp"
|
|
#include "text.hpp"
|
|
#include "gui_sound.h"
|
|
|
|
struct SButtonTextureSet
|
|
{
|
|
STexture left;
|
|
STexture right;
|
|
STexture center;
|
|
STexture leftSel;
|
|
STexture rightSel;
|
|
STexture centerSel;
|
|
};
|
|
|
|
class CButtonsMgr
|
|
{
|
|
public:
|
|
bool init(CVideo &vid);
|
|
void setRumble(bool enabled) { m_rumbleEnabled = enabled; }
|
|
void reserve(u32 capacity) { m_elts.reserve(capacity); }
|
|
u32 addButton(SFont font, const wstringEx &text, int x, int y, u32 width, u32 height, const CColor &color,
|
|
const SButtonTextureSet &texSet, const SmartGuiSound &clickSound = _noSound, const SmartGuiSound &hoverSound = _noSound);
|
|
u32 addLabel(SFont font, const wstringEx &text, int x, int y, u32 width, u32 height, const CColor &color, u16 style, const STexture &bg = _noTexture);
|
|
u32 addPicButton(const u8 *pngNormal, const u8 *pngSelected, int x, int y, u32 width, u32 height,
|
|
const SmartGuiSound &clickSound = _noSound, const SmartGuiSound &hoverSound = _noSound);
|
|
u32 addPicButton(STexture &texNormal, STexture &texSelected, int x, int y, u32 width, u32 height,
|
|
const SmartGuiSound &clickSound = _noSound, const SmartGuiSound &hoverSound = _noSound);
|
|
u32 addProgressBar(int x, int y, u32 width, u32 height, SButtonTextureSet &texSet);
|
|
void setText(u32 id, const wstringEx &text, bool unwrap = false);
|
|
void setText(u32 id, const wstringEx &text, u32 startline, bool unwrap = false);
|
|
void setTexture(u32 id ,STexture &bg);
|
|
void setTexture(u32 id, STexture &bg, int width, int height);
|
|
void setProgress(u32 id, float f, bool instant = false);
|
|
void reset(u32 id, bool instant = false);
|
|
void moveBy(u32 id, int x, int y, bool instant = false);
|
|
void getDimensions(u32 id, int &x, int &y, u32 &width, u32 &height);
|
|
void hide(u32 id, int dx, int dy, float scaleX, float scaleY, bool instant = false);
|
|
void hide(u32 id, bool instant = false);
|
|
void show(u32 id, bool instant = false);
|
|
void mouse(int chan, int x, int y);
|
|
void up(void);
|
|
void down(void);
|
|
void draw(void);
|
|
void tick(void);
|
|
void noClick(bool noclick = false);
|
|
void noHover(bool nohover = false);
|
|
void click(u32 id = (u32)-1);
|
|
bool selected(u32 button = (u32)-1);
|
|
void setRumble(int, bool wii = false, bool gc = false);
|
|
void deselect(void){ for(int chan = WPAD_MAX_WIIMOTES-1; chan >= 0; chan--) m_selected[chan] = (u32)-1; }
|
|
void stopSounds(void);
|
|
void setSoundVolume(int vol);
|
|
private:
|
|
struct SHideParam
|
|
{
|
|
int dx;
|
|
int dy;
|
|
float scaleX;
|
|
float scaleY;
|
|
public:
|
|
SHideParam(void) : dx(0), dy(0), scaleX(1.f), scaleY(1.f) { }
|
|
};
|
|
enum EltType {
|
|
GUIELT_BUTTON,
|
|
GUIELT_LABEL,
|
|
GUIELT_PROGRESS
|
|
};
|
|
struct SElement
|
|
{
|
|
SHideParam hideParam;
|
|
EltType t;
|
|
bool visible;
|
|
int x;
|
|
int y;
|
|
int w;
|
|
int h;
|
|
Vector3D pos;
|
|
Vector3D targetPos;
|
|
u8 alpha;
|
|
u8 targetAlpha;
|
|
float scaleX;
|
|
float scaleY;
|
|
float targetScaleX;
|
|
float targetScaleY;
|
|
int moveByX;
|
|
int moveByY;
|
|
public:
|
|
virtual ~SElement(void) { }
|
|
virtual void tick(void);
|
|
protected:
|
|
SElement(void) { }
|
|
};
|
|
struct SButton : public SElement
|
|
{
|
|
SFont font;
|
|
SButtonTextureSet tex;
|
|
wstringEx text;
|
|
CColor textColor;
|
|
float click;
|
|
SmartGuiSound clickSound;
|
|
SmartGuiSound hoverSound;
|
|
public:
|
|
SButton(void) { t = GUIELT_BUTTON; }
|
|
virtual void tick(void);
|
|
};
|
|
struct SLabel : public SElement
|
|
{
|
|
SFont font;
|
|
CText text;
|
|
CColor textColor;
|
|
u16 textStyle;
|
|
STexture texBg;
|
|
public:
|
|
SLabel(void) { t = GUIELT_LABEL; }
|
|
virtual void tick(void);
|
|
};
|
|
struct SProgressBar : public SElement
|
|
{
|
|
SButtonTextureSet tex;
|
|
float val;
|
|
float targetVal;
|
|
public:
|
|
SProgressBar(void) { t = GUIELT_PROGRESS; }
|
|
virtual void tick(void);
|
|
};
|
|
private:
|
|
vector<SmartPtr<SElement> > m_elts;
|
|
u32 m_selected[WPAD_MAX_WIIMOTES];
|
|
bool m_rumbleEnabled;
|
|
u8 m_rumble[WPAD_MAX_WIIMOTES];
|
|
bool wii_rumble[WPAD_MAX_WIIMOTES];
|
|
bool gc_rumble[WPAD_MAX_WIIMOTES];
|
|
SmartGuiSound m_sndHover;
|
|
SmartGuiSound m_sndClick;
|
|
u8 m_soundVolume;
|
|
bool m_noclick;
|
|
bool m_nohover;
|
|
CVideo m_vid;
|
|
private:
|
|
void _drawBtn(const SButton &b, bool selected, bool click);
|
|
void _drawLbl(SLabel &b);
|
|
void _drawPBar(const SProgressBar &b);
|
|
static STexture _noTexture;
|
|
static SmartGuiSound _noSound;
|
|
};
|
|
|
|
#endif // !defined(__GUI_HPP)
|