pubgv3/assets/scripts/game/gameManage.js
zhuguoqing 62d8fb825e update
2022-05-28 11:15:04 +08:00

2163 lines
56 KiB
JavaScript

// Learn cc.Class:
// - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/class.html
// - [English] http://www.cocos2d-x.org/docs/creator/en/scripting/class.html
// Learn Attribute:
// - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html
// - [English] http://www.cocos2d-x.org/docs/creator/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
// - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html
// - [English] http://www.cocos2d-x.org/docs/creator/en/scripting/life-cycle-callbacks.html
var BulletManager = require('bulletManage');
var EffectManager = require('effectManage');
var plusresManager = require('plusResManage');
var DropManager = require('dropManage');
var GameLoot = require('gameloot');
var Utils = require('Utils');
var gameConfig = require('gameConfig');
var battlenet = require('battlenetmanage');
var SDKManage = require('SDKManage');
var wxVoice = require('wxVoice');
var quadtree = require('quadtree');
var Main = require('Main');
var playerData = require('playerData');
var mapconfig = gameConfig.mapConfig;
var ItemConfig = gameConfig.itemConfig;
var tileConfig = require('tileConfig');
var parpbs = {};
var breadyFrame = {};
var playerpool = [];
var tiaosanview = 0.4;
cc.shadowpy = 80;
var planedelaytime = 1200;
var jintou = 1.3;
var cloudxiaoshitime = 5000;
cc.budongbili = 2;
var btnyinshe = {
1: {
name: 'open',
pic: 'pic_btn1',
},
2: {
name: 'hide',
pic: 'pic_btn2',
},
3: {
name: 'get out',
pic: 'pic_btn2',
},
};
cc.Class({
extends: cc.Component,
properties: {
pbplayer: {
default: null,
type: cc.Prefab,
},
pbmask: {
default: null,
type: cc.Prefab,
},
pbsmoke: {
default: null,
type: cc.Prefab,
},
pbboom: {
default: null,
type: cc.Prefab,
},
pbbreak: {
default: null,
type: cc.Prefab,
},
pbbullet: {
default: null,
type: cc.Prefab,
},
// pbtank: {
// default: null,
// type: cc.Prefab,
// },
pbui: {
default: null,
type: cc.Prefab,
},
pbuipc: {
default: null,
type: cc.Prefab,
},
// grasspb:{
// default: null,
// type: cc.Prefab,
// },
pbbullethit: {
default: null,
type: cc.Prefab,
},
pbfire: {
default: null,
type: cc.Prefab,
},
nd_plane: {
default: null,
type: cc.Node,
},
pbcar: {
default: null,
type: cc.Prefab,
},
shijiao: 1,
},
sendVoice(url) {
battlenet.sendVoice(url);
},
playbgm(url) {
wxVoice.playbgm(url);
},
stopbgm() {
wxVoice.stopbgm();
},
playSound: function (url, pos) {
if (url == null) {
return;
}
if (cc.notSound) {
return;
}
var soundVolume = 1;
if (this.watchPlayer && pos) {
var dis =
Math.pow(this.watchPlayer.x - pos.x, 2) +
Math.pow(this.watchPlayer.y - pos.y, 2);
var soundMax = Math.pow(512, 2);
if (dis > soundMax) {
return;
} else {
soundVolume = 1 - dis / soundMax;
}
}
wxVoice.playSound(url, soundVolume);
},
huishou() {
for (let i = this.lootarr.length - 1; i >= 0; i--) {
let nowloot = this.lootarr[i];
nowloot.isout = false;
nowloot.removeFromParent(false);
this.lootpool.push(nowloot);
// if (nowloot.istree != 2) {
// this.lootpool.push(nowloot)
// } else {
// this.loottreepool.push(nowloot)
// }
}
},
onDestroy() {
cc.mytimescale = 1;
this.myTree.clear();
battlenet.clean();
cc.gameMgr = null;
var soundsave = cc.notSound ? 1 : 0;
try {
cc.sys.localStorage.setItem('soundsave', soundsave);
} catch (e) {}
// var shakesave = cc.notShake ? 1 : 0
// try {
// cc.sys.localStorage.setItem('shakesave2', shakesave);
// } catch (e) {}
var joyMode = cc.joyMode ? '1' : '0';
try {
cc.sys.localStorage.setItem('joyMode1', joyMode);
} catch (e) {}
// var heal = cc.notheal ? "1" : "0"
// try {
// cc.sys.localStorage.setItem('healsave', heal);
// } catch (e) {}
for (var i = this.housearr.length - 1; i >= 0; i--) {
this.housearr[i].cell = null;
this.housearr[i].objChildren.length = 0;
this.housearr[i].doorChildren.length = 0;
this.housearr[i].eventChildren.length = 0;
}
this.bulletManager.clean();
this.effectManager.clean();
this.dropManager.clean();
this.objMap = null;
this.housearr.length = 0;
this.playerarr.length = 0;
this.lootarr.length = 0;
this.doorarr.length = 0;
playerpool.length = 0;
breadyFrame = {};
//lootpool.length = 0
// this.treearr.length=0
cc.sys.garbageCollect();
cc.view.enableRetina(true);
cc.Notifier.off('gameshake', this);
},
doshake() {
if (cc.notSound) {
return;
}
if (cc.sys.platform == cc.sys.WECHAT_GAME) {
wx.vibrateShort();
}
},
commonSet() {
this.ndhouse.destroyAllChildren();
this.lootnode.destroyAllChildren();
this.nditem.destroyAllChildren();
this.ndplayer.destroyAllChildren();
this.ndbullet.destroyAllChildren();
this.ndtree.destroyAllChildren();
this.ndeff.destroyAllChildren();
this.ndhouseCell.destroyAllChildren();
this.tree3node.destroyAllChildren();
this.targetView = this.viewScale = gameConfig.viewScale[0];
this.mapview = this.targetView;
this.map.scale = this.viewScale;
this.bulletManager.reset();
this.effectManager.init();
this.dropManager.reset();
this.housearr = [];
this.playerarr = [];
this.cararr = [];
this.npcarr = [];
this.lootarr = [];
this.doorarr = [];
// this.treearr=[];
this.canOpendoor = false;
this.effectManager.effNode = this.ndeff;
this.bulletManager.bulletNode = this.ndbullet;
this.dropManager.itemNode = this.ndplayer;
this.halfSize = this.mapSize / 2;
this.safeLength = this.halfSize * 2.5;
this.nowSafe = this.safeLength * 1.5;
this.centerVec = cc.v2(cc.gameMgr.mapSize / 2, cc.gameMgr.mapSize / 2);
this.time = 0;
},
resetGameNet() {
this.commonSet();
this.objMap = {};
this.objMap2 = {};
this.maps = gameConfig.houseConfig;
},
onLoad() {
this.viewspeed = 2;
gameConfig.viewScale[0] = jintou;
this.nd_plane.active = false;
this.planetime = 0;
this.nowframe = 0;
this.lootpool = cc.battleCache.lootpool;
this.loottreepool = cc.battleCache.loottreepool;
this.fireag = 4;
cc.uiHelper.hideLoading();
var coul1 = cc.find('Canvas/uicloud1');
var coul2 = cc.find('Canvas/uicloud2');
coul1.zIndex = 1;
coul2.zIndex = 1;
coul1.active = false;
coul2.active = false;
this.sans = 0;
this.sanoffy = 0;
this.fpscount = 0;
this.tanviewchange = 0;
this.tiaosantime2 = 0;
this.fpstotal = 0;
this.lowcount = 0;
this.lowfpscount = 0;
this.lootmap = {};
this.viewcd = 0;
cc.gameMgr = this;
this.battlecount = battlenet.battlecount;
this.firstzombie = battlenet.firstzombie;
this.gamemode = battlenet.gamemode;
this.roomid = battlenet.roomid;
if (!this.gamemode) {
this.gamemode = 0;
}
if (this.gamemode == 1) {
cc.find('Canvas/sky').active = true;
} else {
cc.find('Canvas/sky').active = false;
}
// this.deltaY = cc.winSize.height / 512 * jizhundy / this.shijiao
// this.deltaX = jizhundx
SDKManage.logEvent('battle_join', this.gamemode);
this.huaweiopt = 0;
var uind;
if (cc.pcmode) {
uind = cc.instantiate(this.pbuipc);
} else {
uind = cc.instantiate(this.pbui);
}
this.uic = uind.getComponent('GameUI');
this.duquantime = 0;
//cc.view.enableRetina(false)
//this.nd_gas.active = false
this.dostart();
battlenet.initIng = false;
var sound = cc.sys.localStorage.getItem('soundsave');
if (sound == null || sound == '' || sound == 0) {
cc.notSound = false;
} else {
cc.notSound = true;
}
// var shake = cc.sys.localStorage.getItem('shakesave2');
// if (shake == null || shake == "" || shake == 0) {
// cc.notShake = false
// } else {
// cc.notShake = true
// }
cc.notShake = true;
cc.notheal = true;
// var heal = cc.sys.localStorage.getItem('healsave');
// if (heal == null || heal == "" || heal == "1") {
// cc.notheal = true
// } else {
// cc.notheal = false
// }
this.canStart = false;
this.gameStart = false;
if (battlenet.newbiemode) {
this.gameStart = true;
}
// if(cc.sys.platform == cc.sys.WECHAT_GAME){
// wx.getOpenDataContext().postMessage({
// message: {
// method :'offsub'
// }
// })
// }
this.myTree = new quadtree(
{
x: 0,
y: 0,
width: this.mapSize,
height: this.mapSize,
},
6
);
this.displayercount = 0;
this.objdatamap = {};
this.node.parent.addChild(uind);
cc.Notifier.on('gameshake', this, this.gameshake.bind(this));
},
gameshake(v) {
if (this.shakethisframe) {
return;
}
var ac = new cc.ShakeAction();
ac.initWithDuration(v.time, v.strengthx, v.strengthy);
this.node.stopAllActions();
this.node.runAction(ac);
this.shakethisframe = true;
},
doplane() {
this.nd_plane.active = true;
this.planeing = true;
this.nditem.active = true;
setTimeout(() => {
this.uic.btn_san.active = true;
}, planedelaytime);
// this.uic.btn_san.active = true
this.tanviewchange = 0;
cc.find('Canvas/uicloud3').active = true;
cc.gameMgr.playbgm('game_airplane01');
this.targetView = tiaosanview;
this.viewScale = this.targetView;
this.map.scale = this.viewScale;
this.uic.hidenode.active = false;
this.uic.shownode.active = false;
this.uic.teamarrnode.active = false;
// var cloud1 = cc.find("Canvas/uicloud1")
// var cloud2 = cc.find("Canvas/uicloud2")
// cloud1.active = true
// cloud2.active = true
// cloud1.getComponent(cc.ParticleSystem).resetSystem()
// cloud2.getComponent(cc.ParticleSystem).resetSystem()
// this.scheduleOnce(function() {
// cloud1.active = false
// cloud2.active = false
// }, 3);
this.uic.startTeamTalk();
},
dotiaosan(v) {
this.planeing = false;
this.uic.hidenode.active = true;
this.uic.shownode.active = true;
this.tiaosaning = true;
this.mapview =
gameConfig.viewScale[0] - this.watchPlayer.pctrl.getview() / 1000;
this._deltabili = this.mapview - tiaosanview;
this._startbili = tiaosanview;
this._duration = v;
this._elapsed = 0;
// var time = v*(1-cc.budongbili)
// this.tanviewchange = (this.mapview - tiaosanview) / time
// this.tanviewchange *= 0.95
// this.tiaosantime2 = v*cc.budongbili
// this.sans = 0.35 / v
// this.sans *= 0.95
// this.sanoffy = cc.shadowpy / v
//this.sanoffy *= 0.95
// for (var i = 0; i < this.playerarr.length; i++) {
// this.playerarr[i].removeFromParent(false)
// this.ndplayersan.addChild(this.playerarr[i])
// }
cc.gameMgr.playSound('game_parachute');
cc.gameMgr.playbgm('game_parachute02');
this.uic.nd_efftioasna.active = true;
var self = this;
var cb = cc.callFunc(function () {
self.nd_plane.active = false;
});
this.nd_plane.runAction(cc.sequence(cc.moveTo(2, this.planepos2), cb));
setTimeout(() => {
cc.find('Canvas/uicloud3').active = false;
}, cloudxiaoshitime);
cc.Notifier.emit('dotiaosan');
},
endtiaosan() {
this.uic.nd_efftioasna.active = false;
this.uic.teamarrnode.active = true;
this.tiaosaning = false;
// for (var i = 0; i < this.playerarr.length; i++) {//
// this.playerarr[i].removeFromParent(false)
// this.ndplayer.addChild(this.playerarr[i])
// }
cc.gameMgr.playSound('game_parachute03');
cc.gameMgr.stopbgm();
},
start() {
//this.timdDelta = new Date().getTime() - battlenet.timeNow
// this.updateNet(0);
// this.uic.dostart();
},
createBoom(pos, effect) {
this.effectManager.createBoom(pos, effect);
},
createItemNoCheck(id, pos, data) {
var item;
var lootpool;
var cfgdata = ItemConfig[id];
// if (cfgdata.is_tree != 2) {
// lootpool = this.lootpool
// } else {
// lootpool = this.loottreepool
// }
lootpool = this.lootpool;
if (lootpool.length > 0) {
item = lootpool.pop();
} else {
item = new GameLoot();
}
item.initdata(cfgdata, data, pos);
item.position = pos;
if (item.istree == 4) {
this.ndhouseCell.addChild(item);
} else if (item.istree == 3) {
this.tree3node.addChild(item);
} else if (item.istree != 999) {
this.lootnode.addChild(item);
} else {
this.ndplayersan.addChild(item);
}
this.lootarr.push(item);
if (item.isdead == false) {
item.zIndex = -item.y / cc.zscale + item.zplus;
}
// if (item.istree == 3) {
// item.zIndex = -32768
// }
return item;
// var item = new GameLoot();
// if(data.is_door){
// item.initdoor(id,data);
// }
// else{
// item.initdata(id,data);
// }
// item.position = pos;
// this.lootnode.addChild(item)
// if(item.is_door){
// this.doorarr.push(item)
// }
// this.lootarr.push(item);
// item.zIndex = item.x - item.y
// return item
},
finddoorObj() {
if (this.nearDoor.doorObj == null) {
for (var i = this.doorarr.length - 1; i >= 0; i--) {
if (
this.doorarr[i].door_id == this.nearDoor.doorid &&
this.doorarr[i].door_house_uniid ==
this.nearDoor.door_house_uniid
) {
this.nearDoor.doorObj = this.doorarr[i];
if (this.doorarr[i].doorOpentime == 0) {
this.doorarr[i].doorOpentime = 1;
this.openclose();
}
break;
}
}
}
},
openclose() {
if (!this.nearDoor) {
return;
}
this.finddoorObj();
this.nearDoor.doorObj &&
this.nearDoor.doorObj.isdead == false &&
this.player.pctrl.pushObj(this.nearDoor.doorObj.objuuid);
// this.nearDoor.door1.active = !this.nearDoor.door1.active
// this.nearDoor.door2.active = !this.nearDoor.door2.active
// this.nearDoor.door1.img.active = this.nearDoor.door1.active
// this.nearDoor.door2.img.active = this.nearDoor.door2.active
},
createNode() {
this.ndupmap = new cc.Node();
this.ndupmap.name = 'ndupmap';
this.map.addChild(this.ndupmap);
this.ndhouse = new cc.Node();
this.map.addChild(this.ndhouse, 1);
this.tree3node = new cc.Node();
this.map.addChild(this.tree3node, 2);
this.nditem = new cc.Node();
this.map.addChild(this.nditem, 5);
this.nditem.active = false;
this.ndplayer = new cc.Node();
this.map.addChild(this.ndplayer, 4);
this.ndbullet = new cc.Node();
this.map.addChild(this.ndbullet, 3);
this.ndtree = new cc.Node();
this.map.addChild(this.ndtree, 6);
// var grassnd = cc.instantiate(this.grasspb)
// grassnd.anchorX = grassnd.anchorY = 0
// grassnd.x = grassnd.y=this.mapSize/2
// this.map.addChild(grassnd,7)
this.ndeff = new cc.Node();
this.map.addChild(this.ndeff, 8);
this.ndhouseCell = new cc.Node();
this.map.addChild(this.ndhouseCell, 9);
this.ndplayersan = new cc.Node();
this.map.addChild(this.ndplayersan, 10);
// this.newmask = cc.find("Canvas/gasareahack/gasarea")
// this.maskNode = cc.instantiate(this.pbmask)
// //this.map.addChild(this.maskNode,9);
// this.newmask.addChild(this.maskNode,9);
// this.maskNode.x = this.maskNode.y=this.mapSize/2
this.maskNode = cc.instantiate(this.pbmask);
this.map.addChild(this.maskNode, 11);
this.maskNode.x = this.maskNode.y = this.mapSize / 2;
this.maskNode.active = false;
this.maskNode.getComponent('maskshader').initdata();
this.firearr = [];
for (var i = 0; i < 10; i++) {
let nd = cc.instantiate(this.pbfire);
this.maskNode.addChild(nd);
this.firearr[i] = nd;
}
this.lootnode = this.ndplayer;
},
dostart() {
//cc.macro.ENABLE_TILEDMAP_CULLING= false
this.mapId = mapconfig[cc.mapid].map_pic;
this.mapSize = mapconfig[cc.mapid].map_width;
this.mapheight = this.mapSize / 32;
this.map = new cc.Node();
this.map.zIndex = -1;
var colorv = mapconfig[cc.mapid].color;
if (!colorv) {
colorv = '#4BCEDF';
}
cc.find('Canvas/Main Camera').getComponent(cc.Camera).backgroundColor =
new cc.color().fromHEX(colorv);
//this.map.anchorX = this.map.anchorY=0
this.plusMgr = new plusresManager();
this.plusMgr.init(this.mapId, this.mapSize);
this.mapnode = new cc.Node();
this.mapnode.width = this.mapnode.height = this.mapSize;
this.mapnode.anchorX = this.mapnode.anchorY = 0;
this.map.addChild(this.mapnode);
//var mapTiled = this.mapnode.addComponent(cc.TiledMap);
var self = this;
cc.loader.loadRes(
'map/map' + this.mapId,
cc.Prefab,
function (err, map) {
if (!err && self.isValid) {
var mnd = cc.instantiate(map);
var mapt = mnd.getChildByName('map');
if (mapt) {
self.maptile = mapt.getComponent(cc.TiledMap);
var tilepng = self.maptile.tmxAsset.textureNames[0];
tilepng = tilepng.slice(0, tilepng.length - 4);
self.tiledata = tileConfig.maps[tilepng];
}
mnd.rotation = 0;
self.mapnode.addChild(mnd);
}
}
);
this.createNode();
this.bulletManager = new BulletManager();
this.effectManager = new EffectManager();
this.dropManager = new DropManager();
this.resetGameNet();
this.node.scaleY = this.shijiao;
this.node2 = new cc.Node();
// this.node2.rotation = 45
this.node.addChild(this.node2);
this.node2.addChild(this.map);
if (battlenet.newbiemode) {
this.nditem.active = true;
}
// this.dropManager.createItem(2,cc.v2(100,100))
// this.dropManager.createItem(1001,cc.v2(300,300))
},
getSelfPlayer() {
return this.player;
},
setWatchPlayer(player) {
// if(battlenet.newbiemode){
// player.isSelf = true
// this.player = player
// }
if (this.watchPlayer) {
this.watchPlayer.pctrl.iswatching = false;
}
this.watchPlayer = player;
this.watchPlayer.pctrl.iswatching = true;
this.watchPlayer.pctrl.refreshHpbar();
// this.watchPlayer.zIndex =9999;
},
loadprefab(dir, name, cb) {
var self = this;
if (parpbs[name]) {
let nd = cc.instantiate(parpbs[name]);
nd.parname = name;
cb(nd);
} else {
if (breadyFrame[name] == undefined) {
breadyFrame[name] = [];
cc.loader.loadRes(dir + name, cc.Prefab, function (err, res) {
if (!err && self.isValid) {
parpbs[name] = res;
let tttt = breadyFrame[name];
for (let i = tttt.length - 1; i >= 0; i--) {
let nd = cc.instantiate(res);
nd.parname = name;
tttt[i](nd);
}
breadyFrame[name] = null;
}
});
}
breadyFrame[name].push(cb);
}
},
createHouse(data, x, y, netdata) {
var node = new cc.Node();
//var sprite = node.addComponent('cc.Sprite')
node.x = x;
node.y = y;
node.width = data.tilewidth;
node.height = data.tileheight;
// node.scale = 2
this.ndhouse.addChild(node);
this.housearr.push(node);
node.objChildren = [];
node.doorChildren = [];
node.eventChildren = [];
node.sizeForView = {
x: x,
y: y,
width: data.tilewidth + 50,
height: data.tileheight + 50,
};
var temp = {};
for (var i = data.doorObj.length - 1; i >= 0; i--) {
var p = data.doorObj[i];
if (!temp[p.id]) {
temp[p.id] = [];
}
temp[p.id][p.type - 1] = data.doorObj[i];
}
for (var k in temp) {
var p = temp[k][2];
var child3 = {
x: p.x - data.tilewidth / 2 + x,
y: p.y - data.tileheight / 2 + y,
width: p.width,
height: p.height,
building_id: netdata.building_id,
door_house_uniid: netdata.obj_uniid,
doorid: Number(k),
};
node.eventChildren.push(child3);
}
for (var i = data.staticObj.length - 1; i >= 0; i--) {
var p = data.staticObj[i];
var child = {
x: p.x - data.tilewidth / 2 + x - p.width / 2,
y: p.y - data.tileheight / 2 + y - p.height / 2,
width: p.width,
height: p.height,
xx: p.x - data.tilewidth / 2 + x,
yy: p.y - data.tileheight / 2 + y,
};
//node.objChildren.push(child)
this.myTree.insert(child);
}
// sprite.spriteFrame = cc.atlMgr.maphouseatlas.getSpriteFrame(data.picture)
// sprite.sizeMode =2
// sprite.trim = false
var self = this;
var cb = function (nd) {
// nd.rotation = -45
// nd.scale = 0.5
node.addChild(nd);
};
var cb2 = function (nd2) {
// nd2.rotation = -45
nd2.zIndex = -1;
nd2.position = node.position;
nd2.opacity = 100;
self.ndhouseCell.addChild(nd2);
node.layer2 = nd2;
var floor = nd2.getChildByName('floor');
if (floor) {
floor.active = false;
}
};
this.loadprefab('prefabs/mapprefab/', data.picture + '-1', cb);
this.loadprefab('prefabs/mapprefab/', data.picture + '-1', cb2);
var node2 = new cc.Node();
node2.position = node.position;
this.ndhouseCell.addChild(node2);
var cb3 = function (nd2) {
// nd2.rotation = -45
nd2.zIndex = node.width;
node2.addChild(nd2);
};
this.loadprefab('prefabs/mapprefab/', data.picture + '-2', cb3);
// node2.scale = 2
// var sprite2 = node2.addComponent('cc.Sprite')
// sprite2.sizeMode =2
// sprite2.trim = false
// sprite2.spriteFrame =cc.atlMgr.maphouseatlas.getSpriteFrame(data.picture+"-2")
// node2.position = node.position;
// this.ndhouseCell.addChild(node2);
node.cell = node2;
node.zIndex = -node.width;
node.building_id = netdata.building_id;
node.obj_uniid = netdata.obj_uniid;
return node;
},
checkDoorEvent(player, house) {
if (player.isSelf == false) {
return;
}
// if(player.pctrl.stateSan>0){
// return
// }
// this.canOpendoor = false;
for (var i = house.eventChildren.length - 1; i >= 0; i--) {
if (Utils.hitTestRectangle(player, house.eventChildren[i])) {
this.nearDoor = house.eventChildren[i];
this.finddoorObj();
if (this.nearDoor.doorObj && this.nearDoor.doorObj.isdead) {
return;
}
this.canOpendoor = true;
break;
}
}
},
updateView(dt) {
// this.targetView = gameConfig.viewScale[0] - this.watchPlayer.pctrl.getview() / 1000
if (this.planeing) {
this.targetView = tiaosanview;
} else if (this.tiaosaning) {
this._elapsed += dt;
var newdt = this._elapsed / this._duration;
newdt = Math.pow(newdt, cc.budongbili);
newdt = Math.max(0, Math.min(newdt, 1));
this.targetView = this._startbili + this._deltabili * newdt;
} else {
this.targetView =
gameConfig.viewScale[0] -
this.watchPlayer.pctrl.getview() / 1000;
}
if (this.viewScale < this.targetView) {
this.viewcd = 10;
this.viewScale += dt * this.viewspeed;
if (this.viewScale > this.targetView) {
this.viewScale = this.targetView;
}
this.map.scale = this.viewScale;
} else if (this.viewScale > this.targetView) {
this.viewcd = 10;
this.viewScale -= dt * this.viewspeed;
if (this.viewScale < this.targetView) {
this.viewScale = this.targetView;
}
this.map.scale = this.viewScale;
}
},
updateSafe(dt) {
if (this.gasmode == 2) {
this.maskNode.position = this.maskNode.position.lerp(
this.centerVecTar,
dt * 5
);
this.nowSafe =
this.nowSafe + (this.nowSafeTar - this.nowSafe) * dt * 5;
return;
}
},
createNetObj(type, uuid, data) {
var obj;
switch (type) {
case 1:
if (playerpool.length > 0) {
obj = playerpool.pop();
} else {
obj = cc.instantiate(this.pbplayer);
}
// obj = cc.instantiate(this.pbplayer)
obj.pctrl = obj.getComponent('playerCtrl');
if (uuid == battlenet.uuid) {
this.playeruuid = uuid;
obj.isSelf = true;
this.player = obj;
this.setWatchPlayer(obj);
}
obj.x = data.pos.x;
obj.y = data.pos.y;
obj.pctrl.netuuid = uuid;
obj.pctrl.initdata();
this.refreshNetData(type, obj, data, true);
if (!obj.pctrl.sanmode) {
this.ndplayer.addChild(obj);
} else {
this.ndplayersan.addChild(obj);
}
this.playerarr.push(obj);
break;
case 2:
obj = this.createItemNoCheck(
data.obstacle_id,
cc.v2(data.pos.x, data.pos.y),
data
);
obj.sonobj = null;
obj.isson = false;
if (obj.build_transparent) {
var obj2 = this.createItemNoCheck(
data.obstacle_id,
cc.v2(data.pos.x, data.pos.y),
data
);
obj2.zIndex = obj.zIndex;
obj.zIndex = -32767;
obj2.opacity = 150;
obj2.objuuid = null;
obj2.button_name = undefined;
obj.sonobj = obj2;
obj2.isson = true;
}
break;
case 3:
obj = this.createHouse(
this.maps[data.building_id + ''],
data.pos.x,
data.pos.y,
data
);
break;
case 5:
obj = this.dropManager.createItem(
data.item_id,
cc.v2(data.pos.x, data.pos.y),
data
);
break;
case 10:
obj = cc.instantiate(this.pbcar);
obj.width = obj.height = 40;
obj.pctrl = obj.getComponent('npcctrl');
obj.pctrl.initdata();
this.ndplayer.addChild(obj);
this.npcarr.push(obj);
break;
case 11:
obj = cc.instantiate(this.pbcar);
obj.pctrl = obj.getComponent('npcctrl');
obj.pctrl.initdata(true);
this.ndplayer.addChild(obj);
this.cararr.push(obj);
break;
}
obj.otype = type;
obj.objuuid = uuid;
this.objMap[uuid] = obj;
return obj;
},
updateHouseView() {
if (cc.jietumode) {
return;
}
var player = this.watchPlayer;
player.pctrl.inhouse = false;
var temphouse = [];
for (var i = this.housearr.length - 1; i >= 0; i--) {
if (this.housearr[i].opacity == 0) {
this.housearr[i].cell.opacity = 0;
if (this.housearr[i].layer2) {
this.housearr[i].layer2.active = false;
}
continue;
}
this.housearr[i].cell.opacity = 255;
if (this.housearr[i].layer2) {
this.housearr[i].layer2.active = true;
}
if (this.nd_plane.active) {
continue;
}
temphouse.push(this.housearr[i]);
if (Utils.hitTestRectangle(player, this.housearr[i].sizeForView)) {
if (!this.tiaosaning) {
this.targetView = gameConfig.viewScale[0];
}
this.housearr[i].cell.opacity = 0;
this.checkDoorEvent(player, this.housearr[i]);
player.pctrl.inhouse = true;
//break
}
}
for (var i = this.playerarr.length - 1; i >= 0; i--) {
if (
this.playerarr[i].opacity == 255 &&
this.playerarr[i] != player
) {
this.playerarr[i].pctrl.inhouse = false;
for (var j = temphouse.length - 1; j >= 0; j--) {
if (
Utils.hitTestRectangle(
this.playerarr[i],
temphouse[j].sizeForView
)
) {
this.playerarr[i].pctrl.inhouse = true;
break;
}
}
}
}
},
refreshNetData(type, obj, netdata, isquanliang) {
if (obj == undefined) {
return;
}
if (type == 1 || type == 10) {
obj.pctrl.refreshNetData(netdata, isquanliang);
} else if (type == 2) {
obj.refreshNetData(netdata, isquanliang);
} else if (type == 11 && obj.pctrl) {
obj.pctrl.refreshNetData(netdata, isquanliang);
}
},
dohuawei() {},
beforehuawei() {},
dogamestart() {
this.gameStart = true;
// if (this.gameStart == false) {
// SDKManage.logEvent("battle_start", this.gamemode)
// }
// this.gameStart = true
// //playerData.bannerflag = false
// this.stopbgm()
// cc.gameMgr.playSound("gamestart_cloud")
// cc.gameMgr.playSound("game_airplane02")
// var cloud1 = cc.find("Canvas/uicloud1")
// var cloud2 = cc.find("Canvas/uicloud2")
// cloud1.active = true
// cloud2.active = true
// cloud1.getComponent(cc.ParticleSystem).resetSystem()
// cloud2.getComponent(cc.ParticleSystem).resetSystem()
// //this.uic.planeflytiaosan()
// this.scheduleOnce(function() {
// cloud1.active = false
// cloud2.active = false
// }, 3);
},
updateNet(dt) {
this.time += dt;
var uti = 3;
var needrefresh = true;
while (battlenet.frames.length > 0 && uti > 0) {
uti--;
var frame = battlenet.frames.shift();
this.nowframe = frame.frameno;
if (frame.alive_count) {
this.alive_count = frame.alive_count;
}
// var uuidtest = {}
for (var i = frame.full_objects.length - 1; i >= 0; i--) {
var type = frame.full_objects[i].object_type;
var uuid = frame.full_objects[i].obj_uniid;
// if(uuidtest[uuid]){
// console.log("9999999999999999999999")
// }
// uuidtest[uuid] = true
var flag = frame.full_objects[i].object_flags;
var choseObj = frame.full_objects[i]['union_obj_' + type];
if (!uuid && choseObj) {
uuid = choseObj.obj_uniid;
}
var needtotree = false;
// var uuid = choseObj.obj_uniid
if (type == 2 && !this.objMap2[uuid]) {
needtotree = true;
}
if (flag) {
if (flag & (1 << 1)) {
choseObj = this.objMap2[uuid];
} else if (flag & (1 << 0)) {
this.objMap2[uuid] = choseObj;
}
}
needrefresh = true;
if (!this.objMap[uuid]) {
var nnobj = this.createNetObj(type, uuid, choseObj);
if (
needtotree &&
nnobj.istree != 2 &&
nnobj.istree != 3 &&
nnobj.istree != 4
) {
this.lootmap[uuid] = nnobj;
this.myTree.insert({
x: nnobj.x - nnobj.width / 2,
y: nnobj.y - nnobj.height / 2,
width: nnobj.width,
height: nnobj.height,
uuid: uuid,
});
}
if (type == 1) {
needrefresh = false;
}
}
if (needrefresh) {
this.refreshNetData(
type,
this.objMap[uuid],
choseObj,
true
);
}
if (this.objMap[uuid].isout && this.objMap[uuid].pctrl) {
this.objMap[uuid].position =
this.objMap[uuid].pctrl.targetGo;
}
this.objMap[uuid].isout = false;
this.objMap[uuid].lifeTime = 9999;
if (this.objMap[uuid].sonobj) {
this.objMap[uuid].sonobj.isout = this.objMap[uuid].isout;
this.objMap[uuid].sonobj.lifeTime =
this.objMap[uuid].lifeTime;
}
// if (cc.battledebug) {
// this.objMap[uuid].last_sync_frameno = frame.frameno
// console.log("view_debug " + (new Date()).toLocaleTimeString() + " fullobj uuid:" + uuid +
// " type:" + type + " pos:" + this.objMap[uuid].position + ' frameno:' + frame.frameno + ' server_pos:' + choseObj.pos.x + ',' + choseObj.pos.x);
// }
}
for (var i = frame.shots.length - 1; i >= 0; i--) {
if (this.objMap[frame.shots[i].player_id]) {
this.objMap[
frame.shots[i].player_id
].pctrl.anishoting = true;
this.objMap[
frame.shots[i].player_id
].pctrl.shootingtime = 0.5;
this.objMap[frame.shots[i].player_id].pctrl.doshotevent(
frame.shots[i]
);
}
}
for (var i = frame.part_objects.length - 1; i >= 0; i--) {
var type = frame.part_objects[i].object_type;
var choseObj = frame.part_objects[i]['union_obj_' + type];
var uuid = choseObj.obj_uniid;
if (!this.objMap[uuid]) {
this.createNetObj(type, uuid, choseObj);
}
this.refreshNetData(type, this.objMap[uuid], choseObj, false);
if (
this.objMap[uuid] &&
this.objMap[uuid].isout &&
this.objMap[uuid].pctrl
) {
this.objMap[uuid].position =
this.objMap[uuid].pctrl.targetGo;
}
this.objMap[uuid].isout = false;
this.objMap[uuid].lifeTime = 9999;
if (this.objMap[uuid].sonobj) {
this.objMap[uuid].sonobj.isout = this.objMap[uuid].isout;
this.objMap[uuid].sonobj.lifeTime =
this.objMap[uuid].lifeTime;
}
if (cc.battledebug) {
this.objMap[uuid].last_sync_frameno = frame.frameno;
this.objMap[uuid].last_part_sync_frameno = frame.frameno;
}
}
// if (cc.battledebug) {
// console.log(frame.bullets);
// }
for (var i = frame.bullets.length - 1; i >= 0; i--) {
var bdata = frame.bullets[i];
if (this.objMap[bdata.player_id]) {
if (cc.battledebug) {
let isTooFar = false;
if (
Math.abs(
bdata.pos.x - this.objMap[bdata.player_id].x
) > 200 ||
Math.abs(
bdata.pos.y - this.objMap[bdata.player_id].y
) > 200
) {
isTooFar = true;
}
let gunner = this.objMap[bdata.player_id];
let hasBuff24 = gunner.pctrl.getBuffByEffectId(24);
let hasBuff32 = gunner.pctrl.getBuffByEffectId(32);
if (isTooFar || hasBuff24 || hasBuff32) {
console.log(
'22222222',
gunner,
gunner.last_sync_frameno,
gunner.last_part_sync_frameno,
frame.frameno,
isTooFar,
hasBuff24,
hasBuff32
);
}
if (gunner.opacity == 0) {
console.log(
'33333333',
gunner,
gunner.last_sync_frameno,
gunner.last_part_sync_frameno,
frame.frameno,
isTooFar,
hasBuff24,
hasBuff32
);
}
if (gunner.isout) {
console.log('444444');
}
}
this.bulletManager.createBullet(
bdata.gun_lv,
gameConfig.dropItemConfig[bdata.gun_id],
cc.v2(bdata.dir.x, bdata.dir.y),
cc.v2(bdata.pos.x, bdata.pos.y),
this.objMap[bdata.player_id].pctrl,
bdata.fly_distance,
bdata.player_id,
bdata
);
}
}
if (frame.gas_data) {
//gas_progress
var gasdata = frame.gas_data;
this.gasmode = gasdata.mode;
if (this.gasmode == 0) {
this.maskNode.active = false;
var ctime = gasdata.duration; //-this.timdDelta/1000
this.uic.leftTime = ctime;
this.uic.showlb1(cc.language.stringformat('jijiangkaishi'));
this.uic.showtips(
cc.language.stringformat('jinrufangjian')
);
} else if (this.gasmode == 3) {
//todo
//this.uic.leftTime = 0.1
// this.lootnode.active = false
// this.ndtree.active = false
// this.gameStart=true
this.gameStart = true;
this.uic.showtips(cc.language.stringformat('youxikaishi'));
//this.beforehuawei()
} else {
var str = '';
if (this.gasmode == 1) {
if (this.gameStart == false) {
SDKManage.logEvent('battle_start', this.gamemode);
}
SDKManage.logEvent(
'circle_' + this.duquantime,
this.gamemode
);
this.gameStart = true;
this.duquantime++;
if (battlenet.gamemode != 1) {
str = cc.language.stringformat('duquankuosan1', [
gasdata.duration,
]);
this.uic.leftTime = gasdata.duration;
this.uic.showTimeColor(true);
}
this.maskNode.active = true;
this.maskNode.getComponent('maskshader').update(0);
} else {
cc.gameMgr.suoquanstart = true;
str = cc.language.stringformat('duquankuosan2');
this.uic.leftTime = gasdata.duration;
this.uic.showTimeColor(false);
}
if (battlenet.gamemode != 1) {
this.uic.showtips(str);
this.maskNode.active = true;
var rad = gasdata.rad_new;
this.centerVec = cc.v2(
gasdata.pos_new.x,
gasdata.pos_new.y
);
this.centerVecTar = cc.v2(
gasdata.pos_old.x,
gasdata.pos_old.y
);
this.setSafe(rad / this.halfSize);
this.nowSafeTar = this.nowSafe = gasdata.rad_old;
this.maskNode.x = gasdata.pos_old.x;
this.maskNode.y = gasdata.pos_old.y;
}
}
}
if (frame.gas_progress) {
this.nowSafeTar = frame.gas_progress;
}
if (frame.gas_pos_old) {
this.centerVecTar = cc.v2(
frame.gas_pos_old.x,
frame.gas_pos_old.y
);
}
if (
frame.active_player_id &&
this.currentWatchid != frame.active_player_id
) {
for (var i = this.playerarr.length - 1; i >= 0; i--) {
if (this.playerarr[i].objuuid == frame.active_player_id) {
this.setWatchPlayer(this.playerarr[i]);
break;
}
}
this.currentWatchid = frame.active_player_id;
}
if (frame.active_player_data) {
this.watchPlayer.pctrl.updateActive(frame.active_player_data);
}
for (var i = frame.explosions.length - 1; i >= 0; i--) {
this.createBoom(
cc.v2(frame.explosions[i].pos.x, frame.explosions[i].pos.y),
frame.explosions[i].effect
);
//this.effectManager.createSmoke(cc.v2(frame.explosions[i].pos.x,frame.explosions[i].pos.y))
}
for (var i = frame.smokes.length - 1; i >= 0; i--) {
this.effectManager.createSmoke(
cc.v2(frame.smokes[i].pos.x, frame.smokes[i].pos.y),
frame.smokes[i].time_addition / 1000
);
}
for (var i = frame.emotes.length - 1; i >= 0; i--) {
this.objMap[frame.emotes[i].player_id].pctrl.showEmote(
frame.emotes[i].emote_id
);
}
for (var i = frame.out_objids.length - 1; i >= 0; i--) {
if (this.objMap[frame.out_objids[i]]) {
//&&this.objMap[frame.out_objids[i]].pctrl){
this.objMap[frame.out_objids[i]].lifeTime = 2;
// this.objMap[frame.out_objids[i]].opacity = 0
this.objMap[frame.out_objids[i]].isout = true;
if (this.objMap[frame.out_objids[i]].sonobj) {
this.objMap[frame.out_objids[i]].sonobj.isout =
this.objMap[frame.out_objids[i]].isout;
this.objMap[frame.out_objids[i]].sonobj.lifeTime =
this.objMap[frame.out_objids[i]].lifeTime;
}
}
}
if (cc.battledebug) {
// if (frame.out_objids.length > 0) {
// let out_data = []
// for (let i = 0; i < frame.out_objids.length; ++i) {
// let out_obj = {
// 'uniid': frame.out_objids[i],
// 'last_sync_frameno': 0,
// 'last_part_sync_frameno': 0,
// 'pos': [0, 0],
// 'matched': false
// }
// if (this.objMap[frame.out_objids[i]]) {
// out_obj['matched'] = true
// out_obj['last_sync_frameno'] = this.objMap[frame.out_objids[i]].last_sync_frameno
// out_obj['last_part_sync_frameno'] = this.objMap[frame.out_objids[i]].last_part_sync_frameno
// out_obj['pos'][0] = this.objMap[frame.out_objids[i]].position.x
// out_obj['pos'][1] = this.objMap[frame.out_objids[i]].position.y
// }
// out_data.push(out_obj);
// }
// console.log("view_debug " + (new Date()).toLocaleTimeString() + " out_objs:" + JSON.stringify(out_data))
// }
// if (frame.del_objids.length > 0) {
// console.log("view_debug " + (new Date()).toLocaleTimeString() + " del_objids:" + frame.del_objids)
// }
}
for (var i = frame.del_objids.length - 1; i >= 0; i--) {
var did = frame.del_objids[i];
if (this.objMap[did]) {
this.objMap[did].needDelete = true;
if (this.objMap[did].sonobj) {
this.objMap[did].sonobj.needDelete = true;
}
this.objMap[did] = null;
}
}
if (frame.chged_property_list) {
for (
var i = 0, l = frame.chged_property_list.length;
i < l;
i++
) {
let chobj =
this.objMap[frame.chged_property_list[i].obj_id];
if (chobj) {
chobj.pctrl.chged_property(
frame.chged_property_list[i]
);
}
}
}
if (frame.team_data.length > 0) {
this.player.pctrl.refreshTeam(frame.team_data);
}
if (frame.airdrop) {
this.aridorp(
cc.v2(frame.airdrop.pos.x, frame.airdrop.pos.y),
frame.airdrop.appear_time / 1000,
frame.airdrop.box_id
);
}
if (frame.airraid) {
this.uic.dokongxi(frame.airraid);
}
if (frame.plane && this.uic.hasPalneLine == false) {
var rot = this.uic.drawPlaneLine(frame.plane);
this.planetime = 1;
var sp = cc.v2(
frame.plane.start_point.x,
frame.plane.start_point.y
);
var ep = cc.v2(
frame.plane.end_point.x,
frame.plane.end_point.y
);
var dir = cc.v2(ep.x - sp.x, ep.y - sp.y).normalize();
this.map.x = -(sp.x + dir.x * 400) * tiaosanview;
this.map.y = -(sp.y + dir.y * 400) * tiaosanview;
var oldx2 = this.nd_plane.x;
var oldy2 = this.nd_plane.y;
this.nd_plane.active = true;
this.nd_plane.x -= dir.x * 500;
this.nd_plane.y -= dir.y * 500;
this.planepos2 = cc.v2(
oldx2 + dir.x * 800,
oldy2 + dir.y * 800
);
this.nd_plane.runAction(cc.moveTo(1, cc.v2(oldx2, oldy2)));
this.planeing = true;
}
if (frame.chged_buff_list) {
for (var i = 0, l = frame.chged_buff_list.length; i < l; i++) {
var cplayer = this.objMap[frame.chged_buff_list[i].obj_id];
if (cplayer) {
cplayer.pctrl.changeBuff(frame.chged_buff_list[i]);
}
}
}
if (frame.dead_alive_objs) {
for (var i = 0, l = frame.dead_alive_objs.length; i < l; i++) {
var onedata = frame.dead_alive_objs[i];
if (onedata.values[2] == 0) {
if (this.objMap[onedata.values[0]]) {
this.objMap[
onedata.values[0]
].pctrl.ondeadthisframe(onedata.values[1] / 1000); //ondeadzombie
}
} else {
this.objMap[onedata.values[0]].pctrl.onrevive();
}
}
}
if (frame.game_left_time) {
this.uic.updateGameTime(frame.game_left_time);
}
if (frame.object_positions) {
this.uic.zombie_positions(frame.object_positions);
}
if (frame.play_skill_list) {
for (var i = 0, l = frame.play_skill_list.length; i < l; i++) {
this.objMap[
frame.play_skill_list[i].obj_uniid
].pctrl.showskill(frame.play_skill_list[i].skill_id);
}
}
if (frame.del_bullets > 0) {
this.bulletManager.deletabullets(frame.del_bullets);
}
// if (frame.dead_objects) {
// for (var i = 0, l = frame.dead_objects.length; i < l; i++) {
// var onep = this.objMap[frame.dead_objects[i]]
// if(onep){
// onep.pctrl.ondeadthisframe()
// }
// }
// }
if (!this.canStart) {
this.uic.dostart();
this.canStart = true;
}
}
if (this.canStart) {
this.canOpendoor = false;
for (var i = this.playerarr.length - 1; i >= 0; i--) {
if (this.playerarr[i].needDelete) {
this.playerarr[i].destroy();
this.playerarr.splice(i, 1);
} else {
this.playerarr[i].pctrl.updateNet(dt);
}
}
for (var i = this.cararr.length - 1; i >= 0; i--) {
if (this.cararr[i].needDelete) {
this.cararr[i].pctrl.dodestroy();
this.cararr.splice(i, 1);
} else {
this.cararr[i].pctrl.updateNet(dt);
}
}
for (var i = this.npcarr.length - 1; i >= 0; i--) {
if (this.npcarr[i].needDelete) {
this.npcarr[i].pctrl.dodestroy();
this.npcarr.splice(i, 1);
} else {
this.npcarr[i].pctrl.updateNet(dt);
}
}
for (let i = this.lootarr.length - 1; i >= 0; i--) {
if (this.lootarr[i].needDelete) {
var nowloot = this.lootarr[i];
nowloot.needDelete = false;
nowloot.doout();
nowloot.removeFromParent(false);
this.lootpool.push(nowloot);
this.lootarr.splice(i, 1);
if (nowloot.objuuid) {
this.objMap[nowloot.objuuid] = null;
}
}
}
this.bulletManager.update(
dt,
this.housearr,
this.playerarr,
this.lootarr
);
this.dropManager.update(this.playerarr, dt);
this.updateView(dt);
this.displayercount++;
if (this.displayercount % 15 == 0) {
this.updateHouseView();
this.updatezindex();
this.updateDisplay(dt * 15);
}
if (this.planetime > 0) {
this.planetime -= dt;
// this.map.x = this.lerpv(this.map.x, -this.watchPlayer.x * this.map.scale, 0.72)
// this.map.y = this.lerpv(this.map.y, -this.watchPlayer.y * this.map.scale, 0.72)
} else {
if (this.viewcd > 0) {
this.viewcd--;
}
if (
this.watchPlayer.pctrl.joyMoveing &&
!this.watchPlayer.pctrl.shoting &&
this.viewcd <= 0
) {
this.map.x = this.lerpv(
this.map.x,
-this.watchPlayer.x * this.map.scale,
0.72
);
this.map.y = this.lerpv(
this.map.y,
-this.watchPlayer.y * this.map.scale,
0.72
);
this.watchPlayer.x = -this.map.x / this.map.scale;
this.watchPlayer.y = -this.map.y / this.map.scale;
} else {
this.map.x = -this.watchPlayer.x * this.map.scale;
this.map.y = -this.watchPlayer.y * this.map.scale;
}
}
if (this.time > 0.09) {
this.player.pctrl.report();
this.time = 0;
}
}
},
lerpv(fromv, tov, ratio) {
return fromv + (tov - fromv) * ratio;
},
updatezindex() {
for (var i = this.playerarr.length - 1; i >= 0; i--) {
if (this.playerarr[i].opacity == 255) {
this.playerarr[i].zIndex =
-this.playerarr[i].y / cc.zscale +
this.playerarr[i].zplus +
this.playerarr[i].zplus2;
}
}
for (var i = this.cararr.length - 1; i >= 0; i--) {
if (this.cararr[i].opacity == 255) {
this.cararr[i].zIndex =
-this.cararr[i].y / cc.zscale + this.cararr[i].zplus;
}
}
for (var i = this.npcarr.length - 1; i >= 0; i--) {
if (this.npcarr[i].opacity == 255) {
this.npcarr[i].zIndex =
-this.npcarr[i].y / cc.zscale + this.npcarr[i].zplus;
}
}
},
// update(dt){
// if(cc.battlepause){
// battlenet.updateevent(dt)
// }
// },
lateUpdate(dt) {
if (cc.battlepause) {
return;
}
var olddt = dt;
this.shakethisframe = false;
// if (cc.highmode) {
// this.fpscount++;
// this.fpstotal += dt
// if (this.fpscount >= 60) {
// var fps = 1 / this.fpstotal * 60
// this.fpscount = 0
// this.fpstotal = 0
// if (fps < 55) {
// this.lowcount++;
// this.lowfpscount += fps
// if (this.lowcount > 10) {
// cc.highmode = false
// var midfps = this.lowfpscount / this.lowcount
// var fpsxz = 30
// var fpsv = 0.033
// if (midfps > 50) {
// fpsxz = 50
// fpsv = 0.02
// } else if (midfps > 40) {
// fpsxz = 40
// fpsv = 0.024
// } else {
// fpsxz = 30
// fpsv = 0.033
// }
// cc.game.setFrameRate(fpsxz)
// cc.mygamedelta = fpsv
// }
// } else {
// this.lowfpscount = 0
// this.lowcount = 0
// }
// }
// }
// if (cc.mygamedelta / dt > 0.9) {
// dt = cc.mygamedelta
// }
dt *= cc.mytimescale;
this.updateNet(dt);
this.updateSafe(dt);
this.effectManager.update(dt);
for (var i = this.playerarr.length - 1; i >= 0; i--) {
this.playerarr[i].pctrl.update2(olddt);
}
for (var i = this.lootarr.length - 1; i >= 0; i--) {
this.lootarr[i].update2(olddt);
}
this.maskNode.width = this.maskNode.height =
(this.nowSafe / this.halfSize) * this.mapSize;
this.updategasefire();
if (this.plusMgr) {
this.plusMgr.update();
}
this.yinidian = this.getNearLoot();
if (this.yinidian) {
this.uic.btn_yinni.active = true;
} else {
this.uic.btn_yinni.active = false;
}
},
_getDistance(pos1, pos2) {
return Math.sqrt(
Math.pow(pos1.x - pos2.x, 2) + Math.pow(pos1.y - pos2.y, 2)
);
},
getVectorByAngle(angel) {},
updategasefire() {
var distocenter = this._getDistance(
this.watchPlayer.position,
this.maskNode.position
);
var halfwidth = this.maskNode.width / 2;
var preag = 4;
if (halfwidth < 256) {
preag = 36;
} else if (halfwidth < 384) {
preag = 20;
} else if (halfwidth < 512) {
preag = 10;
} else if (halfwidth < 1024) {
preag = 6;
}
if (Math.abs(halfwidth - distocenter) < 512) {
var startdir = cc.v2(0, 1);
var sidex = 0;
var jiajiao =
Math.atan2(
this.watchPlayer.x - this.maskNode.x,
this.watchPlayer.y - this.maskNode.y
) * 57.3;
// var preag = this.fireag
jiajiao = (Math.floor(jiajiao / preag) - 5) * preag;
var sidx = 0;
var isz = false;
for (var i = 0; i < 10; i++) {
if (this.firearr[i].rotation == jiajiao) {
sidx = i;
isz = true;
break;
}
}
if (!isz) {
var tsx = Math.floor(
(this.firearr[0].rotation - jiajiao) / preag
);
tsx %= 10;
if (tsx > 0) {
sidx = 10 - tsx;
}
}
for (var i = 0; i < 10; i++) {
var tarv = Utils.dirRotate(startdir, jiajiao + preag * i);
var ridx = (i + sidx) % 10;
this.firearr[ridx].opacity = 255;
this.firearr[ridx].x = tarv.x * halfwidth;
this.firearr[ridx].y = tarv.y * halfwidth;
this.firearr[ridx].rotation = jiajiao + preag * i;
}
} else {
for (var i = 0; i < 10; i++) {
this.firearr[i].opacity = 0;
}
}
},
// lateUpdate(dt){
// this.maskNode.width = this.maskNode.height = this.nowSafe/this.halfSize*this.mapSize
// },
updateDisplay(dt) {
var px = this.watchPlayer.x;
var py = this.watchPlayer.y;
var vw = cc.winSize.width / 2 / this.viewScale;
var vh = cc.winSize.height / 2 / this.viewScale;
// if (vw < vh) {
// vw = vh
// } else {
// vh = vw
// }
var dxx = 0;
var dyy = 0;
var maxv = 0;
var nullopacity = 0;
if (cc.jietumode || cc.battledebug) {
nullopacity = 255;
}
for (let i = this.housearr.length - 1; i >= 0; i--) {
if (
Math.abs(this.housearr[i].x - px) >
vw + this.housearr[i].width ||
Math.abs(this.housearr[i].y - py) > vh + this.housearr[i].height
) {
this.housearr[i].opacity = nullopacity;
} else {
this.housearr[i].opacity = 255;
}
}
for (let i = this.lootarr.length - 1; i >= 0; i--) {
let nowloot = this.lootarr[i];
if (
Math.abs(nowloot.x - px) > vw + nowloot.viewWidth + 256 ||
Math.abs(nowloot.y - py) > vh + nowloot.viewHeight + 256
) {
nowloot.active = false;
} else {
nowloot.active = true;
}
if (nowloot.active && nowloot.istree == 4) {
if (Utils.hitTestRectangle(this.watchPlayer, nowloot.viewhit)) {
nowloot.hidemode = 1;
} else {
nowloot.hidemode = 2;
}
}
// if (nowloot.active && nowloot.viewtest) {
// if (!nowloot.isdead) {
// if (Utils.hitTestRectangle(this.watchPlayer, nowloot.viewtest)) {
// if (this.watchPlayer.zIndex < nowloot.zIndex) {
// nowloot.opacity = 180
// } else {
// nowloot.opacity = 255
// }
// } else {
// nowloot.opacity = 255
// }
// }
// }
// dxx = nowloot.x - px
// dyy = nowloot.y - py
// if (Math.abs(dxx - dyy) > vh * 1.5 || Math.abs(dxx + dyy) > vw * 1.5) {
// nowloot.opacity = nullopacity
// } else {
// nowloot.opacity = 255
// }
// nowloot.lifeTime-=dt
if (nowloot.isout) {
nowloot.lifeTime -= dt;
if (nowloot.lifeTime < 0) {
nowloot.isout = false;
nowloot.doout();
nowloot.removeFromParent(false);
this.lootpool.push(nowloot);
// if (nowloot.istree != 2) {
// this.lootpool.push(nowloot)
// } else {
// this.loottreepool.push(nowloot)
// }
this.lootarr.splice(i, 1);
this.objMap[nowloot.objuuid] = null;
}
}
}
for (let i = this.cararr.length - 1; i >= 0; i--) {
let oneplayer = this.cararr[i];
if (oneplayer.isout) {
oneplayer.opacity = 0;
} else {
oneplayer.opacity = 255;
}
}
for (let i = this.npcarr.length - 1; i >= 0; i--) {
let oneplayer = this.npcarr[i];
if (oneplayer.isout) {
oneplayer.pctrl.dodestroy();
this.npcarr.splice(i, 1);
this.objMap[oneplayer.objuuid] = null;
}
}
for (let i = this.playerarr.length - 1; i >= 0; i--) {
let oneplayer = this.playerarr[i];
// oneplayer.lifeTime-=dt
if (
oneplayer.isout &&
this.watchPlayer != oneplayer &&
this.playerarr[i].pctrl.isMember == false
) {
oneplayer.isout = false;
oneplayer.removeFromParent(false);
playerpool.push(oneplayer);
this.playerarr.splice(i, 1);
this.objMap[oneplayer.objuuid] = null;
this.objdatamap[oneplayer.objuuid] = {
//skin
currentGun: oneplayer.pctrl.currentGun,
skin1: oneplayer.pctrl.skinarr[0],
skin2: oneplayer.pctrl.skinarr[1],
skin3: oneplayer.pctrl.skinarr[2],
skin4: oneplayer.pctrl.skinarr[3],
isdown: oneplayer.pctrl.isdown,
defhp: oneplayer.pctrl.defhp,
hp: oneplayer.pctrl.hp,
maxhp: oneplayer.pctrl.maxhp,
bagid: oneplayer.pctrl.bagid,
buffhead: oneplayer.pctrl.buffhead,
buffbody: oneplayer.pctrl.buffbody,
buffidarr: [],
fakeid: oneplayer.pctrl.fakeid,
fakemode: oneplayer.pctrl.fakemode,
};
var barr = this.objdatamap[oneplayer.objuuid].buffidarr;
for (var ii = 0; ii < oneplayer.pctrl.buffidarr.length; ii++) {
barr.push(oneplayer.pctrl.buffidarr[ii]);
}
for (var kk in oneplayer.pctrl.buffmap) {
oneplayer.pctrl.removebuffeff(kk);
//this.objdatamap[oneplayer.objuuid].buffmap[kk] = true
}
oneplayer.pctrl.cleanbuffnode();
continue;
}
dxx = oneplayer.x - px;
dyy = oneplayer.y - py;
if (Math.abs(dxx) > vw || Math.abs(dyy) > vh || oneplayer.isout) {
oneplayer.active = false;
} else {
oneplayer.active = true;
}
}
},
setSafe(v) {
v = (this.mapSize / 2) * v;
this.safeLength = v;
var b = (this.safeLength / this.mapSize) * 2;
cc.gameMgr.uic && cc.gameMgr.uic.refreshSafe(b);
},
aridorp(airpos, airtime, boxid) {
if (!ItemConfig[boxid].manual_airdrop) {
this.airstart = true;
this.aripos = airpos;
this.uic.aridorp();
cc.gameMgr.playSound('game_airplane02');
}
var self = this;
var cb = function (nd) {
if (self.isValid) {
nd.zIndex = 9999;
nd.position = airpos;
self.ndhouseCell.addChild(nd);
nd.pname = 'parachute';
var cb = cc.callFunc(function () {
self.effectManager.huishouprefab(nd.pname, nd);
});
nd.scale = 2.5;
nd.stopAllActions();
nd.opacity = 255;
nd.runAction(
cc.sequence(
cc.scaleTo(airtime + 1, 0.5),
cc.fadeOut(0.5),
cb
)
);
}
};
this.effectManager.createprefab('parachute', 'prefabs/gameprefab/', cb);
},
getlootarr(data) {
return this.myTree.retrieve(data);
},
getNearJZ() {},
getNearLoot() {
if (cc.gameMgr.watchPlayer.pctrl.sanmode) {
return null;
}
if (!this.nditem.active) {
return null;
}
var outarr = [];
for (let i = this.lootarr.length - 1; i >= 0; i--) {
let nowloot = this.lootarr[i];
if (
nowloot.active &&
!nowloot.isdead &&
nowloot.button_name != undefined
) {
outarr.push(nowloot);
}
}
if (outarr.length == 0) {
return null;
}
outarr = outarr.sort((a, b) => {
var disa =
Math.pow(cc.gameMgr.watchPlayer.x - a.x, 2) +
Math.pow(cc.gameMgr.watchPlayer.y - a.y, 2);
var disb =
Math.pow(cc.gameMgr.watchPlayer.x - b.x, 2) +
Math.pow(cc.gameMgr.watchPlayer.y - b.y, 2);
return disa - disb;
});
var hittest2 = {
x: outarr[0].x,
y: outarr[0].y,
width: outarr[0].width + 20,
height: outarr[0].height + 20,
};
if (Utils.hitTestRectangle(hittest2, cc.gameMgr.watchPlayer)) {
//this.uic.btn_name.string = outarr[0].button_name
var btndata = btnyinshe[outarr[0].button_name];
if (btndata) {
this.uic.btn_name.string = btndata.name;
var self = this;
cc.loader.loadRes(
'icons/' + btndata.pic,
cc.SpriteFrame,
function (err, res) {
if (!err && self.isValid) {
self.uic.sp_btnicon.spriteFrame = res;
}
}
);
//sp_btnicon
}
return outarr[0];
} else {
return null;
}
},
doyinni() {
if (this.yinidian.isdead == false) {
this.player.pctrl.pushObj(this.yinidian.objuuid);
}
},
// createclientsp(outarr,addarr){
// },
});