"use strict"; cc._RF.push(module, '68e47tmQ5lJp7czuNdzl001', 'cmp.bedroom.doc.wnd'); // Scripts/mod/home/bedroom/cmp.bedroom.doc.wnd.js "use strict"; /****************************************************************** * * 闺房剧情分支图 * ******************************************************************/ var BridgeWindow = require("bridge.window"); var HomeModel = require("home.mod"); cc.Class({ "extends": BridgeWindow, properties: { nodHead: { "default": null, type: cc.Node }, nodList: { "default": null, type: cc.Node }, nodTemplates: { "default": null, type: cc.Node } }, // 重载:参数打开 onOpenConfigs: function onOpenConfigs(_params) { var _this = this; // 档案基本信息 this.baseinfo = game.configs.favor_data.data_interface[_params.profile_id]; this.data = game.configs.favor_data.data_content[_params.profile_id]; // 分支信息 if (nx.dt.objEmpty(this.data) || nx.dt.objEmpty(this.baseinfo)) { nx.error("无效的闺蜜档案:", _params.profile_id); this.scheduleOnce(function () { _this.close(); }, 0.01); return; } // 档案名字 nx.gui.setString(this.nodHead, "txt", nx.text.getKey(this.baseinfo.name)); this.partner_id = _params.partner_id; this.profile_id = _params.profile_id; this.cmpStory = _params.story; // 数据统计 this.dataStatistics(_params.talks || [], _params.results || []); // 列表重构 this.rebuildList(); nx.doc = this; }, // 数据统计 dataStatistics: function dataStatistics(_talks, _results) { // 统计已开启条目 var talkList = {}; for (var i in _talks) { var t = _talks[i]; if (t) { talkList[t.talk_id] = 1; } } // 统计奖励 var giftList = {}; for (var _i in _results) { var _t = _results[_i]; if (_t) { giftList[_t.talk_id] = _t.is_get_reward; } } // 统计对话 var talks = []; for (var id in this.data) { var _t2 = this.data[id]; if (_t2 && _t2.rank > 0) { talks.push(id); } } // 判空 var empty = nx.dt.arrEmpty(talks); nx.gui.setActive(this, "empty", empty); nx.gui.setActive(this, "graphic", !empty); if (empty) { return; } // 统计 this.items = []; for (var idx = 0; idx < talks.length; ++idx) { // 一级 var tid = talks[idx]; var temp = this.data[tid]; var info = { id: tid, show: !!talkList[tid], name: temp.section_desc, txt: temp.content[0], ops: [] }; // 二级 for (var _i2 = 0; _i2 < temp.next_content_id.length; ++_i2) { var sid = temp.next_content_id[_i2]; var stmp = this.data[sid]; var sifo = { id: sid, icon: stmp.icon, txt: stmp.content[0], done: !!talkList[sid], end: null }; // 最终奖励 if (sifo.done && stmp.next_content_id.length == 1) { var eid = stmp.next_content_id[0]; var etp = this.data[eid]; if (etp && etp.rank < 1 && nx.dt.arrEmpty(etp.next_content_id)) { sifo.end = { id: eid, txt: etp.content[0], status: giftList[eid] }; } } info.ops.push(sifo); } this.items.push(info); } console.log(this.items); }, // 列表重构 rebuildList: function rebuildList() { var self = this; // 三级条目 var create3 = function create3(_parent, _info) { var T = nx.gui.find(self.nodTemplates, "T3"); var node = cc.instantiate(T); node.parent = _parent; node.info = _info; var txt = nx.text.getKey(_info.txt); nx.gui.setString(node, "info/txt", nx.dt.strCut(txt, 50)); nx.gui.setActive(node, "info/gift/get", _info.status == 0); nx.gui.setActive(node, "info/gift/got", _info.status == 1); nx.gui.setActive(node, "info/gift/yet", _info.status != 0 && _info.status != 1); }; // 二级条目 var create2 = function create2(_parent, _info) { var T = nx.gui.find(self.nodTemplates, "T2"); var node = cc.instantiate(T); node.parent = _parent; node.info = _info; var txt = nx.text.getKey(_info.txt); nx.gui.setString(node, "info/txt", nx.dt.strCut(txt, 60)); var path = cc.path.join("prefab/home/bedroom/ui", "icon" + _info.icon); nx.gui.setSpriteFrame(node, "info/icon", path); nx.gui.setActive(node, "info/cbox/on", _info.done); if (_info.end) { create3(node, _info.end); } return node; }; // 一级条目 var createItem = function createItem(_parent, _info) { var T = nx.gui.find(self.nodTemplates, "T1"); var node = cc.instantiate(T); node.parent = _parent; node.info = _info; nx.gui.setString(node, "info/btn/txt", nx.text.getKey(_info.name)); var txt = nx.text.getKey(_info.txt); nx.gui.setString(node, "info/txt", nx.dt.strCut(txt, 70)); for (var i = 0; i < _info.ops.length; ++i) { create2(node, _info.ops[i]); } return node; }; this.nodList.removeAllChildren(); for (var i = 0; i < this.items.length; ++i) { var info = this.items[i]; if (info && info.show) { createItem(this.nodList, info); } } }, // 点击对话 onTouchDialog: function onTouchDialog(_item) { var node = _item ? _item.parent.parent : null; var ifo = node ? node.info : null; if (!this.cmpStory || !ifo) { return; } this.cmpStory.onTouchAutoCancel(); this.cmpStory.resetTalk(ifo.id); this.close(); }, // 点击领奖 onTouchReward: function onTouchReward(_item) { var node = _item ? _item.parent.parent.parent : null; var ifo = node ? node.info : null; if (!ifo) { return; } var home = HomeModel.getInstance(); home.reqGetIntimacyReward(this.profile_id, ifo.id, function (_ret, _data) { if (!_ret) { nx.tbox(_data); return; } node.status = 1; nx.gui.setActive(node, "info/gift/get", false); nx.gui.setActive(node, "info/gift/got", true); }); } }); cc._RF.pop();