396 lines
10 KiB
JavaScript
396 lines
10 KiB
JavaScript
"use strict";
|
|
cc._RF.push(module, '9b145Fi+U9N9qCEmtnqZ0Yd', 'cmp.summon.infinite');
|
|
// Scripts/mod/summon/infinite/cmp.summon.infinite.js
|
|
|
|
"use strict";
|
|
|
|
/******************************************************************
|
|
* Copyright(C) 2019 - 2020 Nx Studio
|
|
*
|
|
* 常规召唤页
|
|
*
|
|
* 2018.05.18
|
|
******************************************************************/
|
|
|
|
var MenuPage = require("cmp.com.menu.page");
|
|
var SummonDefine = require("summon.define");
|
|
var SummonMod = require("summon.mod");
|
|
var HeroController = require("hero_controller");
|
|
var BackPackController = require("backpack_controller");
|
|
var BridgeItemBinder = require("bridge.binder.item.icon.count");
|
|
var SCRT = SummonDefine.Status;
|
|
var FID = require("bridge.function.ids");
|
|
var EmptyBG = "";
|
|
cc.Class({
|
|
"extends": MenuPage,
|
|
properties: {
|
|
nodOps: {
|
|
"default": null,
|
|
type: cc.Node
|
|
},
|
|
nodCoin: {
|
|
"default": null,
|
|
type: BridgeItemBinder
|
|
},
|
|
labTimes: {
|
|
"default": null,
|
|
type: cc.Node
|
|
}
|
|
},
|
|
// 载入
|
|
onLoad: function onLoad() {
|
|
this._super();
|
|
this.setEmpty();
|
|
var cmp = nx.gui.getComponent(this, "sp", "nx.fx.spine");
|
|
if (cmp) {
|
|
cmp.load("resDB/models/H30031/show", function (_e) {
|
|
if (!_e) {
|
|
cmp.action("action1", true);
|
|
} else {
|
|
cmp.stop();
|
|
}
|
|
});
|
|
}
|
|
},
|
|
// 显示
|
|
onEnable: function onEnable() {
|
|
var _this = this;
|
|
var SC = SummonMod.getInstance();
|
|
SC.reqInfiniteData(function (_ret, _data) {
|
|
if (!_ret) {
|
|
_this.setEmpty();
|
|
nx.tbox(_data);
|
|
return;
|
|
}
|
|
_this.data = nx.dt.objClone(_data);
|
|
_this.updateBase(_data);
|
|
_this.updateData(_data);
|
|
});
|
|
|
|
// 视图监听
|
|
this.vbind([["INFTimes", this.onRemainTimes.bind(this)], ["INFCurrent", this.onCurrentChanged.bind(this)]]);
|
|
},
|
|
// 关闭
|
|
onDisable: function onDisable() {
|
|
// 视图监听解除
|
|
this.vunbind();
|
|
},
|
|
// 置空
|
|
setEmpty: function setEmpty() {
|
|
// nx.gui.setSpriteFrame( this, "bg", EmptyBG );
|
|
|
|
this.costId = 0;
|
|
this.nodCoin.active = false;
|
|
this.nodOps.active = false;
|
|
},
|
|
// 召唤数据刷新
|
|
updateSummonData: function updateSummonData() {
|
|
var _this2 = this;
|
|
var SC = SummonMod.getInstance();
|
|
var SM = SC.getModel();
|
|
var data = SM.getSummonGroupData();
|
|
|
|
// 数据无效,重新请求
|
|
if (nx.dt.arrEmpty(data)) {
|
|
SC.send23200(function (_data) {
|
|
_this2.updateSummonData();
|
|
});
|
|
return;
|
|
}
|
|
|
|
// 获取当前页数据
|
|
var info = null;
|
|
for (var i in data) {
|
|
var t = data[i];
|
|
if (t && t.group_id == this.sumId) {
|
|
info = t;
|
|
break;
|
|
}
|
|
}
|
|
|
|
// 更新
|
|
this.updateData(info);
|
|
},
|
|
// 基础更新
|
|
updateBase: function updateBase(_data) {
|
|
// 无效配置
|
|
if (nx.dt.objEmpty(_data) || !nx.dt.numPositive(_data.camp_id, false)) {
|
|
this.setEmpty();
|
|
return;
|
|
}
|
|
|
|
// 召唤配置
|
|
var DATA = game.configs.infinite_ten_recruit_data;
|
|
var camp = DATA.data_action[_data.camp_id];
|
|
var cfgs = DATA.data_summon[camp.group_id];
|
|
if (nx.dt.objEmpty(cfgs)) {
|
|
nx.error("无效召唤配置:", _data.camp_id);
|
|
this.setEmpty();
|
|
return;
|
|
}
|
|
|
|
// 背景图
|
|
// let path = cc.path.join( "resDB/bigs", cfgs.call_bg );
|
|
// nx.gui.setSpriteFrame( this, "bg", path );
|
|
|
|
// 看板娘
|
|
// let path = cc.path.join( "resDB/bigs", cfgs.call_bg );
|
|
// nx.gui.setSpriteFrame( this, "panel/role", path );
|
|
|
|
// 广告语
|
|
var path = cc.path.join("locals", nx.getLocLanguage(), "images/summon", cfgs.word_art);
|
|
nx.gui.setSpriteFrame(this, "panel/word", path);
|
|
|
|
// 货币更新
|
|
var tid = 0;
|
|
if (nx.dt.arrNEmpty(cfgs.loss_item_ten) && nx.dt.arrNEmpty(cfgs.loss_item_ten[0])) {
|
|
tid = cfgs.loss_item_ten[0][0];
|
|
}
|
|
|
|
// 货币图标设置
|
|
var tinfo = gitemdata(tid);
|
|
if (nx.dt.objEmpty(tinfo)) {
|
|
nx.error("无效召唤货币:", tid);
|
|
} else {
|
|
this.costId = tid;
|
|
this.nodCoin.active = true;
|
|
this.nodCoin.setID(tid);
|
|
}
|
|
},
|
|
// 更新数据
|
|
updateData: function updateData(_data) {
|
|
// 置空
|
|
if (nx.dt.objEmpty(_data)) {
|
|
this.setEmpty();
|
|
return;
|
|
}
|
|
|
|
// 召唤配置
|
|
var DATA = game.configs.infinite_ten_recruit_data;
|
|
var camp = DATA.data_action[_data.camp_id];
|
|
var cfgs = DATA.data_summon[camp.group_id];
|
|
if (nx.dt.objEmpty(cfgs)) {
|
|
nx.error("无效召唤配置:", _data.camp_id);
|
|
this.setEmpty();
|
|
return;
|
|
}
|
|
|
|
// 更新当前货币
|
|
// 消耗修正
|
|
var count = this.updateCoin();
|
|
var autoOp = function autoOp(_node, _item) {
|
|
var ret = {
|
|
enough: false,
|
|
type: SCRT.Item,
|
|
item: _item[0] || []
|
|
};
|
|
|
|
// 所需道具不足 && 但是有替代品
|
|
var bid = ret.item[0];
|
|
var need = ret.item[1];
|
|
ret.enough = count >= need;
|
|
|
|
// 参数补充
|
|
ret.bid = bid;
|
|
ret.need = need;
|
|
|
|
// 货币刷新
|
|
var tinfo = gitemdata(bid);
|
|
nx.bridge.setIcon(_node, "need/list/icon", tinfo.icon);
|
|
nx.gui.setString(_node, "need/list/num", need);
|
|
return ret;
|
|
};
|
|
this.nodOps.active = true;
|
|
var rec = nx.dt.arrNEmpty(_data.partner_bids);
|
|
nx.gui.setActive(this.nodOps, "record", rec);
|
|
nx.gui.setActive(this.nodOps, "ten", !rec);
|
|
var ten = nx.gui.find(this.nodOps, "ten");
|
|
this.tenArgs = autoOp(ten, cfgs.loss_item_ten);
|
|
},
|
|
// 当前改变
|
|
onCurrentChanged: function onCurrentChanged(_lst) {
|
|
var empty = nx.dt.arrEmpty(_lst);
|
|
nx.gui.setActive(this.nodOps, "record", !empty);
|
|
nx.gui.setActive(this.nodOps, "ten", empty);
|
|
},
|
|
// 更新当前货币
|
|
updateCoin: function updateCoin() {
|
|
var BC = BackPackController.getInstance();
|
|
var count = BC.getModel().getBackPackItemNumByBid(this.costId);
|
|
return count;
|
|
},
|
|
// 点击货币
|
|
onTouchCoin: function onTouchCoin() {},
|
|
// 点击说明
|
|
onTouchRule: function onTouchRule() {
|
|
// 召唤配置
|
|
var DATA = game.configs.infinite_ten_recruit_data;
|
|
var camp = DATA.data_action[this.data.camp_id];
|
|
if (nx.dt.objEmpty(camp)) {
|
|
nx.error("无效召唤配置:", this.data.camp_id);
|
|
return;
|
|
}
|
|
var params = {
|
|
desc: camp.desc,
|
|
rates: []
|
|
};
|
|
var pros = DATA.data_probability[camp.group_id];
|
|
for (var i in pros) {
|
|
var t = pros[i];
|
|
params.rates.push([t.name, t.probability]);
|
|
}
|
|
nx.bridge.createPanel("WndSummonRateShow", params);
|
|
},
|
|
// 点击十次召唤
|
|
onTouchTen: function onTouchTen() {
|
|
this.doSummon(10, this.tenArgs);
|
|
},
|
|
// 召唤请求
|
|
doSummon: function doSummon(_times, _args) {
|
|
// 沒有次數了
|
|
var times = nx.bridge.vget("INFTimes");
|
|
if (times <= 0) {
|
|
nx.tbox("SummonTimesNotEnough");
|
|
return;
|
|
}
|
|
|
|
// 不够召唤处理
|
|
if (!_args.enough) {
|
|
nx.tbox("SummonItemNotEnough");
|
|
return;
|
|
}
|
|
|
|
// 容量检查
|
|
if (!this.checkVolume(_times)) {
|
|
nx.tbox("PartnerBagFull");
|
|
nx.bridge.jumper.jump2Window(FID.Recycle);
|
|
return;
|
|
}
|
|
var self = this;
|
|
var SC = SummonMod.getInstance();
|
|
var args = {
|
|
op: "infinite",
|
|
cb: function cb(_ret) {
|
|
if (!_ret) {
|
|
self.onTouchTen();
|
|
return;
|
|
}
|
|
nx.mbox("SummonInfinite", ['no', 'yes'], function (_key, _box) {
|
|
_box.close();
|
|
if (_key == 'yes') {
|
|
nx.bridge.summonAnimation.doStop();
|
|
SC.reqInfiniteConfirm(0, function (_ok, _data) {
|
|
// 发送引导事件
|
|
if (nx.bridge.plot) {
|
|
nx.bridge.plot.postKey("infinite_done");
|
|
}
|
|
if (!_ok) {
|
|
nx.tbox(_data);
|
|
return;
|
|
}
|
|
self.onEnable();
|
|
});
|
|
}
|
|
});
|
|
}
|
|
};
|
|
SC.reqInfiniteSummon(function (_ok, _data) {
|
|
// 失败
|
|
if (!_ok) {
|
|
nx.tbox(_data);
|
|
return;
|
|
}
|
|
|
|
// 判空
|
|
if (nx.dt.arrEmpty(_data.partner_bids)) {
|
|
nx.warn("$Summon:空召唤跳过!");
|
|
return;
|
|
}
|
|
|
|
// 动画
|
|
nx.bridge.summonAnimation.doStart();
|
|
nx.bridge.summonAnimation.setResult(_data, args, function () {
|
|
self.updateSummonData();
|
|
});
|
|
});
|
|
},
|
|
// 背包容量检查
|
|
checkVolume: function checkVolume(_count) {
|
|
var HC = HeroController.getInstance();
|
|
var HM = HC.getModel();
|
|
|
|
// 背包容量判断
|
|
var bagInfo = HM.getHeroMaxCount();
|
|
var remains = bagInfo.max_count - bagInfo.have_coutn;
|
|
return _count <= remains;
|
|
},
|
|
// 点击上次结果
|
|
onTouchRecord: function onTouchRecord() {
|
|
var _this3 = this;
|
|
// 判空
|
|
if (nx.dt.objEmpty(this.data)) {
|
|
return;
|
|
}
|
|
var SC = SummonMod.getInstance();
|
|
var self = this;
|
|
var args = {
|
|
op: "infinite",
|
|
cb: function cb(_ret) {
|
|
if (!_ret) {
|
|
self.onTouchTen();
|
|
return;
|
|
}
|
|
nx.mbox("SummonInfinite", ['no', 'yes'], function (_key, _box) {
|
|
_box.close();
|
|
if (_key == 'yes') {
|
|
nx.bridge.summonAnimation.doStop();
|
|
SC.reqInfiniteConfirm(0, function (_ok, _data) {
|
|
// 发送引导事件
|
|
if (nx.bridge.plot) {
|
|
nx.bridge.plot.postKey("infinite_done");
|
|
}
|
|
if (!_ok) {
|
|
nx.tbox(_data);
|
|
return;
|
|
}
|
|
self.onEnable();
|
|
});
|
|
}
|
|
});
|
|
}
|
|
};
|
|
nx.bridge.summonAnimation.jumpToFlipCards({
|
|
partner_bids: nx.bridge.vget("INFCurrent")
|
|
}, args, function () {
|
|
_this3.updateSummonData();
|
|
});
|
|
},
|
|
// ------------------------------------------------------
|
|
// 记录暂存
|
|
// ------------------------------------------------------
|
|
|
|
// 剩余次数
|
|
onRemainTimes: function onRemainTimes(_times) {
|
|
var times = _times || 0;
|
|
// if( times <= 0 ) {
|
|
// this.labTimes.active = false;
|
|
// return;
|
|
// }
|
|
|
|
// this.labTimes.active = true;
|
|
var DATA = game.configs.infinite_ten_recruit_data;
|
|
var max = DATA ? DATA.data_const.max_count.val : 0;
|
|
nx.gui.setString(this.labTimes, "times", _times + "/" + max);
|
|
},
|
|
// 打开暂存界面
|
|
onTouchSaveRecords: function onTouchSaveRecords() {
|
|
nx.bridge.createPanel("WndSummonInfiniteRecord", {
|
|
replace: false
|
|
});
|
|
},
|
|
onTouchRecommend: function onTouchRecommend() {
|
|
nx.bridge.createPanel("WndPopRecommend");
|
|
}
|
|
});
|
|
|
|
cc._RF.pop(); |