Files
fc/dev/project/library/imports/68/68e47b66-4399-49a7-b733-b8d773974d35.js
T
2026-05-24 10:21:26 +08:00

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();