Files
fc/dev/project/library/imports/6a/6a986e29-6f37-4201-9630-b03841d9004d.js
2026-05-24 10:21:26 +08:00

496 lines
15 KiB
JavaScript

"use strict";
cc._RF.push(module, '6a9864pbzdCAZYwsDhB2QBN', 'cmp.planesafk.wnd');
// Scripts/mod/pve/planesafk/cmp/cmp.planesafk.wnd.js
"use strict";
var BridgeWindow = require("bridge.window");
var PlanesafkController = require("planesafk_controller");
var PlanesafkEvent = require("planesafk_event");
var TipsController = require("tips_controller");
var MallController = require("mall_controller");
var MallConst = require("mall_const");
var NXSpine = require("nx.fx.spine");
var PlaneRole = require("cmp.planesafk.role");
var RoleController = require("role_controller");
var _require = require("define"),
PlayerAction = _require.PlayerAction;
cc.Class({
"extends": BridgeWindow,
properties: {
map: {
"default": null,
type: cc.Node
},
list: {
"default": null,
type: cc.Node
},
fabLine: {
"default": null,
type: cc.Node
},
fabMap: {
"default": null,
type: cc.Node
},
//当前层数
floor_txt: {
"default": null,
type: cc.Node
},
//剩余时间
time_val: {
"default": null,
type: cc.Node
},
//難度等級
diff_txt: {
"default": null,
type: cc.Node
},
ico_list: {
"default": [],
type: [cc.Node]
},
reward_list: {
"default": [],
type: [cc.RichText]
},
cmpRole: {
"default": null,
type: PlaneRole
},
scroll: {
"default": null,
type: cc.ScrollView
},
boxNd: {
"default": null,
type: cc.Node
},
holeNd: {
"default": null,
type: cc.Node
},
endNd: {
"default": null,
type: cc.Node
}
},
// LIFE-CYCLE CALLBACKS:
onLoad: function onLoad() {
var _this = this;
this.ctrl = PlanesafkController.getInstance();
this.model = this.ctrl.getModel();
this.pushPath = [];
this.up_item_list = [];
//最大层数
this.max_floor = 3;
var diff_config = gdata("planes_data", "data_const", "planes_difficult_limit_lev");
if (diff_config) {
this.difficult_limit_lev = diff_config.val || 30;
}
var diff_power = gdata("planes_data", "data_const", "planes_difficult_max_power");
if (diff_power) {
this.planes_difficult_max_power = diff_power.val || 300000;
}
this.is_init_over = false;
// 冒险角色
var role = RoleController.getInstance().getRoleVo();
var cfgs = game.configs.looks_data.data_data[role.look_id];
this.cmpRole.setModel(cfgs ? cfgs.model : "", this.roleMoveEvent.bind(this));
this.scroll.node.on("scrolling", this.roleMapMove.bind(this));
//基础信息
this.bindGEvent(PlanesafkEvent.Planesafk_Main_Base_Info_Event, this.baseInfoData.bind(this));
//地图信息
this.bindGEvent(PlanesafkEvent.Planesafk_Main_Map_Info_Event, this.initMapData.bind(this));
this.bindGEvent(PlanesafkEvent.Planesafk_Update_Map_Info_Event, this.initMapData.bind(this));
//buff进背包
this.bindGEvent(PlanesafkEvent.Chose_Buff_Event, this.showBuffItemMoveAni.bind(this));
//领取宝箱状态
this.bindGEvent(PlanesafkEvent.Planesafk_Pass_Reward_Info_Event, this.passRewardInfo.bind(this));
this.bindGEvent(PlanesafkEvent.Planesafk_Last_Reward_Info_Event, this.lastRewardInfo.bind(this));
//下一章地图
this.bindGEvent(PlanesafkEvent.Planesafk_Next_Map_Info_Event, function () {
_this.scroll.scrollTo(0);
_this.ctrl.sender28603();
});
//本月以获取
this.bindGEvent(PlanesafkEvent.Planesafk_Update_Get_Reward_Event, this.updateRewardInfo.bind(this));
//创建角色
this.bindGEvent(PlanesafkEvent.Planesafk_Create_Role_Event, this.showRoleInfo.bind(this));
},
roleMapMove: function roleMapMove() {
this.map.x = this.scroll.content.x;
},
roleMoveEvent: function roleMoveEvent(_key) {
if (_key == "end") {
//检测是否要触发事件
var cur_pos = this.model.getRolePos();
var len = this.list.children.length;
var per = cur_pos[0] / len;
this.scroll.scrollTo(per);
this.map.x = this.scroll.content.x;
} else if (_key == "start") {//有可能要重置状态
} else if (_key == "move") {//移动中的事件
}
},
updateRewardInfo: function updateRewardInfo(data) {
if (!data) return;
var self = this;
this.up_item_list = data.item_list;
// if (data.item_list) {
// var item_list = [];
// for (var i in data.item_list) {
// var v = data.item_list[i];
// item_list.push(v);
// }
// item_list.sort((a,b)=>{
// return b.base_id - a.base_id;
// });
// for (var i in item_list) {
// var v = item_list[i]
// var item_config = gitemdata(v.base_id);
// if (item_config && this.reward_list[i]) {
// let mst = self.reward_list[i];
// let str = cc.js.formatStr(":%s",Utils.getMoneyString(v.num))
// mst.string = str;
// let res = PathTool.querySmallIconPath(item_config.id);
// nx.gui.setSpriteFrame(this.ico_list[i],"",res);
// }
// }
// }
},
lastRewardInfo: function lastRewardInfo(data) {
if (this.map_data) {
this.map_data.is_can_reward = data.is_can_reward;
this.map_data.is_reward = data.is_reward;
this.updateBoxInfo();
}
},
passRewardInfo: function passRewardInfo() {
if (this.map_data) {
this.map_data.is_reward = 1;
this.updateBoxInfo();
}
},
showBuffItemMoveAni: function showBuffItemMoveAni(buff_id, world_pos) {},
baseInfoData: function baseInfoData(data) {
//人物和 时间
if (!data) return;
this.base_data = data;
this.setData();
},
initMapData: function initMapData(data) {
var _this2 = this;
if (!data) return;
//層級
if (data.floor) {
nx.gui.setString(this.floor_txt, "", "0" + data.floor);
}
//難易度
if (data.difficulty) {
nx.gui.setString(this.diff_txt, "", data.difficulty == 1 ? nx.text.getKey("lab_guildwar_defend_look_item_tip3") : nx.text.getKey("lab_guildwar_defend_look_item_tip5"));
}
if (data.tile_list) {
if (data.is_reward != null && data.is_can_reward != null) {
this.map_data = data;
if (this.map_data.is_reward == 0) {
this.holeNd.active = false;
} else {
this.holeNd.active = true;
}
if (this.map_data.is_can_reward != 1) {
this.boxNd.active = true;
} else {
this.boxNd.active = false;
}
}
var map_list = [];
if (!this.is_init_over) {
var len = data.tile_list.length;
var pop = data.tile_list[len - 1];
var bottom = data.tile_list[0];
var max_line = Math.max(pop.line, bottom.line);
for (var i = max_line; i >= 1; i--) {
this.createLineList(i);
}
map_list = this.formSortList(data.tile_list);
for (var _i in map_list) {
var tile_cfg = map_list[_i];
this.createMapItem(tile_cfg, _i);
}
this.is_init_over = true;
} else {
map_list = this.formSortList(data.tile_list);
for (var _i2 in map_list) {
var _tile_cfg = map_list[_i2];
var par = null;
for (var _i3 in this.list.children) {
var line = this.list.children[_i3];
if (Number(line.name) == _tile_cfg.line) {
par = line;
}
}
if (par) {
for (var j in par.children) {
var map = par.children[j];
var cmp = nx.gui.getComponent(map, "", "cmp.planesafk.item.map");
if (cmp.data && cmp.data.index == _tile_cfg.index) {
cmp.setData(_tile_cfg);
}
}
}
}
}
}
this.updateRoleInfo();
this.scheduleOnce(function () {
_this2.updateBoxInfo();
}, 0.5);
},
formSortList: function formSortList(tile_list) {
if (!tile_list || tile_list.length == 0) return [];
var len = tile_list.length;
var pop = tile_list[len - 1];
var bottom = tile_list[0];
var max_line = Math.max(pop.line, bottom.line);
var map_list = [];
for (var i = max_line; i >= 1; i--) {
var maps = [];
for (var l in tile_list) {
if (tile_list[l].line == i) {
maps.push(tile_list[l]);
}
}
maps.sort(function (a, b) {
return b.index - a.index;
});
map_list = map_list.concat(maps);
}
return map_list;
},
createLineList: function createLineList(index) {
var line = cc.instantiate(this.fabLine);
line.parent = this.list;
line.name = String(index);
line.y = 0;
line.x = 0;
line.active = true;
},
createMapItem: function createMapItem(cfg, index) {
var par = null;
for (var i in this.list.children) {
var line = this.list.children[i];
if (Number(line.name) == cfg.line) {
par = line;
}
}
if (par) {
var map = cc.instantiate(this.fabMap);
map.parent = par;
map.x = 0;
map.y = 0;
map.name = String(cfg.line - 1);
map.active = true;
map.zIndex = index;
var cmp = nx.gui.getComponent(map, "", "cmp.planesafk.item.map");
if (cmp) {
cmp.setData(cfg);
}
}
},
//直接更换冒险形象
// 显示角色信息角色
showRoleInfo: function showRoleInfo(line, index) {
//先保存位置
this.pushPath.push([line, index]);
},
updateRoleInfo: function updateRoleInfo() {
var _, _2, _3, _pos_group;
//常规定点位置无效,使用line,index当坐标
var line_box = {
w: 300,
h: 624
};
var line_padx = 80;
//line上的item从上到下排列,从0向上下延伸
//分为2,4 1,3,5两种模式
var par = this.list.children;
var line_group = {};
for (var i in par) {
line_group[par[i].name] = par[i].children.length;
}
var pos_group = (_pos_group = {}, _pos_group[1] = (_ = {}, _[3] = 0, _), _pos_group[2] = (_2 = {}, _2[2] = -84, _2[4] = 84, _2), _pos_group[3] = (_3 = {}, _3[1] = -168, _3[3] = 0, _3[5] = 168, _3), _pos_group);
this.pathSort(this.pushPath);
var pts = [];
var start_pos = null;
for (var _i4 = 0; _i4 < this.pushPath.length; _i4++) {
var mpos = this.pushPath[_i4];
if (line_group[mpos[0]]) {
var poses = pos_group[line_group[mpos[0]]];
var role_y = poses[mpos[1]] + 50;
var role_x = mpos[0] * line_box.w - (mpos[0] - 1) * line_padx - 150;
var real_pos = new cc.v2(role_x, role_y);
if (_i4 == 0) {
start_pos = real_pos;
}
pts.push(real_pos);
}
}
if (start_pos != null) {
this.cmpRole.node.position = start_pos;
this.cmpRole.pushPaths(pts);
this.pushPath = [];
} else {
this.roleMapMove();
}
},
pathSort: function pathSort(arr) {
arr.sort(function (a, b) {
if (a[0] != b[0]) {
return a[0] - b[0];
}
});
},
setData: function setData() {
var time = this.base_data.update_time - client.socket.getTime();
//处理时间
nx.gui.setCdTxt(this.time_val, "", time);
},
getBoxStatus: function getBoxStatus() {
if (!this.map_data) return;
//显示宝箱状态 1 表示 未激活 2 表示可领取 3 表示已领取 0 表示不显示并且要显示门
var is_show_box_staus = 0;
if (this.map_data.is_can_reward == 1) {
if (this.map_data.is_reward == 1) {
//已领取
if (this.max_floor > this.map_data.floor) {
// 不是最后一层 要显示门
is_show_box_staus = 0;
} else {
is_show_box_staus = 3;
}
} else {
//可领取
is_show_box_staus = 2;
}
} else {
//未激活
is_show_box_staus = 1;
}
return is_show_box_staus;
},
//更新宝箱逻辑
updateBoxInfo: function updateBoxInfo() {
var self = this;
var is_show_box_staus = this.getBoxStatus();
this.is_show_box_staus = is_show_box_staus;
if (is_show_box_staus == 0) {
this.boxNd.active = false;
this.holeNd.active = true;
} else if (is_show_box_staus == 3) {
this.boxNd.active = false;
this.holeNd.active = false;
this.endNd.active = true;
} else {
this.boxNd.active = true;
this.holeNd.active = false;
// this.spBox.stop();
if (is_show_box_staus == 3) {
this.onClickHardBtn();
}
// let res_path = PathTool.getSpinePath( "E27703", "action", false );
// self.spBox.load( res_path, ( _e ) => {
// if( !_e ) {
// if (is_show_box_staus == 1) {
// //未激活
// self.spBox.action( "action", true );
// }
// else if ( is_show_box_staus == 2) {
// //可领取
// self.spBox.action( "action1", true );
// }
// else if ( is_show_box_staus == 3) {
// //已领取
// self.spBox.action( "baoji", true );
// this.onClickHardBtn();
// }
// } else {
// self.spBox.stop();
// }
// } );
}
//判断弹窗逻辑
if (this.is_reward != null && this.is_reward != this.map_data.is_reward && is_show_box_staus == 3) {
this.model.setIsShowSearchFinish(true);
}
this.is_reward = this.map_data.is_reward;
},
start: function start() {},
onOpenConfigs: function onOpenConfigs(param) {
this.ctrl.sender28602(); // 基本信息
this.ctrl.sender28603(); //地图信息
this.ctrl.sender28625();
},
onPreClosed: function onPreClosed() {
nx.bridge.NodeChidrenDestroy(this.list);
},
// 打开振魂结晶
onClickBagBtn: function onClickBagBtn() {
this.ctrl.openPlanesafkItemUsePanel(true);
},
// 打开英雄列表
onClickHeroBtn: function onClickHeroBtn() {
this.ctrl.openPlanesafkHeroListPanel(true);
},
// 打开buff列表
onClickBuffBtn: function onClickBuffBtn() {
this.ctrl.openPlanesafkBuffListPanel(true);
},
// 打开商店
onClickShopBtn: function onClickShopBtn() {
MallController.getInstance().openMallPanel(true, [MallConst.MallType.ScoreShop, MallConst.MallType.FriendShop]);
},
//点击难度
onClickHardBtn: function onClickHardBtn(index) {
if (!this.map_data) {
return;
}
var role_vo = RoleController.getInstance().getRoleVo();
if (this.map_data.floor && this.map_data.floor > 1 && role_vo && role_vo.power >= this.planes_difficult_max_power && role_vo.lev >= this.difficult_limit_lev) {
this.ctrl.sender28604(this.map_data.floor + 1, 2);
} else {
this.ctrl.sender28604(this.map_data.floor + 1, 1);
}
},
//点击了宝箱
onClickBoxBtn: function onClickBoxBtn() {
if (!this.map_data) {
return;
}
if (this.map_data.is_can_reward == 1) {
this.ctrl.sender28605(this.map_data.floor);
}
},
onOpenTip: function onOpenTip() {
var TC = TipsController.getInstance();
if (TC) {
var config = gdata("planes_data", "data_const", "planes_rule");
TC.showTextPanel(null, config.desc);
}
},
onClickShowGet: function onClickShowGet() {
nx.bridge.createPanel("WndPlanesafkGet", {
item_list: this.up_item_list
});
} // update (dt) {},
});
cc._RF.pop();