guoqing.zhu 2cebeacf6c update
2022-06-07 13:23:13 +08:00

413 lines
9.8 KiB
JavaScript

var battlenet = require('battlenetmanage');
var SDKManage = require('SDKManage');
var gameConfig = require('gameConfig');
var Utils = require('Utils');
const NetManage = require('../../manages/NetManage');
const { showLoading } = require('../../gif/Loading');
const { OperationType } = require('../../Operation/Operation');
const jcgamelog = require('../../jcfw/service/jcgamelog');
cc.Class({
extends: cc.Component,
properties: {
nd_chat: {
default: null,
type: cc.Node,
},
nd_back: {
default: null,
type: cc.Node,
},
lb_time: {
default: null,
type: cc.Label,
},
nd_time5: {
default: null,
type: cc.Node,
},
nd_btns: {
default: null,
type: cc.Node,
},
btn_ready: {
default: null,
type: cc.Node,
},
btn_noready: {
default: null,
type: cc.Node,
},
btn_go: {
default: null,
type: cc.Node,
},
pb_herolihui: {
default: null,
type: cc.Prefab,
},
nd_teamlihui: {
default: null,
type: cc.Node,
},
nd_onehui: {
default: null,
type: cc.Node,
},
tableView_chose: {
default: null,
type: cc.Node,
},
pb_chooseWeapon: {
default: null,
type: cc.Prefab,
},
nd_weaponNode1: {
default: null,
type: cc.Node,
},
nd_weaponNode2: {
default: null,
type: cc.Node,
},
},
// LIFE-CYCLE CALLBACKS:
onLoad() {
this.weaponStr = '[]';
this.weapon_uniid = new Array();
cc.Notifier.on(
'battleclickchose',
this,
this.battleclickchose.bind(this)
);
cc.Notifier.on(
'SMUpdateMatchInfo',
this,
this.SMUpdateMatchInfo.bind(this)
);
cc.Notifier.on('infochangeskin', this, this.infochangeskin.bind(this));
// choose weapon
cc.Notifier.on('haschooseWeapon', this, (index, name) => {
if (index) {
console.log(`index-------${window.currentWeaponName}`);
if (index == 0) {
cc.loader.loadRes(
`icons/${window.currentWeaponName}`,
cc.SpriteFrame,
(err, res) => {
if (this.nd_weaponNode1)
this.nd_weaponNode1.getComponent(
cc.Sprite
).spriteFrame = res;
}
);
} else if (index == 1) {
cc.loader.loadRes(
`icons/${window.currentWeaponName}`,
cc.SpriteFrame,
(err, res) => {
if (this.nd_weaponNode2)
this.nd_weaponNode2.getComponent(
cc.Sprite
).spriteFrame = res;
}
);
}
//
if (window.firstgun && this.weapon_uniid) {
this.weapon_uniid[0] = window.firstgun;
}
if (window.secondgun && this.weapon_uniid) {
this.weapon_uniid[1] = window.secondgun;
}
this.weaponStr = JSON.stringify(this.weapon_uniid);
console.log(this.weaponStr);
}
});
},
onDestroy() {
cc.Notifier.off('battleclickchose', this);
cc.Notifier.off('SMUpdateMatchInfo', this);
cc.Notifier.off('infochangeskin', this);
},
SMUpdateMatchInfo(_data) {
var data = _data.info;
this.herodatalist = data.members;
for (var i = 0; i < data.members.length; i++) {
var onedata = data.members[i];
if (onedata.hero_skin > 0) {
onedata.hero_id =
gameConfig.all_ItemConfig[onedata.hero_skin].playerid;
onedata.hero_skin = onedata.hero_skin;
}
}
if (data.countdown <= 5) {
this.lb_time.node.active = false;
this.nd_btns.active = false;
this.nd_time5.active = true;
} else {
this.lb_time.node.active = true;
this.lb_time.string = Utils.second3Time(data.countdown);
}
this.refresh();
},
battleclickchose(v) {
this.tmpv = v;
if (this.mystate != 0) {
return;
}
var heroDetail = this.getHeroDetailByID(v.hero_id);
var process =
(heroDetail.ceg_uplimit - heroDetail.today_get_gold) /
heroDetail.ceg_uplimit;
this.node.getComponentInChildren('pbbattleui').nd_processbar.progress =
process;
this.node.getComponentInChildren('pbbattleui').nd_remainceg.string =
heroDetail.ceg_uplimit - heroDetail.today_get_gold;
for (var i = 0; i < this.herodatalist.length; i++) {
if (this.herodatalist[i].account_id == v.account_id) {
this.herodatalist[i].hero_id = v.hero_id;
this.herodatalist[i].hero_skin = v.hero_skin;
this.herodatalist[i].hero_uuid = this.getHeroUUidByid(
v.hero_id
);
if (SDKManage.account_id == v.account_id) {
cc.playerData.changeHero(v.hero_id);
this.hero_id = v.hero_id;
this.hero_uuid = this.getHeroUUidByid(v.hero_id);
this.canzb = true;
if (this.team_mode) {
let data = {
hero_id: v.hero_id,
weapons: JSON.parse(this.weaponStr),
skins: [],
baseskin:
gameConfig.all_ItemConfig[v.hero_skin].skinid,
hero_skin: v.hero_skin,
skill_list: cc.playerData.getbattleskilllist(),
hero_uniid: this.herodatalist[i].hero_uuid,
};
this.matchdata = data;
cc.battleIns.sendbattlemsg('CMMatchChoose', data);
}
}
this.refresh();
break;
}
}
},
initdata(opt) {
this.lb_time.node.active = false;
this.mystate = 0;
this.nd_time5.active = false;
this.btn_ready.active = false;
this.btn_noready.active = false;
this.btn_go.active = false;
this.nd_back.active = false;
this.herodatalist = [];
this.herolist = [];
cc.playerData.changeHero(30100);
var addnode = this.nd_teamlihui;
var pcount = 1;
if (opt.teamuuid) {
this.team_mode = true;
pcount = 4;
} else {
this.btn_go.active = true;
this.nd_back.active = true;
addnode = this.nd_onehui;
this.herodatalist.push({
state: 0,
name: cc.playerData.name,
hero_id: 0,
hero_skin: 0,
account_id: SDKManage.account_id,
hero_uuid: 0,
});
}
for (var i = 0; i < pcount; i++) {
var nd = cc.instantiate(this.pb_herolihui);
addnode.addChild(nd);
var scp = nd.getComponent('pbbattleui');
scp.target = this;
this.herolist.push(scp);
}
this.refresh();
this.changelist(0);
},
changetype(data1, data2) {
this.changelist(Number(data2));
cc.Notifier.emit('btnchose', { k: data2 });
},
changelist(type) {
var cherolist = [];
var openherolist = cc.playerData.getopenhero();
var herolist = [];
this.allHeroUUID = [];
this.allHeroID = [];
this.heroDetails = [];
NetManage.getHeroList((data) => {
herolist = data.hero_list;
for (var i = 0; i < herolist.length; i++) {
var element = herolist[i];
if (element.lock_type != 3) {
this.allHeroUUID.push(element.hero_uniid);
this.allHeroID.push(parseInt(element.hero_id));
this.heroDetails.push(herolist[i]);
}
}
for (var i = 0; i < this.allHeroID.length; i++) {
var hid = this.allHeroID[i];
var heroType = gameConfig.playerConfig[hid].herotype;
if (type == 0 || type == heroType) {
if (cc.playerData.checkhasgethero(hid)) {
cherolist.push(hid);
}
}
}
var newlist = Utils.arrtoarr(cherolist, 2);
// this.allHeroID = cherolist;
this.tableView_chose
.getComponent('tableView')
.initTableView(newlist.length, {
array: newlist,
target: this,
});
});
// for (var i = 0; i < openherolist.length; i++) {
// var hid = openherolist[i];
// var heroType = gameConfig.playerConfig[hid].herotype;
// if (type == 0 || type == heroType) {
// if (cc.playerData.checkhasgethero(hid)) {
// cherolist.push(hid);
// }
// }
// }
// var newlist = Utils.arrtoarr(cherolist, 2);
// this.allHeroID = cherolist;
// this.tableView_chose
// .getComponent("tableView")
// .initTableView(newlist.length, {
// array: newlist,
// target: this,
// });
},
getHeroUUidByid(id) {
var index = this.allHeroID.indexOf(id);
return this.allHeroUUID[index];
},
getHeroDetailByID(id) {
var index = this.allHeroID.indexOf(id);
return this.heroDetails[index];
},
onclickclose() {
window.firstgun = null;
window.secondgun = null;
this.node.destroy();
},
onclickgo() {
//single
jcgamelog.addOperation(OperationType.BUTTON, 'startgame');
if (!this.canzb) {
cc.uiHelper.showTips('Please choose a hero first');
return;
}
// showLoading();
// setTimeout(() => {
// this.btn_noready.parent.parent.zindex = 99;
// }, 1500);
var opt = cc.playerData.getbattleopt();
opt.team_mode = 0;
opt.player_count = 1;
opt.hero_uniid = this.hero_uuid;
if (window.firstgun) {
opt.weapon_uniid = new Array();
opt.weapon_uniid.push(window.firstgun);
if (window.secondgun) {
opt.weapon_uniid.push(window.secondgun);
}
}
battlenet.initengine(opt);
},
refresh() {
for (var i = 0; i < this.herodatalist.length; i++) {
this.herolist[i].initdata(this.herodatalist[i]);
}
},
onclicktype() {},
onclickcancelready() {
cc.battleIns.sendbattlemsg('CMMatchCancelStartGame');
},
onclickready() {
jcgamelog.addOperation(OperationType.BUTTON, 'startgame');
// team
if (!this.canzb) {
cc.uiHelper.showTips('Please choose a hero first');
return;
}
//
if (this.matchdata) {
this.matchdata.weapons = JSON.parse(this.weaponStr);
cc.battleIns.sendbattlemsg('CMMatchChoose', this.matchdata);
}
//
cc.battleIns.sendbattlemsg('CMMatchStartGame');
},
doready(state) {
if (this.team_mode) {
this.mystate = state;
this.btn_ready.active = state == 0;
this.btn_noready.active = !this.btn_ready.active;
}
},
infochangeskin(v) {
cc.Notifier.emit('battleclickchose', {
account_id: SDKManage.account_id,
hero_id: this.hero_id,
hero_skin: v,
});
cc.playerData.changeSkin(v);
},
// update (dt) {},
onClickChooseWeapon(event, data) {
var node = cc.instantiate(this.pb_chooseWeapon);
node.scale = 0.8;
this.node.addChild(node);
node.getComponent('chooseGun').startFrom(data);
},
});