cc.Class({ extends: cc.Component, properties: { m_CardNodeTB: [cc.Node], m_CardNodeLR: [cc.Node], }, // LIFE-CYCLE CALLBACKS: ctor: function () { this.m_CardArray = new Array(); this.m_cbCardData = new Array(); }, onLoad() { }, BuildCard: function (state, cardPrefab) { // 定义一个变量node,用于存储手牌节点 var node; // 定义一个变量offsetY,用于存储y轴偏移量,默认为0 var offsetY = 0; // 设置当前手牌状态为传入的state参数 this.m_HandState = state; // 根据state参数判断手牌的方向,并设置相应的节点和y轴偏移量 if (state == GameDef.HAND_TOP || // 如果手牌在顶部 state == GameDef.HAND_BOTTOM) { // 或者手牌在底部 node = this.m_CardNodeTB; // 使用m_CardNodeTB节点 } else if (state == GameDef.HAND_LEFT) { // 如果手牌在左侧 node = this.m_CardNodeLR; // 使用m_CardNodeLR节点 offsetY = -10; // 设置y轴偏移量为-10 } else if (state == GameDef.HAND_RIGHT) { // 如果手牌在右侧 node = this.m_CardNodeLR; // 使用m_CardNodeLR节点 offsetY = 10; // 设置y轴偏移量为10 } // 遍历node数组,为每个位置创建手牌实例 for (var i = 0; i < node.length; i++) { // 实例化手牌预制体,并存储在m_CardArray数组中 this.m_CardArray[i] = cc.instantiate(cardPrefab); // 将手牌实例作为子节点添加到对应的手牌方向节点中 node[i].addChild(this.m_CardArray[i]); // 根据手牌方向调整手牌实例的y轴位置 this.m_CardArray[i].y += offsetY; // 获取手牌实例的CardItem组件 this.m_CardArray[i] = this.m_CardArray[i].getComponent('CardItem'); // 设置手牌实例的状态为显示状态 this.m_CardArray[i].SetState(GameDef.HAND_STATE_SHOW); } }, SortCardData: function (cbCardData, wCardCount) { for (var i = 0; i < wCardCount; ++i) { for (var j = i + 1; j < wCardCount; ++j) { if (cbCardData[i] > cbCardData[j]) { var tmp = cbCardData[i]; cbCardData[i] = cbCardData[j]; cbCardData[j] = tmp; } } } }, SetCardItemColor: function () { for (var i = 0; i < this.m_CardArray.length; i++) { this.m_CardArray[i].SetProvideType(GameDef.ITEM_PROVIDE_COLOR); } }, SetWeaveData: function (cbCardData, wCardCount) { this.m_wCardCount = wCardCount; for (var i = this.m_wCardCount; i < this.m_CardArray.length; i++) { this.m_CardArray[i].node.active = false; } this.SortCardData(cbCardData, wCardCount) for (var i = 0; i < wCardCount; ++i) { if (i < wCardCount) { this.m_cbCardData[i] = cbCardData[i]; } else { this.m_cbCardData[i] = 0; } this.m_CardArray[i].node.active = true; this.m_CardArray[i].SetCardData(this.m_cbCardData[i]); this.m_CardArray[i].SetState(GameDef.HAND_STATE_SHOW); } }, SetWeaveNumber: function (cbExtraCount) { if (cbExtraCount == null) return; for (var i = 0; i < 4; i++) { if (cbExtraCount[i] != null && cbExtraCount[i] > 0) { this.m_CardArray[i].SetNumber(cbExtraCount[i]); } } }, SetWeaveState: function (arg, bEnd) { if (typeof arg == 'object') { this.__setWeaveStateObj(arg, bEnd); } else { this.__setWeaveState(arg); } }, __setWeaveStateObj: function (obj, bEnd) { var WeaveState = GameDef.GANG_THREE_SHOW; var cbCardData = obj.cbCenterCard; var wWeaveKind = obj.wWeaveKind; var cbWeaveCardCount = GameDef.g_GameLogic.GetWeaveCard(wWeaveKind, cbCardData, obj.cbCardData); if (cbWeaveCardCount == 4 && !obj.cbPublicCard) { WeaveState = GameDef.GAME_THREE_BACK_SELF; var wProViewID = GameDef.g_GameEngine.SwitchViewChairID(obj.wProvideUser); var wSelfID = GameDef.g_GameEngine.SwitchViewChairID(GameDef.g_GameEngine.GetMeChairID()); if( this.m_HandState == wProViewID && this.m_HandState == wSelfID ){ WeaveState = GameDef.GAME_THREE_BACK_SELF; } else{ WeaveState = GameDef.GAME_THREE_BACK; } } if (obj.cbExtraCount != null) { for (var i = 0; i < 4; i++) { if (obj.cbExtraCount[i] > 0) { this.m_CardArray[i].SetNumber(obj.cbExtraCount[i]); } } } this.__setWeaveState(WeaveState); if (obj.wProvideUser != null && obj.wProvideUser != INVALD_CHAIR && (obj.wProvideUser != GameDef.g_GameEngine.GetMeChairID() || this.m_HandState != GameDef.HAND_BOTTOM || bEnd)) { var wProViewID = GameDef.g_GameEngine.SwitchViewChairID(obj.wProvideUser); if (wWeaveKind == GameDef.WIK_LEFT || wWeaveKind == GameDef.WIK_PENG) { this.m_CardArray[0].SetProvide(wProViewID); } if (wWeaveKind == GameDef.WIK_RIGHT) { this.m_CardArray[2].SetProvide(wProViewID); } if (wWeaveKind == GameDef.WIK_CENTER) { this.m_CardArray[1].SetProvide(wProViewID); } if (wWeaveKind == GameDef.WIK_CAI_ZFB) { this.m_CardArray[cbCardData - 0x35].SetProvide(wProViewID); } if (wWeaveKind == GameDef.WIK_GANG) { this.m_CardArray[3].SetProvide(wProViewID); } } }, __setWeaveState: function (state) { //普通杠牌,1张牌摞起来,全部显示 if (state == GameDef.GANG_THREE_SHOW) { for (var i = 0; i < 4; i++) { this.m_CardArray[i].SetState(GameDef.HAND_STATE_SHOW); } } else if (state == GameDef.GAME_THREE_BACK) { for (var i = 0; i < 4; i++) { this.m_CardArray[i].SetState(GameDef.HAND_STATE_SHOW_BACK); } } else if (state == GameDef.GAME_THREE_BACK_SELF) { for (var i = 0; i < 4; i++) { this.m_CardArray[i].SetState(GameDef.HAND_STATE_SHOW_BACK); } this.m_CardArray[3].SetState(GameDef.HAND_STATE_SHOW); } }, // update (dt) {}, });