Files
wnmj/Classes/Games/DaZha/DZ_HandCardLayer.h
2026-02-13 14:34:15 +08:00

90 lines
2.4 KiB
C++

#ifndef __DZ_HandCardLayer__
#define __DZ_HandCardLayer__
#include "DZ_CMD.h"
#include "CardDefine.h"
#include "DZ_BaseCardSprite.h"
class DZHandCardLayer : public LayerColor
{
public:
DZHandCardLayer();
virtual ~DZHandCardLayer();
static DZHandCardLayer* create(Size csParentSize, const std::function<void(uint8*, uint8)>& fnCallback, uint8 cbCardType = DZ_CARD_SPRITE_BIG);
virtual bool init(Size csParentSize, const std::function<void(uint8*, uint8)>& fnCallback, uint8 cbCardType = DZ_CARD_SPRITE_BIG);
virtual void onEnter();
virtual void onExit();
virtual bool onTouchBegan(Touch *pTouch, Event *pEvent);
virtual void onTouchEnded(Touch *pTouch, Event *pEvent);
virtual void onTouchMoved(Touch *pTouch, Event *pEvent);
void setChooseCardCallback(const std::function<void(uint8*, uint8)>& fnCallback) { _fnDoUserChooseCard = fnCallback; }
public:
//初始数据;
void initUIData();
//所有牌落下;
void downAllCard();
//弹起指定牌;
void shootCardData(uint8 cbCardData[DZ_MAX_COUNT], uint8 cbCardCount);
//获取弹起的牌;
void getShootCardData(uint8 cbCardData[DZ_MAX_COUNT], uint8 &cbCardCount);
//设置多选;
void setMultiSelect(bool bFlag) { _bMultiSelect = bFlag; }
//设置多行;
void setMultiRow(bool bFlag) { _bMultiRows = bFlag; }
//设置地主;
void setLordMode(bool bLordMode) { _bLordMode = bLordMode; }
//发牌到面板;
void addSendCard2Panel();
//显示牌;
void redrawHandCard(uint8 cbCardData[DZ_MAX_COUNT], uint8 cbCardCount);
////插入扑克;
//void insertOneCard(uint8 cbCardData);
//只可点选某些牌;
void setSelectCard(uint8 cbCardData);
//可选所有牌;
void canSelectAllCard();
//设置必选牌;
void setMustShootCard(uint8 cbCardData);
//获取手牌间距;
uint16 getHandCardSpace(uint8 cbCardCount);
//获取手牌宽度;
uint16 getHandCardWidth(uint8 cbCardCount);
uint8 isInCardSpriteRect(Vec2 ptTouch);
void onSelectCardAction(int iEndSelectIndex);
bool isInSelectCardIndex(int iIndex, int iEndSelectIndex);
//获取手牌数量;
int getHandCardCount(){ return _vecHandCardArray.size(); }
private:
uint8 _cbCardType;
int _iSentCardCount;
int _iBeginSelectIndex;
bool _bLordMode;
uint16 _iCardWidth;
uint16 _iCardHeight;
bool _bMultiSelect;
bool _bMultiRows;
Size _csParentSize;
std::function<void(uint8*, uint8)> _fnDoUserChooseCard;
std::vector<DZBaseCardSprite *> _vecHandCardArray; //手牌扑克数组
};
#endif /* defined(__HandCardLayer__) */