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