589 lines
12 KiB
C
589 lines
12 KiB
C
|
|
#pragma once
|
|||
|
|
#include <e2dbase.h>
|
|||
|
|
#include <atlimage.h>
|
|||
|
|
|
|||
|
|
namespace easy2d
|
|||
|
|
{
|
|||
|
|
class FontStyle;
|
|||
|
|
class Color;
|
|||
|
|
class Action;
|
|||
|
|
|
|||
|
|
class Node :
|
|||
|
|
public Object
|
|||
|
|
{
|
|||
|
|
friend class Scene;
|
|||
|
|
friend class BatchNode;
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
Node();
|
|||
|
|
Node(CPoint p);
|
|||
|
|
Node(int x, int y);
|
|||
|
|
virtual ~Node();
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual int getX() const;
|
|||
|
|
// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual int getY() const;
|
|||
|
|
// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual CPoint getPos() const;
|
|||
|
|
// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual void setX(int x);
|
|||
|
|
// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual void setY(int y);
|
|||
|
|
// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual void setPos(int x, int y);
|
|||
|
|
// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual void setPos(CPoint p);
|
|||
|
|
// <20>ƶ<EFBFBD><C6B6>ڵ<EFBFBD>
|
|||
|
|
virtual void move(int x, int y);
|
|||
|
|
// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual void move(CVector v);
|
|||
|
|
// <20>ڵ<EFBFBD><DAB5>Ƿ<EFBFBD><C7B7><EFBFBD>ʾ
|
|||
|
|
virtual bool display() const;
|
|||
|
|
// <20><><EFBFBD>ýڵ<C3BD><DAB5>Ƿ<EFBFBD><C7B7><EFBFBD>ʾ
|
|||
|
|
virtual void setDisplay(bool value);
|
|||
|
|
// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>ͼ˳<CDBC><CBB3>
|
|||
|
|
virtual int getZOrder() const;
|
|||
|
|
// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD>ͼ˳<CDBC><CBB3><EFBFBD><EFBFBD>0Ϊ<30><CEAA><EFBFBD>Ȼ<EFBFBD><C8BB>ƣ<EFBFBD><C6A3><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ײ㣩
|
|||
|
|
virtual void setZOrder(int z);
|
|||
|
|
// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD>
|
|||
|
|
Scene * getParentScene();
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
int m_nZOrder;
|
|||
|
|
bool m_bDisplay;
|
|||
|
|
Scene* m_pScene;
|
|||
|
|
CPoint m_Pos;
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
virtual bool _exec(bool active);
|
|||
|
|
virtual void _onDraw() = 0;
|
|||
|
|
void setParentScene(Scene * scene);
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
class BatchNode :
|
|||
|
|
public Node
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
BatchNode();
|
|||
|
|
virtual ~BatchNode();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD>
|
|||
|
|
void add(Node *child, int z_Order = 0);
|
|||
|
|
// ɾ<><C9BE><EFBFBD>ӽڵ<D3BD>
|
|||
|
|
bool del(Node * child);
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD>
|
|||
|
|
void clearAllChildren();
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
std::vector<Node*> m_vChildren;
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
virtual bool _exec(bool active) override;
|
|||
|
|
virtual void _onDraw() override;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
class Layer :
|
|||
|
|
public BatchNode
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
Layer();
|
|||
|
|
virtual ~Layer();
|
|||
|
|
|
|||
|
|
// ͼ<><CDBC><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
int getBlock() const;
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
void setBlock(bool block);
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
bool m_bBlock;
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
virtual bool _exec(bool active) override;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
class RectNode :
|
|||
|
|
public Node
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
RectNode();
|
|||
|
|
~RectNode();
|
|||
|
|
|
|||
|
|
virtual bool isCollisionWith(RectNode * rectNode) const;
|
|||
|
|
virtual bool isPointIn(CPoint p) const;
|
|||
|
|
|
|||
|
|
virtual void setWindowCenterX();
|
|||
|
|
virtual void setWindowCenterY();
|
|||
|
|
virtual void setWindowCenter();
|
|||
|
|
|
|||
|
|
virtual int getX() const override;
|
|||
|
|
virtual int getY() const override;
|
|||
|
|
virtual CPoint getPos() const override;
|
|||
|
|
virtual int getWidth() const;
|
|||
|
|
virtual int getHeight() const;
|
|||
|
|
virtual CSize getSize() const;
|
|||
|
|
virtual CRect getRect() const;
|
|||
|
|
|
|||
|
|
virtual void setX(int x) override;
|
|||
|
|
virtual void setY(int y) override;
|
|||
|
|
virtual void setPos(int x, int y) override;
|
|||
|
|
virtual void setPos(CPoint p) override;
|
|||
|
|
virtual void move(int x, int y) override;
|
|||
|
|
virtual void move(CVector v) override;
|
|||
|
|
virtual void setWidth(int width);
|
|||
|
|
virtual void setHeight(int height);
|
|||
|
|
virtual void setSize(int width, int height);
|
|||
|
|
virtual void setSize(CSize size);
|
|||
|
|
virtual void setRect(int x1, int y1, int x2, int y2);
|
|||
|
|
virtual void setRect(CPoint leftTop, CPoint rightBottom);
|
|||
|
|
virtual void setRect(CRect rect);
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
CRect m_Rect;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
class Text :
|
|||
|
|
public RectNode
|
|||
|
|
{
|
|||
|
|
friend class TextButton;
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
Text();
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD>崴<EFBFBD><E5B4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
Text(tstring text, COLORREF color = Color::white, FontStyle * font = FontStyle::getDefault());
|
|||
|
|
// <20><><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ꡢ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD>崴<EFBFBD><E5B4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
Text(int x, int y, tstring text, COLORREF color = Color::white, FontStyle * font = FontStyle::getDefault());
|
|||
|
|
virtual ~Text();
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0>ɫ
|
|||
|
|
COLORREF getColor() const;
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
|||
|
|
tstring getText() const;
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
|||
|
|
FontStyle * getFontStyle();
|
|||
|
|
// <20>ı<EFBFBD><C4B1>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>
|
|||
|
|
bool isEmpty() const;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void setText(tstring text);
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|||
|
|
void setColor(COLORREF color);
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void setFontStyle(FontStyle * style);
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
tstring m_sText;
|
|||
|
|
COLORREF m_color;
|
|||
|
|
FontStyle * m_pFontStyle;
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
virtual void _onDraw() override;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
class Image :
|
|||
|
|
public RectNode
|
|||
|
|
{
|
|||
|
|
friend class Sprite;
|
|||
|
|
friend class ImageButton;
|
|||
|
|
public:
|
|||
|
|
Image();
|
|||
|
|
// <20><>ͼƬ<CDBC>ļ<EFBFBD><C4BC><EFBFBD>ȡͼ<C8A1><CDBC>
|
|||
|
|
Image(LPCTSTR ImageFile);
|
|||
|
|
/**
|
|||
|
|
* <EFBFBD><EFBFBD>ͼƬ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ȡͼ<EFBFBD><EFBFBD>
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼƬ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼƬ<EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD><EFBFBD>꣬ͼƬ<EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ߶<EFBFBD>
|
|||
|
|
*/
|
|||
|
|
Image(LPCTSTR ImageFile, int x, int y, int width, int height);
|
|||
|
|
virtual ~Image();
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
float getScaleX() const;
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
float getScaleY() const;
|
|||
|
|
// <20><>ȡ<C8A1><CDB8><EFBFBD><EFBFBD>
|
|||
|
|
float getOpacity() const;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* <EFBFBD><EFBFBD>ͼƬ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ȡͼ<EFBFBD><EFBFBD>
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ͼƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|||
|
|
*/
|
|||
|
|
bool setImage(LPCTSTR ImageFile);
|
|||
|
|
/**
|
|||
|
|
* <EFBFBD><EFBFBD>ͼƬ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ȡͼ<EFBFBD><EFBFBD>
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼƬ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼƬ<EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>꣬ͼƬ<EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ߶<EFBFBD>
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ͼƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|||
|
|
*/
|
|||
|
|
bool setImage(LPCTSTR ImageFile, int x, int y, int width, int height);
|
|||
|
|
/**
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ȡͼ<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD> png
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ͼƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|||
|
|
*/
|
|||
|
|
bool setImageFromRes(LPCTSTR pResName);
|
|||
|
|
/**
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ȡͼ<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD> png
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>ͼƬ<EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD><EFBFBD>꣬ͼƬ<EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ߶<EFBFBD>
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ͼƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|||
|
|
*/
|
|||
|
|
bool setImageFromRes(LPCTSTR pResName, int x, int y, int width, int height);
|
|||
|
|
// <20>ü<EFBFBD>ͼƬ<CDBC><C6AC><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD> stretch <20><><EFBFBD>죩
|
|||
|
|
void crop(int x, int y, int width, int height);
|
|||
|
|
// <20><>ͼƬ<CDBC><C6AC><EFBFBD>쵽<EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void stretch(int width, int height);
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼƬ
|
|||
|
|
void setScale(float scaleX, float scaleY);
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><CDB8><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD>Χ 0~1.0f<EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD> png ͼƬ<CDBC><C6AC>Ч<EFBFBD><D0A7>
|
|||
|
|
void setOpacity(float value);
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><CDB8>ɫ
|
|||
|
|
void setTransparentColor(COLORREF value);
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD>
|
|||
|
|
void reset();
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7>ͼ
|
|||
|
|
static void saveScreenshot();
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
CImage m_Image;
|
|||
|
|
CRect m_SrcRect;
|
|||
|
|
BYTE m_nAlpha;
|
|||
|
|
float m_fScaleX;
|
|||
|
|
float m_fScaleY;
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
virtual void _onDraw() override;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
class Sprite :
|
|||
|
|
public RectNode
|
|||
|
|
{
|
|||
|
|
friend class BatchSprite;
|
|||
|
|
public:
|
|||
|
|
Sprite();
|
|||
|
|
Sprite(Image * image);
|
|||
|
|
Sprite(LPCTSTR imageFileName);
|
|||
|
|
virtual ~Sprite();
|
|||
|
|
|
|||
|
|
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ
|
|||
|
|
bool isCollisionWith(Sprite * sprite);
|
|||
|
|
// <20>ľ<DEB8><C4BE><EFBFBD>ͼƬ
|
|||
|
|
virtual void setImage(Image * image);
|
|||
|
|
// <20><><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD>
|
|||
|
|
virtual void addAction(Action * action);
|
|||
|
|
// <20><>ͣ<EFBFBD><CDA3><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
|
|||
|
|
virtual void pauseAllAction();
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
|
|||
|
|
virtual void resumeAllAction();
|
|||
|
|
// ֹͣ<CDA3><D6B9><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
|
|||
|
|
virtual void stopAllAction();
|
|||
|
|
|
|||
|
|
virtual float getScaleX() const;
|
|||
|
|
virtual float getScaleY() const;
|
|||
|
|
virtual float getOpacity() const;
|
|||
|
|
|
|||
|
|
virtual void setScale(float scaleX, float scaleY);
|
|||
|
|
virtual void setOpacity(float opacity);
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
float m_fScaleX;
|
|||
|
|
float m_fScaleY;
|
|||
|
|
BYTE m_nAlpha;
|
|||
|
|
Image * m_pImage;
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
bool _exec(bool active) override;
|
|||
|
|
void _onDraw() override;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
class BatchSprite :
|
|||
|
|
public Node
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
BatchSprite();
|
|||
|
|
virtual ~BatchSprite();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>Ӿ<EFBFBD><D3BE><EFBFBD>
|
|||
|
|
void addSprite(Sprite * sprite, int z_Order = 0);
|
|||
|
|
// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool delSprite(Sprite * child);
|
|||
|
|
// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD><D0BE><EFBFBD>
|
|||
|
|
void clearAllSprites();
|
|||
|
|
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD>ľ<EFBFBD><C4BE>飬<EFBFBD><E9A3AC><EFBFBD>ؿ<F2B7B5BB>ָ<EFBFBD><D6B8>
|
|||
|
|
Sprite * isCollisionWith(Sprite * sprite);
|
|||
|
|
// <20>жϵ<D0B6><CFB5>Ƿ<EFBFBD><C7B7>ھ<EFBFBD><DABE><EFBFBD><EFBFBD>ڲ<EFBFBD>
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD>ؿ<F2B7B5BB>ָ<EFBFBD><D6B8>
|
|||
|
|
Sprite * isPointIn(CPoint point);
|
|||
|
|
// ͬʱ<CDAC><EFBFBD><DEB8><EFBFBD><EFBFBD>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD>ͼƬ
|
|||
|
|
virtual void setImage(Image * image);
|
|||
|
|
|
|||
|
|
virtual float getScaleX() const;
|
|||
|
|
virtual float getScaleY() const;
|
|||
|
|
virtual float getOpacity() const;
|
|||
|
|
|
|||
|
|
virtual void setScale(float scaleX, float scaleY);
|
|||
|
|
virtual void setOpacity(float opacity);
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
std::vector<Sprite*> m_vSprites;
|
|||
|
|
float m_fScaleX;
|
|||
|
|
float m_fScaleY;
|
|||
|
|
BYTE m_nAlpha;
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
bool _exec(bool active) override;
|
|||
|
|
void _onDraw() override;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
class MouseNode :
|
|||
|
|
public RectNode
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
MouseNode();
|
|||
|
|
virtual ~MouseNode();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual bool isMouseIn();
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ѡ<EFBFBD><D1A1>
|
|||
|
|
virtual bool isSelected();
|
|||
|
|
// <20><><EFBFBD>ûص<C3BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual void setClickedCallback(const CLICK_CALLBACK & callback);
|
|||
|
|
// <20><><EFBFBD>ûص<C3BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual void setMouseInCallback(const CLICK_CALLBACK & callback);
|
|||
|
|
// <20><><EFBFBD>ûص<C3BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual void setMouseOutCallback(const CLICK_CALLBACK & callback);
|
|||
|
|
// <20><><EFBFBD>ûص<C3BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual void setSelectCallback(const CLICK_CALLBACK & callback);
|
|||
|
|
// <20><><EFBFBD>ûص<C3BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual void setUnselectCallback(const CLICK_CALLBACK & callback);
|
|||
|
|
// <20><><EFBFBD><EFBFBD>״̬
|
|||
|
|
virtual void reset();
|
|||
|
|
// <20><><EFBFBD>ýڵ<C3BD><DAB5>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
void setBlock(bool block);
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
bool m_bTarget;
|
|||
|
|
bool m_bBlock;
|
|||
|
|
enum Status { NORMAL, MOUSEIN, SELECTED } m_eStatus;
|
|||
|
|
CLICK_CALLBACK m_OnMouseInCallback;
|
|||
|
|
CLICK_CALLBACK m_OnMouseOutCallback;
|
|||
|
|
CLICK_CALLBACK m_OnSelectCallback;
|
|||
|
|
CLICK_CALLBACK m_OnUnselectCallback;
|
|||
|
|
CLICK_CALLBACK m_ClickCallback;
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
virtual bool _exec(bool active) override;
|
|||
|
|
virtual void _onDraw() override;
|
|||
|
|
|
|||
|
|
// <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>尴ť<E5B0B4><C5A5><EFBFBD>жϷ<D0B6><CFB7><EFBFBD>
|
|||
|
|
virtual bool _isMouseIn();
|
|||
|
|
// <20>л<EFBFBD>״̬
|
|||
|
|
virtual void _setStatus(Status status);
|
|||
|
|
// <20><><EFBFBD><EFBFBD>״̬
|
|||
|
|
virtual void _onNormal() = 0;
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
|
|||
|
|
virtual void _onMouseIn() = 0;
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>ʱ
|
|||
|
|
virtual void _onSelected() = 0;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
class Button :
|
|||
|
|
public MouseNode
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
Button();
|
|||
|
|
virtual ~Button();
|
|||
|
|
|
|||
|
|
// <20><>ť<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual bool isEnable();
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual void setEnable(bool enable);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual void setX(int x) override;
|
|||
|
|
// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual void setY(int y) override;
|
|||
|
|
// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>
|
|||
|
|
virtual void setPos(int x, int y) override;
|
|||
|
|
// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>
|
|||
|
|
virtual void setPos(CPoint p) override;
|
|||
|
|
// <20>ƶ<EFBFBD><C6B6><EFBFBD>ť
|
|||
|
|
virtual void move(int x, int y) override;
|
|||
|
|
// <20>ƶ<EFBFBD><C6B6><EFBFBD>ť
|
|||
|
|
virtual void move(CVector v) override;
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
bool m_bEnable;
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
virtual bool _exec(bool active) override;
|
|||
|
|
virtual void _onDraw() override;
|
|||
|
|
virtual void _resetPosition() = 0;
|
|||
|
|
|
|||
|
|
virtual void _onNormal() = 0;
|
|||
|
|
virtual void _onMouseIn() = 0;
|
|||
|
|
virtual void _onSelected() = 0;
|
|||
|
|
virtual void _onDisable() = 0;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
class TextButton :
|
|||
|
|
public Button
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
TextButton();
|
|||
|
|
TextButton(tstring text);
|
|||
|
|
TextButton(Text * text);
|
|||
|
|
virtual ~TextButton();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>
|
|||
|
|
void setNormal(Text * text);
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>İ<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>
|
|||
|
|
void setMouseIn(Text * text);
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>ʱ<EFBFBD>İ<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>
|
|||
|
|
void setSelected(Text * text);
|
|||
|
|
// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>ʱ<EFBFBD>İ<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>
|
|||
|
|
void setUnable(Text * text);
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
Text * m_pNormalText;
|
|||
|
|
Text * m_pMouseInText;
|
|||
|
|
Text * m_pSelectedText;
|
|||
|
|
Text * m_pUnableText;
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
virtual void _resetPosition() override;
|
|||
|
|
|
|||
|
|
virtual void _setStatus(Status status) override;
|
|||
|
|
virtual void _onNormal() override;
|
|||
|
|
virtual void _onMouseIn() override;
|
|||
|
|
virtual void _onSelected() override;
|
|||
|
|
virtual void _onDisable() override;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
class ImageButton :
|
|||
|
|
public Button
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
ImageButton();
|
|||
|
|
ImageButton(LPCTSTR image);
|
|||
|
|
ImageButton(Image * image);
|
|||
|
|
virtual ~ImageButton();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ð<EFBFBD>ťͼƬ
|
|||
|
|
void setNormal(Image * image);
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>İ<EFBFBD>ťͼƬ
|
|||
|
|
void setMouseIn(Image * image);
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>ʱ<EFBFBD>İ<EFBFBD>ťͼƬ
|
|||
|
|
void setSelected(Image * image);
|
|||
|
|
// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>ʱ<EFBFBD>İ<EFBFBD>ťͼƬ
|
|||
|
|
void setUnable(Image * image);
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
Image * m_pNormalImage;
|
|||
|
|
Image * m_pMouseInImage;
|
|||
|
|
Image * m_pSelectedImage;
|
|||
|
|
Image * m_pUnableImage;
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
virtual void _resetPosition() override;
|
|||
|
|
virtual void _setStatus(Status status) override;
|
|||
|
|
virtual void _onNormal() override;
|
|||
|
|
virtual void _onMouseIn() override;
|
|||
|
|
virtual void _onSelected() override;
|
|||
|
|
virtual void _onDisable() override;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
class Shape :
|
|||
|
|
public Node
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
Shape();
|
|||
|
|
virtual ~Shape();
|
|||
|
|
|
|||
|
|
// <20><>״<EFBFBD><D7B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
|
|||
|
|
enum STYLE { ROUND, SOLID, FILL } m_eStyle;
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1>״<EFBFBD><D7B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|||
|
|
COLORREF getFillColor() const;
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1>״<EFBFBD><D7B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|||
|
|
COLORREF getLineColor() const;
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|||
|
|
void setFillColor(COLORREF color);
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|||
|
|
void setLineColor(COLORREF color);
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
|
|||
|
|
void setStyle(STYLE style);
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
COLORREF fillColor;
|
|||
|
|
COLORREF lineColor;
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
virtual void _onDraw() override;
|
|||
|
|
virtual void solidShape() = 0;
|
|||
|
|
virtual void fillShape() = 0;
|
|||
|
|
virtual void roundShape() = 0;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
class Rect :
|
|||
|
|
public Shape
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
Rect();
|
|||
|
|
Rect(int x, int y, int width, int height);
|
|||
|
|
virtual ~Rect();
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ο<EFBFBD><CEBF><EFBFBD>
|
|||
|
|
int getWidth() const;
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>θ߶<CEB8>
|
|||
|
|
int getHeight() const;
|
|||
|
|
// <20><><EFBFBD>þ<EFBFBD><C3BE>ο<EFBFBD><CEBF><EFBFBD>
|
|||
|
|
void setWidth(int width);
|
|||
|
|
// <20><><EFBFBD>þ<EFBFBD><C3BE>θ߶<CEB8>
|
|||
|
|
void setHeight(int height);
|
|||
|
|
// <20><><EFBFBD>þ<EFBFBD><C3BE>δ<EFBFBD>С
|
|||
|
|
void setSize(int width, int height);
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
CSize m_Size;
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
virtual void solidShape() override;
|
|||
|
|
virtual void fillShape() override;
|
|||
|
|
virtual void roundShape() override;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
class Circle :
|
|||
|
|
public Shape
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
Circle();
|
|||
|
|
Circle(int x, int y, int radius);
|
|||
|
|
virtual ~Circle();
|
|||
|
|
|
|||
|
|
// <20><>ȡԲ<C8A1>ΰ뾶
|
|||
|
|
int getRadius() const;
|
|||
|
|
// <20><><EFBFBD><EFBFBD>Բ<EFBFBD>ΰ뾶
|
|||
|
|
void setRadius(int m_nRadius);
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
int m_nRadius;
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
virtual void solidShape() override;
|
|||
|
|
virtual void fillShape() override;
|
|||
|
|
virtual void roundShape() override;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
} // End of easy2d namespace
|