Files
fc/dev/project/library/imports/4e/4e728da2-7a15-4020-bba6-b73200e3b970.js
2026-05-24 10:21:26 +08:00

137 lines
3.3 KiB
JavaScript

"use strict";
cc._RF.push(module, '4e7282iehVAILumtzIA47lw', 'cmp.home.theme');
// Scripts/mod/home/cmps/cmp.home.theme.js
"use strict";
/******************************************************************
*
* 家园主题列表
*
******************************************************************/
var BridgeComponent = require("bridge.component");
var HomeMod = require("home.mod");
// 临时状态
var TmState = cc.Enum({
Locked: 0,
// 未解锁
Have: 1,
// 已获得
Use: 2 // 已摆放
});
cc.Class({
"extends": BridgeComponent,
properties: {
lstTheme: {
"default": null,
type: cc.Node
}
},
// 显示
onEnable: function onEnable() {
// 保存当前主题
this.look_id = nx.bridge.vget("HomeTheme");
// 列表重建
if (nx.dt.arrEmpty(this.themes)) {
this.themes = [];
var DATA = game.configs.homeland_data.data_theme_data;
for (var id in DATA) {
var tm = nx.dt.objClone(DATA[id]);
tm.state = TmState.Locked;
this.themes.push(tm);
}
var chds = this.lstTheme.children;
nx.gui.gocChildren(this.lstTheme, "", this.themes.length, chds[0]);
}
// 视图绑定
nx.bridge.vbind(this, [["HomeTheme", this.onHomeThemeChanged.bind(this)]]);
},
// 关闭
onDisable: function onDisable() {
// 视图监听解除
nx.bridge.vunbind(this);
},
// 加载场景
onHomeThemeChanged: function onHomeThemeChanged(_id, _old, _init) {
// 更新列表
this.updateList(_init);
},
// 更新列表
updateList: function updateList(_sort) {
var _this = this;
// 状态更新
var curId = nx.bridge.vget("HomeTheme");
var haves = nx.bridge.vget("HomeThemeList");
var _loop = function _loop() {
var tm = _this.themes[i];
if (tm.theme_id == curId) {
tm.state = TmState.Use;
} else if (nx.dt.arrMember(haves, null, function (_m) {
return _m && _m.look_id == tm.theme_id;
})) {
tm.state = TmState.Have;
} else {
tm.state = TmState.Locked;
}
_this.themes[i] = tm;
};
for (var i = 0; i < this.themes.length; ++i) {
_loop();
}
// 状态排序
if (_sort) {
this.themes.sort(function (_a, _b) {
return _b.state - _a.state;
});
}
var chds = this.lstTheme.children;
for (var _i = 0; _i < this.themes.length; ++_i) {
var item = nx.gui.getComponent(chds[_i], "", "cmp.home.theme.item");
if (item) {
item.setData(this.themes[_i]);
}
}
},
// 主题保存
onTouchSave: function onTouchSave() {
var mod = HomeMod.getInstance();
// 没有改变
var id = nx.bridge.vget("HomeTheme");
if (this.look_id == id) {
mod.togHomeEdit();
return;
}
// 保存提示
nx.mbox("HomeThemeSaveAsk", ['cancel', 'confirm'], function (_key, _box) {
_box.close();
if (_key == 'confirm') {
mod.reqChangeTheme(id, function (_ret, _data) {
if (!_ret) {
nx.tbox(_data);
return;
}
mod.togHomeEdit();
});
}
});
},
// 撤销返回
onTouchCancel: function onTouchCancel() {
// 主题还原
var id = nx.bridge.vget("HomeTheme");
if (this.look_id > 0 && id != this.look_id) {
nx.bridge.vset("HomeTheme", this.look_id);
}
HomeMod.getInstance().togHomeEdit();
}
});
cc._RF.pop();