Files
wagic/projects/mtg/include/DeckView.h
2013-12-05 23:06:32 +01:00

70 lines
1.5 KiB
C++

#ifndef _DECK_VIEW_H_
#define _DECK_VIEW_H_
#include <vector>
#include "MTGCard.h"
#include "DeckDataWrapper.h"
#include "WFont.h"
#include "WResourceManager.h"
#include "Pos.h"
#define NO_USER_ACTIVITY_HELP_DELAY 10
#define NO_USER_ACTIVITY_SHOWCARD_DELAY 0.1
class DeckView
{
protected:
static const float max_scale;
static const float x_center;
static const float right_border;
public:
struct CardRep{
float x;
float y;
float scale;
MTGCard * card;
};
bool dirtyFilters;
bool dirtyCardPos;
DeckView(int numberOfCards);
virtual ~DeckView();
virtual void Reset();
//advances the view and card representations
void Update(float dt);
virtual void Render() = 0;
virtual MTGCard * Click(int x, int y) = 0;
bool Button(Buttons button);
virtual MTGCard *getActiveCard() = 0;
virtual void changePosition(int offset) = 0;
virtual void changeFilter(int offset) = 0;
virtual void SetDeck(DeckDataWrapper *toShow);
DeckDataWrapper *deck();
void SwitchFilter(int delta);
int filter();
void reloadIndexes();
int getPosition();
protected:
float last_user_activity;
int mFilter;
DeckDataWrapper *mCurrentDeck;
CardRep& getCardRep(unsigned int index);
void renderCard(int index, int alpha);
int getCardIndexNextTo(int x, int y);
vector<CardRep> mCards;
private:
virtual void UpdateViewState(float dt) = 0;
virtual void UpdateCardPosition(CardRep& rep, int index) = 0;
};
#endif // _DECK_VIEW_H_