Files
fc/dev/project/library/imports/b0/b008344d-f5f7-438e-b8f2-1746ec47ec70.js
T
2026-05-24 10:21:26 +08:00

215 lines
6.0 KiB
JavaScript

"use strict";
cc._RF.push(module, 'b0083RN9fdDjrjyF0bsR+xw', 'cmp.main.ui.top');
// Scripts/mod/mainui/cmp/cmp.main.ui.top.js
"use strict";
/******************************************************************
* Copyright(C) 2019 - 2020 Nx Studio
*
* 主界面 --- 顶部栏
*
*
******************************************************************/
var RoleController = require("role_controller");
var ExchangeController = require("exchange_controller");
var ExchangeEvent = require("exchange_event");
var ActMod = require("acts.mod");
var ActDefine = require("acts.define");
var TDefine = require("trace.define");
var TTT = TDefine.TraceType;
var _require = require("define"),
SCENE_TAG = _require.SCENE_TAG;
var FID = require("bridge.function.ids");
cc.Class({
"extends": cc.Component,
properties: {
nodAvatar: {
"default": null,
type: cc.Node
},
progExp: {
"default": null,
type: cc.ProgressBar
},
lstActs: {
"default": null,
type: cc.Node
}
},
// 加载
onLoad: function onLoad() {
// GM界面
if (nx.bridge.vget("gm")) {
var GmCmd = require("gmcmd");
GmCmd.show();
}
// 金币红点
var tipCoin = nx.gui.find(this, "coin/add/tip");
if (tipCoin) {
tipCoin.active = false;
this.handler_coin = gcore.GlobalEvent.bind(ExchangeEvent.Extra_Reward, function (data) {
tipCoin.active = ExchangeController.getInstance().getModel().getRedStatus();
}.bind(this));
}
// 经验条
this.exp_bar = nx.gui.find(this, "infos/exp/bar");
// 角色属性监听
this.role_vo = RoleController.getInstance().getRoleVo();
if (this.role_vo) {
this.handler_role = this.role_vo.bind(EventId.UPDATE_ROLE_ATTRIBUTE, function (key, val) {
switch (key) {
case "face_id":
this.updateRoleHead();
break;
case "avatar_base_id":
this.updateRoleHeadFrame();
break;
case "exp":
this.updateRoleExp();
break;
case "exp_max":
this.updateRoleExp();
break;
// case "hero_exp": this.updateRoleExp(); break;
default:
break;
}
}, this);
}
this.onInit();
},
// 展示
onInit: function onInit() {
var _this = this;
this.updateRoleHead();
this.updateRoleHeadFrame();
this.updateRoleExp();
// 活动监听
ActMod.getInstance().vbind(this, [["themes", this.onActThemesChanged.bind(this)], ["pushPopup", this.onActPushChanged.bind(this)]]);
// 计时器
this.schedule(function () {
_this.cdThemes();
}, 1, cc.macro.REPEAT_FOREVER);
// 今日推送
if (this.role_vo.lev >= game.configs.source_data.data_source_data[FID.ActFirst].lev_limit[1]) {
// ActMod.getInstance().reqPushPopup();
}
},
// 销毁
onDestroy: function onDestroy() {
// 计时器
this.unscheduleAllCallbacks();
if (this.tween) {
this.tween.stop();
}
// 监听解除
if (this.handler_coin) {
gcore.GlobalEvent.unbind(this.handler_coin);
this.handler_coin = null;
}
// 监听解除
if (this.handler_role && this.role_vo) {
this.role_vo.unbind(this.handler_role);
this.handler_role = null;
this.role_vo = null;
}
if (window.nx && nx.bridge.ui && nx.gui.find(nx.bridge.ui.getSceneNode(SCENE_TAG.msg), "gm")) {
var nod = nx.gui.find(nx.bridge.ui.getSceneNode(SCENE_TAG.msg), "gm");
nod.destroy();
}
// 活动监听解除
ActMod.getInstance().vunbind(this);
},
// 头像更新
updateRoleHead: function updateRoleHead() {
nx.bridge.setIcon(this.nodAvatar, "mask/img", this.role_vo.face_id);
},
// 头像框更新
updateRoleHeadFrame: function updateRoleHeadFrame() {
var path = cc.path.join("resDB/aframes", this.role_vo.avatar_base_id);
nx.gui.setSpriteFrame(this.nodAvatar, "frame", path);
},
// 经验更新
updateRoleExp: function updateRoleExp() {
var pro = 0;
if (this.role_vo && nx.dt.numGood(this.role_vo.exp) && nx.dt.numGood(this.role_vo.exp_max)) {
pro = this.role_vo.exp / this.role_vo.exp_max;
}
this.progExp.progress = pro;
},
// ========================================================================
// 活动
// ========================================================================
// 活动主题刷新
onActThemesChanged: function onActThemesChanged(_themes) {
// 重复过滤
if (nx.dt.strNEmpty(this.tsTheme)) {
var ids = [];
_themes.forEach(function (_tm) {
ids.push(_tm.theme_id);
});
var ts = ids.toString();
if (ts == this.tsTheme) {
return;
}
this.tsTheme = ts;
}
// 空主题
if (nx.dt.arrEmpty(_themes)) {
nx.gui.setActive(this.lstActs, "", false);
return;
}
var chds = this.lstActs.children;
nx.gui.setActive(this.lstActs, "", true);
nx.gui.gocChildren(this.lstActs, "", _themes.length, chds[0]);
for (var i = 0; i < _themes.length; ++i) {
var entry = nx.gui.getComponent(chds[i], "", "cmp.main.theme.entry");
if (entry) {
if (chds[i]) {
chds[i].active = true;
}
entry.setTheme(_themes[i]);
} else {
nx.error("Top:\u4E3B\u9898\u5165\u53E3\u7EC4\u4EF6\u7F3A\u5931!");
if (chds[i]) {
chds[i].active = false;
}
}
}
},
// 主题活动时间刷新
cdThemes: function cdThemes() {
var chds = this.lstActs.children;
chds.forEach(function (node) {
var entry = nx.gui.getComponent(node, "", "cmp.main.theme.entry");
if (entry && node.active && entry.theme) {
entry.tick();
}
});
},
// 活动推送弹窗
onActPushChanged: function onActPushChanged(_id) {
if (!nx.dt.numPositive(_id, false)) {
return;
}
this.scheduleOnce(function () {
nx.bridge.createPanel("WndActPop" + _id, {
id: _id
});
}, 1);
}
});
cc._RF.pop();