82 lines
2.3 KiB
C++
82 lines
2.3 KiB
C++
#pragma once
|
|
#include "cocos2d.h"
|
|
#include "ui/CocosGUI.h"
|
|
#include "Define.h"
|
|
#include "SparrowCardBase.h"
|
|
#include "Types.h"
|
|
|
|
USING_NS_CC;
|
|
using namespace ui;
|
|
using namespace std;
|
|
|
|
//逻辑掩码
|
|
#define SP_MASK_COLOR 0xF0 //花色掩码
|
|
#define SP_MASK_VALUE 0x0F //数值掩码
|
|
|
|
#define SENDCARD_HEIGHT 130 //拖动出牌高度
|
|
#define TOP_CARD_HEIGHT 20 //弹起牌高度
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// 麻将控件
|
|
class SparrowCard : public Sprite
|
|
{
|
|
public:
|
|
SparrowCard();
|
|
|
|
virtual bool init(BYTE _value, EN_SPARROW_TYPE _cardType);
|
|
|
|
// 场景退出回调
|
|
virtual void onExit();
|
|
|
|
void addClickEventListener(const std::function<bool(cocos2d::Ref *, Vec2 pos)>);
|
|
|
|
// 子类实现
|
|
public:
|
|
virtual bool IsValidCard(BYTE _value) = 0; // 是否是有效牌
|
|
|
|
// 麻将属性修改
|
|
public:
|
|
static std::string GetCardValuePng(BYTE _value); // 获取值图片
|
|
void SetCardValuePng(BYTE _value, EN_SPARROW_TYPE _cardType); // 设置麻将值
|
|
bool ShowCardValue(BYTE _value); // 亮牌
|
|
void SetTingCardStatus(bool isTing); // 听牌状态
|
|
void SetKingStatus(bool isKing, std::string strKing); // 设置精牌
|
|
void SetTop(bool istop); // 设置弹起
|
|
void SetCurrentOutCard(bool isCurrent); // 设置当前牌标识
|
|
|
|
//触摸事件
|
|
public:
|
|
void BindingTouchEvent();
|
|
bool TouchBegan(Touch* touch, Event* event);
|
|
void TouchMove(Touch* touch, Event* event);
|
|
void TouchEnd(Touch* touch, Event* event);
|
|
void setTouchState(bool _btouch){ m_bTouch = _btouch; }
|
|
bool getTouchState(){ return m_bTouch; }
|
|
|
|
// 获取数值
|
|
public:
|
|
BYTE GetCardData() { return m_ValueData; }
|
|
EN_SPARROW_TYPE GetCardType(){ return m_CardType; }
|
|
static BYTE GetCardValue(BYTE cbCardData) { return (cbCardData&SP_MASK_VALUE); } //获取数值
|
|
static BYTE GetCardColor(BYTE cbCardData) { return ((cbCardData&SP_MASK_COLOR) >> 4); } //获取花色
|
|
bool GetTop(){ return m_IsTop; }
|
|
|
|
public:
|
|
ImageView* m_pRootImage; // 根节点
|
|
BYTE m_ValueData; // 麻将数值
|
|
EN_SPARROW_TYPE m_CardType; // 麻将类型
|
|
bool m_IsTop; // 弹起标识
|
|
|
|
ImageView* m_cloneCardImg; //copy根節點
|
|
|
|
private:
|
|
Vec2 m_originalPos; //触摸前的位置
|
|
Vec2 m_MovePos; //移动位置
|
|
int m_startZorder; //起始zorder值
|
|
bool m_bTouch; //是否触摸
|
|
|
|
std::function<bool(cocos2d::Ref *, Vec2 pos)> _SendCardCallBack; //回掉出牌
|
|
|
|
};
|
|
|