Files
wagic/projects/mtg/include/CardGui.h
Anthony Calosa 1d2abeb20b Minor Border changes
Also added copier values if it has copied a token or not...
2016-07-29 18:37:03 +08:00

135 lines
3.2 KiB
C++

/* Graphical representation of a Card Instance, used in game */
#ifndef _CARD_GUI_H_
#define _CARD_GUI_H_
#include <hge/hgeparticle.h>
#include <JGui.h>
#include "Pos.h"
#include "PlayGuiObject.h"
#include "WResource_Fwd.h"
class MTGCard;
class MTGCardInstance;
class PlayGuiObject;
namespace DrawMode
{
enum
{
kNormal = 0,
kText,
kHidden
};
const int kNumDrawModes = 3;
}
struct CardGui: public PlayGuiObject
{
protected:
static map<string, string>counterGraphics;
/*
** Tries to render the Big version of a card picture, backups to text version in case of failure
*/
static void RenderBig(MTGCard * card, const Pos& pos, bool thumb = false, bool noborder = false, bool smallerscale = false);
static void RenderCountersBig(MTGCard * card, const Pos& pos, int drawMode = DrawMode::kNormal);
static void AlternateRender(MTGCard * card, const Pos& pos);
static void TinyCropRender(MTGCard * card, const Pos& pos, JQuad * quad);
static string FormattedData (string data, string replace, string value);
static bool FilterCard (MTGCard * card,string filter);
public:
static const float Width;
static const float Height;
static const float BigWidth;
static const float BigHeight;
PIXEL_TYPE mMask;
MTGCardInstance* card;
CardGui(MTGCardInstance* card, float x, float y);
CardGui(MTGCardInstance* card, const Pos& ref);
virtual void Render();
virtual void Update(float dt);
void DrawCard(const Pos& inPosition, int inMode = DrawMode::kNormal, bool thumb = false, bool noborder = false, bool smallscale = false);
static void DrawCard(MTGCard* inCard, const Pos& inPosition, int inMode = DrawMode::kNormal, bool thumb = false, bool noborder = false, bool smallscale = false);
static JQuadPtr AlternateThumbQuad(MTGCard * card);
virtual ostream& toString(ostream&) const;
};
class CardView: public CardGui
{
public:
typedef enum
{
nullZone, handZone, playZone
} SelectorZone;
const SelectorZone owner;
MTGCardInstance* getCard(); // remove this when possible
CardView(const SelectorZone, MTGCardInstance* card, float x, float y);
CardView(const SelectorZone, MTGCardInstance* card, const Pos& ref);
virtual ~CardView();
void Render()
{
CardGui::Render();
}
void Render(JQuad* q)
{
Pos::Render(q);
}
virtual ostream& toString(ostream&) const;
float GetCenterX();
float GetCenterY();
};
class TransientCardView: public CardGui
{
public:
TransientCardView(MTGCardInstance* card, float x, float y);
TransientCardView(MTGCardInstance* card, const Pos& ref);
};
class SimpleCardEffect
{
public:
virtual void doEffect(Pos * card) = 0;
virtual void undoEffect(Pos * card) = 0;
virtual ~SimpleCardEffect(){};
};
class SimpleCardEffectRotate:public SimpleCardEffect
{
protected:
float mRotation;
public:
SimpleCardEffectRotate(float rotation);
void doEffect(Pos * card);
void undoEffect(Pos * card);
};
class SimpleCardEffectMask:public SimpleCardEffect
{
protected:
PIXEL_TYPE mMask;
public:
SimpleCardEffectMask(PIXEL_TYPE mask);
void doEffect(Pos * card);
void undoEffect(Pos * card);
};
#endif