diff --git a/projects/mtg/bin/Res/graphics/trophy.png b/projects/mtg/bin/Res/graphics/trophy.png index 0f94c5e54..265494d4a 100644 Binary files a/projects/mtg/bin/Res/graphics/trophy.png and b/projects/mtg/bin/Res/graphics/trophy.png differ diff --git a/projects/mtg/bin/Res/graphics/trophy_prx_eviltwin.png b/projects/mtg/bin/Res/graphics/trophy_prx_eviltwin.png index 5604ceb8a..5815c6b23 100644 Binary files a/projects/mtg/bin/Res/graphics/trophy_prx_eviltwin.png and b/projects/mtg/bin/Res/graphics/trophy_prx_eviltwin.png differ diff --git a/projects/mtg/bin/Res/graphics/trophy_prx_handler.png b/projects/mtg/bin/Res/graphics/trophy_prx_handler.png index 99212e799..1364a19b4 100644 Binary files a/projects/mtg/bin/Res/graphics/trophy_prx_handler.png and b/projects/mtg/bin/Res/graphics/trophy_prx_handler.png differ diff --git a/projects/mtg/bin/Res/graphics/trophy_prx_rimom.png b/projects/mtg/bin/Res/graphics/trophy_prx_rimom.png index abe2dfd20..e92299123 100644 Binary files a/projects/mtg/bin/Res/graphics/trophy_prx_rimom.png and b/projects/mtg/bin/Res/graphics/trophy_prx_rimom.png differ diff --git a/projects/mtg/bin/Res/graphics/trophy_prx_rnddeck.png b/projects/mtg/bin/Res/graphics/trophy_prx_rnddeck.png index eeec6e73c..79115b077 100644 Binary files a/projects/mtg/bin/Res/graphics/trophy_prx_rnddeck.png and b/projects/mtg/bin/Res/graphics/trophy_prx_rnddeck.png differ diff --git a/projects/mtg/include/GameStateAwards.h b/projects/mtg/include/GameStateAwards.h new file mode 100644 index 000000000..7a89ea335 --- /dev/null +++ b/projects/mtg/include/GameStateAwards.h @@ -0,0 +1,40 @@ +#ifndef _GAME_STATE_AWARDS_H_ +#define _GAME_STATE_AWARDS_H_ + +#include +#include "../include/GameState.h" +#include "../include/SimpleMenu.h" + +class WGuiList; +class WGuiMenu; +class WSrcMTGSet; + +class GameStateAwards: public GameState, public JGuiListener +{ + private: + WGuiList * listview; + WGuiMenu * detailview; + JQuad * mBg; + JTexture * mBgTex; + WSrcMTGSet * setSrc; + SimpleMenu * menu; + bool showMenu; + bool showAlt; + int mState; + int mDetailItem; + + public: + GameStateAwards(GameApp* parent); + bool enterSet(int setid); + virtual ~GameStateAwards(); + + virtual void Start(); + virtual void End(); + virtual void Create(); + virtual void Destroy(); + virtual void Update(float dt); + virtual void Render(); + virtual void ButtonPressed(int controllerId, int controlId); +}; + +#endif \ No newline at end of file diff --git a/projects/mtg/include/OptionItem.h b/projects/mtg/include/OptionItem.h index 9f33ad167..42461dcae 100644 --- a/projects/mtg/include/OptionItem.h +++ b/projects/mtg/include/OptionItem.h @@ -56,6 +56,7 @@ public: 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; @@ -140,6 +141,7 @@ public: 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{ @@ -153,7 +155,7 @@ private: class WSrcMTGSet: public WDataSource{ public: - WSrcMTGSet(int setid); + WSrcMTGSet(int setid, float mDelay=0.1); virtual JQuad * getImage(); virtual MTGCard * getCard(); @@ -163,10 +165,13 @@ public: virtual bool prev(); virtual int getPos() {return currentCard;}; virtual bool setPos(int pos); + virtual void Update(float dt); protected: vector cards; int currentCard; + float mDelay; + float mLastInput; }; class WGuiImage: public WGuiItem{ @@ -207,6 +212,7 @@ public: 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();}; @@ -242,7 +248,7 @@ public: virtual bool Selectable() {return Visible();}; virtual bool Visible(); virtual int getId() {return id;}; - virtual void Overlay(); + virtual void Underlay(); protected: int id; string text; @@ -255,6 +261,7 @@ public: virtual void Reload(); virtual void Overlay(); + virtual void Underlay(); virtual void setData(); virtual bool isModal(); virtual void setModal(bool val); diff --git a/projects/mtg/src/OptionItem.cpp b/projects/mtg/src/OptionItem.cpp index 6b1db129e..f560e8392 100644 --- a/projects/mtg/src/OptionItem.cpp +++ b/projects/mtg/src/OptionItem.cpp @@ -557,6 +557,10 @@ void WGuiList::Render(){ //Render items. if(start >= 0) { + //Render current underlay. + if(currentItem >= 0 && currentItem < nbitems && items[currentItem]->Visible()) + items[currentItem]->Underlay(); + for (int pos=0;pos < nbitems; pos++){ if(!items[pos]->Visible()) continue; @@ -1018,6 +1022,12 @@ void WGuiSplit::Overlay(){ else left->Overlay(); } +void WGuiSplit::Underlay(){ + if(bRight) + right->Underlay(); + else + left->Underlay(); +} void WGuiSplit::ButtonPressed(int controllerId, int controlId) { if(bRight) @@ -1234,7 +1244,7 @@ void WGuiTabMenu::save(){ //WGuiAward -void WGuiAward::Overlay(){ +void WGuiAward::Underlay(){ char buf[1024]; JRenderer * r = JRenderer::GetInstance(); JQuad * trophy = NULL; @@ -1252,8 +1262,9 @@ void WGuiAward::Overlay(){ if(!trophy) //Fallback to basic trophy image. trophy = resources.RetrieveTempQuad("trophy.png"); - if(trophy) - r->RenderQuad(trophy, 0, SCREEN_HEIGHT-256); + if(trophy){ + r->RenderQuad(trophy, 0, SCREEN_HEIGHT-trophy->mHeight); + } } void WGuiAward::Render(){ @@ -1394,9 +1405,11 @@ WSrcImage::WSrcImage(string s){ } //WSrcMTGSet -WSrcMTGSet::WSrcMTGSet(int setid){ +WSrcMTGSet::WSrcMTGSet(int setid, float delay){ MTGAllCards * ac = GameApp::collection; map::iterator it; + mDelay = delay; + mLastInput = 0; for(it = ac->collection.begin();it != ac->collection.end();it++){ if(it->second->setId == setid) @@ -1408,10 +1421,13 @@ WSrcMTGSet::WSrcMTGSet(int setid){ currentCard = 0; } JQuad * WSrcMTGSet::getImage(){ - MTGCard * c = getCard(); - if(c) - return resources.RetrieveCard(c); - return NULL; + if(mDelay && mLastInput < mDelay) + return NULL; + + return resources.RetrieveCard(getCard()); +} +void WSrcMTGSet::Update(float dt){ + mLastInput += dt; } MTGCard * WSrcMTGSet::getCard(){ int size = (int) cards.size(); @@ -1427,7 +1443,8 @@ bool WSrcMTGSet::next(){ else return false; - return true; + mLastInput = 0; + return true; } bool WSrcMTGSet::prev(){ @@ -1436,7 +1453,8 @@ bool WSrcMTGSet::prev(){ else return false; - return true; + mLastInput = 0; + return true; } bool WSrcMTGSet::setPos(int pos){ @@ -1444,6 +1462,7 @@ bool WSrcMTGSet::setPos(int pos){ return false; currentCard = pos; + mLastInput = 0; return true; }