"use strict"; cc._RF.push(module, '4f6bfKZYWRDXpwlXMiaunHe', 'task_controller'); // Scripts/mod/task/task_controller.js "use strict"; // //////////////////////////////////////////////////////////////////// // @author: xxx@syg.com(必填, 创建模块的人员) // @description: // 任务,日常,成就 //
Create: 2019-01-09 11:26:10 // //////////////////////////////////////////////////////////////////// var RoleController = require("role_controller"); var TaskConst = require("task_const"); var MainuiConst = require("mainui_const"); var MainuiController = require("mainui_controller"); var JumpController = require("jump_controller"); var TaskController = cc.Class({ "extends": BaseController, ctor: function ctor() {}, // 初始化配置数据 initConfig: function initConfig() { var TaskModel = require("task_model"); this.model = new TaskModel(this); this.model.initConfig(); }, // 返回当前的model getModel: function getModel() { return this.model; }, // 注册监听事件 registerEvents: function registerEvents() { if (this.init_quest_event == null) { this.init_quest_event = gcore.GlobalEvent.bind(EventId.EVT_ROLE_CREATE_SUCCESS, function () { gcore.GlobalEvent.unbind(this.init_quest_event); this.init_quest_event = null; if (this.notice_view == null) { var TaskNoticeView = require("task_notice_view"); this.notice_view = new TaskNoticeView(); this.notice_view.open(); } //角色更新之后请求3条任务相关数据 // this.requestBaseQuestData(); this.role_vo = RoleController.getInstance().getRoleVo(); if (this.role_assets_event == null) { this.role_assets_event = this.role_vo.bind(EventId.UPDATE_ROLE_ATTRIBUTE, function (key, value) { if (key == "activity") this.model.checkQuestAndFeatStatus(TaskConst.update_type.activity); }.bind(this)); } }.bind(this)); } if (this.re_link_game_event == null) { this.re_link_game_event = gcore.GlobalEvent.bind(EventId.EVT_RE_LINK_GAME, function () { var GuideController = require("guide_controller"); if (!GuideController.getInstance().isInGuide()) this.openTaskMainWindow(false); // this.requestBaseQuestData(); }.bind(this)); } }, requestBaseQuestData: function requestBaseQuestData() { this.SendProtocal(10400, {}); //请求所有任务列表 this.SendProtocal(16400, {}); //请求当前所有的成就列表 this.requestActivityInfo(); //请求活跃度 }, // 注册协议接受事件 registerProtocals: function registerProtocals() { this.RegisterProtocal(10400, this.on10400); //全部任务列表 this.RegisterProtocal(10403, this.on10403); //增加已接任务 this.RegisterProtocal(10406, this.on10406); //提交任务返回,客户端自己更新内存缓存数据 this.RegisterProtocal(10409, this.on10409); //更新已接任务进度 this.RegisterProtocal(16400, this.on16400); //全部成就列表 this.RegisterProtocal(16401, this.on16401); //更新成就进度,也可能是新增成就 this.RegisterProtocal(16402, this.on16402); //提交成就返回 this.RegisterProtocal(20300, this.on20300); //已领取的活跃宝箱 this.RegisterProtocal(20301, this.on20301); //请求领取活跃宝箱 //新主线 this.RegisterProtocal(30001, this.on30001); //进度更新时返回 this.RegisterProtocal(30002, this.on30002); //提交任务返回 }, // @desc:打开日常任务主界面 // author:{author} // time:2018-05-22 11:32:35 // //@status:打开或者关闭 // //@index:自动跳转到 // return openTaskMainWindow: function openTaskMainWindow(status, index) { if (status == false) { if (this.task_main_window != null) { this.task_main_window.close(); this.task_main_window = null; } } else { if (this.task_main_window == null) { var TaskMainWindow = require("task_main_window"); this.task_main_window = new TaskMainWindow(); } // if (this.task_main_window.isOpen() == false) // this.task_main_window.open(index); this.task_main_window.open(index); } }, // @desc:点击任务前往 // author:{author} // time:2018-05-22 21:00:26 // //@data: // //@index: // //@open_type: // return handleTaskProgress: function handleTaskProgress(data, index, open_type) { index = index || 1; if (data.config.progress == null || Utils.next(data.config.progress) == null) { if (data.id != null) cc.log("=================> 处理任务进度时出错,任务id为 " + data.id + " 的没有配置任务进度"); return; } var progressConfig = data.config.progress[index]; if (progressConfig == null) { if (data.id != null) cc.log("=================> 处理任务id为 " + data.id + " 的第 " + index + " 个进度要求时出错"); return; } //拓展参数用于跳转 var extra = data.config.extra; this.gotoTagertFun(progressConfig, extra, open_type); }, //desc:任务和成就的跳转 //time:2018-07-07 03:57:59 //@progressConfig: //@extra: //@open_type: //@return gotoTagertFun: function gotoTagertFun(progressConfig, extra, open_type) { // this.openTaskMainWindow(false) if (progressConfig == null) return; var _progress = Config.quest_data.data_progress_lable; if (progressConfig.cli_label == _progress.evt_recruit) { //进行X次英雄召唤 JumpController.getInstance().jumpViewByEvtData([1]); } else if (progressConfig.cli_label == _progress.evt_partner) { //获得1个SS英雄2.获得XX个英雄3.集齐冰雪领域(图书馆XX类型收集)的所有英雄4.获得XX个SS英雄 if (extra && Utils.next(extra)) { var extra_type = extra[0]; var extra_val = extra[1]; JumpController.getInstance().jumpViewByEvtData([2, extra_type, extra_val]); } else { var PartnersummonController = require("partnersummon_controller"); PartnersummonController.getInstance().openPartnerSummonWindow(true); } } else if (progressConfig.cli_label == _progress.evt_arena_fight || //竞技场挑战X次(无论成败) progressConfig.cli_label == _progress.evt_arena_fight_result || //竞技场挑战胜利X次 progressConfig.cli_label == _progress.evt_arena_score || //竞技场 progressConfig.cli_label == _progress.evt_arena_rank) { //竞技场排行达到前XX名 JumpController.getInstance().jumpViewByEvtData([3]); } else if (progressConfig.cli_label == _progress.evt_friend_present || //向好友赠送 progressConfig.cli_label == _progress.evt_friend) { //拥有XX个好友 JumpController.getInstance().jumpViewByEvtData([4]); } else if (progressConfig.cli_label == _progress.evt_dungeon_pass) { //通过指定副本id JumpController.getInstance().jumpViewByEvtData([5]); } else if (progressConfig.cli_label == _progress.evt_levup || //人物角色达到XX级 progressConfig.cli_label == _progress.evt_get_item || // 获得一个物品 progressConfig.cli_label == _progress.evt_dungeon_enter) { //每日挑战X次地下城副本 JumpController.getInstance().jumpViewByEvtData([5]); } else if (progressConfig.cli_label == _progress.evt_loss_silver_coin) { //累计消耗xx银币 elseif progressConfig.cli_label == _progress.evt_loss_coin then --累计消耗xx金币, JumpController.getInstance().jumpViewByEvtData([6]); } else if (progressConfig.cli_label == _progress.evt_gain_gold) { //拥有xx蓝钻 JumpController.getInstance().jumpViewByEvtData([7]); } else if (progressConfig.cli_label == _progress.evt_eqm_sell) { //装备熔炼 JumpController.getInstance().jumpViewByEvtData([8]); } else if (progressConfig.cli_label == _progress.evt_say) { //世界聊天 JumpController.getInstance().jumpViewByEvtData([9]); } else if (progressConfig.cli_label == _progress.evt_friend_sns) { //私聊 JumpController.getInstance().jumpViewByEvtData([10]); } else if (progressConfig.cli_label == _progress.evt_dungeon_fast_combat) { //快速作战X次 JumpController.getInstance().jumpViewByEvtData([11]); } else if (progressConfig.cli_label == _progress.evt_adventure_explore || //探险X间未探索的房间 progressConfig.cli_label == _progress.evt_adventure_plunder || //任意掠夺他人X次(无论成败 progressConfig.cli_label == _progress.evt_adventure_goto_floor || //进入神界冒险第X层 progressConfig.cli_label == _progress.evt_adventure_box || //开启宝箱XX次(宝箱总数)7.宝箱开出X次神器 progressConfig.cli_label == _progress.evt_adventure_finger_guessing || //猜拳累计获胜X次8.猜拳累计失败X次 progressConfig.cli_label == _progress.evt_adventure_answer_all_right || //智力大乱斗答题全对累计X次 progressConfig.cli_label == _progress.evt_adventure_plunder_result || //累计成功掠夺X次 progressConfig.cli_label == _progress.evt_adventure_kill_mon) {//累计击败小怪X次 } else if (progressConfig.cli_label == _progress.evt_boss_fight || //挑战X次个人BOSS progressConfig.cli_label == _progress.evt_boss_fight_result) {//击败XX级个人BOSS(指定类) } else if (progressConfig.cli_label == _progress.evt_world_boss_fight || //挑战X次世界BOSS3.累计挑战XX次世界BOSS progressConfig.cli_label == _progress.evt_world_boss_fight_ko) {//完成一次任意世界BOSS的击杀(最后一击) } else if (progressConfig.cli_label == _progress.evt_star_tower_pass) { //扫荡或挑战星命塔任意一层X次 JumpController.getInstance().jumpViewByEvtData([12]); } else if (progressConfig.cli_label == _progress.evt_guild_dun_fight || //挑战任意公会bossX次 progressConfig.cli_label == _progress.evt_guild_dun_fight_ko) { //对公会Boss的最后一击达到x次 JumpController.getInstance().jumpViewByEvtData([31]); } else if (progressConfig.cli_label == _progress.evt_guild_donate) { //2.公会任意种类捐献X次3.公会XX类型捐献达到X次4.公会所以类型捐献总共达到XX次 JumpController.getInstance().jumpViewByEvtData([13]); } else if (progressConfig.cli_label == _progress.evt_partner_enchant_eqm || //精炼装备X次 progressConfig.cli_label == _progress.evt_partner_levelup || //升级英雄X次 progressConfig.cli_label == _progress.evt_partner_eqm || //装备X套橙色装备(即武器、衣服、头盔、鞋子都为橙色) progressConfig.cli_label == _progress.evt_partner_artifact || //装备1件神器 progressConfig.cli_label == _progress.evt_eqm_compound) { //进阶x装备 JumpController.getInstance().jumpViewByEvtData([19]); } else if (progressConfig.cli_label == _progress.evt_star_divination) { //任意进行X次观星(普通观星和皇家观星) AuguryController.getInstance().openMainView(true); } else if (progressConfig.cli_label == _progress.evt_dungeon_auto) { //扫荡剧情副本 JumpController.getInstance().jumpViewByEvtData([5]); } else if (progressConfig.cli_label == _progress.evt_guild_join) { //加入一个公会 JumpController.getInstance().jumpViewByEvtData([14]); } else if (progressConfig.cli_label == _progress.evt_gain_guild) { //公会贡献达到 JumpController.getInstance().jumpViewByEvtData([14]); } else if (progressConfig.cli_label == _progress.evt_loss_guild) { //累计消耗XX贡献点 JumpController.getInstance().jumpViewByEvtData([15, MallConst.MallType.UnionShop]); } else if (progressConfig.cli_label == _progress.evt_power) { //战力达到多少 JumpController.getInstance().jumpViewByEvtData([16]); } else if (progressConfig.cli_label == _progress.evt_star_natal || //集齐X套星命3.装备X套紫/红/橙命格 progressConfig.cli_label == _progress.evt_star_level_up || //X套星命升到X级 progressConfig.cli_label == _progress.evt_star_natal_level_up) { //X个红色命格升星到X星 StarlifeController.getInstance().openMainView(true); } else if (progressConfig.cli_label == _progress.evt_formation_open || //已学习的阵法达到X个 progressConfig.cli_label == _progress.evt_formation_level_up) {//X个阵法达到X级 } else if (progressConfig.cli_label == _progress.evt_dungeon_stone_fight) { //1.参与x次宝石副本2.参与x次圣器副本, JumpController.getInstance().jumpViewByEvtData([17]); } else if (progressConfig.cli_label == _progress.evt_shipping) { //参与远航, JumpController.getInstance().jumpViewByEvtData([18]); } else if (progressConfig.cli_label == _progress.evt_escort_enter || progressConfig.cli_label == _progress.evt_escort_fight) { // 萌兽 MainuiController.getInstance().changeMainUIStatus(MainuiConst.btn_index.main_scene, MainuiConst.sub_type.escort); } else if (progressConfig.cli_label == _progress.evt_endless_fight) { // 无尽试炼 JumpController.getInstance().jumpViewByEvtData([43]); } else if (progressConfig.cli_label == _progress.evt_mystery_buy) { // 打开商城 var MallController = require("mall_controller"); if (progressConfig.target == 1) { JumpController.getInstance().jumpViewByEvtData([15, MallConst.MallType.GodShop]); } else if (progressConfig.target == 2) { JumpController.getInstance().jumpViewByEvtData([15, MallConst.MallType.Recovery]); } else if (progressConfig.target == 3) { JumpController.getInstance().jumpViewByEvtData([15, MallConst.MallType.ScoreShop]); } else if (progressConfig.target == 4) { // 杂货店 JumpController.getInstance().jumpViewByEvtData([6]); } else { JumpController.getInstance().jumpViewByEvtData([15, MallConst.MallType.Recovery]); } } else if (progressConfig.cli_label == _progress.evt_partner_star) { // 打开英雄主界面升星 JumpController.getInstance().jumpViewByEvtData([19]); } else if (progressConfig.cli_label == _progress.evt_hallows_all_step || progressConfig.cli_label == _progress.evt_hallows_step || progressConfig.cli_label == _progress.evt_hallows_activate) { // 打开提升圣器 JumpController.getInstance().jumpViewByEvtData([20]); } else if (progressConfig.cli_label == _progress.evt_guild_war) { // 打开公会站 JumpController.getInstance().jumpViewByEvtData([21]); } else if (progressConfig.cli_label == _progress.evt_endless_pass) { // 打开无尽之塔 Endless_trailController.getInstance().openEndlessMainWindow(true); } else if (progressConfig.cli_label == _progress.evt_partner_decompose) { // 祭祀小屋 JumpController.getInstance().jumpViewByEvtData([22]); } else if (progressConfig.cli_label == _progress.evt_partner_star_up) { // 融合祭坛 JumpController.getInstance().jumpViewByEvtData([23]); } else if (progressConfig.cli_label == _progress.evt_star_tower_floor_pass) { // 试练塔 JumpController.getInstance().jumpViewByEvtData([12]); } else if (progressConfig.cli_label == _progress.evt_recruit_high) { // 先知殿 JumpController.getInstance().jumpViewByEvtData([24]); } else if (progressConfig.cli_label == _progress.evt_expedition_fight) { //远征 JumpController.getInstance().jumpViewByEvtData([25]); } else if (progressConfig.cli_label == _progress.evt_primus_fight) { //星河 JumpController.getInstance().jumpViewByEvtData([27]); } else if (progressConfig.cli_label == _progress.evt_equipment_compound) { //锻造 JumpController.getInstance().jumpViewByEvtData([26]); } else if (progressConfig.cli_label == _progress.evt_fragment_synthesis) { //背包碎片页签 JumpController.getInstance().jumpViewByEvtData([8, 3]); } else if (progressConfig.cli_label == _progress.evt_dungeon_ext_reward) { //通关奖励 JumpController.getInstance().jumpViewByEvtData([46]); } else if (progressConfig.cli_label == _progress.evt_artifact_compose) { //符文锻造 JumpController.getInstance().jumpViewByEvtData([26, 2]); } }, ///---------------------------任务相关 start on10400: function on10400(data) { this.model.addTaskList(data.quest_list, false, true); }, on10403: function on10403(data) { this.model.addTaskList(data.quest_list); }, on10409: function on10409(data) { this.model.addTaskList(data.quest_list, true); }, on10406: function on10406(data) { message(data.msg); if (data.flag == 1) this.model.setTaskCompleted(data.id); }, requestSubmitTask: function requestSubmitTask(id) { var protocal = {}; protocal.id = id; this.SendProtocal(10406, protocal); }, //------------------------任务相关 end //------------------------成就相关 start on16400: function on16400(data) { this.model.addFeatList(data.feat_list, false, true); }, on16401: function on16401(data) { this.model.addFeatList(data.feat_list, true); }, on16402: function on16402(data) { message(data.msg); if (data.code == 1) { this.model.setFeatCompleted(data.id); } }, requestSubmitFeat: function requestSubmitFeat(id) { var protocal = {}; protocal.id = id; this.SendProtocal(16402, protocal); }, //------------------------成就相关 end //------------------------活跃度相关 start requestActivityInfo: function requestActivityInfo() { this.SendProtocal(20300, {}); }, on20300: function on20300(data) { this.model.updateActivityData(data.activity_box); }, requestGetActivityAwards: function requestGetActivityAwards(activity) { var proto = {}; proto.activity = activity; this.SendProtocal(20301, proto); }, on20301: function on20301(data) { message(data.msg); if (data.code == 1) this.model.updateSingleActivityData(data.activity); }, //------------------------活跃度相关 end //-----------------------新主线 send30001: function send30001() { this.SendProtocal(30001, {}); }, on30001: function on30001(data) { cc.log("30001", data); this.model.setMainTaskData(data); }, send30002: function send30002(task_id) { var proto = {}; proto.id = task_id; this.SendProtocal(30002, proto); }, on30002: function on30002(data) { cc.log("3002", data); message(data.msg); if (data.code == 1) {} } }); module.exports = TaskController; cc._RF.pop();