137 lines
3.3 KiB
JavaScript
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();
|