#include "XZDDPlayer.h"
#include "XZDDGameLogic.h"
#include "XZDDSoundFun.h"
void XZDDPlayer::setHandCard(BYTE* pCardData,int iCout)
{
m_kHandCardCout = 0;
if (iCout <= 0 || iCout > MAX_COUNT)
{
return;
}
memcpy(m_kHandCardData,pCardData,sizeof(BYTE)*iCout);
m_kHandCardCout = iCout;
}
void XZDDPlayer::setWeaveItem(CMD_WeaveItem* pWeave,int iCout)
{
m_kWeaveCount = 0;
if (iCout <= 0 || iCout > MAX_WEAVE)
{
return;
}
memcpy(m_kWeaveItemArray,pWeave,sizeof(CMD_WeaveItem)*iCout);
m_kWeaveCount = iCout;
}
void XZDDPlayer::setOperateResoult(CMD_S_OperateResult* pNetInfo)
{
bool cbPublicCard = false;
word wOperateUser=pNetInfo->wOperateUser;
BYTE cbOperateCard=pNetInfo->cbOperateCard;
if (pNetInfo->cbOperateCode == WIK_PENG)
{
runAniPeng();
}
if ((pNetInfo->cbOperateCode&WIK_GANG)!=0)
{
//组合扑克
BYTE cbWeaveIndex=0xFF;
for (BYTE i=0;i<m_kWeaveCount;i++)
{
BYTE cbWeaveKind=m_kWeaveItemArray[i].cbWeaveKind;
BYTE cbCenterCard=m_kWeaveItemArray[i].cbCenterCard;
if ((cbCenterCard==pNetInfo->cbOperateCard)&&(cbWeaveKind==WIK_PENG))
{
cbWeaveIndex=i;
cbPublicCard = true;
m_kWeaveItemArray[cbWeaveIndex].cbPublicCard=cbPublicCard;
m_kWeaveItemArray[cbWeaveIndex].cbWeaveKind=pNetInfo->cbOperateCode;
m_kWeaveItemArray[cbWeaveIndex].wProvideUser=pNetInfo->wProvideUser;
break;
}
}
//组合扑克
if (cbWeaveIndex==0xFF)
{
//暗杠判断
cbPublicCard=(pNetInfo->wProvideUser==wOperateUser)?FALSE:TRUE;
//设置扑克
cbWeaveIndex=m_kWeaveCount++;
m_kWeaveItemArray[cbWeaveIndex].cbPublicCard=cbPublicCard;
m_kWeaveItemArray[cbWeaveIndex].cbCenterCard=cbOperateCard;
m_kWeaveItemArray[cbWeaveIndex].cbWeaveKind=pNetInfo->cbOperateCode;
m_kWeaveItemArray[cbWeaveIndex].wProvideUser=pNetInfo->wProvideUser;
}
//扑克设置
// if (m_iIdex == 0 || m_bGameRecord|| m_bMingPai )
{
XZDD::CGameLogic::Instance().RemoveValueCardAll(m_kHandCardData,m_kHandCardCout,pNetInfo->cbOperateCard);
}
m_kHandCardCout = MAX_COUNT - m_kWeaveCount*3 - 1;
if ( !cbPublicCard)
{
runAniAnGang();
}
else
{
runAniMingGang();
}
}
else if (pNetInfo->cbOperateCode!=WIK_NULL)
{
//设置组合
BYTE cbWeaveIndex=m_kWeaveCount++;
m_kWeaveItemArray[cbWeaveIndex].cbPublicCard=true;
m_kWeaveItemArray[cbWeaveIndex].cbCenterCard=cbOperateCard;
m_kWeaveItemArray[cbWeaveIndex].cbWeaveKind=pNetInfo->cbOperateCode;
m_kWeaveItemArray[cbWeaveIndex].wProvideUser=pNetInfo->wProvideUser;
//组合界面
//删除扑克
// if (m_iIdex == 0 || m_bGameRecord || m_bMingPai)
{
BYTE cbWeaveCard[4]={cbOperateCard,cbOperateCard,cbOperateCard,cbOperateCard};
XZDD::CGameLogic::Instance().RemoveValueCard(m_kHandCardData,m_kHandCardCout,cbWeaveCard,2);
// m_kHandCardCout -= 2;
}
// else
{
m_kHandCardCout = MAX_COUNT - m_kWeaveCount*3;
}
}
showHandCard();
}
void XZDDPlayer::addNewInCard(int iCard)
{
m_kHandCardCout++;
m_kHandCardData[MAX_COUNT-1-m_kWeaveCount*3] = iCard;
showHandCard();
}
void XZDDPlayer::sendOutCard(int iCard)
{
m_pHandOutCard = addHandOutCard(iCard);
m_pHandOutCard->setVisible(false);
WidgetFun::runWidgetAction(m_pHandOutCard,"OutAni");//等待2秒显示
setActOutCard(iCard);
}
void XZDDPlayer::showMJPoint()
{
if (m_pHandOutCard)
{
WidgetFun::setPos(m_pSeatNode,"MJPoint",m_pHandOutCard->getPosition());
WidgetFun::runWidgetAction(m_pSeatNode,"MJPoint","Start");
}
}
void XZDDPlayer::setActOutCard(int iCard)
{
cocos2d::Node* pNode = WidgetFun::getChildWidget(m_pSeatNode,"BigOutNode");
pNode->setVisible(iCard >= 0);
if (iCard < 0)
{
WidgetFun::runWidgetAction(m_pSeatNode,"MJPoint","End");
return;
}
std::string kImagic = WidgetFun::getWidgetUserInfo(pNode,"Imagic");
setCardImagic(pNode,iCard,kImagic);
if (m_pHandOutCard != NULL)
{
//出牌动画
cocos2d::Vec2 kEndPos = m_pHandOutCard->getPosition();
pNode->setAnchorPoint(m_pHandOutCard->getAnchorPoint());
WidgetFun::setWidgetUserInfo(pNode,"OutHandPos",utility::toString(kEndPos));
WidgetFun::runWidgetAction(pNode,"Start");
showMJPoint();
}
XZDDSoundFun::playCardByGender(GetGender(),iCard);
// if (m_iIdex == 0 || m_bGameRecord || m_bMingPai)
{
XZDD::CGameLogic::Instance().RemoveValueCardOne(m_kHandCardData,m_kHandCardCout,iCard);
m_kHandCardCout --;
XZDD::CGameLogic::Instance().SortCardList(m_kHandCardData,m_kHandCardCout);
}
// else
// {
// m_kHandCardCout -- ;
// }
showHandCard();
}
cocos2d::Node* XZDDPlayer::addHandOutCard(int iCard)
{
int iIdex = m_iIdex;
cocos2d::Node* pCardNode = WidgetFun::getChildWidget(m_pSeatNode,"CardNode2");
cocos2d::Vec2 kStartPos = WidgetFun::getChildWidget(m_pSeatNode,"OutPosNode")->getPosition();
int iAddOder = utility::parseInt(WidgetFun::getWidgetUserInfo(
m_pSeatNode,"OutPosNode","AddOder"));
cocos2d::Vec2 kOutAddPos = utility::parsePoint(WidgetFun::getWidgetUserInfo(
m_pSeatNode,"OutPosNode","OutAddPos"));
cocos2d::Vec2 kNextAddPos = utility::parsePoint(WidgetFun::getWidgetUserInfo(
m_pSeatNode,"OutPosNode","NextAddPos"));
cocos2d::Vec2 kPos;
int nLength = m_kOutCardList.size();
if (nLength >= 10)
{
kPos = kOutAddPos*(nLength-10)+kStartPos;
kPos += kNextAddPos;
}
else
{
kPos = kOutAddPos*nLength+kStartPos;
}
std::string kHandSkin = utility::toString("XZDD_OUT_",iIdex);
cocos2d::Node* pNode = WidgetManager::Instance().createWidget(kHandSkin,pCardNode);
pNode->setLocalZOrder(iAddOder*nLength);
pNode->setPosition(kPos);
std::string kImagic = WidgetFun::getWidgetUserInfo(pNode,"Imagic");
setCardImagic(pNode,iCard,kImagic);
m_kOutCardList.push_back(OutCardInfo(pNode,iCard));
return pNode;
}
void XZDDPlayer::showHandCard()
{
showHandCard(m_kWeaveItemArray,m_kWeaveCount,m_kHandCardData,m_kHandCardCout);
}
void XZDDPlayer::showHandCard(CMD_WeaveItem* pWeave,int iWeaveCout,BYTE* pHandCard,int iHandCout)
{
bool bHaveNewIn = (iWeaveCout*3+iHandCout) == MAX_COUNT;
int iIdex = m_iIdex;
cocos2d::Node* pCardNode = WidgetFun::getChildWidget(m_pSeatNode,"CardNode1");
pCardNode->removeAllChildren();
cocos2d::Vec2 kStartPos = WidgetFun::getChildWidget(m_pSeatNode,"HandPosNode")->getPosition();
int iAddOder = utility::parseInt(WidgetFun::getWidgetUserInfo(
m_pSeatNode,"HandPosNode","AddOder"));
cocos2d::Vec2 kHandAddPos = utility::parsePoint(WidgetFun::getWidgetUserInfo(
m_pSeatNode,"HandPosNode","HandAddPos"));
cocos2d::Vec2 kNewInAddPos = utility::parsePoint(WidgetFun::getWidgetUserInfo(
m_pSeatNode,"HandPosNode","NewInAddPos"));
std::string kPengSkin = utility::toString("XZDD_PENG_",iIdex);
std::string kGangSkin = utility::toString("XZDD_GANG_",iIdex);
std::string kHandSkin = utility::toString("XZDD_HAND_",iIdex);
int iOder = 0;
float fValue =1.f;
if (iIdex == 0)
{
fValue = 0.8f;
}
cocos2d::Vec2 kWeaveAddPos = kHandAddPos*3*fValue;
for (int i = 0;i<iWeaveCout;i++)
{
CMD_WeaveItem* pTemp = pWeave+i;
int iCardValue = pTemp->cbCenterCard;
if (pTemp->cbPublicCard == 0)
{
iCardValue = -1;
}
if (pTemp->cbWeaveKind == WIK_PENG)
{
cocos2d::Node* pNode = WidgetManager::Instance().createWidget(kPengSkin,pCardNode);
pNode->setLocalZOrder(iOder);
pNode->setPosition(kStartPos);
kStartPos += kWeaveAddPos;
std::string kImagic = WidgetFun::getWidgetUserInfo(pNode,"Imagic");
setCardImagic(WidgetFun::getChildWidget(pNode,"Card0"),iCardValue,kImagic);
setCardImagic(WidgetFun::getChildWidget(pNode,"Card1"),iCardValue,kImagic);
setCardImagic(WidgetFun::getChildWidget(pNode,"Card2"),iCardValue,kImagic);
}
if (pTemp->cbWeaveKind == WIK_GANG)
{
cocos2d::Node* pNode = WidgetManager::Instance().createWidget(kGangSkin,pCardNode);
pNode->setLocalZOrder(iOder);
pNode->setPosition(kStartPos);
kStartPos +=
- 1
- 2
前往页