Files
beimi/client/version/chess/assets/resources/script/business/PlayerRender.js
2017-12-21 23:04:13 +08:00

371 lines
11 KiB
JavaScript

var beiMiCommon = require("BeiMiCommon");
cc.Class({
extends: beiMiCommon,
properties: {
// foo: {
// default: null, // The default value will be used only when the component attaching
// to a node for the first time
// url: cc.Texture2D, // optional, default is typeof default
// serializable: true, // optional, default is true
// visible: true, // optional, default is true
// displayName: 'Foo', // optional
// readonly: false, // optional, default is false
// },
// ...
username: {
default: null,
type: cc.Label
},
goldcoins: {
default: null,
type: cc.Label
},
dizhu: {
default: null,
type: cc.Node
},
pokertag: {
default: null,
type: cc.Node
},
pokercards: {
default: null,
type: cc.Label
},
timer:{
default: null,
type: cc.Node
},
jsq:{
default: null,
type: cc.Node
},
headimg:{
default: null,
type: cc.Node
},
atlas: {
default: null,
type: cc.SpriteAtlas
},
timer_num:{
default: null,
type: cc.Label
},
result:{
default: null,
type: cc.Node
},
lastcards:{
default: null,
type: cc.Node
},
cannot:{
default: null,
type: cc.Node
},
donot:{
default: null,
type: cc.Node
}
},
// use this for initialization
onLoad: function () {
this.cardcount = 0 ;
this.cardslist = new Array();
this.isRight = false ;
},
initplayer:function(data , isRight){
this.username.string = data.username ;
this.userid = data.id ;
if(isRight == true){
this.pokertag.x = this.pokertag.x * -1;
this.timer.x = this.timer.x * -1;
this.headimg.x = this.headimg.x * -1
this.result.x = this.result.x * -1
this.cannot.x = this.cannot.x * -1
this.donot.x = this.donot.x * -1
this.jsq.x = this.jsq.x * -1
this.dizhu.x = this.dizhu.x * -1
//this.lastcards.x = this.lastcards.x * -1
this.lastcards.getComponent(cc.Layout).horizontalDirection = 0 ;
this.isRight = isRight ;
}
if(this.goldcoins){
if(data.goldcoins > 10000){
var num = this.goldcoins / 10000 ;
this.goldcoins.string = num.toFixed(2) + '万';
}else{
this.goldcoins.string = data.goldcoins;
}
}
if(this.dizhu){
this.dizhu.active = false ;
}
if(this.jsq){
this.jsq.active = false ;
}
if(this.result){
this.result.active = false ;
}
if(this.cannot){
this.cannot.active = false ;
}
if(this.donot){
this.donot.active = false ;
}
if(this.takecards){
this.takecards.active = false ;
}
},
countcards:function(cards){
this.cardcount = this.cardcount + cards ;
this.pokercards.string = this.cardcount ;
},
resetcards:function(cards){
this.cardcount = cards ;
if(this.pokercards != null){
this.pokercards.string = this.cardcount ;
}
},
catchtimer:function(times){
if(this.jsq){
this.jsq.active = true ;
}
if(this.result){
this.result.active = false ;
}
if(this.cannot){
this.cannot.active = false ;
}
if(this.donot){
this.donot.active = false ;
}
let self = this ;
var gameTimer = require("GameTimer");
this.beimitimer = new gameTimer();
this.timesrc = this.beimitimer.runtimer(this , this.jsq , this.atlas , this.timer_num , this.timer_num , times);
},
catchresult:function(data){
if(this.beimitimer){
this.beimitimer.stoptimer(this , this.jsq , this.timesrc);
var dograb = this.atlas.getSpriteFrame('提示_抢地主');
var docatch = this.atlas.getSpriteFrame('提示_不抢');
if(data.grab){
//抢地主
if(this.result){
this.result.getComponent(cc.Sprite).spriteFrame = dograb;
this.result.active = true ;
}
if(this.cannot){
this.cannot.active = false ;
}
if(this.donot){
this.donot.active = false ;
}
}else{
//叫地主
if(this.result){
this.result.getComponent(cc.Sprite).spriteFrame = docatch;
this.result.active = true ;
}
if(this.cannot){
this.cannot.active = false ;
}
if(this.donot){
this.donot.active = false ;
}
}
}
},
hideresult:function(){
if(this.result){
this.result.active = false ;
}
if(this.cannot){
this.cannot.active = false ;
}
if(this.donot){
this.donot.active = false ;
}
},
lasthands:function(self, game ,data){ //所有玩家共用的
this.hideresult();
if(this.beimitimer && this.timesrc) {
this.beimitimer.stoptimer(this, this.jsq, this.timesrc);
}
if(this.userid == data.userid){//设置地主
if(this.pokercards){
this.countcards(3) ;
}
/**
* 开始计时
*/
this.playtimer(game , 25) ;
}
this.setDizhuFlag(data);
},
setDizhuFlag:function(data){
if(this.userid == data.userid){//设置地主
this.dizhu.active = true ;
}else{
this.dizhu.active = false ;
}
},
lasttakecards:function(game , self , cardsnum ,cards ,data) {
if (this.beimitimer && this.timesrc) {
this.beimitimer.stoptimer(this, this.jsq, this.timesrc);
}
if (this.result) {
this.result.active = false;
}
if (this.cannot) {
this.cannot.active = false;
}
if (this.donot) {
this.donot.active = false;
}
if (this.jsq) {
this.jsq.active = false;
}
if (this.lastcards) {
this.lastcards.active = true;
}
if(this.cardslist.length > 0){
for (var i = 0; i < this.cardslist.length; i++) {
game.minpokerpool.put(this.cardslist[i]);//回收回去
}
this.cardslist.splice(0, this.cardslist.length);//删除数组里的所有内容
}
if (data.donot == false || data.finished == true) {
this.resetcards(cardsnum);
for (var i = 0; i < cards.length; i++) {
this.playcards(game, i, cards[i] , cards);
}
this.layout(this.lastcards , function(fir , sec){
return fir.zIndex - sec.zIndex ;
});
}else{
if(data.sameside == "1"){
self.getPlayer(data.userid).tipdonot();
}else{
self.getPlayer(data.userid).tipcannot();
}
}
},
tipcannot:function(){
if(this.result){
this.result.active = false ;
}
if(this.cannot){
this.cannot.active = true ;
}
if(this.donot){
this.donot.active = false ;
}
},
tipdonot:function(){
if(this.result){
this.result.active = false ;
}
if(this.cannot){
this.cannot.active = false ;
}
if(this.donot){
this.donot.active = true ;
}
},
playcards:function(game , index, card , cards){
let currpoker = game.minpokerpool.get() ;
currpoker.x = index * 30 - 30 ;
// if(this.isRight == true){
// currpoker.zIndex = 100 - index;
// }else{
// currpoker.zIndex = index;
// }
let zIndex = this.countcard(card , cards) ;
currpoker.zIndex = 4 - zIndex ;
currpoker.parent = this.lastcards ;
this.cardslist.push(currpoker) ;
let beiMiCard = currpoker.getComponent("BeiMiCard");
beiMiCard.setCard(card) ;
beiMiCard.order();
},
/**
* 按照张数最大的牌排序
* @param card
* @param lastcards
* @returns {number}
*/
countcard:function(card , lastcards){
let value = parseInt(card / 4);
let count = 0 ;
for(var i = 0 ;i<lastcards.length ; i++){
let temp = parseInt(lastcards[i] / 4) ;
if(value == temp){
count = count + 1 ;
}
}
return count ;
},
playtimer:function(game , times){
if(this.result){
this.result.active = false ;
}
if(this.cannot){
this.cannot.active = false ;
}
if(this.donot){
this.donot.active = false ;
}
if(this.lastcards){
this.lastcards.active = false ;
}
for(var i=0 ; i<this.cardslist.length ; i++){
game.minpokerpool.put(this.cardslist[i]) ;//回收回去
}
let self = this ;
var gameTimer = require("GameTimer");
this.beimitimer = new gameTimer();
this.timesrc = this.beimitimer.runtimer(this , this.jsq , this.atlas , this.timer_num , this.timer_num , times);
},
clean:function(game){
for (var i = 0; i < this.cardslist.length; i++) {
game.minpokerpool.put(this.cardslist[i]);//回收回去
}
this.resetcards(0) ;
if(this.dizhu){
this.dizhu.active = false ;
}
if(this.jsq){
this.jsq.active = false ;
}
if(this.result){
this.result.active = false ;
}
if(this.cannot){
this.cannot.active = false ;
}
if(this.donot){
this.donot.active = false ;
}
if(this.takecards){
this.takecards.active = false ;
}
}
// called every frame, uncomment this function to activate update callback
// update: function (dt) {
// },
});