Files
wagic/projects/mtg/include/GuiPlay.h
Xawotihs@gmail.com f45c8e1d41 Just won my first Wagic network game :)
In details:
- I removed my player swap idea, it caused tons of issues with randoms
- instead I simply keep both peer on the exact same game and added one single parameter allowing to configure the view on the game. So, each peer is rendering the same game (gameObserver class) from a different player point of view (DuelLayers and related classes).
- a lot of gui stuff are missing to prevent user forbidden interactions but it works fine on Windows
2013-01-26 16:42:16 +00:00

94 lines
2.2 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 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 Planeswalker: public HorzStack {};
class Spells: public VertStack {};
protected:
Creatures selfCreatures, opponentCreatures;
BattleField battleField;
Lands selfLands, opponentLands;
Spells selfSpells, opponentSpells;
Planeswalker selfPlaneswalker,opponentPlaneswalker;
iterator end_spells;
vector<CardView*> cards;
public:
GuiPlay(DuelLayers*);
~GuiPlay();
virtual void Render();
void Replace();
void Update(float dt);
virtual int receiveEventPlus(WEvent * e);
virtual int receiveEventMinus(WEvent * e);
};
#endif // _GUIPLAY_H_