* Change inplay balance. - Spells now stack three by three. - Spells try to space a little more. - Creatures and land stack to the left until they hit the big card, at which point they start displaying more compactly. At some point, they start using all the screen even if it's under the hand.
91 lines
2.0 KiB
C++
91 lines
2.0 KiB
C++
#ifndef _GUIPLAY_H_
|
|
#define _GUIPLAY_H_
|
|
|
|
#include "GuiLayers.h"
|
|
#include "CardGui.h"
|
|
|
|
class GuiPlay : public GuiLayer
|
|
{
|
|
public:
|
|
static const float HORZWIDTH;
|
|
static const float VERTHEIGHT;
|
|
typedef vector<CardView*>::iterator iterator;
|
|
|
|
protected:
|
|
class CardStack {
|
|
protected:
|
|
unsigned total;
|
|
float baseX, baseY;
|
|
float x, y;
|
|
|
|
public:
|
|
void reset(unsigned total, float x, float y);
|
|
void Enstack(CardView*);
|
|
void RenderSpell(MTGCardInstance*, iterator begin, iterator end, float x, float y);
|
|
};
|
|
|
|
class HorzStack : public CardStack {
|
|
public:
|
|
HorzStack();
|
|
void reset(unsigned total, float x, float y);
|
|
void Render(CardView*, iterator begin, iterator end);
|
|
void Enstack(CardView*);
|
|
};
|
|
class VertStack : public CardStack {
|
|
protected:
|
|
unsigned count;
|
|
public:
|
|
VertStack();
|
|
void reset(unsigned total, float x, float y);
|
|
void Render(CardView*, iterator begin, iterator end);
|
|
void Enstack(CardView*);
|
|
inline float nextX();
|
|
};
|
|
class BattleField : public HorzStack {
|
|
static const float HEIGHT;
|
|
unsigned attackers;
|
|
unsigned blockers;
|
|
unsigned currentAttacker;
|
|
float height;
|
|
|
|
public:
|
|
int red;
|
|
int colorFlow;
|
|
|
|
void addAttacker(MTGCardInstance*);
|
|
void removeAttacker(MTGCardInstance*);
|
|
void reset(float x, float y);
|
|
BattleField();
|
|
void EnstackAttacker(CardView*);
|
|
void EnstackBlocker(CardView*);
|
|
void Update(float dt);
|
|
void Render();
|
|
};
|
|
|
|
class Lands : public HorzStack {};
|
|
class Creatures : public HorzStack {};
|
|
class Spells : public VertStack {};
|
|
|
|
protected:
|
|
GameObserver* game;
|
|
Creatures selfCreatures, opponentCreatures;
|
|
BattleField battleField;
|
|
Lands selfLands, opponentLands;
|
|
Spells selfSpells, opponentSpells;
|
|
CardSelector* cs;
|
|
iterator end_spells;
|
|
|
|
vector<CardView*> cards;
|
|
|
|
public:
|
|
GuiPlay(GameObserver*, CardSelector*);
|
|
~GuiPlay();
|
|
virtual void Render();
|
|
void Replace();
|
|
void Update(float dt);
|
|
virtual int receiveEventPlus(WEvent * e);
|
|
virtual int receiveEventMinus(WEvent * e);
|
|
};
|
|
|
|
#endif // _GUIPLAY_H_
|