318 lines
10 KiB
JavaScript
318 lines
10 KiB
JavaScript
"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(); |