Files
fc/dev/project/library/imports/d6/d616babf-d1df-45c4-bb49-b719d158dc7c.js
2026-05-24 10:21:26 +08:00

1124 lines
39 KiB
JavaScript

"use strict";
cc._RF.push(module, 'd616bq/0d9FxLtJtxnRWNx8', 'cmp.battledrama.onhook');
// Scripts/mod/battle_drama/cmp/cmp.battledrama.onhook.js
"use strict";
var BridgeWindow = require("bridge.window");
var DramaEvent = require("battle_drama_event");
var TimeTool = require("timetool");
var OnlineGiftController = require("onlinegift_controller");
var OnlineGiftEvent = require("onlinegift_event");
var HallowsEvent = require("hallows_event");
var RCT = require("role_controller");
var BTD = require("battle_drama_controller");
var BTC = require("battle_controller");
var HSC = require("hallows_controller");
var PathTool = require("pathtool");
var HeroConst = require("hero_const");
var NxSpine = require("nx.fx.spine");
var DramaSpecial = require("cmp.battledrama.special");
var DramaConst = require("battle_drama_event");
var _require = require("define"),
SCENE_TAG = _require.SCENE_TAG;
var _require2 = require("define"),
PlayerAction = _require2.PlayerAction;
var FID = require("bridge.function.ids");
var RoleController = require("role_controller");
var FxBGM = require("nx.fx.BGM");
var _require3 = require("bridge.conditions"),
CKeys = _require3.CKeys;
var data2Icon = require("bridge.utils.item");
cc.Class({
"extends": BridgeWindow,
properties: {
bgnCmp: {
"default": null,
type: FxBGM
},
bottom_container: {
"default": null,
type: cc.Node
},
res_skeleton: {
"default": null,
type: sp.Skeleton
},
res_model: {
"default": null,
type: cc.Node
},
time_label: {
"default": null,
type: cc.Label
},
quick_btn: {
"default": null,
type: cc.Button
},
// receivenode: {
// default: null,
// type: cc.Node
// },
// receivename: {
// default: null,
// type: cc.Label
// },
passnode: {
"default": null,
type: cc.Node
},
passnode_name_txt: {
"default": null,
type: cc.RichText
},
pass_dungeon_name: {
"default": null,
type: cc.Label
},
passTag: {
"default": null,
type: cc.Node
},
mapname: {
"default": null,
type: cc.Label
},
chapName: {
"default": null,
type: cc.Label
},
hallowNd: {
"default": null,
type: cc.Node
},
collectNd: {
"default": null,
type: cc.Node
},
fabItem: {
"default": null,
type: cc.Prefab
},
passEft: {
"default": null,
type: NxSpine
},
// speGift: {
// default: null,
// type: DramaSpecial
// },
bossSp: {
"default": null,
type: NxSpine
},
bossBtn: {
"default": null,
type: cc.Node
},
rewardSpriteBack: {
"default": null,
type: cc.Sprite
},
rewardNormalSpriteFrame: {
"default": null,
type: cc.SpriteFrame
},
rewardSepSpriteFrame: {
"default": null,
type: cc.SpriteFrame
}
},
// LIFE-CYCLE CALLBACKS:
onLoad: function onLoad() {
var _this = this;
if (nx.bridge.vget("gm")) {
var GmCmd = require("gmcmd");
GmCmd.show();
}
this.battle_controller = require("battle_controller").getInstance();
this.resources_action = null;
this.is_onshow = false;
this.res_skeletonData = null;
this.challenge_condition = {
status: 0,
lev: 0
}; // 挑战BOSS的按钮状态
this.fly_item_pools = new cc.NodePool(); // 假战斗对象池列表,根据物品icon区分
this.auto_id = 0; // 当前假战斗的物品列表
this.fly_item_list = {}; // 储存当前生成的资产item
this.cur_hallows_id = 0;
this.cur_chapter_id = null;
this.hallow_spine_path = "";
this.guildsign_open = false; //快速作战是否开启;
// this.receivenode.active = false;
//缓存下通关奖励表,因为要排序
this.pass_reward_list = [];
for (var key in game.configs.dungeon_data.data_drama_reward) {
var config = game.configs.dungeon_data.data_drama_reward[key];
this.pass_reward_list.push(config);
}
this.pass_reward_list.sort(function (a, b) {
return a.sort - b.sort;
});
// 角色属性监听
this.role = RoleController.getInstance().getRoleVo();
this.handler = this.role.bind(EventId.UPDATE_ROLE_ATTRIBUTE, function (_key, _val) {
_this.onRoleAttrChanged(_key, _val);
});
//快速战斗数据更新
this.bindGEvent(DramaEvent.BattleDrama_Quick_Battle_Data, this.upQuickBattleData.bind(this));
// 更新快速战斗状态
this.bindGEvent(DramaEvent.BattleDrama_Update_Max_Id, this.upQuickBtnStatus.bind(this));
//更新物品掉落
this.bindGEvent(DramaEvent.UpdateHookAccumulateTime, this.updateResourceCollect.bind(this));
//冷却时间发生变化
this.bindGEvent(DramaEvent.BattleDrama_Update_Cool_Time, this.updateChallengeBossStatus.bind(this));
//挑战成功后开始制作minimap
this.bindGEvent(DramaEvent.BattleDrama_Update_Dun_Id, this.updateMiniMapInfo.bind(this));
this.bindGEvent(DramaEvent.BattleDrama_Update_Data, this.upDramaData.bind(this));
this.bindGEvent(DramaEvent.BattleDrama_Top_Update_Data, this.upDramaTopData.bind(this));
//通关奖励红点
this.bindGEvent(DramaEvent.BattleDrama_Drama_Reward_Data, this.updatePassRewardRedPoint.bind(this));
//人物数据变化
this.bindGEvent(EventId.UPDATE_ROLE_ATTRIBUTE, this.upRoleLevInfo.bind(this));
//onlinegift
this.bindGEvent(OnlineGiftEvent.Get_Data, this.getOnlineData.bind(this));
//行星武器
this.bindGEvent(HallowsEvent.UpdateHallowsTaskEvent, this.updateHallowSpine.bind(this));
this.bindGEvent(HallowsEvent.HallowsActivityEvent, this.updateHallowSpine.bind(this));
//掉落金币收集
this.bindGEvent(DramaEvent.ResourceCollect, this.playResourceCollect.bind(this));
this.bubbleNod = nx.gui.find(this, "bubble");
this.allcfg = game.configs.dungeon_data.data_drama_talk_length;
nx.bridge.vbind(this, [["BattleDrameCd", this.onFreshCd.bind(this)], ["DailyPop", this.onShowPop.bind(this)]]);
this["const"] = game.configs.dungeon_data.data_drama_const;
this.cfg = game.configs.dungeon_data.data_drama_talk;
this.showLog = [];
var role = RoleController.getInstance().getRoleVo();
for (var i in this.cfg) {
var info = this.cfg[i];
if (role.lev >= info.min_lev && role.lev <= info.max_lev) {
this.showLog.push(info);
}
}
nx.tween.fadeOut(this.bubbleNod, 0.3);
this.first = 0;
},
onEnable: function onEnable() {
var _this2 = this;
var self = this;
this.unscheduleAllCallbacks();
if (self.tweenAct) {
self.tweenAct.stop();
}
// let time = self.first <= 0 ? self.const.bubble_time.val : ( self.const.bubble_time.val * 2 );
if (self["const"]) {
// nx.gui.setActive( this.nodInfo, "camp/img", true );
this.scheduleOnce(function () {
self.tweenAct = cc.tween(_this2.bubbleNod).delay(0.01).call(function () {
self.doAnimin(self.first);
}).delay(self["const"].bubble_time.val).call(function () {
self.schedule(function () {
var id = nx.dt.randomRange(0, _this2.showLog.length - 1);
var show = self.showLog[id];
nx.gui.setString(self.bubbleNod, "desc/txt", show.talk);
self.tweenAct = cc.tween(self.bubbleNod).delay(0.01).call(function () {
nx.tween.fadeIn(self.bubbleNod, 0.01);
}).delay(self["const"].bubble_time.val).call(function () {
nx.tween.fadeOut(self.bubbleNod, 0.01);
}).start();
self.first++;
// nx.tween.fadeIn( this.bubbleNod, 0.3 );
}, self["const"].bubble_time.val * 2, cc.macro.REPEAT_FOREVER);
}).start();
}, self["const"].bubble_time.val);
}
//判断是否需要打开副本奖励
var needShow = cc.sys.localStorage.getItem("openServer1Open");
if (needShow == 1) {
cc.sys.localStorage.removeItem("openServer1Open");
this.scheduleOnce(function () {
_this2.touchPassNode();
}, 0.1);
}
this.scheduleOnce(function () {
var cur = nx.bridge.plot.vget("id");
if (nx.dt.strEmpty(cur)) {
var cmp = nx.gui.getComponent(_this2, "pres/plot", "cmp.main.ui.plot");
if (cmp && nx.bridge.plot && !nx.bridge.plot.isDoing()) {
if (game.views && nx.gui.find(game.views, "plots") && nx.gui.find(game.views, "plots").children.length == 0) {
cmp.backDramaHook();
}
}
return;
}
}, 0.2);
},
// 角色属性改变
onRoleAttrChanged: function onRoleAttrChanged(_key, _val) {
if (!nx.dt.arrMember(CKeys, _key)) {
return;
}
// 功能解锁检查
nx.bridge.mods.checkUnLock();
nx.bridge.acts.freshForeshow();
// 解锁条件更新
var cmps = game.node.getComponentsInChildren("bridge.condition.locker");
if (nx.dt.arrNEmpty(cmps)) {
for (var i in cmps) {
cmps[i].updateLocker(_key, _val);
}
}
},
// 关卡更新
onDramaLevelChanged: function onDramaLevelChanged() {
// 功能解锁检查
nx.bridge.mods.checkUnLock();
// 解锁条件更新
var cmps = game.node.getComponentsInChildren("bridge.condition.locker");
if (nx.dt.arrNEmpty(cmps)) {
for (var i in cmps) {
cmps[i].updateLocker("max_dun_id");
}
}
},
doAnimin: function doAnimin(_first) {
var self = this;
var id = nx.dt.randomRange(0, this.showLog.length - 1);
var show = self.showLog[id];
nx.gui.setString(this.bubbleNod, "desc/txt", show.talk);
self.tweenAct = cc.tween(this.bubbleNod).delay(0.01).call(function () {
nx.tween.fadeIn(self.bubbleNod, 0.01);
}).delay(self["const"].bubble_time.val).call(function () {
nx.tween.fadeOut(self.bubbleNod, 0.01);
_first++;
}).start();
},
onDestroy: function onDestroy() {
// 角色属性监听解除
if (this.role && this.handler) {
this.role.unbind(this.handler);
this.handler = null;
this.role = null;
}
if (nx.gui.find(nx.bridge.ui.getSceneNode(SCENE_TAG.msg), "gm")) {
var nod = nx.gui.find(nx.bridge.ui.getSceneNode(SCENE_TAG.msg), "gm");
nod.destroy();
}
// 监听事件释放
this.unbindGEvents();
},
onDisable: function onDisable() {},
//----------------------消息绑定
getOnlineData: function getOnlineData(data) {
this.removeOnlineSprite(data);
this.receiveChangeData();
},
upRoleLevInfo: function upRoleLevInfo(key, value) {
if (key == "lev") {
this.updateRoleLevInfo();
}
},
upDramaData: function upDramaData(data) {
if (this.cur_chapter_id != data.chapter_id) {
BTD.getInstance().getModel().initDungeonList(data.mode, data.chapter_id); //战斗副本界面没对应刷新函数,暂时在这里初始化
}
this.updateMiniMapInfo();
this.checkQuickRed();
},
upQuickStatus: function upQuickStatus(data) {
if (nx.dt.objEmpty(data)) {
return false;
}
this.checkQuickRed();
},
upDramaTopData: function upDramaTopData() {
this.updateMiniMapInfo();
this.checkQuickRed();
this.onDramaLevelChanged();
},
upQuickBattleData: function upQuickBattleData(data) {
if (nx.dt.objEmpty(data)) {
return false;
}
this.checkQuickRed();
},
upQuickBtnStatus: function upQuickBtnStatus(id) {
//更新物品掉落展示
gcore.GlobalEvent.fire(DramaEvent.UpDramaDropInfo);
// this.updateDramaDropInfo();
this.updateChallengeBossStatus();
if (!this.guildsign_open) {
if (id >= game.configs.dungeon_data.data_drama_const.fast_combat_first.val) {
this.guildsign_open = true;
nx.gui.setLocked(this.quick_btn.node, "", false);
}
}
},
jumpHallow: function jumpHallow() {
nx.bridge.jumper.jump2Window(39);
},
// 更新神器
updateHallowSpine: function updateHallowSpine() {
var hallows_model = HSC.getInstance().getModel();
var is_open = HSC.getInstance().checkIsOpen();
if (!this.is_real_combat && !is_open && !hallows_model.checkIsHaveAllHallows()) {
this.hallowNd.active = true;
var hallows_id = hallows_model.getCurActivityHallowsId();
if (this.cur_hallows_id != hallows_id) {
this.cur_hallows_id = hallows_id;
var hallows_config = game.configs.hallows_data.data_base[hallows_id];
if (hallows_config) {
var res_path = cc.js.formatStr("prefab/battle/battledrama/ui/planet0%s", hallows_id);
nx.gui.setSpriteFrame(this.hallowNd, "plane", res_path);
}
}
var hallows_task_list = hallows_model.getHallowsTaskList(this.cur_hallows_id);
if (hallows_task_list) {
var max_num = hallows_task_list.length;
var cur_num = 0;
for (var i in hallows_task_list) {
if (hallows_task_list[i].finish == 2) {
cur_num = cur_num + 1;
}
}
var percent = cur_num / max_num;
var bar = nx.gui.getComponent(this.hallowNd, "bar", cc.ProgressBar);
bar.progress = percent;
var tag = nx.gui.find(this.hallowNd, "tag");
nx.gui.setString(tag, "txt", cc.js.formatStr(nx.text.getKey("HallowTaskDetail"), cur_num, max_num));
}
} else {
this.hallowNd.active = false;
}
},
onShowPop: function onShowPop(_pop) {
if (_pop == 1) {
var showDaily = nx.bridge.vget("DailyLimit");
if (showDaily) {
switch (showDaily) {
case 1:
{
nx.bridge.jumper.jump2Window(FID.ActFirst);
nx.bridge.vset("DailyLimit", null);
}
;
break;
case 2:
{
nx.bridge.jumper.jump2Window(FID.ActMySteryGift);
nx.bridge.vset("DailyLimit", null);
}
;
break;
case 3:
{
nx.bridge.jumper.jump2Window(FID.ActOptional);
nx.bridge.vset("DailyLimit", null);
}
;
}
}
}
},
//----------------------消息绑定
start: function start() {},
onOpenConfigs: function onOpenConfigs(params) {
this.is_real_combat = params.is_real_combat; // 是否真假战斗
this.is_onshow = true;
// this.updateDramaDropInfo();
this.updateResourceCollect();
this.updateMiniMapInfo();
this.updateChallengeBossStatus();
this.updateOnlineGiftInfo();
this.refreshDramaRewardIcon();
if (!this.is_real_combat) {
// 神器模型
this.updateHallowSpine();
}
//快速作战红点
this.checkQuickRed();
if (BTD.getInstance().getModel().getDramaData().max_dun_id < game.configs.dungeon_data.data_drama_const.fast_combat_first.val) {
nx.gui.setLocked(this.quick_btn.node, "", true);
} else {
this.guildsign_open = true;
}
},
onPreClosed: function onPreClosed() {
this.is_onshow = false;
this.clearCoolTimer();
if (!BTC.getInstance().getModel().isInRealBattle()) {
BTC.getInstance().getModel().clearBattleNd();
// 只要不是剧情副本,都切出战斗
BTC.getInstance().requestCutOutBattle();
BTC.getInstance().setUIFightType(0);
}
this.fly_item_pools.clear();
},
// 小地图图片和名字宣誓,以及小地图位置,小地图是要判断当前 dun_id
updateMiniMapInfo: function updateMiniMapInfo() {
var drama_data = BTD.getInstance().getModel().getDramaData();
if (nx.dt.objEmpty(drama_data)) {
return false;
}
if (this.cur_drama_dun_id == drama_data.dun_id) return;
this.cur_drama_dun_id = drama_data.dun_id;
var drama_config = gdata("dungeon_data", "data_drama_dungeon_info", drama_data.dun_id);
if (nx.dt.objEmpty(drama_config)) {
return false;
}
this.mapname.string = drama_config.name; // 名字
this.cur_chapter_id = drama_data.chapter_id;
var chap_data = gdata("dungeon_data", "data_drama_world_info", 1);
if (nx.dt.objEmpty(chap_data[drama_data.chapter_id])) {
return false;
}
this.chapName.string = chap_data[drama_data.chapter_id].name;
},
// 清除面板所属唯一定时器
clearCoolTimer: function clearCoolTimer() {
if (this.time_ticker) {
gcore.Timer.del(this.time_ticker);
this.time_ticker = null;
}
},
// 挑战boss状态,可能冷却中,也可能进入下一章节
updateChallengeBossStatus: function updateChallengeBossStatus() {
var _this3 = this;
if (!this.is_onshow) return;
var drama_data = BTD.getInstance().getModel().getDramaData();
if (nx.dt.objEmpty(drama_data)) {
return false;
}
var cur_key = Utils.getNorKey(drama_data.cool_time, drama_data.status);
if (this.drama_cur_status == cur_key) return;
this.drama_cur_status = cur_key;
var cur_drama_max_id = drama_data.max_dun_id || 10010;
var drama_config = game.configs.dungeon_data.data_drama_dungeon_info[cur_drama_max_id];
if (nx.dt.objEmpty(drama_config)) {
return false;
}
this.challenge_cool_time = 0; // 可挑战时间
this.challenge_condition.status = 0;
this.challenge_condition.lev = 0;
// this.clearCoolTimer();
if (!drama_config || drama_config.next_id == 0) {
this.bossBtn.active = false;
nx.gui.setActive(this, "bottom_container/btn_cd", false);
return;
}
if (drama_data.status == 2 && drama_data.cool_time == 0) {
// 可挑战
this.bossBtn.active = true;
nx.gui.setActive(this, "bottom_container/btn_cd", false);
// this.next_battle_time.active = false;
this.challenge_condition.status = 2; // 记录状态
// 这里需要判断当前等级和需求等级
var config = game.configs.dungeon_data.data_drama_dungeon_info[drama_data.dun_id]; // 取出当前副本配置数据
if (config) {
if (config.lev_limit <= RCT.getInstance().getRoleVo().lev) {
// this.notice_label.string = "";
// this.challenge_item.active = true;
} else {
// 等级不足
// this.notice_label.string = cc.js.formatStr(nx.text.getKey("battle_str5"), config.lev_limit)
// this.challenge_item.active = false;
this.challenge_condition.lev = config.lev_limit; // 保存需要挑战的等级
}
}
} else if (drama_data.status == 1 && drama_data.cool_time != 0) {
// 冷却中
this.challenge_condition.status = 1; // 记录状态
this.bossBtn.active = false;
// this.next_battle_time.active = true;
this.challenge_cool_time = drama_data.cool_time;
// this.next_label.string = TimeTool.getMinSecTime(this.challenge_cool_time - client.socket.getTime());
// this.startCoolTimer();
} else if (drama_data.status == 3) {
// 已通过,前往下一章
this.challenge_condition.status = 3; // 记录状态
this.bossBtn.active = true;
nx.gui.setActive(this, "bottom_container/btn_cd", false);
// nx.gui.setActive( this, "bottom_container/btn_cd", true );
// let time = nx.bridge.time.toNeedTime( drama_data.cool_time );
// time = time > 0 ? time : 0.1;
// nx.gui.setCdTxt( this, "bottom_container/btn_cd/cd", time, ()=>{
// nx.gui.setActive( this, "bottom_container/btn_cd", false );
// } )
// this.next_battle_time.active = false; // 冷却倒计时
// this.challenge_item.active = false; // 隐藏掉挑战BOSS
// this.notice_label.string = nx.text.getKey("battle_str6"); // 显示前往下一章
}
var boss_res = PathTool.getSpinePath("E80011", "action", false);
this.bossSp.load(boss_res, function (_e) {
if (!_e) {
_this3.bossSp.action("action", true);
} else {
_this3.bossSp.stop();
}
});
;
},
// 点击挑战BOSS
touchChallengeBoss: function touchChallengeBoss() {
var _this4 = this;
// this.deleteLastTimeHandle();
if (BTC.getInstance().getModel().isInRealBattle()) {
nx.tbox(nx.text.getKey("battle_str7"));
return;
}
var role = RoleController.getInstance().getRoleVo();
var config = game.configs.dungeon_data.data_drama_dungeon_info[this.cur_drama_dun_id];
if (role.lev < config.lev_limit) {
nx.tbox(nx.text.format("BattleDrameTip", config.lev_limit));
return;
}
if (this.challenge_condition.status == 3) {
//前往下一章
BTD.getInstance().send13002();
} else if (this.challenge_condition.status == 2) {
// 可挑战
if (config) {
if (config.is_big == 1) {
this.bgnCmp.restoreLastBGM = false;
BTD.getInstance().openDramBossInfoView(true, this.cur_drama_dun_id);
} else {
this.tryPlot(function (_event) {
if (_event != "start") {
// 出击
_this4.bgnCmp.restoreLastBGM = false;
BTD.getInstance().send13003(0);
return;
}
});
}
// if( config.is_big == 1 ) {
// BTD.getInstance().openDramBossInfoView( true, this.cur_drama_dun_id );
// } else {
// HeroController.getInstance().openFormGoFightPanel( true, 0, {}, HeroConst.FormShowType.eFormFight, true );//剧情限定阵容
// }
}
}
},
// 引导出击
onTouchBattle: function onTouchBattle() {
var _this5 = this;
this.scheduleOnce(function () {
_this5.touchChallengeBoss();
}, 0.05);
},
//点击快速挑战
touchBattleQuick: function touchBattleQuick() {
if (this.guildsign_open) BTD.getInstance().openDramBattleQuickView(true);
if (this.quick_battle_status) {
BTD.getInstance().getModel().setOpenQuickBattleStatus(true);
BTD.getInstance().getModel().checkRedPoint();
}
},
touchWorldMap: function touchWorldMap() {
// var WorldmapController = require("worldmap_controller");
// var data = BTD.getInstance().getModel().getDramaData()
// WorldmapController.getInstance().openWorldMapMainWindow(true, data)
nx.bridge.createPanel("WndWorldMap");
},
touchStrongerWin: function touchStrongerWin() {
require("stronger_controller").getInstance().openMainWin(true);
},
//更新快速作战红点状态
checkQuickRed: function checkQuickRed() {
var drama_data = BTD.getInstance().getModel().getDramaData();
// 空属性
if (nx.dt.objEmpty(drama_data)) {
return false;
}
},
//------------------在线奖励
isCreateOnlineGift: function isCreateOnlineGift() {
var status = false;
var data = OnlineGiftController.getInstance().getModel().getOnlineGiftData();
if (data) {
for (var i = 0; i < data.length; ++i) {
var v = data[i];
if (v.time == game.configs.misc_data.data_get_time_items[game.configs.misc_data.data_get_time_items_length].time) {
status = true;
break;
}
}
}
return status;
},
// --避免网络时间延迟导致在线奖励领取完毕还在剧情副本中
removeOnlineSprite: function removeOnlineSprite(data) {
if (nx.dt.objEmpty(data)) {
return false;
}
var status = false;
if (!nx.dt.arrEmpty(data.list)) {
// --删除图标
if (data.list.length >= game.configs.misc_data.data_get_time_items_length) {
status = false;
} else {
status = true;
}
} else {
status = true;
}
if (!status) {
this.clearOnlineInfo();
} else {
// --创建图标
this.onlineCreate();
}
},
clearOnlineInfo: function clearOnlineInfo() {
// this.receivenode.active = false;
if (this.time_tichet) {
gcore.Timer.del(this.time_tichet);
this.time_tichet = null;
}
},
close: function close() {
this._super();
if (this.bgnCmp) {
this.bgnCmp.restoreLastBGM = true;
}
},
onlineCreate: function onlineCreate() {
// this.receivenode.active = true;
},
touchOnlineGift: function touchOnlineGift() {
OnlineGiftController.getInstance().openOnlineGiftView(true);
},
updateOnlineGiftInfo: function updateOnlineGiftInfo() {
OnlineGiftController.getInstance().send10926();
},
receiveChangeData: function receiveChangeData() {
var data = OnlineGiftController.getInstance().getModel().getOnlineGiftData();
var num = 0;
var _get_time_items = game.configs.misc_data.data_get_time_items;
var _get_time_length = game.configs.misc_data.data_get_time_items_length;
if (data) {
data.sort(function (a, b) {
return a.time - b.time;
});
for (var i in _get_time_items) {
var v = _get_time_items[i];
if (data[data.length - 1]) {
if (data[data.length - 1].time >= v.time) {
num = i;
}
}
}
}
num = Number(num) + 1;
if (num >= _get_time_length) {
num = _get_time_length;
}
var online_time = OnlineGiftController.getInstance().getModel().getOnlineTime();
// if( online_time >= _get_time_items[ num ].time ) {
// if( this.receivenode.active ) {//this.online_gift_node
// if( this.time_tichet ) {
// gcore.Timer.del( this.time_tichet );
// this.time_tichet = null;
// }
// this.receivename.string = nx.text.getKey( "battle_str2" )
// }
// } else {
// let time = _get_time_items[ num ].time - online_time
// if( this.time_tichet ) {
// gcore.Timer.del( this.time_tichet );
// this.time_tichet = null;
// }
// nx.gui.setCdTxt( this.receivename, "", time );
// }
},
//------------------在线奖励
//------------------作战奖励
touchPassNode: function touchPassNode() {
BTD.getInstance().openDramaRewardWindow(true);
},
//更新通关奖励红点
updatePassRewardRedPoint: function updatePassRewardRedPoint() {
// var status = BTD.getInstance().getModel().getDramaRewardRedPointInfo();
// this.passtips.active = status;
// this.speGift.updateSpecialAward();
this.refreshDramaRewardIcon();
},
refreshDramaRewardIcon: function refreshDramaRewardIcon() {
var pass_list = BTD.getInstance().getModel().getDramaRewardPassList(); // 已通关列表
var drama_data = BTD.getInstance().getModel().getDramaData(); // 当前剧情副本数据
var max_dun_id = drama_data.max_dun_id;
var cur_drama_dungeon_info = game.configs.dungeon_data.data_drama_dungeon_info[max_dun_id];
var floor = 0;
if (cur_drama_dungeon_info) {
floor = cur_drama_dungeon_info.floor || 0;
}
//已经通过显示
if (drama_data.max_dun_id == null || drama_data.max_dun_id == 0) {
this.pass_dungeon_name.string = "--"; // 名字
} else {
var per_drama_dungeon_info = game.configs.dungeon_data.data_drama_dungeon_info[drama_data.max_dun_id];
this.pass_dungeon_name.string = per_drama_dungeon_info.name; // 名字
}
var cur_cfg = null;
var blink_status = BTD.getInstance().getModel().getDramaRewardRedPointInfo();
var rec_num = 0;
// 遍历出整个列表,現在統一設置下一個領取的文字即可
for (var key in this.pass_reward_list) {
var config = this.pass_reward_list[key];
if (max_dun_id < config.limit_id) {
this.passnode_name_txt.string = config.desc;
if (config.title_res == 1) {
var Partner_res = PathTool.getIconPath(config.extend_icon, "action");
nx.gui.setSpriteFrame(this.passnode, "mask/tagSep", Partner_res);
// this.rewardSpriteBack.spriteFrame = this.rewardSepSpriteFrame;
nx.gui.setActive(this.passnode, "mask/tagItem", false);
nx.gui.setActive(this.passnode, "mask/tagSep", true);
} else {
// this.rewardSpriteBack.spriteFrame = this.rewardNormalSpriteFrame;
//創建圖標
var vof = data2Icon.data2Icon(config.items[0][0]);
nx.bridge.setIcon(this.passnode, "mask/tagItem", vof.icon);
nx.gui.setActive(this.passnode, "mask/tagItem", true);
nx.gui.setActive(this.passnode, "mask/tagSep", false);
}
break;
}
}
// for( var key in this.pass_reward_list ) {
// var config = this.pass_reward_list[ key ];
// if( config ) {
// var target_config = game.configs.dungeon_data.data_drama_dungeon_info[ config.limit_id ];
// if( target_config ) {
// cur_cfg = config;
// if( max_dun_id >= config.limit_id ) {//可领取
// // nx.gui.setActive( this.passnode, "check", true );
// let is_received = pass_list[ config.id ]//已领取
// if( is_received ) {
// rec_num++;
// blink_status = 0;
// // this.passnode_name_txt.string = cc.js.formatStr( "<color=#fbeba2>%s</c>", nx.text.getKey( "lab_vipLqed" ) );
// } else {
// blink_status = 1;
// // this.passnode_name_txt.string = cc.js.formatStr( "<color=#fbeba2>%s</c>", nx.text.getKey( "battle_str2" ) );
// break;
// }
// } else if( max_dun_id < config.limit_id ) {//下次领取
// // nx.gui.setActive( this.passnode, "check", false );
// blink_status = 0;
// // this.passnode_name_txt.string = cc.js.formatStr( nx.text.getKey( "DramaRewardTip" ), game.configs.dungeon_data.data_drama_dungeon_info[ config.limit_id ].floor - floor )
// break;
// }
// }
// }
// }
// if( rec_num >= 75 ) {//全部领取
// this.setLockStatus( 0 );
// nx.gui.setActive( this.passTag.parent, "", false );
// return;
// }
// if( !this.passItem ) {
// this.passItem = cc.instantiate( this.fabItem );
// this.passItem.parent = this.passTag;
// }
// let cmp = nx.gui.getComponent( this.passItem, "", "cmp.item.base" );
// if( cur_cfg && cmp ) {
// cmp.rebind( 0, cur_cfg.items[ 0 ], "" );
// }
// this.setLockStatus( blink_status );
nx.gui.setActive(this.passnode, "tip", blink_status == 1);
},
setLockStatus: function setLockStatus(status) {
var _this6 = this;
if (status == 0) {
this.passEft.stop();
} else if (status == 1) {
var res_path = PathTool.getSpinePath("E80030", null, false);
this.passEft.load(res_path, function (_e) {
if (!_e) {
_this6.passEft.action("action", true);
} else {
_this6.passEft.stop();
}
});
}
},
//------------------作战奖励
//------------------下线挂机收益
// 收集金币
touchResourceBox: function touchResourceBox() {
if (this.is_in_collect) return; // 收集动画过程中 不做处理
this.is_in_collect = true;
var requestGetAwardFunc = function () {
var _this7 = this;
var play_action = PlayerAction.action_2; // 目标动作
if (this.resources_action == PlayerAction.action_3) {
play_action = PlayerAction.action_4;
} else if (this.resources_action == PlayerAction.action_5) {
play_action = PlayerAction.action_6;
}
this.res_skeleton.setToSetupPose();
this.res_skeleton.setAnimation(0, play_action, false);
this.scheduleOnce(function () {
_this7.is_in_collect = false;
BTD.getInstance().openDramHookRewardView(true, null);
// BTD.getInstance().requestGetHookTimeAwards();
}, 1.5);
}.bind(this);
var hook_info = BTD.getInstance().getModel().getHookAccumulateInfo();
if (!hook_info) return;
// var cur_energy = RCT.getInstance().getRoleVo().energy;
// var max_energy = RCT.getInstance().getRoleVo().energy_max;
var qingbao_val = 0; //可领取的请报值
if (hook_info && hook_info.list) {
for (var index = 0; index < hook_info.list.length; index++) {
var element = hook_info.list[index];
if (element.bid == game.configs.item_data.data_assets_label2id.energy) {
qingbao_val = element.num;
break;
}
}
}
// 剧情引导中,不要选择
if (nx.bridge.plot && nx.bridge.plot.vget("id") != "") {
requestGetAwardFunc();
return;
}
requestGetAwardFunc();
},
// 更新金币收集情况
updateResourceCollect: function updateResourceCollect() {
if (!this.is_onshow) return;
var cost_config = game.configs.dungeon_data.data_drama_const.hangup_revenue;
var min_config = game.configs.dungeon_data.data_drama_const.hangup_revenue_small;
var max_config = game.configs.dungeon_data.data_drama_const.hangup_revenue_big;
var hook_info = BTD.getInstance().getModel().getHookAccumulateInfo();
if (!hook_info) return;
var hook_time = hook_info.hook_time || 1; //挂机时间
var action = PlayerAction.action;
if (hook_time >= max_config.val) {
action = PlayerAction.action_5;
} else if (hook_time >= min_config.val) {
action = PlayerAction.action_3;
} else if (hook_time >= cost_config.val) {
action = PlayerAction.action_1;
} else {
action = PlayerAction.action;
}
if (this.resources_action != action) {
this.resources_action = action;
this.changeCollectAction();
}
// 挂机时间显示
this.time_label.string = TimeTool.getTimeFormatIII(hook_time);
nx.gui.setActive(this.bottom_container, "collect_container/bonus", hook_info.list1.length > 0);
},
// 切换
changeCollectAction: function changeCollectAction() {
var _this8 = this;
if (this.res_skeletonData == null) {
// 这个时候需要先加载
var resources_path = PathTool.getSpinePath("E80024", "action", false);
cc.loader.loadRes(resources_path, sp.SkeletonData, function (err, res_object) {
if (err) {
return false;
}
_this8.res_skeleton.skeletonData = res_object;
_this8.res_skeletonData = res_object;
_this8.changeCollectAction();
});
} else {
if (this.resources_action) {
this.res_skeleton.setAnimation(0, this.resources_action, true);
}
}
},
// 刷新假战斗掉落
playResourceCollect: function playResourceCollect(x, y) {
if (this.is_real_combat) return;
var init_pos = this.bottom_container.convertToNodeSpaceAR(cc.v2(x, y));
var target_pos = cc.v2(this.res_model.x, this.res_model.y + this.res_model.height);
var sum = Utils.randomNum(3, 9);
var item_ids = [1, 5, 7, 22];
var action_ids = {
1: "action1",
5: "action2",
7: "action3",
22: "action4"
};
for (var index = 0; index < sum; index++) {
var _x = (1 - Utils.randomNum(0, 2)) * Utils.randomNum(0, 60) + init_pos.x; // 初始坐标
var _y = (1 - Utils.randomNum(0, 2)) * Utils.randomNum(0, 20) + init_pos.y + 120;
var id = item_ids[Math.floor(Math.random() * 4)];
var node = null;
if (this.fly_item_pools.size() > 0) {
node = this.fly_item_pools.get();
} else {
node = cc.instantiate(this.collectNd);
// new cc.Node();
// node.setAnchorPoint(0.5, 0.5);
// node.addComponent(cc.Sprite);
}
node.setPosition(_x, _y);
node.scale = 0;
this.bottom_container.addChild(node);
// 设置资源
var spCmp = nx.gui.getComponent(node, "", sp.Skeleton);
spCmp.setAnimation(0, action_ids[id], true);
// nx.gui.setSpriteFrame( node.getComponent(cc.Sprite), "", PathTool.querySmallIconPath(id) );
this.flyEnergyToWealth(node, id, target_pos, _x, _y, index, this.auto_id);
}
},
onFreshCd: function onFreshCd(_cd) {
var dealCd = function dealCd(_time) {
if (_time == -1) {
nx.gui.setActive(self, "bottom_container/btn_cd", false);
return;
}
};
if (_cd == 0) {
nx.gui.setActive(self, "bottom_container/btn_cd", false);
return;
}
var self = this;
nx.gui.setActive(this, "bottom_container/btn_cd", true);
var time = _cd == 0.1 ? _cd : nx.bridge.time.toNeedTime(_cd);
nx.gui.setCdTxt(this, "bottom_container/btn_cd/cd", time, function () {
nx.gui.setActive(self, "bottom_container/btn_cd", false);
// nx.bridge.vset( "BattleDrameCd", 0 );
dealCd(-1);
});
},
/**
* 资产物品飞行动作
* @param {*} node 当前资产节点
* @param {*} id 对象池下表
* @param {*} target_pos 目标位置
* @param {*} x 起始点
* @param {*} y
* @param {*} index 这一批里面的第几个物品
* @param {*} auto_id
*/
flyEnergyToWealth: function flyEnergyToWealth(node, id, target_pos, x, y, index, auto_id) {
var bezier = [];
var begin_pos = cc.v2(x, y);
bezier.push(begin_pos);
var end_pos = cc.v2(target_pos.x, target_pos.y);
var min_pos = begin_pos.add(end_pos).mul(0.5);
var off_x = -30;
var off_y = 10;
if (index % 2 == 0) {
off_y = Utils.randomNum(100, 150);
off_x = 30;
}
var controller_pos = cc.v2(min_pos.x + off_x, min_pos.y + off_y);
bezier.push(controller_pos);
bezier.push(end_pos);
var delatTimer = cc.delayTime(index * 0.1);
var bezierTo = cc.bezierTo(0.3, bezier);
var call_fun = cc.callFunc(function () {
this.fly_item_pools.put(node);
}.bind(this));
var seq = cc.sequence(bezierTo, call_fun);
var scale_to = cc.scaleTo(1, 1);
var first_scale = cc.scaleTo(0.3, 1);
var jump_act = cc.jumpBy(0.3, 0, 60, 50, 1);
node.runAction(cc.sequence(cc.spawn(first_scale, jump_act), delatTimer, cc.spawn(scale_to, seq)));
},
//------------------下线挂机收益
touchChat: function touchChat() {
var ChatCtrl = require("chat_controller");
ChatCtrl.getInstance().openChatPanel();
},
touchDrop: function touchDrop() {
var max_dun_id = BTD.getInstance().getModel().getDramaData().max_dun_id;
var drama_config = game.configs.dungeon_data.data_drama_dungeon_info[max_dun_id];
nx.bridge.createPanel("WndWorldMapReward", drama_config);
},
onTouchCd: function onTouchCd() {
nx.tbox("BattleTip");
},
// update (dt) {},
// 尝试出击前剧情触发
// ingore: 未触发剧情,可直接进入战斗
// start: 成功触发剧情,等待结束
// done: 剧情触发完毕
tryPlot: function tryPlot(_cb) {
nx.debug("$Plot:进入编队界面,剧情触发检查...");
// 未开启引导
if (!nx.bridge.plot) {
nx.dt.fnInvoke(_cb, 'ingore');
return;
}
// 进行中
var cur = nx.bridge.plot.vget("id");
if (nx.dt.strNEmpty(cur)) {
nx.dt.fnInvoke(_cb, 'ingore');
return;
}
// 逐个触发
var queue = nx.dt.objClone(nx.bridge.plot.configs.base.drama_team);
var check = function check() {
// 检查完毕
if (nx.dt.arrEmpty(queue)) {
nx.dt.fnInvoke(_cb, 'ingore');
return;
}
// 尝试触发
var ok = nx.bridge.plot.fire(queue.shift(), function (_ret, _data) {
// 未触发
if (!_ret) {
check();
return;
}
// 引导完成
nx.dt.fnInvoke(_cb, 'done');
});
// 触发成功
if (ok) {
nx.dt.fnInvoke(_cb, 'start');
}
};
check();
}
});
cc._RF.pop();