"use strict";
|
cc._RF.push(module, '4b7db4azrtO3qfjh8QFjoB8', 'partnersummon_window');
|
// Scripts/mod/partnersummon/view/partnersummon_window.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @author: xxx@syg.com(必填, 创建模块的人员)
|
// @description:
|
// 这里是描述这个窗体的作用的
|
// <br/>Create: 2019-01-14 09:29:03
|
// --------------------------------------------------------------------
|
var PathTool = require("pathtool");
|
|
var PartnewSummon = require("partnersummon_item");
|
|
var SummonEvent = require("partnersummon_event");
|
|
var SummonConst = require("partnersummon_const");
|
|
var MainUiController = require("mainui_controller");
|
|
var GuideEvent = require("guide_event");
|
|
var PartnersSummon = cc.Class({
|
"extends": BaseView,
|
properties: {
|
item_list: {
|
"default": {}
|
},
|
recruit_sk: null
|
},
|
ctor: function ctor() {
|
this.prefabPath = PathTool.getPrefabPath("partnersummon", "partnersummon_window");
|
this.viewTag = SCENE_TAG.ui; //该窗体所属ui层级,全屏ui需要在ui层,非全屏ui在dialogue层,这个要注意
|
|
this.win_type = WinType.Full; //是否是全屏窗体 WinType.Full, WinType.Big, WinType.Mini, WinType.Tips
|
|
this.rleasePrefab = false;
|
this.ctrl = arguments[0];
|
this.model = this.ctrl.getModel();
|
|
var RoleController = require("role_controller");
|
|
this.role_vo = RoleController.getInstance().getRoleVo();
|
|
var ActionController = require("action_controller");
|
|
if (ActionController.getInstance().action_operate) {
|
ActionController.getInstance().action_operate.setVisible(false);
|
}
|
},
|
initConfig: function initConfig() {
|
this.partnersummon_config = Config.recruit_data.data_partnersummon_data;
|
},
|
openCallBack: function openCallBack() {
|
if (this.role_vo_attr) {
|
gcore.GlobalEvent.unbind(this.role_vo_attr);
|
}
|
},
|
registerEvent: function registerEvent() {
|
// 召唤信息更新
|
gcore.GlobalEvent.bind(SummonEvent.UpdateSummonDataEvent, function (data) {
|
this.updateSummonGroupData();
|
}.bind(this)); // 召唤成功
|
|
this.addGlobalEvent(SummonEvent.PartnerSummonSuccess, function () {
|
this.playRecruitEffect();
|
}.bind(this)); // 积分更新
|
|
if (this.role_vo && !this.role_vo_attr) {
|
this.role_vo_attr = this.role_vo.bind(EventId.UPDATE_ROLE_ATTRIBUTE, function (key, value) {
|
if (key === "recruit_hero" && this.root_wnd) this.updateScoreInfo();
|
}.bind(this));
|
}
|
},
|
openRootWnd: function openRootWnd(params) {
|
this.initWidgets();
|
},
|
initWidgets: function initWidgets() {
|
this.close_btn_nd = this.seekChild("close_btn");
|
this.tips_btn_nd = this.seekChild("tips_btn");
|
this.score_btn_nd = this.seekChild("score_btn");
|
this.progress_nd = this.seekChild("progress");
|
this.card_content_nd = this.seekChild("content");
|
this.progress_label_lb = this.seekChild("progress_label", cc.Label);
|
this.top_anima_sk = this.seekChild("top_anima", sp.Skeleton);
|
this.top_anima_nd = this.seekChild("top_anima");
|
this.background_nd = this.seekChild("background");
|
this.background_nd.scale = FIT_SCALE;
|
this.loadRes(PathTool.getBigBg("bigbg_11"), function (res) {
|
this.background_nd.getComponent(cc.Sprite).spriteFrame = res;
|
}.bind(this)); // 召唤动画
|
|
this.recruit_ani_bg_nd = this.seekChild("recruit_ani_bg");
|
this.recruit_ani_sk = this.seekChild("recruit_ani", sp.Skeleton);
|
this.recruit_ani_sk.setCompleteListener(this.animaComplete.bind(this));
|
this.recruit_ani_bg_nd.on(cc.Node.EventType.TOUCH_END, this.animaComplete, this);
|
this.close_btn_nd.on(cc.Node.EventType.TOUCH_END, this.didClickCloseBtn, this);
|
this.tips_btn_nd.on(cc.Node.EventType.TOUCH_END, this.didClickTipsBtn, this);
|
this.score_btn_nd.on(cc.Node.EventType.TOUCH_END, this.didClickScoreBtn, this);
|
var top_anima_path = PathTool.getSpinePath("E50065", "action");
|
this.loadRes(top_anima_path, function (ske_data) {
|
this.top_anima_sk.skeletonData = ske_data;
|
this.top_anima_sk.setAnimation(0, "status_0", true);
|
}.bind(this));
|
this.updageWidget();
|
},
|
updageWidget: function updageWidget() {
|
this.updateSummonGroupData();
|
this.refreshWelfarStatus();
|
this.updateScoreInfo();
|
var cur_score = this.role_vo.recruit_hero; // 积分信息
|
},
|
// 更新卡库列表
|
updateSummonGroupData: function updateSummonGroupData() {
|
var summon_list = this.model.getSummonGroupData();
|
|
for (var summon_i = 0; summon_i < summon_list.length; summon_i++) {
|
if (!this.item_list[summon_i]) {
|
var SummonItem = require("partnersummon_item");
|
|
this.item_list[summon_i] = new SummonItem(this.card_content_nd, summon_i, this.startRecruit.bind(this));
|
}
|
|
this.item_list[summon_i].updateData(summon_list[summon_i]);
|
}
|
},
|
refreshWelfarStatus: function refreshWelfarStatus() {},
|
updateScoreInfo: function updateScoreInfo() {
|
var need_score = this.model.getScoreSummonNeedCount();
|
var have_score = this.role_vo.recruit_hero;
|
var progress_percen = 0;
|
|
if (have_score >= need_score) {
|
progress_percen = 1;
|
this.showScoreFullAction(true);
|
} else {
|
if (have_score >= 0) {
|
progress_percen = have_score / need_score;
|
}
|
|
this.showScoreFullAction(false);
|
}
|
|
var progress_str = have_score + "/" + need_score;
|
this.progress_label_lb.string = progress_str;
|
this.progress_nd.scaleX = progress_percen;
|
},
|
// 关闭窗体回调,需要在这里调用该窗体所属controller的close方法没用于置空该窗体实例对象
|
closeCallBack: function closeCallBack() {
|
gcore.GlobalEvent.fire(GuideEvent.CloseTaskEffect);
|
|
var ActionController = require("action_controller");
|
|
if (ActionController.getInstance().action_operate) {
|
ActionController.getInstance().action_operate.setVisible(true);
|
}
|
|
this.ctrl.openPartnerSummonWindow(false);
|
},
|
didClickCloseBtn: function didClickCloseBtn() {
|
Utils.playButtonSound(ButtonSound.Close);
|
this.ctrl.openPartnerSummonWindow(false);
|
},
|
didClickTipsBtn: function didClickTipsBtn() {
|
Utils.playButtonSound(ButtonSound.Normal);
|
MainUiController.getInstance().openCommonExplainView(true, Config.recruit_data.data_explain, Utils.TI18N("规则说明"));
|
},
|
didClickScoreBtn: function didClickScoreBtn() {
|
// var top_anima_path = PathTool.getSpinePath("E50065", "action");
|
// LoaderManager.getInstance().releaseRes(top_anima_path);
|
Utils.playButtonSound(ButtonSound.Normal);
|
this.ctrl.openScoreTipWindow(true);
|
},
|
// 积分抖动效果
|
showScoreFullAction: function showScoreFullAction(status) {
|
this.score_btn_nd.rotation = 1;
|
this.score_btn_nd.stopAllActions();
|
if (!status) return;
|
var act_1 = cc.rotateBy(0.05, -10);
|
var act_2 = cc.rotateBy(0.1, 20);
|
var act_3 = cc.rotateBy(0.05, -10);
|
var delay = cc.delayTime(0.7);
|
var seq_1 = cc.sequence(act_1, act_2, act_3);
|
var seq_2 = cc.repeat(seq_1, 5);
|
var seq_3 = cc.sequence(seq_2, delay);
|
|
var _final = cc.repeatForever(seq_3);
|
|
this.score_btn_nd.runAction(_final);
|
},
|
startRecruit: function startRecruit(group_id, times, recruit_type) {
|
this.last_recruit = {};
|
this.last_recruit.group_id = group_id;
|
this.last_recruit.times = times;
|
this.last_recruit.recruit_type = recruit_type;
|
this.sendRecruitProtocal(group_id, times, recruit_type);
|
},
|
regainRecruit: function regainRecruit() {
|
if (!this.last_recruit) return;
|
|
if (this.last_recruit.recruit_type == 1) {
|
this.last_recruit.recruit_type = 4; // if (this.last_recruit.group_id == SummonConst.Summon_Type.Advanced) {
|
// this.item_list[2].regainRecruit();
|
// return;
|
// } else if (this.last_recruit.group_id == SummonConst.Summon_Type.Normal) {
|
// this.item_list[0].regainRecruit();
|
// return;
|
// }
|
}
|
|
this.sendRecruitProtocal(this.last_recruit.group_id, this.last_recruit.times, this.last_recruit.recruit_type);
|
},
|
sendRecruitProtocal: function sendRecruitProtocal(group_id, times, recruit_type) {
|
var interval;
|
|
if (times == 1) {
|
interval = 500;
|
} else {
|
interval = 2000;
|
}
|
|
if (this.last_time && Math.abs(new Date().getTime() - this.last_time) < interval) {
|
//点击间隔
|
message(Utils.TI18N("点击过快"));
|
|
if (this.ctrl.getSummonResultRoot()) {
|
this.model.clickIntervalStatus(true);
|
}
|
|
return;
|
}
|
|
this.last_time = new Date().getTime(); //gcore.SmartSocket.getTime()
|
// 在此处进行道具的判断和提示。
|
|
this.ctrl.send23201(group_id, times, recruit_type);
|
},
|
// 播放召唤动画
|
playRecruitEffect: function playRecruitEffect() {
|
var recruit_data = this.model.getRecruitData();
|
if (!recruit_data) return;
|
var recruit_cgf_item = this.partnersummon_config[recruit_data.group_id];
|
var action_name = "action";
|
if (recruit_cgf_item) action_name = recruit_cgf_item.action_name;
|
var effect_res = PathTool.getEffectRes("120");
|
var effect_path = PathTool.getSpinePath(effect_res, "action");
|
this.recruit_ani_bg_nd.active = true;
|
this.loadRes(effect_path, function (recruit_sk) {
|
this.recruit_ani_sk.skeletonData = recruit_sk;
|
this.recruit_ani_sk.setAnimation(0, action_name);
|
}.bind(this)); // 播放音效
|
|
var music_name = "recruit_" + action_name;
|
Utils.playEffectSound(AUDIO_TYPE.Recruit, music_name);
|
MainUiController.getInstance().setMainUIBottomStatus(false);
|
MainUiController.getInstance().setMainUITopStatus(false);
|
},
|
animaComplete: function animaComplete() {
|
MainUiController.getInstance().setMainUIBottomStatus(true);
|
MainUiController.getInstance().setMainUITopStatus(true);
|
this.recruit_ani_sk.clearTrack(0);
|
this.recruit_ani_bg_nd.active = false;
|
this.ctrl.openSummonGainWindow(true);
|
},
|
deleteMe: function deleteMe() {
|
this._super();
|
|
for (var item_i in this.item_list) {
|
this.item_list[item_i].deleteMe();
|
}
|
},
|
getSummonItemRoot: function getSummonItemRoot(name, get_cb) {
|
this.root_item_get_cb = get_cb;
|
this.root_item_get_name = name;
|
|
if (this.item_list[0]) {
|
this.item_list[0].getSummonItemRoot(name, get_cb);
|
}
|
}
|
});
|
|
cc._RF.pop();
|