Jeck - Added full filtering system to deck editor and shop. I've spent 24hours on pure debugging, but there are likely a couple bugs I've missed. So please, if you find something, make an issue of it! :P Also split OptionItem classes into separate files, and added support for mixed-set boosters (which I think are way, way cool).
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
#include "../include/MTGDefinitions.h"
|
||||
#include "../include/MTGCard.h"
|
||||
#include "../include/CardPrimitive.h"
|
||||
#include "../include/WDataSrc.h"
|
||||
#include <map>
|
||||
#include <string>
|
||||
using std::map;
|
||||
@@ -23,27 +24,22 @@ class Cmp1 { // compares cards by their name
|
||||
}
|
||||
};
|
||||
|
||||
class DeckDataWrapper{
|
||||
class DeckDataWrapper: public WSrcDeck {
|
||||
public:
|
||||
int colors[Constants::MTG_NB_COLORS+1];
|
||||
int currentColor;
|
||||
map<MTGCard *, int,Cmp1> cards;
|
||||
MTGDeck * parent;
|
||||
int counts[Constants::MTG_NB_COLORS];
|
||||
|
||||
DeckDataWrapper(MTGDeck * deck);
|
||||
~DeckDataWrapper();
|
||||
|
||||
int Add(MTGCard * card, int quantity = 1);
|
||||
int Add(MTGCard * c, int quantity=1);
|
||||
int Remove(MTGCard * c, int quantity=1, bool erase=false);
|
||||
int Add(MTGDeck * deck);
|
||||
int Remove(MTGCard * card);
|
||||
MTGCard * getNext(MTGCard * previous = NULL, int color = -1);
|
||||
MTGCard * getPrevious(MTGCard * next = NULL, int color = -1);
|
||||
void updateCounts(MTGCard * card = NULL, int quantity = 1);
|
||||
int getCount(int color = -1);
|
||||
int totalPrice();
|
||||
int getCount(int color=-1);
|
||||
void updateCounts();
|
||||
bool next() {currentPos++; return true;};
|
||||
bool prev() {currentPos--; return true;};
|
||||
void save();
|
||||
int countByName(MTGCard * card);
|
||||
int count(MTGCard * card);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
class WGuiList;
|
||||
class WGuiMenu;
|
||||
class WSrcMTGSet;
|
||||
class WSrcCards;
|
||||
|
||||
class GameStateAwards: public GameState, public JGuiListener
|
||||
{
|
||||
@@ -16,7 +16,7 @@ class GameStateAwards: public GameState, public JGuiListener
|
||||
WGuiMenu * detailview;
|
||||
JQuad * mBg;
|
||||
JTexture * mBgTex;
|
||||
WSrcMTGSet * setSrc;
|
||||
WSrcCards * setSrc;
|
||||
SimpleMenu * menu;
|
||||
bool showMenu;
|
||||
bool showAlt;
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
#include "../include/PlayerData.h"
|
||||
#include "../include/DeckDataWrapper.h"
|
||||
#include "../include/DeckStats.h"
|
||||
#include "../include/WDataSrc.h"
|
||||
#include "../include/WGui.h"
|
||||
|
||||
#define NO_USER_ACTIVITY_HELP_DELAY 10
|
||||
#define NO_USER_ACTIVITY_SHOWCARD_DELAY 0.1
|
||||
@@ -28,7 +30,8 @@ enum
|
||||
STAGE_TRANSITION_DOWN = 4,
|
||||
STAGE_ONSCREEN_MENU = 5,
|
||||
STAGE_WELCOME = 6,
|
||||
STAGE_MENU = 7
|
||||
STAGE_MENU = 7,
|
||||
STAGE_FILTERS = 8
|
||||
};
|
||||
|
||||
|
||||
@@ -41,6 +44,8 @@ enum
|
||||
#define MED_SPEED 5.0
|
||||
#define LOW_SPEED 1.5
|
||||
|
||||
#define MAX_SAVED_FILTERS 8
|
||||
|
||||
static const int STATS_FOR_TURNS = 8;
|
||||
static const int STATS_MAX_MANA_COST = 9;
|
||||
|
||||
@@ -100,11 +105,12 @@ private:
|
||||
int mStage;
|
||||
int nbDecks;
|
||||
int deckNum;
|
||||
int colorFilter;
|
||||
int useFilter[2];
|
||||
JMusic * bgMusic;
|
||||
JQuad * backQuad;
|
||||
WGuiFilters * filterDeck;
|
||||
WGuiFilters * filterCollection;
|
||||
SimpleMenu * welcome_menu;
|
||||
bool showing_user_deck;
|
||||
SimpleMenu * menu;
|
||||
SimpleMenu * sellMenu;
|
||||
PriceList* pricelist;
|
||||
@@ -116,7 +122,6 @@ private:
|
||||
MTGCard * currentCard;
|
||||
MTGCard * cardIndex[7];
|
||||
int hudAlpha;
|
||||
float scrollSpeed;
|
||||
int delSellMenu;
|
||||
string newDeckname;
|
||||
StatsWrapper stw;
|
||||
@@ -127,12 +132,12 @@ public:
|
||||
virtual ~GameStateDeckViewer();
|
||||
void updateDecks();
|
||||
void rotateCards(int direction);
|
||||
void loadIndexes(MTGCard * current = NULL);
|
||||
void loadIndexes();
|
||||
void updateFilters();
|
||||
void switchDisplay();
|
||||
void Start();
|
||||
virtual void End();
|
||||
void addRemove(MTGCard * card);
|
||||
int Remove(MTGCard * card);
|
||||
virtual void Update(float dt);
|
||||
void renderOnScreenBasicInfo();
|
||||
void renderSlideBar();
|
||||
|
||||
@@ -4,7 +4,11 @@
|
||||
#include <JGE.h>
|
||||
#include "../include/GameState.h"
|
||||
#include "../include/SimpleMenu.h"
|
||||
#include "../include/ShopItem.h"
|
||||
#include "../include/OptionItem.h"
|
||||
#include "../include/PriceList.h"
|
||||
#include "../include/PlayerData.h"
|
||||
#include "../include/CardDisplay.h"
|
||||
#include "../include/DeckDataWrapper.h"
|
||||
#include "../include/Tasks.h"
|
||||
|
||||
|
||||
@@ -14,28 +18,74 @@
|
||||
#define STAGE_SHOP_SHOP 4
|
||||
#define STAGE_SHOP_TASKS 5
|
||||
#define STAGE_FADE_IN 6
|
||||
#define STAGE_ASK_ABOUT 7
|
||||
|
||||
#define BOOSTER_SLOTS 3
|
||||
#define SHOP_SLOTS 11
|
||||
|
||||
#define SHOP_ITEMS SHOP_SLOTS+1
|
||||
#define LIST_FADEIN 11
|
||||
|
||||
struct ShopBooster{
|
||||
MTGSetInfo * mainSet;
|
||||
MTGSetInfo * altSet;
|
||||
};
|
||||
|
||||
class GameStateShop: public GameState, public JGuiListener
|
||||
{
|
||||
private:
|
||||
ShopItems * shop;
|
||||
WSrcCards * srcCards;
|
||||
JTexture * altThumb[8];
|
||||
JQuad * mBack;
|
||||
JQuad * mBg;
|
||||
JTexture * mBgTex;
|
||||
TaskList * taskList;
|
||||
float mElapsed;
|
||||
WGuiMenu * shopMenu;
|
||||
WGuiFilters * filterMenu; //Filter menu slides in sideways from right, or up from bottom.
|
||||
WGuiCardImage * bigDisplay;
|
||||
CardDisplay * boosterDisplay;
|
||||
vector<MTGCardInstance*> subBooster;
|
||||
MTGDeck * booster;
|
||||
bool bListCards;
|
||||
|
||||
SimpleMenu * menu;
|
||||
void beginFilters();
|
||||
void makeDisplay(MTGDeck * d);
|
||||
void deleteDisplay();
|
||||
|
||||
WSyncable bigSync;
|
||||
SimpleMenu * menu;
|
||||
PriceList * pricelist;
|
||||
PlayerData * playerdata;
|
||||
bool mTouched;
|
||||
int mPrices[SHOP_ITEMS];
|
||||
int mCounts[SHOP_ITEMS];
|
||||
int mInventory[SHOP_ITEMS];
|
||||
int lightAlpha;
|
||||
int alphaChange;
|
||||
|
||||
DeckDataWrapper * myCollection;
|
||||
|
||||
int mStage;
|
||||
char starterBuffer[128], boosterBuffer[128];
|
||||
char setNames[SHOP_BOOSTERS][128];
|
||||
int setIds[SHOP_BOOSTERS];
|
||||
ShopBooster mBooster[BOOSTER_SLOTS];
|
||||
|
||||
void load();
|
||||
void save(bool force=false);
|
||||
|
||||
void assembleBooster(int controlId);
|
||||
void beginPurchase(int controlId);
|
||||
void purchaseCard(int controlId);
|
||||
void purchaseBooster(int controlId);
|
||||
int purchasePrice(int offset);
|
||||
string descPurchase(int controlId, bool tiny = false);
|
||||
|
||||
|
||||
static int randomKey;
|
||||
public:
|
||||
GameStateShop(GameApp* parent);
|
||||
virtual ~GameStateShop();
|
||||
|
||||
static void passOneDay() {randomKey = rand();};
|
||||
virtual void Start();
|
||||
virtual void End();
|
||||
virtual void Create();
|
||||
@@ -43,6 +93,7 @@ class GameStateShop: public GameState, public JGuiListener
|
||||
virtual void Update(float dt);
|
||||
virtual void Render();
|
||||
virtual void ButtonPressed(int controllerId, int controlId);
|
||||
static float _x1[],_y1[],_x2[],_y2[],_x3[],_y3[],_x4[],_y4[];
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ using namespace std;
|
||||
|
||||
class MTGCard {
|
||||
protected:
|
||||
friend class MTGSetInfo;
|
||||
int mtgid;
|
||||
char rarity;
|
||||
char image_name[MTGCARD_NAME_SIZE];
|
||||
@@ -38,7 +39,6 @@ class MTGCard {
|
||||
int getId();
|
||||
|
||||
|
||||
|
||||
char getRarity();
|
||||
void setRarity(char _rarity);
|
||||
|
||||
|
||||
@@ -61,14 +61,16 @@ public:
|
||||
int Add(const char * subtype);
|
||||
int findSet(string value);
|
||||
int findBlock(string s);
|
||||
|
||||
int size();
|
||||
|
||||
int getSetNum(MTGSetInfo*i);
|
||||
|
||||
int operator[](string id); //Returns set id index, -1 for failure.
|
||||
string operator[](int id); //Returns set id name, "" for failure.
|
||||
|
||||
MTGSetInfo* getInfo(int setID);
|
||||
|
||||
MTGSetInfo* randomSet(int blockId = -1, int atleast = -1); //Tries to match, otherwise 100% random unlocked set
|
||||
|
||||
protected:
|
||||
vector<string> blocks;
|
||||
vector<MTGSetInfo*> setinfo;
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
#include <string>
|
||||
#include "../include/GameApp.h"
|
||||
#include "../include/GameOptions.h"
|
||||
#include "../include/WFilter.h"
|
||||
#include "../include/WDataSrc.h"
|
||||
#include "../include/WGui.h"
|
||||
|
||||
using std::string;
|
||||
|
||||
@@ -16,122 +19,6 @@ using std::string;
|
||||
#define PATH_MAX 4096
|
||||
#endif
|
||||
|
||||
class WGuiColor{
|
||||
public:
|
||||
enum {
|
||||
SCROLLBAR,
|
||||
SCROLLBUTTON,
|
||||
//Foregrounds only after this
|
||||
TEXT,
|
||||
TEXT_HEADER,
|
||||
TEXT_FAIL,
|
||||
TEXT_TAB,
|
||||
TEXT_BODY,
|
||||
//Backgrounds only after this
|
||||
BACK,
|
||||
BACK_ALERT,
|
||||
BACK_HEADER,
|
||||
BACK_FAIL,
|
||||
BACK_TAB,
|
||||
};
|
||||
};
|
||||
|
||||
//Complete item interface
|
||||
class WGuiBase{
|
||||
public:
|
||||
WGuiBase() {};
|
||||
virtual ~WGuiBase() {};
|
||||
|
||||
virtual bool Selectable() {return true;};
|
||||
virtual bool isModal() {return false;};
|
||||
virtual bool Visible() {return true;};
|
||||
|
||||
virtual bool Changed() {return false;};
|
||||
virtual void confirmChange(bool confirmed) {};
|
||||
virtual PIXEL_TYPE getColor(int type);
|
||||
|
||||
virtual void Entering(u32 key)=0;
|
||||
virtual bool Leaving(u32 key)=0;
|
||||
|
||||
virtual void Update(float dt)=0;
|
||||
virtual void updateValue(){};
|
||||
virtual void Render()=0;
|
||||
virtual void setData()=0;
|
||||
virtual void ButtonPressed(int controllerId, int controlId){};
|
||||
virtual void Reload(){};
|
||||
virtual void Overlay(){};
|
||||
virtual void Underlay(){};
|
||||
|
||||
virtual bool hasFocus()=0;
|
||||
virtual void setFocus(bool bFocus)=0;
|
||||
virtual float getX()=0;
|
||||
virtual float getY()=0;
|
||||
virtual float getWidth()=0;
|
||||
virtual float getHeight()=0;
|
||||
virtual int getId() {return INVALID_ID;};
|
||||
virtual string getDisplay(){return "";};
|
||||
|
||||
virtual void setModal(bool val){};
|
||||
virtual void setDisplay(string s){};
|
||||
virtual void setX(float _x){};
|
||||
virtual void setY(float _y){};
|
||||
virtual void setWidth(float _w){};
|
||||
virtual void setHeight(float _h){};
|
||||
virtual void setId(int _id){};
|
||||
virtual void setHidden(bool bHidden) {};
|
||||
virtual void setVisible(bool bVisisble) {};
|
||||
|
||||
virtual void renderBack(WGuiBase * it);
|
||||
virtual void subBack(WGuiBase * item) {};
|
||||
|
||||
virtual bool CheckUserInput(u32 key) {return false;};
|
||||
};
|
||||
|
||||
//This is our base class for concrete items.
|
||||
class WGuiItem: public WGuiBase{
|
||||
public:
|
||||
virtual void Entering(u32 key);
|
||||
virtual bool Leaving(u32 key);
|
||||
virtual bool CheckUserInput(u32 key);
|
||||
virtual void Update(float dt) {};
|
||||
virtual void Render();
|
||||
|
||||
WGuiItem(string _display, u8 _mF = 0);
|
||||
virtual ~WGuiItem() {};
|
||||
|
||||
string _(string input); //Override global with our flag checker.
|
||||
|
||||
virtual void setData(){};
|
||||
|
||||
virtual bool hasFocus() {return mFocus;};
|
||||
virtual void setFocus(bool bFocus) {mFocus = bFocus;};
|
||||
|
||||
virtual string getDisplay(){return displayValue;};
|
||||
virtual void setDisplay(string s){displayValue=s;};
|
||||
|
||||
virtual int getId() {return INVALID_ID;};
|
||||
virtual float getX() {return x;};
|
||||
virtual float getY() {return y;};
|
||||
virtual float getWidth() {return width;};
|
||||
virtual float getHeight() {return height;};
|
||||
virtual void setId(int _id){};
|
||||
virtual void setX(float _x){x = _x;};
|
||||
virtual void setY(float _y){y = _y;};
|
||||
virtual void setWidth(float _w){width = _w;};
|
||||
virtual void setHeight(float _h){height = _h;};
|
||||
enum {
|
||||
NO_TRANSLATE = (1<<1),
|
||||
};
|
||||
|
||||
u8 mFlags;
|
||||
|
||||
protected:
|
||||
bool mFocus;
|
||||
float x, y;
|
||||
float width, height;
|
||||
string displayValue;
|
||||
};
|
||||
|
||||
class OptionItem: public WGuiItem{
|
||||
public:
|
||||
OptionItem( int _id, string _displayValue);
|
||||
@@ -145,327 +32,6 @@ protected:
|
||||
int id;
|
||||
};
|
||||
|
||||
class WDataSource{
|
||||
public:
|
||||
WDataSource() {};
|
||||
virtual JQuad * getImage() {return NULL;};
|
||||
virtual MTGCard * getCard() {return NULL;};
|
||||
virtual bool thisCard(int mtgid) {return false;};
|
||||
virtual int getControlID() {return -1;}; //TODO FIXME: Need a "not a valid button" define.
|
||||
virtual int getPos() {return -1;};
|
||||
virtual bool setPos(int pos) {return false;};
|
||||
virtual bool next() {return false;};
|
||||
virtual bool prev() {return false;};
|
||||
virtual void Update(float dt) {};
|
||||
};
|
||||
|
||||
class WSrcImage: public WDataSource{
|
||||
public:
|
||||
virtual JQuad * getImage();
|
||||
WSrcImage(string s);
|
||||
|
||||
protected:
|
||||
string filename;
|
||||
};
|
||||
|
||||
class WSrcMTGSet: public WDataSource{
|
||||
public:
|
||||
WSrcMTGSet(int setid, float mDelay=0.2);
|
||||
|
||||
virtual JQuad * getImage();
|
||||
virtual MTGCard * getCard();
|
||||
|
||||
virtual bool thisCard(int mtgid);
|
||||
virtual bool next();
|
||||
virtual bool prev();
|
||||
virtual int getPos() {return currentCard;};
|
||||
virtual bool setPos(int pos);
|
||||
virtual void Update(float dt);
|
||||
|
||||
protected:
|
||||
vector<MTGCard*> cards;
|
||||
int currentCard;
|
||||
float mDelay;
|
||||
float mLastInput;
|
||||
};
|
||||
|
||||
|
||||
struct WCardSort{
|
||||
public:
|
||||
virtual bool operator()(const MTGCard*l, const MTGCard*r) = 0;
|
||||
};
|
||||
|
||||
struct WCSortCollector: public WCardSort{
|
||||
bool operator()(const MTGCard*l, const MTGCard*r);
|
||||
};
|
||||
|
||||
struct WCSortAlpha: public WCardSort{
|
||||
bool operator()(const MTGCard*l, const MTGCard*r);
|
||||
};
|
||||
|
||||
class WGuiImage: public WGuiItem{
|
||||
public:
|
||||
WGuiImage(WDataSource * wds, float _w = 0, float _h = 0, int _margin = 0);
|
||||
virtual bool Selectable() {return false;};
|
||||
virtual void Render();
|
||||
virtual float getHeight();
|
||||
virtual void imageScale(float _w, float _h);
|
||||
protected:
|
||||
int margin;
|
||||
float imgW, imgH;
|
||||
WDataSource * source;
|
||||
};
|
||||
|
||||
class WGuiCardImage: public WGuiImage{
|
||||
public:
|
||||
WGuiCardImage(WDataSource * wds, int _offset=0);
|
||||
virtual void Render();
|
||||
protected:
|
||||
int offset;
|
||||
};
|
||||
|
||||
//This is our base class for decorators. It wraps everything about WGuiBase.
|
||||
class WGuiDeco: public WGuiBase{
|
||||
public:
|
||||
WGuiDeco(WGuiBase* _it) {it = _it;};
|
||||
virtual ~WGuiDeco() {SAFE_DELETE(it);};
|
||||
|
||||
virtual bool Selectable() {return it->Selectable();};
|
||||
virtual bool Visible() {return it->Visible();};
|
||||
virtual bool Changed() {return it->Changed();};
|
||||
virtual void confirmChange(bool confirmed) {it->confirmChange(confirmed);};
|
||||
|
||||
virtual void Entering(u32 key) {it->Entering(key);};
|
||||
virtual bool Leaving(u32 key) {return it->Leaving(key);};
|
||||
virtual void Update(float dt) {it->Update(dt);};
|
||||
virtual void updateValue() {it->updateValue();};
|
||||
virtual void Reload() {it->Reload();};
|
||||
virtual void Overlay() {it->Overlay();};
|
||||
virtual void Underlay() {it->Underlay();};
|
||||
virtual void Render() {it->Render();};
|
||||
virtual void setData() {it->setData();};
|
||||
|
||||
virtual void ButtonPressed(int controllerId, int controlId) {it->ButtonPressed(controllerId, controlId);};
|
||||
|
||||
virtual bool hasFocus() {return it->hasFocus();};
|
||||
virtual string getDisplay() {return it->getDisplay();};
|
||||
virtual int getId() {return it->getId();};
|
||||
virtual float getX() {return it->getX();};
|
||||
virtual float getY() {return it->getY();};
|
||||
virtual float getWidth() {return it->getWidth();};
|
||||
virtual float getHeight() {return it->getHeight();};
|
||||
virtual PIXEL_TYPE getColor(int type) {return it->getColor(type);};
|
||||
WGuiBase * getDecorated() {return it;};
|
||||
|
||||
virtual void setFocus(bool bFocus) {it->setFocus(bFocus);};
|
||||
virtual void setDisplay(string s) {it->setDisplay(s);};
|
||||
virtual void setId(int _id) {it->setId(_id);};
|
||||
virtual void setX(float _x) {it->setX(_x);};
|
||||
virtual void setY(float _y) {it->setY(_y);};
|
||||
virtual void setWidth(float _w) {it->setWidth(_w);};
|
||||
virtual void setHeight(float _h) {it->setHeight(_h);};
|
||||
virtual void setHidden(bool bHidden) {it->setHidden(bHidden);};
|
||||
virtual void setVisible(bool bVisisble) {it->setVisible(bVisisble);};
|
||||
virtual bool CheckUserInput(u32 key) {return it->CheckUserInput(key);};
|
||||
protected:
|
||||
WGuiBase * it;
|
||||
};
|
||||
|
||||
class WGuiAward: public WGuiItem{
|
||||
public:
|
||||
WGuiAward(int _id, string name, string _text, string _details="");
|
||||
virtual ~WGuiAward();
|
||||
virtual void Render();
|
||||
virtual bool Selectable() {return Visible();};
|
||||
virtual bool Visible();
|
||||
virtual int getId() {return id;};
|
||||
virtual void Underlay();
|
||||
virtual void Overlay();
|
||||
|
||||
protected:
|
||||
string details;
|
||||
int id;
|
||||
string text;
|
||||
};
|
||||
|
||||
class WGuiSplit: public WGuiItem{
|
||||
public:
|
||||
WGuiSplit(WGuiBase* _left,WGuiBase* _right);
|
||||
virtual ~WGuiSplit();
|
||||
|
||||
virtual void Reload();
|
||||
virtual void Overlay();
|
||||
virtual void Underlay();
|
||||
virtual void setData();
|
||||
virtual bool isModal();
|
||||
virtual void setModal(bool val);
|
||||
virtual void Render();
|
||||
virtual void Update(float dt);
|
||||
virtual void setX(float _x);
|
||||
virtual void setY(float _y);
|
||||
virtual void setWidth(float _w);
|
||||
virtual void setHeight(float _h);
|
||||
virtual float getHeight();
|
||||
virtual void ButtonPressed(int controllerId, int controlId);
|
||||
virtual void confirmChange(bool confirmed);
|
||||
|
||||
virtual void Entering(u32 key);
|
||||
virtual bool Leaving(u32 key);
|
||||
virtual bool CheckUserInput(u32 key);
|
||||
|
||||
bool bRight;
|
||||
float percentRight;
|
||||
WGuiBase* right;
|
||||
WGuiBase* left;
|
||||
};
|
||||
|
||||
class WDecoConfirm: public WGuiDeco{
|
||||
public:
|
||||
WDecoConfirm(JGuiListener * _listener, WGuiBase * it);
|
||||
virtual ~WDecoConfirm();
|
||||
|
||||
virtual bool isModal();
|
||||
virtual void setData();
|
||||
virtual void setModal(bool val);
|
||||
virtual void Entering(u32 key);
|
||||
virtual bool Leaving(u32 key);
|
||||
virtual void Update(float dt);
|
||||
virtual void Overlay();
|
||||
virtual void ButtonPressed(int controllerId, int controlId);
|
||||
virtual bool CheckUserInput(u32 key);
|
||||
|
||||
string confirm;
|
||||
string cancel;
|
||||
protected:
|
||||
enum {
|
||||
OP_UNCONFIRMED,
|
||||
OP_CONFIRMING,
|
||||
OP_CONFIRMED,
|
||||
} mState;
|
||||
SimpleMenu * confirmMenu;
|
||||
JGuiListener * listener;
|
||||
bool bModal;
|
||||
};
|
||||
|
||||
class WDecoEnum : public WGuiDeco {
|
||||
public:
|
||||
WDecoEnum(WGuiBase * _it,EnumDefinition *_edef = NULL);
|
||||
virtual void Render();
|
||||
string lookupVal(int value);
|
||||
protected:
|
||||
EnumDefinition * edef;
|
||||
};
|
||||
|
||||
class WDecoCheat: public WGuiDeco {
|
||||
public:
|
||||
WDecoCheat(WGuiBase * _it);
|
||||
virtual bool Visible();
|
||||
bool Selectable();
|
||||
virtual void Reload();
|
||||
protected:
|
||||
bool bVisible;
|
||||
};
|
||||
|
||||
class WGuiButton: public WGuiDeco{
|
||||
public:
|
||||
WGuiButton( WGuiBase* _it, int _controller, int _control, JGuiListener * jgl);
|
||||
virtual void updateValue();
|
||||
virtual bool CheckUserInput(u32 key);
|
||||
virtual bool Selectable() {return Visible();};
|
||||
virtual PIXEL_TYPE getColor(int type);
|
||||
protected:
|
||||
int control, controller;
|
||||
JGuiListener * mListener;
|
||||
};
|
||||
|
||||
class WGuiHeader:public WGuiItem{
|
||||
public:
|
||||
|
||||
WGuiHeader(string _displayValue): WGuiItem(_displayValue) {};
|
||||
virtual bool Selectable() {return false;};
|
||||
virtual void Render();
|
||||
|
||||
};
|
||||
|
||||
class WDecoStyled: public WGuiDeco{
|
||||
public:
|
||||
WDecoStyled(WGuiItem * _it) : WGuiDeco(_it) {mStyle=DS_DEFAULT;};
|
||||
PIXEL_TYPE getColor(int type);
|
||||
void subBack(WGuiBase * item);
|
||||
enum {
|
||||
DS_DEFAULT = (1<<0),
|
||||
DS_COLOR_BRIGHT = (1<<1),
|
||||
DS_COLOR_DARK = (1<<2),
|
||||
DS_STYLE_ALERT = (1<<3),
|
||||
DS_STYLE_EDGED = (1<<4),
|
||||
DS_STYLE_BACKLESS = (1<<5),
|
||||
};
|
||||
|
||||
u8 mStyle;
|
||||
};
|
||||
|
||||
class WGuiMenu: public WGuiItem{
|
||||
public:
|
||||
|
||||
virtual ~WGuiMenu();
|
||||
WGuiMenu(u32 next, u32 prev);
|
||||
|
||||
virtual void Render();
|
||||
virtual void Reload();
|
||||
virtual void Update(float dt);
|
||||
virtual void ButtonPressed(int controllerId, int controlId);
|
||||
virtual void Add(WGuiBase* item); //Remember, does not set X & Y of items automatically.
|
||||
virtual void confirmChange(bool confirmed);
|
||||
virtual bool Leaving(u32 key);
|
||||
virtual void Entering(u32 key);
|
||||
virtual void subBack(WGuiBase * item);
|
||||
virtual bool CheckUserInput(u32 key);
|
||||
|
||||
|
||||
WGuiBase * Current();
|
||||
virtual bool nextItem();
|
||||
virtual bool prevItem();
|
||||
virtual bool isModal();
|
||||
virtual void setModal(bool val);
|
||||
|
||||
void setData();
|
||||
|
||||
protected:
|
||||
u32 buttonNext, buttonPrev;
|
||||
vector<WGuiBase*> items;
|
||||
int currentItem;
|
||||
u32 held;
|
||||
float duration;
|
||||
};
|
||||
|
||||
class WGuiList: public WGuiMenu{
|
||||
public:
|
||||
WGuiList(string name, WDataSource * syncme = NULL);
|
||||
|
||||
string failMsg;
|
||||
|
||||
virtual void Render();
|
||||
virtual void confirmChange(bool confirmed);
|
||||
virtual void ButtonPressed(int controllerId, int controlId);
|
||||
virtual void setData();
|
||||
|
||||
virtual bool nextItem();
|
||||
virtual bool prevItem();
|
||||
|
||||
WGuiBase * operator[](int);
|
||||
protected:
|
||||
WDataSource * sync;
|
||||
bool mFocus;
|
||||
};
|
||||
|
||||
class WGuiTabMenu: public WGuiMenu {
|
||||
public:
|
||||
WGuiTabMenu() : WGuiMenu(PSP_CTRL_RTRIGGER,PSP_CTRL_LTRIGGER) {};
|
||||
virtual void Render();
|
||||
virtual void Add(WGuiBase * it);
|
||||
void save();
|
||||
};
|
||||
|
||||
class OptionInteger:public OptionItem{
|
||||
public:
|
||||
int value; //Current value.
|
||||
|
||||
@@ -1,93 +0,0 @@
|
||||
#ifndef _SHOP_ITEM_H
|
||||
#define _SHOP_ITEM_H
|
||||
|
||||
#include <JGui.h>
|
||||
#include <JLBFont.h>
|
||||
#include "SimpleMenu.h"
|
||||
#include "MTGDeck.h"
|
||||
#include "../include/PriceList.h"
|
||||
#include "../include/PlayerData.h"
|
||||
#include "../include/CardDisplay.h"
|
||||
#include "../include/DeckDataWrapper.h"
|
||||
|
||||
#include <string>
|
||||
using std::string;
|
||||
|
||||
class hgeDistortionMesh;
|
||||
|
||||
#define SHOP_BOOSTERS 3
|
||||
|
||||
class ShopItem:public JGuiObject{
|
||||
private:
|
||||
friend class ShopItems;
|
||||
bool mHasFocus;
|
||||
bool mRelease;
|
||||
JLBFont *mFont;
|
||||
string mText;
|
||||
float xy[8];
|
||||
JQuad * quad;
|
||||
JQuad * thumb;
|
||||
float mScale;
|
||||
float mTargetScale;
|
||||
hgeDistortionMesh* mesh;
|
||||
|
||||
void updateThumb();
|
||||
|
||||
public:
|
||||
int nameCount;
|
||||
int quantity;
|
||||
MTGCard * card;
|
||||
int price;
|
||||
ShopItem(int id, JLBFont * font, int _cardid, float _xy[], bool hasFocus, MTGAllCards * collection, int _price, DeckDataWrapper * ddw);
|
||||
ShopItem(int id, JLBFont * font, char* text, JQuad * _quad, JQuad * _thumb,float _xy[], bool hasFocus, int _price);
|
||||
~ShopItem();
|
||||
int updateCount(DeckDataWrapper * ddw);
|
||||
|
||||
virtual void Render();
|
||||
virtual void Update(float dt);
|
||||
|
||||
virtual void Entering();
|
||||
virtual bool Leaving(u32 key);
|
||||
virtual bool ButtonPressed();
|
||||
|
||||
const char * getText();
|
||||
virtual ostream& toString(ostream& out) const;
|
||||
};
|
||||
|
||||
class ShopItems:public JGuiController,public JGuiListener{
|
||||
private:
|
||||
PlayerData * playerdata;
|
||||
PriceList * pricelist;
|
||||
int mX, mY, mHeight;
|
||||
JLBFont* mFont;
|
||||
JTexture * mBgAATex;
|
||||
JQuad * mBgAA;
|
||||
MTGAllCards * collection;
|
||||
SimpleMenu * dialog;
|
||||
int showPriceDialog;
|
||||
int setIds[SHOP_BOOSTERS];
|
||||
MTGCardInstance * displayCards[100];
|
||||
CardDisplay * display;
|
||||
void safeDeleteDisplay();
|
||||
DeckDataWrapper * myCollection;
|
||||
|
||||
int lightAlpha;
|
||||
int alphaChange;
|
||||
|
||||
public:
|
||||
bool showCardList;
|
||||
ShopItems(int id, JGuiListener* listener, JLBFont* font, int x, int y, MTGAllCards * _collection, int _setIds[]);
|
||||
~ShopItems();
|
||||
void Render();
|
||||
virtual void Update(float dt);
|
||||
void Add(int cardid);
|
||||
void Add(char * text, JQuad * quad, JQuad * thumb,int _price);
|
||||
void pricedialog(int id, int mode=1);
|
||||
virtual void ButtonPressed(int controllerId, int controlId);
|
||||
bool CheckUserInput(u32 key);
|
||||
void savePriceList();
|
||||
void saveAll();
|
||||
static float _x1[],_y1[],_x2[],_y2[],_x3[],_y3[],_x4[],_y4[];
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,126 @@
|
||||
#ifndef _WDATASRC_H_
|
||||
#define _WDATASRC_H_
|
||||
|
||||
class WCardFilter;
|
||||
struct WCardSort;
|
||||
struct WDistort;
|
||||
class PriceList;
|
||||
class MTGDeck;
|
||||
class MTGAllCards;
|
||||
|
||||
class WSyncable{
|
||||
public:
|
||||
WSyncable(int i=0) {hooked = NULL;currentPos = 0;};
|
||||
virtual ~WSyncable() {};
|
||||
//Local
|
||||
virtual bool Hook(WSyncable* s);
|
||||
virtual int getOffset() {return currentPos;};
|
||||
virtual bool setOffset(int i) {currentPos = i; return true;};
|
||||
//Recursive
|
||||
virtual int getPos();
|
||||
virtual bool next();
|
||||
virtual bool prev();
|
||||
protected:
|
||||
WSyncable * hooked; //Simple link list
|
||||
int currentPos;
|
||||
};
|
||||
|
||||
class WDataSource: public WSyncable{
|
||||
public:
|
||||
WDataSource() {};
|
||||
virtual JQuad * getImage(int offset=0) {return NULL;};
|
||||
virtual JQuad * getThumb(int offset=0) {return NULL;};
|
||||
virtual MTGCard * getCard(int offset=0, bool ignore=false) {return NULL;};
|
||||
virtual MTGDeck * getDeck(int offset=0) {return NULL;};
|
||||
virtual WDistort * getDistort(int offset=0) {return NULL;};
|
||||
virtual bool thisCard(int mtgid) {return false;};
|
||||
virtual int getControlID() {return -1;}; //TODO FIXME: Need a "not a valid button" define.
|
||||
virtual void Update(float dt) {mLastInput += dt;};
|
||||
virtual void Touch() {mLastInput = 0;};
|
||||
virtual float getElapsed() {return mLastInput;};
|
||||
virtual void setElapsed(float f) {mLastInput = f;};
|
||||
protected:
|
||||
float mLastInput;
|
||||
};
|
||||
|
||||
class WSrcImage: public WDataSource{
|
||||
public:
|
||||
virtual JQuad * getImage(int offset=0);
|
||||
WSrcImage(string s);
|
||||
|
||||
protected:
|
||||
string filename;
|
||||
};
|
||||
|
||||
class WSrcCards: public WDataSource{
|
||||
public:
|
||||
WSrcCards(float delay=0.2);
|
||||
~WSrcCards();
|
||||
|
||||
virtual JQuad * getImage(int offset=0);
|
||||
virtual JQuad * getThumb(int offset=0);
|
||||
virtual MTGCard * getCard(int offset=0, bool ignore=false);
|
||||
virtual int Size(bool all=false); //Returns the number of cards currently matched
|
||||
|
||||
virtual void Shuffle();
|
||||
virtual bool thisCard(int mtgid);
|
||||
virtual bool next();
|
||||
virtual bool prev();
|
||||
|
||||
virtual void Sort(int method);
|
||||
virtual bool setOffset(int pos);
|
||||
virtual void addFilter(WCardFilter * f);
|
||||
virtual void clearFilters();
|
||||
virtual bool matchesFilters(MTGCard * c);
|
||||
virtual void validateFilters();
|
||||
virtual void bakeFilters(); //Discards all invalidated cards.
|
||||
virtual float filterFee();
|
||||
|
||||
virtual int addToDeck(MTGDeck * i, int num=-1); //Returns num that didn't add
|
||||
virtual int loadMatches(MTGAllCards* ac); //loadMatches adds the cards from something
|
||||
virtual int loadMatches(MTGDeck * deck); //into this, if it matches our filter
|
||||
virtual int loadMatches(WSrcCards* src, bool all=false); //If all==true, ignore filters on src.
|
||||
|
||||
enum {
|
||||
MAX_CYCLES = 4, //How many cycles to search, for addToDeck
|
||||
SORT_COLLECTOR,
|
||||
SORT_ALPHA
|
||||
};
|
||||
protected:
|
||||
vector<MTGCard*> cards;
|
||||
vector<size_t> validated;
|
||||
WCardFilter * filtersRoot;
|
||||
float mDelay;
|
||||
};
|
||||
|
||||
class WSrcUnlockedCards: public WSrcCards{ //Only unlocked cards.
|
||||
public:
|
||||
WSrcUnlockedCards(float mDelay=0.2);
|
||||
};
|
||||
|
||||
class WSrcDeck: public WSrcCards{
|
||||
public:
|
||||
WSrcDeck(float delay=0.2) : WSrcCards(delay) {totalCards=0;};
|
||||
virtual int loadMatches(MTGDeck * deck);
|
||||
virtual int Add(MTGCard * c, int quantity=1);
|
||||
virtual int Remove(MTGCard * c, int quantity=1, bool erase=false);
|
||||
void Rebuild(MTGDeck * d);
|
||||
int count(MTGCard * c);
|
||||
int countByName(MTGCard * card, bool editions=false);
|
||||
int totalPrice();
|
||||
int totalCopies();
|
||||
protected:
|
||||
map<int,int> copies; //Maps MTGID to card counts.
|
||||
int totalCards;
|
||||
};
|
||||
|
||||
struct WCSortCollector{
|
||||
bool operator()(const MTGCard*l, const MTGCard*r);
|
||||
};
|
||||
|
||||
struct WCSortAlpha{
|
||||
bool operator()(const MTGCard*l, const MTGCard*r);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,136 @@
|
||||
#ifndef _WFILTER_H_
|
||||
#define _WFILTER_H_
|
||||
|
||||
class WCardFilter;
|
||||
|
||||
class WCFilterFactory{
|
||||
public:
|
||||
WCFilterFactory() {};
|
||||
static WCFilterFactory * GetInstance();
|
||||
static void Destroy();
|
||||
WCardFilter * Construct(string x);
|
||||
private:
|
||||
size_t findNext(string src, size_t start, char open='(', char close=')');
|
||||
WCardFilter * Leaf(string src);
|
||||
WCardFilter * Terminal(string type, string arg);
|
||||
static WCFilterFactory * me;
|
||||
};
|
||||
|
||||
class WCardFilter{
|
||||
public:
|
||||
WCardFilter() {};
|
||||
virtual ~WCardFilter() {};
|
||||
virtual bool isMatch(MTGCard * c) {return true;};
|
||||
virtual string getCode() = 0;
|
||||
virtual float filterFee() {return 0.0f;};
|
||||
};
|
||||
|
||||
class WCFBranch: public WCardFilter{
|
||||
public:
|
||||
WCFBranch(WCardFilter * a, WCardFilter * b) {lhs=a;rhs=b;};
|
||||
~WCFBranch() {SAFE_DELETE(lhs); SAFE_DELETE(rhs);};
|
||||
virtual bool isMatch(MTGCard * c) = 0;
|
||||
virtual string getCode() = 0;
|
||||
virtual WCardFilter * Right(){return rhs;};
|
||||
virtual WCardFilter * Left(){return lhs;};
|
||||
protected:
|
||||
WCardFilter *lhs, *rhs;
|
||||
};
|
||||
|
||||
class WCFilterOR: public WCFBranch{
|
||||
public:
|
||||
WCFilterOR(WCardFilter * a, WCardFilter * b): WCFBranch(a,b) {};
|
||||
bool isMatch(MTGCard *c);
|
||||
string getCode();
|
||||
float filterFee();
|
||||
};
|
||||
|
||||
class WCFilterAND: public WCFBranch{
|
||||
public:
|
||||
WCFilterAND(WCardFilter * a, WCardFilter * b): WCFBranch(a,b) {};
|
||||
bool isMatch(MTGCard *c) {return (lhs->isMatch(c) && rhs->isMatch(c));};
|
||||
string getCode();
|
||||
float filterFee();
|
||||
};
|
||||
|
||||
class WCFilterGROUP: public WCardFilter{
|
||||
public:
|
||||
WCFilterGROUP(WCardFilter * _k) {kid = _k;};
|
||||
~WCFilterGROUP() {SAFE_DELETE(kid);};
|
||||
bool isMatch(MTGCard *c) {return kid->isMatch(c);};
|
||||
string getCode();
|
||||
float filterFee() {return kid->filterFee();};
|
||||
protected:
|
||||
WCardFilter * kid;
|
||||
};
|
||||
|
||||
class WCFilterNOT: public WCardFilter{
|
||||
public:
|
||||
WCFilterNOT(WCardFilter * _k) {kid = _k;};
|
||||
~WCFilterNOT() {SAFE_DELETE(kid);};
|
||||
bool isMatch(MTGCard *c) {return !kid->isMatch(c);};
|
||||
string getCode();
|
||||
protected:
|
||||
WCardFilter * kid;
|
||||
};
|
||||
|
||||
class WCFilterNULL: public WCardFilter{
|
||||
public:
|
||||
WCFilterNULL() {};
|
||||
string getCode() {return "NULL";};
|
||||
bool isMatch(MTGCard *c) {return true;};
|
||||
};
|
||||
|
||||
|
||||
//Filter terminals:
|
||||
class WCFilterSet: public WCardFilter{
|
||||
public:
|
||||
WCFilterSet(int _setid=-1) {setid=_setid;};
|
||||
WCFilterSet(string arg);
|
||||
bool isMatch(MTGCard *c) {return (setid==-1 || c->setId == setid);};
|
||||
string getCode();
|
||||
float filterFee() {return 0.1f;};
|
||||
protected:
|
||||
int setid;
|
||||
};
|
||||
class WCFilterColor: public WCardFilter{
|
||||
public:
|
||||
WCFilterColor(int _c) {color = _c;};
|
||||
WCFilterColor(string arg);
|
||||
bool isMatch(MTGCard * c);
|
||||
string getCode();
|
||||
float filterFee() {return 0.1f;};
|
||||
protected:
|
||||
int color;
|
||||
};
|
||||
class WCFilterType: public WCardFilter{
|
||||
public:
|
||||
WCFilterType(string arg) {type = arg;};
|
||||
bool isMatch(MTGCard * c);
|
||||
string getCode();
|
||||
float filterFee() {return 0.2f;};
|
||||
protected:
|
||||
string type;
|
||||
};
|
||||
class WCFilterRarity: public WCardFilter{
|
||||
public:
|
||||
WCFilterRarity(char _r) {rarity = _r;};
|
||||
WCFilterRarity(string arg);
|
||||
bool isMatch(MTGCard * c);
|
||||
string getCode();
|
||||
float filterFee();
|
||||
protected:
|
||||
char rarity;
|
||||
};
|
||||
class WCFilterAbility: public WCardFilter{
|
||||
public:
|
||||
WCFilterAbility(int _a) {ability = _a;};
|
||||
WCFilterAbility(string arg);
|
||||
bool isMatch(MTGCard * c);
|
||||
string getCode();
|
||||
float filterFee();
|
||||
protected:
|
||||
int ability;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,479 @@
|
||||
#ifndef _WGUI_H_
|
||||
#define _WGUI_H_
|
||||
|
||||
class hgeDistortionMesh;
|
||||
|
||||
class WGuiColor{
|
||||
public:
|
||||
enum {
|
||||
SCROLLBAR,
|
||||
SCROLLBUTTON,
|
||||
//Foregrounds only after this
|
||||
TEXT,
|
||||
TEXT_HEADER,
|
||||
TEXT_FAIL,
|
||||
TEXT_TAB,
|
||||
TEXT_BODY,
|
||||
//Backgrounds only after this
|
||||
BACK,
|
||||
BACK_ALERT,
|
||||
BACK_HEADER,
|
||||
BACK_FAIL,
|
||||
BACK_TAB,
|
||||
};
|
||||
};
|
||||
|
||||
struct WDistort {
|
||||
WDistort();
|
||||
WDistort(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4);
|
||||
float & operator[](int p);
|
||||
protected:
|
||||
float xy[8];
|
||||
};
|
||||
|
||||
//Complete item interface
|
||||
class WGuiBase: public JGuiListener {
|
||||
public:
|
||||
WGuiBase() {};
|
||||
virtual ~WGuiBase() {};
|
||||
|
||||
virtual bool Selectable() {return true;};
|
||||
virtual bool isModal() {return false;};
|
||||
virtual bool Visible() {return true;};
|
||||
|
||||
virtual bool Changed() {return false;};
|
||||
virtual void confirmChange(bool confirmed) {};
|
||||
virtual PIXEL_TYPE getColor(int type);
|
||||
virtual float getMargin(int type) {return 4;};
|
||||
|
||||
virtual void Entering(u32 key)=0;
|
||||
virtual bool Leaving(u32 key)=0;
|
||||
|
||||
virtual void Update(float dt)=0;
|
||||
virtual void updateValue(){};
|
||||
virtual void Render()=0;
|
||||
virtual void setData()=0;
|
||||
virtual void ButtonPressed(int controllerId, int controlId){};
|
||||
virtual void Reload(){};
|
||||
virtual void Overlay(){};
|
||||
virtual void Underlay(){};
|
||||
|
||||
virtual bool hasFocus()=0;
|
||||
virtual void setFocus(bool bFocus)=0;
|
||||
virtual float getX()=0;
|
||||
virtual float getY()=0;
|
||||
virtual float getWidth()=0;
|
||||
virtual float getHeight()=0;
|
||||
virtual int getId() {return INVALID_ID;};
|
||||
virtual string getDisplay() const {return "";};
|
||||
virtual float minWidth(){return getWidth();};
|
||||
virtual float minHeight(){return getHeight();};
|
||||
|
||||
virtual void setModal(bool val){};
|
||||
virtual void setDisplay(string s){};
|
||||
virtual void setX(float _x){};
|
||||
virtual void setY(float _y){};
|
||||
virtual void setWidth(float _w){};
|
||||
virtual void setHeight(float _h){};
|
||||
virtual void setId(int _id){};
|
||||
virtual void setHidden(bool bHidden) {};
|
||||
virtual void setVisible(bool bVisisble) {};
|
||||
|
||||
virtual void renderBack(WGuiBase * it);
|
||||
virtual void subBack(WGuiBase * item) {};
|
||||
|
||||
virtual bool CheckUserInput(u32 key) {return false;};
|
||||
};
|
||||
|
||||
//This is our base class for concrete items.
|
||||
class WGuiItem: public WGuiBase{
|
||||
public:
|
||||
virtual void Entering(u32 key);
|
||||
virtual bool Leaving(u32 key);
|
||||
virtual bool CheckUserInput(u32 key);
|
||||
virtual void Update(float dt) {};
|
||||
virtual void Render();
|
||||
|
||||
WGuiItem(string _display, u8 _mF = 0);
|
||||
virtual ~WGuiItem() {};
|
||||
|
||||
string _(string input); //Override global with our flag checker.
|
||||
|
||||
virtual void setData(){};
|
||||
|
||||
virtual bool hasFocus() {return mFocus;};
|
||||
virtual void setFocus(bool bFocus) {mFocus = bFocus;};
|
||||
|
||||
virtual string getDisplay() const {return displayValue;};
|
||||
virtual void setDisplay(string s){displayValue=s;};
|
||||
|
||||
virtual int getId() {return INVALID_ID;};
|
||||
virtual float getX() {return x;};
|
||||
virtual float getY() {return y;};
|
||||
virtual float getWidth() {return width;};
|
||||
virtual float getHeight() {return height;};
|
||||
virtual float minWidth();
|
||||
virtual float minHeight();
|
||||
virtual void setId(int _id){};
|
||||
virtual void setX(float _x){x = _x;};
|
||||
virtual void setY(float _y){y = _y;};
|
||||
virtual void setWidth(float _w){width = _w;};
|
||||
virtual void setHeight(float _h){height = _h;};
|
||||
enum {
|
||||
NO_TRANSLATE = (1<<1),
|
||||
};
|
||||
|
||||
u8 mFlags;
|
||||
|
||||
protected:
|
||||
bool mFocus;
|
||||
float x, y;
|
||||
float width, height;
|
||||
string displayValue;
|
||||
};
|
||||
|
||||
class WGuiImage: public WGuiItem{
|
||||
public:
|
||||
WGuiImage(WDataSource * wds, float _w = 0, float _h = 0, int _margin = 0);
|
||||
virtual bool Selectable() {return false;};
|
||||
virtual void Render();
|
||||
virtual float getHeight();
|
||||
virtual void imageScale(float _w, float _h);
|
||||
virtual void setSource(WDataSource *s) {source = s;};
|
||||
protected:
|
||||
int margin;
|
||||
float imgW, imgH;
|
||||
WDataSource * source;};
|
||||
|
||||
class WGuiCardImage: public WGuiImage{
|
||||
public:
|
||||
WGuiCardImage(WDataSource * wds, bool _thumb=false);
|
||||
virtual void Render();
|
||||
WSyncable mOffset;
|
||||
protected:
|
||||
bool bThumb;
|
||||
};
|
||||
|
||||
class WGuiCardDistort: public WGuiCardImage{
|
||||
public:
|
||||
WGuiCardDistort(WDataSource * wds, bool _thumb=false, WDataSource * _distort=NULL);
|
||||
~WGuiCardDistort();
|
||||
virtual void Render();
|
||||
|
||||
WDistort xy;
|
||||
protected:
|
||||
hgeDistortionMesh* mesh;
|
||||
WDataSource * distortSrc;
|
||||
};
|
||||
|
||||
//This is our base class for decorators. It wraps everything about WGuiBase.
|
||||
class WGuiDeco: public WGuiBase{
|
||||
public:
|
||||
WGuiDeco(WGuiBase* _it) {it = _it;};
|
||||
virtual ~WGuiDeco() {SAFE_DELETE(it);};
|
||||
|
||||
virtual bool Selectable() {return it->Selectable();};
|
||||
virtual bool Visible() {return it->Visible();};
|
||||
virtual bool Changed() {return it->Changed();};
|
||||
virtual void confirmChange(bool confirmed) {it->confirmChange(confirmed);};
|
||||
|
||||
virtual void Entering(u32 key) {it->Entering(key);};
|
||||
virtual bool Leaving(u32 key) {return it->Leaving(key);};
|
||||
virtual void Update(float dt) {it->Update(dt);};
|
||||
virtual void updateValue() {it->updateValue();};
|
||||
virtual void Reload() {it->Reload();};
|
||||
virtual void Overlay() {it->Overlay();};
|
||||
virtual void Underlay() {it->Underlay();};
|
||||
virtual void Render() {it->Render();};
|
||||
virtual void setData() {it->setData();};
|
||||
|
||||
virtual void ButtonPressed(int controllerId, int controlId) {it->ButtonPressed(controllerId, controlId);};
|
||||
|
||||
virtual bool hasFocus() {return it->hasFocus();};
|
||||
virtual string getDisplay() const {return it->getDisplay();};
|
||||
virtual int getId() {return it->getId();};
|
||||
virtual float getX() {return it->getX();};
|
||||
virtual float getY() {return it->getY();};
|
||||
virtual float getWidth() {return it->getWidth();};
|
||||
virtual float getHeight() {return it->getHeight();};
|
||||
virtual PIXEL_TYPE getColor(int type) {return it->getColor(type);};
|
||||
WGuiBase * getDecorated() {return it;};
|
||||
|
||||
virtual void setFocus(bool bFocus) {it->setFocus(bFocus);};
|
||||
virtual void setDisplay(string s) {it->setDisplay(s);};
|
||||
virtual void setId(int _id) {it->setId(_id);};
|
||||
virtual void setX(float _x) {it->setX(_x);};
|
||||
virtual void setY(float _y) {it->setY(_y);};
|
||||
virtual void setWidth(float _w) {it->setWidth(_w);};
|
||||
virtual void setHeight(float _h) {it->setHeight(_h);};
|
||||
virtual void setHidden(bool bHidden) {it->setHidden(bHidden);};
|
||||
virtual void setVisible(bool bVisisble) {it->setVisible(bVisisble);};
|
||||
virtual bool CheckUserInput(u32 key) {return it->CheckUserInput(key);};
|
||||
protected:
|
||||
WGuiBase * it;
|
||||
};
|
||||
|
||||
class WGuiAward: public WGuiItem{
|
||||
public:
|
||||
WGuiAward(int _id, string name, string _text, string _details="");
|
||||
virtual ~WGuiAward();
|
||||
virtual void Render();
|
||||
virtual bool Selectable() {return Visible();};
|
||||
virtual bool Visible();
|
||||
virtual int getId() {return id;};
|
||||
virtual void Underlay();
|
||||
virtual void Overlay();
|
||||
|
||||
protected:
|
||||
string details;
|
||||
int id;
|
||||
string text;
|
||||
};
|
||||
|
||||
class WGuiSplit: public WGuiItem{
|
||||
public:
|
||||
WGuiSplit(WGuiBase* _left,WGuiBase* _right);
|
||||
virtual ~WGuiSplit();
|
||||
|
||||
virtual void Reload();
|
||||
virtual void Overlay();
|
||||
virtual void Underlay();
|
||||
virtual void setData();
|
||||
virtual bool isModal();
|
||||
virtual void setModal(bool val);
|
||||
virtual void Render();
|
||||
virtual void Update(float dt);
|
||||
virtual void setX(float _x);
|
||||
virtual void setY(float _y);
|
||||
virtual void setWidth(float _w);
|
||||
virtual void setHeight(float _h);
|
||||
virtual float getHeight();
|
||||
virtual void ButtonPressed(int controllerId, int controlId);
|
||||
virtual void confirmChange(bool confirmed);
|
||||
|
||||
virtual void Entering(u32 key);
|
||||
virtual bool Leaving(u32 key);
|
||||
virtual bool CheckUserInput(u32 key);
|
||||
|
||||
bool bRight;
|
||||
float percentRight;
|
||||
WGuiBase* right;
|
||||
WGuiBase* left;
|
||||
};
|
||||
|
||||
class WDecoConfirm: public WGuiDeco{
|
||||
public:
|
||||
WDecoConfirm(JGuiListener * _listener, WGuiBase * it);
|
||||
virtual ~WDecoConfirm();
|
||||
|
||||
virtual bool isModal();
|
||||
virtual void setData();
|
||||
virtual void setModal(bool val);
|
||||
virtual void Entering(u32 key);
|
||||
virtual bool Leaving(u32 key);
|
||||
virtual void Update(float dt);
|
||||
virtual void Overlay();
|
||||
virtual void ButtonPressed(int controllerId, int controlId);
|
||||
virtual bool CheckUserInput(u32 key);
|
||||
|
||||
string confirm;
|
||||
string cancel;
|
||||
protected:
|
||||
enum {
|
||||
OP_UNCONFIRMED,
|
||||
OP_CONFIRMING,
|
||||
OP_CONFIRMED,
|
||||
} mState;
|
||||
SimpleMenu * confirmMenu;
|
||||
JGuiListener * listener;
|
||||
bool bModal;
|
||||
};
|
||||
|
||||
class WDecoEnum : public WGuiDeco {
|
||||
public:
|
||||
WDecoEnum(WGuiBase * _it,EnumDefinition *_edef = NULL);
|
||||
virtual void Render();
|
||||
string lookupVal(int value);
|
||||
protected:
|
||||
EnumDefinition * edef;
|
||||
};
|
||||
|
||||
class WDecoCheat: public WGuiDeco {
|
||||
public:
|
||||
WDecoCheat(WGuiBase * _it);
|
||||
virtual bool Visible();
|
||||
bool Selectable();
|
||||
virtual void Reload();
|
||||
protected:
|
||||
bool bVisible;
|
||||
};
|
||||
|
||||
class WGuiButton: public WGuiDeco{
|
||||
public:
|
||||
WGuiButton( WGuiBase* _it, int _controller, int _control, JGuiListener * jgl);
|
||||
virtual void updateValue();
|
||||
virtual bool CheckUserInput(u32 key);
|
||||
virtual bool Selectable() {return Visible();};
|
||||
virtual PIXEL_TYPE getColor(int type);
|
||||
virtual int getControlID() {return control;};
|
||||
virtual int getControllerID() {return controller;};
|
||||
protected:
|
||||
int control, controller;
|
||||
JGuiListener * mListener;
|
||||
};
|
||||
|
||||
class WGuiHeader:public WGuiItem{
|
||||
public:
|
||||
WGuiHeader(string _displayValue): WGuiItem(_displayValue) {};
|
||||
virtual bool Selectable() {return false;};
|
||||
virtual void Render();
|
||||
};
|
||||
|
||||
class WDecoStyled: public WGuiDeco{
|
||||
public:
|
||||
WDecoStyled(WGuiItem * _it) : WGuiDeco(_it) {mStyle=DS_DEFAULT;};
|
||||
PIXEL_TYPE getColor(int type);
|
||||
void subBack(WGuiBase * item);
|
||||
enum {
|
||||
DS_DEFAULT = (1<<0),
|
||||
DS_COLOR_BRIGHT = (1<<1),
|
||||
DS_COLOR_DARK = (1<<2),
|
||||
DS_STYLE_ALERT = (1<<3),
|
||||
DS_STYLE_EDGED = (1<<4),
|
||||
DS_STYLE_BACKLESS = (1<<5),
|
||||
};
|
||||
|
||||
u8 mStyle;
|
||||
};
|
||||
|
||||
class WGuiMenu: public WGuiItem{
|
||||
public:
|
||||
friend class WGuiFilters;
|
||||
virtual ~WGuiMenu();
|
||||
WGuiMenu(u32 next, u32 prev, bool mDPad = false, WSyncable * syncme=NULL);
|
||||
|
||||
virtual void Render();
|
||||
virtual void Reload();
|
||||
virtual void Update(float dt);
|
||||
virtual void ButtonPressed(int controllerId, int controlId);
|
||||
virtual void Add(WGuiBase* item); //Remember, does not set X & Y of items automatically.
|
||||
virtual void confirmChange(bool confirmed);
|
||||
virtual bool Leaving(u32 key);
|
||||
virtual void Entering(u32 key);
|
||||
virtual void subBack(WGuiBase * item);
|
||||
virtual bool CheckUserInput(u32 key);
|
||||
WGuiBase * Current();
|
||||
virtual int getSelected() {return currentItem;};
|
||||
virtual bool nextItem();
|
||||
virtual bool prevItem();
|
||||
virtual bool isModal();
|
||||
virtual void setModal(bool val);
|
||||
|
||||
void setData();
|
||||
|
||||
protected:
|
||||
virtual void syncMove();
|
||||
virtual bool isButtonDir(u32 key, int dir); //For the DPad override.
|
||||
u32 buttonNext, buttonPrev;
|
||||
bool mDPad;
|
||||
vector<WGuiBase*> items;
|
||||
int currentItem;
|
||||
u32 held;
|
||||
WSyncable * sync;
|
||||
float duration;
|
||||
};
|
||||
|
||||
class WGuiList: public WGuiMenu{
|
||||
public:
|
||||
WGuiList(string name, WSyncable * syncme = NULL);
|
||||
|
||||
string failMsg;
|
||||
|
||||
virtual void Render();
|
||||
virtual void confirmChange(bool confirmed);
|
||||
virtual void ButtonPressed(int controllerId, int controlId);
|
||||
virtual void setData();
|
||||
WGuiBase * operator[](int);
|
||||
protected:
|
||||
bool mFocus;
|
||||
};
|
||||
class WGuiTabMenu: public WGuiMenu {
|
||||
public:
|
||||
WGuiTabMenu() : WGuiMenu(PSP_CTRL_RTRIGGER,PSP_CTRL_LTRIGGER) {};
|
||||
virtual void Render();
|
||||
virtual void Add(WGuiBase * it);
|
||||
void save();
|
||||
};
|
||||
class WGuiListRow: public WGuiList{
|
||||
public:
|
||||
WGuiListRow(string n, WSyncable * s = NULL);
|
||||
virtual void Render();
|
||||
};
|
||||
|
||||
class WGuiFilters: public WGuiItem {
|
||||
public:
|
||||
friend class WGuiFilterItem;
|
||||
WGuiFilters(string header, WSrcCards * src);
|
||||
~WGuiFilters();
|
||||
bool CheckUserInput(u32 key);
|
||||
string getCode(); //For use in filter factory.
|
||||
void Update(float dt);
|
||||
void Render();
|
||||
void Entering(u32 key);
|
||||
void addColumn();
|
||||
bool isAvailable(int type);
|
||||
bool isAvailableCode(string code);
|
||||
void Finish();
|
||||
bool isFinished() {return bFinished;};
|
||||
void ButtonPressed(int controllerId, int controlId);
|
||||
void buildList();
|
||||
protected:
|
||||
bool bFinished;
|
||||
WSrcCards* source;
|
||||
SimpleMenu* subMenu;
|
||||
WGuiList * list;
|
||||
};
|
||||
|
||||
class WGuiFilterItem: public WGuiItem {
|
||||
public:
|
||||
friend class WGuiFilters;
|
||||
friend struct WLFiltersSort;
|
||||
WGuiFilterItem(WGuiFilters * parent);
|
||||
void updateValue();
|
||||
void ButtonPressed(int controllerId, int controlId);
|
||||
string getCode();
|
||||
bool isModal();
|
||||
enum {
|
||||
STATE_UNSET,
|
||||
STATE_CHOOSE_TYPE,
|
||||
STATE_CHOOSE_VAL,
|
||||
STATE_FINISHED,
|
||||
STATE_REMOVE,
|
||||
STATE_CANCEL,
|
||||
BEGIN_FILTERS = 0,
|
||||
FILTER_SET = BEGIN_FILTERS,
|
||||
FILTER_RARITY,
|
||||
FILTER_COLOR,
|
||||
FILTER_TYPE,
|
||||
FILTER_BASIC,
|
||||
END_FILTERS
|
||||
};
|
||||
protected:
|
||||
void addArg(string display, string code);
|
||||
int filterType;
|
||||
int filterVal;
|
||||
vector< pair<string,string> > args;
|
||||
int mState;
|
||||
bool mNew;
|
||||
WGuiFilters * mParent;
|
||||
};
|
||||
|
||||
struct WListSort{
|
||||
virtual bool operator()(const WGuiBase*l, const WGuiBase*r);
|
||||
};
|
||||
|
||||
struct WLFiltersSort{
|
||||
bool operator()(const WGuiBase*l, const WGuiBase*r);
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user