| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- 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) {},
- });
|