228 lines
6.2 KiB
JavaScript
228 lines
6.2 KiB
JavaScript
|
|
"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();
|