Files
fc/dev/project/library/imports/d0/d0599a0c-4699-441e-929a-d61b3aa29fe3.js
T

318 lines
10 KiB
JavaScript
Raw Normal View History

2026-05-24 10:21:26 +08:00
"use strict";
cc._RF.push(module, 'd0599oMRplEHpKa1hs6op/j', 'cmp.startower.wnd');
// Scripts/mod/pve/startower/cmp/cmp.startower.wnd.js
"use strict";
var BridgeWindow = require("bridge.window");
var TowerMod = require("startower.mod");
var StartowerEvent = require("startower.define");
var RankConstant = require("rank_constant");
var RoleController = require("role_controller");
var ItemLayout = require("cmp.common.itemlayout");
var TipsController = require("tips_controller");
var FirstAwardCmp = require("cmp.startower.firstaward");
var NxSpine = require("nx.fx.spine");
var PathTool = require("pathtool");
cc.Class({
"extends": BridgeWindow,
properties: {
rank_list: {
"default": null,
type: cc.Node
},
rank_item: {
"default": null,
type: cc.Node
},
tower_list: {
"default": null,
type: ItemLayout
},
curawards: {
"default": null,
type: ItemLayout
},
//十层解锁
jump_edit: {
"default": null,
type: cc.EditBox
},
btn_jump: {
"default": null,
type: cc.Node
},
FirstCmp: {
"default": null,
type: FirstAwardCmp
},
jumpSp: {
"default": null,
type: NxSpine
}
},
// LIFE-CYCLE CALLBACKS:
onLoad: function onLoad() {
nx.gui.setActive(this.btn_jump, "", false);
nx.gui.setActive(this, "main/right/powertip", false);
this.ctrl = TowerMod.getInstance();
this.top3_item_list = {};
this.jump_str = "";
this.is_enough_jump = false; //是否已到达跳关最大上限
this.bindGEvent(StartowerEvent.Update_All_Data, this.updateAllData.bind(this));
this.bindGEvent(StartowerEvent.Update_Top3_rank, this.updateTop3Info.bind(this));
this.bindGEvent(StartowerEvent.Update_First_Reward_Msg, this.updataRewardRedPoint.bind(this));
this.bindGEvent(StartowerEvent.Fight_Success_Event, this.FightSuccessInfo.bind(this));
this.bindGEvent(StartowerEvent.Count_Change_Event, this.CountChange.bind(this));
this.bindGEvent(StartowerEvent.Update_Jump_Floor, this.updateJumpFloor.bind(this));
//刷新本层奖励
this.bindGEvent(StartowerEvent.Update_Cur_Floor_Award, this.updateFloorAwards.bind(this));
this.bindGEvent(StartowerEvent.Show_Jump_Sp, this.showJumpEffect.bind(this));
},
showJumpEffect: function showJumpEffect() {
var _this = this;
this.jumpSp.node.active = false;
var res_path = PathTool.getSpinePath("E80050", "action", false);
this.jumpSp.load(res_path, function (_e) {
_this.jumpSp.node.active = true;
if (!_e) {
_this.jumpSp.action("action", false, function (_key, _name) {
if (_key == "start") {
_this.tower_list.node.runAction(cc.fadeOut(1));
}
if (_key == "change") {
_this.tower_list.node.runAction(cc.fadeIn(0.1));
}
if (_key == "complete") {
_this.jumpSp.stop();
return;
}
});
} else {
_this.tower_list.node.opacity = 255;
_this.jumpSp.stop();
}
});
},
updateJumpFloor: function updateJumpFloor(data) {
this.from_floor = data.from_floor;
this.target_floor = data.target_floor;
},
updateFloorAwards: function updateFloorAwards(awards) {
var reward = awards || [];
this.curawards.rebuild(reward);
},
CountChange: function CountChange() {
this.refreshRankList();
this.updateTowerList();
this.FirstCmp.updateBoxAwards();
},
FightSuccessInfo: function FightSuccessInfo() {
// if(!this.select_vo)return;
// this.refreshRankList();
this.updateTowerList();
this.FirstCmp.updateBoxAwards();
},
updateAllData: function updateAllData() {
var need = game.configs.star_tower_data.data_tower_const.skip_floor_limit.val;
var needfloor = game.configs.star_tower_data.data_tower_const.skip_floor_need.val;
var maxfloor = game.configs.star_tower_data.data_tower_const.skip_floor_max_limit.val;
var max_tower = this.ctrl.getNowTowerId();
this.is_enough_jump = max_tower < maxfloor && max_tower >= needfloor;
var recommond = game.configs.star_tower_data.data_tower_base[max_tower + need].recommend;
nx.gui.setString(this, "main/right/powertip/txt", nx.text.getKey("RankPowerArri") + recommond);
nx.gui.setActive(this.btn_jump, "", this.is_enough_jump);
nx.gui.setActive(this, "main/right/powertip", this.is_enough_jump);
this.updataRewardRedPoint();
},
updateTop3Info: function updateTop3Info(rank_list) {
if (rank_list == null) return;
for (var i in rank_list) {
if (!this.top3_item_list[rank_list[i].rank]) {
var item = this.createSingleRankItem(rank_list[i].rank);
item.active = true;
this.rank_list.addChild(item);
this.top3_item_list[rank_list[i].rank] = item;
}
var item = this.top3_item_list[rank_list[i].rank];
if (item) {
item.label.string = rank_list[i].name;
item.value.string = (rank_list[i].tower || 0) + nx.text.getKey("lab_star_tower_window_window_tip6");
}
}
this.updateAllData();
},
onEditChange: function onEditChange(edit) {
this.jump_str = edit.string;
},
//指定通关跳转
onClickTargetJump: function onClickTargetJump() {
var cur_lev_id = this.ctrl.getNowTowerId();
var target = Number(this.jump_str);
if (target <= cur_lev_id + 1) {
this.jumpTowerList(target);
} else {
return nx.tbox("startower_jump_tip");
}
},
//一键跳转
onClickOneJump: function onClickOneJump() {
if (!this.from_floor || !this.target_floor) {
return nx.tbox("startower_power_jump");
}
var cur_lev_id = this.ctrl.getNowTowerId();
if (cur_lev_id < game.configs.star_tower_data.data_tower_const.skip_floor_need) {
return nx.tbox("startower_ten_jump");
}
this.ctrl.sender11335();
},
start: function start() {},
onOpenConfigs: function onOpenConfigs() {
//请求塔数据
this.ctrl.sender11320();
this.ctrl.sender11334();
this.refreshRankList();
// this.list_view.reloadData(lev_id);
this.updateTowerList();
},
refreshRankList: function refreshRankList() {
var _this2 = this;
this.scheduleOnce(function () {
_this2.ctrl.requestStarTowerRank();
}, 1);
},
onPreClosed: function onPreClosed() {
this.tower_list.rebuild([]);
this.curawards.rebuild([]);
},
//奖励红点
updataRewardRedPoint: function updataRewardRedPoint() {},
createSingleRankItem: function createSingleRankItem(i) {
var container = cc.instantiate(this.rank_item);
var sp = nx.gui.getComponent(container, "icon", cc.Sprite);
var res = cc.js.formatStr("prefab/pve/startower/ui/rank_%s", i);
cc.loader.loadRes(res, cc.SpriteFrame, function (err, sf_obj) {
sp.spriteFrame = sf_obj;
});
container.label = nx.gui.getComponent(container, "name", cc.Label);
container.value = nx.gui.getComponent(container, "tower", cc.Label);
return container;
},
jumpTowerList: function jumpTowerList(target) {
var tower_data_list = [];
for (var i = target - 1; i <= target + 1; i++) {
var data = game.configs.star_tower_data.data_tower_base[i];
if (i == target + 1) {
//上层不需要数据
data = {};
}
if (!data) {
data = {};
}
tower_data_list.push(data);
}
this.tower_list.tag_key = target;
this.tower_list.rebuild(tower_data_list);
},
updateTowerList: function updateTowerList() {
var _this3 = this;
//需要处理最小值和最大值
var cur_lev_id = this.ctrl.getNowTowerId();
var tower_data_list = [];
if (!game.configs.star_tower_data.data_tower_base[cur_lev_id]) {
//起始位置
for (var i = 1; i <= 3; i++) {
var data = game.configs.star_tower_data.data_tower_base[i];
if (i == 3) {
//上层不需要数据
data = {};
}
tower_data_list.push(data);
}
this.tower_list.tag_key = 1;
} else if (!game.configs.star_tower_data.data_tower_base[cur_lev_id + 1]) {
//最终位置
//最大数量
this.max_count = game.configs.star_tower_data.data_tower_base_length;
for (var _i = this.max_count + 1; _i >= this.max_count - 2; _i--) {
var _data = game.configs.star_tower_data.data_tower_base[_i];
if (_i == this.max_count + 1) {
//上层不需要数据
_data = {};
}
tower_data_list.push(_data);
}
this.tower_list.tag_key = cur_lev_id;
} else {
for (var _i2 = cur_lev_id; _i2 <= cur_lev_id + 2; _i2++) {
var _data2 = game.configs.star_tower_data.data_tower_base[_i2];
if (_i2 == cur_lev_id + 2) {
//上层不需要数据
_data2 = {};
}
tower_data_list.push(_data2);
}
this.tower_list.tag_key = cur_lev_id;
}
this.tower_list.rebuild(tower_data_list);
// 引导辅助
if (nx.bridge.plot && nx.bridge.plot.isDoing()) {
this.scheduleOnce(function () {
_this3.positionPlotCells();
}, 0.5);
}
},
// 规则说明
onTouchTip: function onTouchTip() {
var TC = TipsController.getInstance();
if (TC) {
var txt = game.configs.star_tower_data.data_tower_const.rule_desc;
TC.showTextPanel("tip", txt.desc);
}
},
onClickAward: function onClickAward() {
this.ctrl.openAwardWindow(true);
},
onClickRank: function onClickRank() {
nx.bridge.createPanel("WndRank", {
fromOther: RankConstant.RankType.tower
});
},
// ============================================
// 引导辅助
// ============================================
// 定位副本輔助热区
positionPlotCells: function positionPlotCells() {
if (this.tower_list.tag_key != 1) return;
var children = this.tower_list.node.children;
var node = children[0];
if (!node) {
nx.error("$Dispatch:定位第一个派遣订单失败!");
node = children[0];
if (!node) {
return;
}
}
var cell = nx.gui.find(this, "main/plotCell");
var cmp = node.getComponent("cmp.startower.item");
var btn = nx.gui.find(node, "main/detail/btn_challenge");
var pos = btn.convertToWorldSpaceAR(cc.Vec2.ZERO);
cell.position = cell.parent.convertToNodeSpaceAR(pos);
cell.width = btn.width;
cell.height = btn.height;
cell.svItem = cmp;
},
// 点击金币副本第一关挑战
onTouchFirstTower: function onTouchFirstTower() {
var cell = nx.gui.find(this, "main/plotCell");
if (cell && cell.svItem) {
cell.svItem.clickFight();
}
}
});
cc._RF.pop();