// --------------------------------------------------------------------
|
// @author: shiraho@syg.com(必填, 创建模块的人员)
|
// @description:
|
// 主界面控制
|
// <br/>Create: new Date().toISOString()
|
// --------------------------------------------------------------------
|
var LoaderManager = require("loadermanager");
|
var PathTool = require("pathtool");
|
var PlayerHead = require("playerhead");
|
var MainUiConst = require("mainui_const");
|
var BattleConst = require("battle_const");
|
var RoleController = require("role_controller");
|
var ExchangeController = require("exchange_controller");
|
var FunctionIconVo = require("function_icon_vo");
|
var ChatController = require("chat_controller");
|
var ExchangeEvent = require("exchange_event")
|
var LoginController = require("login_controller");
|
var MainuiEvent = require("mainui_event");
|
var PromptEvent = require("prompt_event")
|
var PromptController = require("prompt_controller")
|
var MainUIView = cc.Class({
|
extends: BaseClass,
|
ctor: function () {
|
this.rleasePrefab = false;
|
this.initConfig();
|
this.createRootWnd();
|
},
|
// cc.sys.getSafeAreaRect()
|
initConfig: function () {
|
this.bottom_btn_list = []; // 下面7个标签页
|
this.cur_select_index = 0;
|
this.render_list = [] // 待添加的实例对象
|
this.render_list_dic = {} // 但添加实例字典
|
this.function_list = {}; //显示的实例对象
|
this.icon_container_list = {}; //根据方位保存需要储存的图标的父节点
|
this.icon_widget_list = {}; //根据方位保存需要储存的图标的widget节点
|
|
this.btn_cache_tips = {} //红点缓存
|
|
this.left_off = 20
|
this.right_off = 20
|
this.left_max_sum = 7;
|
this.is_in_shrink = false;
|
this.is_shrink = false;
|
this.layout_list = {}
|
},
|
|
createRootWnd: function () {
|
// this.node = new cc.Node("base_root");
|
// this.node.setAnchorPoint(0, 0);
|
// this.node.setContentSize(SCREEN_WIDTH, SCREEN_HEIGHT);
|
// this.node.setPosition(-SCREEN_WIDTH * 0.5, -SCREEN_HEIGHT * 0.5);
|
// ViewManager.getInstance().addToSceneNode(this.node, SCENE_TAG.top)
|
|
// 获取一些需要使用的单例
|
this.mainui_controller = require("mainui_controller").getInstance();
|
this.battle_controller = require("battle_controller").getInstance();
|
|
var prefabPath = PathTool.getPrefabPath("mainui", "mainui_view");
|
LoaderManager.getInstance().loadRes(prefabPath, function (res_object) {
|
this.initMainUI(res_object);
|
}.bind(this));
|
},
|
|
initMainUI: function (res_object) {
|
this.root_wnd = res_object;
|
|
if (!window.isMobile) {
|
this.root_wnd.getComponent(cc.Widget).enabled = false;
|
}
|
|
this.root_wnd.setPosition(-SCREEN_WIDTH * 0.5, -SCREEN_HEIGHT * 0.5)
|
// this.node.addChild(this.root_wnd);
|
ViewManager.getInstance().addToSceneNode(this.root_wnd, SCENE_TAG.top)
|
|
if (this.root_wnd_cb)
|
this.root_wnd_cb(this.root_wnd);
|
|
// 下部分的7个按钮
|
this.bottom_container = this.root_wnd.getChildByName("bottom_container");
|
this.btn_con = this.bottom_container.getChildByName("bnt_con");
|
// gcore.Timer.set(function(){
|
// var btn_lo = this.btn_con.getComponent(cc.Layout);
|
// var spcingX = (this.btn_con.width - btn_lo.paddingLeft - btn_lo.paddingRight - (93 * 6 + 105))/6;
|
// btn_lo.spacingX = spcingX;
|
// cc.log(spcingX);
|
// }.bind(this), 0.2)
|
if (window.isMobile && window.FIT_HEIDGHT) {
|
var btn_lo = this.btn_con.getComponent(cc.Layout);
|
var spcingX = (SCREEN_WIDTH * FIT_SCALE - btn_lo.paddingLeft - btn_lo.paddingRight - (93 * 6 + 105)) / 6;
|
btn_lo.spacingX = spcingX;
|
}
|
|
for (let index = 0; index < 7; index++) {
|
var btn = this.btn_con.getChildByName("mainui_tab_" + (index + 1));
|
|
if (btn) {
|
var tips_point = btn.getChildByName("tips_point");
|
var normal = btn.getChildByName("normal");
|
var selected = btn.getChildByName("selected");
|
var icon = btn.getChildByName("icon");
|
var notice = btn.getChildByName("notice")
|
var init_x = btn.getPosition().x
|
var init_y = btn.getPosition().y
|
|
this.bottom_btn_list[index] = { btn: btn, index: index, tips_point: tips_point, normal: normal, selected: selected, icon: icon, notice: notice, tips_status: false, init_x: init_x, init_y: init_y }
|
let config = Config.function_data.data_base[index + 1]
|
if (config && config.activate) {
|
this.bottom_btn_list[index].config = config
|
if (this.bottom_btn_list[index].notice) {
|
this.bottom_btn_list[index].notice.getComponent(cc.Label).string = config.label;
|
}
|
}
|
btn.on(cc.Node.EventType.TOUCH_END, (function (event) {
|
this.changeMainUiStatus(index);
|
}).bind(this))
|
|
if (index == MainUiConst.btn_index.main_scene) {
|
this.setMaiuiBtnStatus(index)
|
} else if (index == MainUiConst.btn_index.drama_scene) {
|
this.bottom_btn_list[index].skeleton = icon.getComponent(sp.Skeleton);
|
}
|
if (index == 0) {
|
this.cur_select_index = index
|
this.cur_select_btn = this.bottom_btn_list[index]
|
this.cur_select_btn.normal.active = false;
|
this.cur_select_btn.selected.active = true
|
btn.y = this.bottom_btn_list[index].init_y + 10
|
}
|
}
|
}
|
// 上部分的显示
|
this.top_container = this.root_wnd.getChildByName("top_container");
|
this.exp_bar = this.top_container.getChildByName("exp_bar")
|
var exp_nd = this.top_container.getChildByName("exp_bar");
|
|
gcore.Timer.set(function () {
|
var exp_wdg = exp_nd.getComponent(cc.Widget);
|
this.exp_bar.width = this.root_wnd.width - exp_wdg.left;
|
}.bind(this), 0.1)
|
|
this.fight_con = this.top_container.getChildByName("fight_con");
|
this.coin_touch = this.top_container.getChildByName("coin_touch"); // 金币点击区域
|
this.gold_touch = this.top_container.getChildByName("gold_touch"); // 钻石点击区域
|
this.Sprite_8 = this.coin_touch.getChildByName("Sprite_8"); // 金币加号
|
this.Sprite_10 = this.gold_touch.getChildByName("Sprite_10"); // 钻石加号
|
this.coin_redpoint = this.coin_touch.getChildByName("Sprite_8").getChildByName("redPoint") //点金红点
|
this.coin_redpoint.active = ExchangeController.getInstance().getModel().getRedStatus();
|
|
this.head_container = this.top_container.getChildByName("head_container"); // 头像部分
|
this.player_head = new PlayerHead();
|
this.player_head.setParent(this.head_container);
|
this.player_head.show()
|
|
this.info_container = this.top_container.getChildByName("info_container");
|
this.lev_label = this.info_container.getChildByName("lev_label").getComponent(cc.Label); // 角色等级
|
this.name_label = this.info_container.getChildByName("name_label").getComponent(cc.Label); // 角色名字
|
this.coin_label_nd = this.coin_touch.getChildByName("wealth_label_1"); // 金币数量
|
this.gold_label_nd = this.gold_touch.getChildByName("wealth_label_2"); // 钻石数量
|
this.coin_label = this.coin_label_nd.getComponent(cc.Label); // 金币数量
|
this.gold_label = this.gold_label_nd.getComponent(cc.Label); // 钻石数量
|
this.fight_label = this.fight_con.getChildByName("fight_label").getComponent(cc.Label); // 战力
|
this.coin_nd = this.coin_touch.getChildByName("Sprite_2"); // 金币node
|
this.gold_nd = this.gold_touch.getChildByName("Sprite_4"); // 钻石node
|
this.coin_sp = this.coin_nd.getComponent(cc.Sprite); // 金币图标
|
this.gold_sp = this.gold_nd.getComponent(cc.Sprite); // 钻石图标
|
|
this.hide_container = this.root_wnd.getChildByName("hide_container")
|
this.handle_btn = this.hide_container.getChildByName("handle_btn")
|
//系统提示
|
this.prompt_container = this.hide_container.getChildByName("prompt_container")
|
this.prompt_tips_layout = this.prompt_container.getChildByName("tips_layout")
|
this.prompt_bubble_layout = this.prompt_container.getChildByName("bubble_layout")
|
this.prompt_tips_btn = this.prompt_container.getChildByName("tips_btn")
|
this.prompt_desc = this.prompt_bubble_layout.getChildByName("desc").getComponent(cc.Label)
|
this.prompt_bubble = this.prompt_bubble_layout.getChildByName("bubble")
|
this.prompt_bubble_size = this.prompt_bubble.getContentSize()
|
|
this.prompt_tips_scroll = this.prompt_tips_layout.getChildByName("tips_scroll")
|
this.prompt_tips_scroll_size = this.prompt_tips_scroll.getContentSize()
|
this.count_size_label = this.prompt_tips_layout.getChildByName("count_size_label").getComponent(cc.Label)
|
|
this.prompt_tips_bg = this.prompt_tips_layout.getChildByName("tips_bg")
|
this.prompt_tips_bg_size = this.prompt_tips_bg.getContentSize()
|
this.prompt_tips_btn.active = false;
|
this.prompt_tips_layout.active = false;
|
|
this.prompt_mask = this.hide_container.getChildByName("prompt_mask")
|
// 可控部分,需要隐藏或者显示
|
this.hide_container = this.root_wnd.getChildByName("hide_container") // 可隐藏部分
|
this.handle_btn = this.hide_container.getChildByName("handle_btn") // 下面控制按钮
|
//创建聊天按钮
|
this.creatorChatBtn()
|
// this.chat_btn_nd = this.hide_container.getChildByName("chat_btn");
|
RedMgr.getInstance().addCalHandler(this.updateChatMsgNum.bind(this));
|
// 战力相关
|
// this.power_show_nd = this.root_wnd.getChildByName("power_show");
|
// this.power_sk = this.power_show_nd.getChildByName("ani_con").getComponent(sp.Skeleton);
|
// var tex_con_nd = this.power_show_nd.getChildByName("txt_con");
|
// this.old_power_rb = tex_con_nd.getChildByName("old_power").getComponent(cc.RichText);
|
// this.add_power_lb = tex_con_nd.getChildByName("add_power").getComponent(cc.Label);
|
|
this.updateHandleBtnShowStatus()
|
// this.chat_red_bg = this.chat_btn_nd.getChildByName("chat_red_bg");
|
// this.chat_red_num = this.chat_red_bg.getChildByName("chat_red_num").getComponent(cc.Label);
|
if (USE_SDK == true && PLATFORM_TYPR == "SH_SDK") {
|
//创建深海小程序客服浮标
|
this.creatorCustomerServiceBtn();
|
}
|
|
this.image_2 = this.top_container.getChildByName("Image_2")
|
this.vip_label = this.image_2.getChildByName("vip_label").getComponent("CusRichText")
|
|
|
|
for (var k in FunctionIconVo.type) {
|
var v = FunctionIconVo.type[k];
|
var icon_container = this.hide_container.getChildByName("icon_container_" + v);
|
if (icon_container) {
|
this.icon_container_list[v] = icon_container;
|
var _x = 0;
|
var _y = 0;
|
if (v == FunctionIconVo.type.right_top_1) {
|
_x = -8;
|
_y = this.top_container.getContentSize().height + 15;
|
} else if (v == FunctionIconVo.type.right_top_2) {
|
_x = -8;
|
_y = this.top_container.getContentSize().height - 100;
|
} else if (v == FunctionIconVo.type.right_bottom_1) {
|
_x = -45 - 57;
|
// _y = this.bottom_container.getContentSize().height + 60;
|
_y = icon_container.y;
|
} else if (v == FunctionIconVo.type.right_bottom_2) {
|
_x = 320.5;
|
// _y = this.bottom_container.getContentSize().height + 60 + 55;
|
_y = -367
|
}
|
// icon_container.setPosition(_x, _y);
|
var icon_widget = icon_container.getComponent(cc.Widget);
|
if (icon_widget) {
|
this.icon_widget_list[v] = icon_widget;
|
}
|
}
|
|
}
|
this.role_vo = RoleController.getInstance().getRoleVo();
|
LoaderManager.getInstance().loadRes(PathTool.getItemRes("1"), function (res) {
|
this.coin_sp.spriteFrame = res
|
}.bind(this))
|
LoaderManager.getInstance().loadRes(PathTool.getItemRes("3"), function (res) {
|
this.gold_sp.spriteFrame = res
|
}.bind(this))
|
// 加载完成之后注册监听
|
this.registerEvent();
|
// 创建挑战按钮
|
this.createChallengeEffect();
|
this.updateRoleData();
|
this.max_dun_id = this.mainui_controller.max_dun_id
|
if (this.max_dun_id != null) {
|
this.checkUnLockStatus(this.max_dun_id);
|
}
|
// -- 判断等级解锁主按钮
|
this.checkUnLockStatusByLev()
|
// -- 所有活动的时间倒计时,统一用一个定时器在这里做处理
|
if (this.function_time_ticket == null) {
|
this.action_list = require("action_controller").getInstance().getAllActionList()
|
this.function_time_ticket = gcore.Timer.set(function () {
|
this.functionTimeTicketList();
|
}.bind(this), 1000, -1)
|
}
|
|
if (USE_SDK == true && NEED_ADAPTIVE_SDK[window.PLATFORM_TYPR]) {
|
this.coin_nd.x = -28;
|
// this.gold_nd.x = -28;
|
this.coin_label_nd.x = 29;
|
// this.gold_label_nd.x = 29;
|
this.Sprite_8.x = -60;
|
// this.Sprite_10.x = -60;
|
this.Sprite_10.active = false;
|
}
|
|
|
// 小游戏需要调整顶部栏
|
if (window.PLATFORM_TYPR == "WX_SDK" || window.PLATFORM_TYPR == "SH_SDK" || PLATFORM_TYPR == "QQ_SDK") {
|
if (window.WX_FIT) {
|
var add_val = this.root_wnd.height * window.WX_FIT;
|
cc.log("微信小游戏适配菜单栏");
|
console.log("add_val");
|
var top_wdg = this.top_container.getComponent(cc.Widget);
|
var con1_wdg = this.icon_container_list[1].getComponent(cc.Widget);
|
top_wdg.top += add_val;
|
con1_wdg.top += add_val;
|
|
}
|
}
|
|
// 关闭loading界面
|
LoginController.getInstance().updateLoading(1);
|
this.close_login_ticket = gcore.Timer.set(function () {
|
LoginController.getInstance().openLoginWindow(false);
|
gcore.Timer.del(this.close_login_ticket);
|
IS_LOADING = false;
|
if (PLATFORM_TYPR == "SH_RH" || PLATFORM_TYPR == "SH_SDK") {
|
SDK.submitLogin();
|
if (USE_SDK == true && PLATFORM_TYPR == "SH_SDK") {
|
SDK.dataPlacement(90500);
|
}
|
} else if (USE_SDK == true && PLATFORM_TYPR == "WX_SDK") {
|
SDK.loginLog();
|
}
|
gcore.GlobalEvent.fire(MainuiEvent.LOADING_ENTER_SCENE);
|
}.bind(this), 200, 1)
|
|
//背包红点
|
let BackpackController = require("backpack_controller")
|
BackpackController.getInstance().getModel().getHeroChipRedPoint()
|
|
//红点
|
let ctrlCachesRed = this.mainui_controller.getCachesBtnRed()
|
if (ctrlCachesRed) {
|
for (let i = 0; i < ctrlCachesRed.length; ++i) {
|
this.updateBtnTipsPoint(ctrlCachesRed[i][0], ctrlCachesRed[i][1]);
|
}
|
this.mainui_controller.resetCachesRetData()
|
}
|
|
this.updateShenqi();
|
|
let Widget = this.prompt_container.getComponent(cc.Widget)
|
if (this.task_tips_panel == null) {
|
Widget.bottom = 144
|
} else {
|
Widget.bottom = 334.28;
|
}
|
Widget.updateAlignment()
|
},
|
|
//神器任务
|
updateShenqi: function () {
|
let task_container = this.hide_container.getChildByName("task_container");
|
// let hallows_status = require("hallows_controller").getInstance().getModel().checkIsHaveAllHallows();
|
// let limit_dun = Config.function_data.data_base[7].activate[0][1];
|
let limit_lev = 6;
|
if (Config.quest_data.data_const) {
|
limit_lev = Config.quest_data.data_const.task_open.val[1];
|
}
|
let role_vo = RoleController.getInstance().getRoleVo();
|
if (this.task_tips_panel == null && role_vo.lev >= limit_lev) {
|
let TaskTipsPanel = require("task_tips_panel");
|
this.task_tips_panel = new TaskTipsPanel(this);
|
this.task_tips_panel.setParent(task_container);
|
this.task_tips_panel.show();
|
let Widget = this.prompt_container.getComponent(cc.Widget)
|
Widget.bottom = 334.28;
|
Widget.updateAlignment()
|
}
|
},
|
deleteTaskTip() {
|
if (this.task_tips_panel) {
|
this.task_tips_panel.deleteMe()
|
this.task_tips_panel = null;
|
}
|
let Widget = this.prompt_container.getComponent(cc.Widget)
|
Widget.bottom = 144
|
Widget.updateAlignment()
|
},
|
getTaskTipsPanel: function () {
|
return this.task_tips_panel.root_wnd;
|
},
|
|
// 创建挑战动画
|
createChallengeEffect: function () {
|
var btn_object = this.bottom_btn_list[MainUiConst.btn_index.drama_scene];
|
if (btn_object == null) {
|
return;
|
}
|
LoaderManager.getInstance().loadRes("spine/E51130/action.atlas", (function (res) {
|
btn_object.skeleton.skeletonData = res;
|
btn_object.skeleton.setAnimation(0, "action1", true);
|
}).bind(this))
|
},
|
|
registerEvent: function () {
|
this.prompt_tips_btn.on('click', function () {
|
this._onClickPromptTips()
|
}, this)
|
this.head_container.on(cc.Node.EventType.TOUCH_END, function (event) {
|
RoleController.getInstance().openRoleInfoView(true);
|
}, this);
|
this.coin_touch.on(cc.Node.EventType.TOUCH_END, function (event) {
|
ExchangeController.getInstance().openExchangeMainView(true);
|
}, this);
|
this.gold_touch.on(cc.Node.EventType.TOUCH_END, function (event) {
|
if (!this.is_hero_panel) {
|
require("vip_controller").getInstance().openVipMainWindow(true, VIPTABCONST.CHARGE)
|
} else {
|
var BackpackController = require("backpack_controller");
|
BackpackController.getInstance().openTipsSource(true, Utils.getItemConfig(22));
|
}
|
}, this);
|
this.handle_btn.on(cc.Node.EventType.TOUCH_END, function (event) {
|
this.shrinkBtnContainer();
|
}.bind(this));
|
|
// 聊天
|
this.chat_newmsg_event = gcore.GlobalEvent.bind(EventId.CHAT_NEWMSG_FLAG, function () {
|
RedMgr.getInstance().addCalHandler(this.updateChatMsgNum.bind(this));
|
}.bind(this));
|
|
//点金红点
|
this.coin_touch_redpoint = gcore.GlobalEvent.bind(ExchangeEvent.Extra_Reward, function (data) {
|
this.coin_redpoint.active = ExchangeController.getInstance().getModel().getRedStatus();
|
}.bind(this))
|
this.role_vo.bind(EventId.UPDATE_ROLE_ATTRIBUTE, (function (key, val) {
|
switch (key) {
|
case "power":
|
this.updateRolePower();
|
break;
|
case "lev":
|
this.updateRoleLev();
|
this.checkUnLockStatusByLev(val)
|
break;
|
case "name":
|
this.updateRoleName();
|
break;
|
case "coin":
|
this.updateRoleCoin();
|
break;
|
case "gold":
|
this.updateRoleGold();
|
break;
|
case "face_id":
|
this.player_head.setHeadRes(val);
|
break;
|
case "avatar_base_id":
|
this.player_head.setFrameRes(val);
|
break;
|
case "vip_lev":
|
this.updateRoleVip();
|
break;
|
case "exp":
|
this.updateRoleExp();
|
break;
|
case "exp_max":
|
this.updateRoleExp();
|
break;
|
case "hero_exp":
|
this.updateHeroExp();
|
break;
|
default:
|
break;
|
}
|
}), this);
|
|
//系统提示增加
|
if (!this.update_prompt_tips) {
|
this.update_prompt_tips = gcore.GlobalEvent.bind(PromptEvent.ADD_PROMPT_DATA, function (data) {
|
// -- 主城正在显示且不在聊天界面才显示气泡
|
if (this.is_open && !ChatController.getInstance().isChatOpen()) {
|
this.showPromptBubble(data)
|
let model = PromptController.getInstance().getModel()
|
let list = model.getPromptList()
|
if (Utils.getArrLen(list) > 0) {
|
this.showPromptTips(true, list)
|
}
|
}
|
}.bind(this))
|
}
|
//系统提示移除
|
if (!this.remove_prompt_tips) {
|
this.remove_prompt_tips = gcore.GlobalEvent.bind(PromptEvent.REMOVE_PROMPT_DATA, function () {
|
let model = PromptController.getInstance().getModel()
|
let list = model.getPromptList()
|
if (Utils.getArrLen(list) > 0) {
|
this.showPromptTips(true, list)
|
} else {
|
this.showPromptTips(false)
|
}
|
}.bind(this))
|
}
|
this.prompt_mask.on('touchend', function () {
|
this.prompt_mask.active = false;
|
this.prompt_tips_layout.active = false;
|
}, this)
|
},
|
|
open: function () {
|
if (this.root_wnd) {
|
this.handleHideContainer(true)
|
this.checkShowNewPromptBubble()
|
}
|
},
|
|
// 打开显示的时候不需要马上显示出来,因为可能从一个界面切换到另外一个界面 这个时候不需要显示
|
handleHideContainer: function (status) {
|
this.hide_container_status = status
|
if (this.wait_update == null) {
|
this.wait_update = gcore.Timer.set((function () {
|
if (this.hide_container_status == true) {
|
this.is_open = this.hide_container_status
|
this.hide_container.active = this.is_open
|
this.functionUpdateList();
|
gcore.Timer.del(this.wait_update);
|
this.wait_update = null;
|
}
|
}).bind(this), 200, -1);
|
}
|
},
|
|
getHideContainerStatus: function () {
|
return this.hide_container_status;
|
},
|
|
close: function () {
|
if (this.hide_container) {
|
this.is_open = false
|
this.hide_container_status = false
|
this.hide_container.active = false
|
}
|
// if(this.function_time_ticket){
|
// gcore.Timer.del(this.function_time_ticket);
|
// this.function_time_ticket = null;
|
// }
|
},
|
|
// 切换主ui的状态
|
changeMainUiStatus: function (index, sub_type, extend_data) {
|
var btn_object = this.bottom_btn_list[index];
|
if (btn_object == null || !btn_object.is_unlock) {
|
message(btn_object.config.desc)
|
return
|
}
|
// 切磋中的时候,不需要切换
|
if (this.checkFightClickStatus()) {
|
return;
|
}
|
// 如果待选中的是同一个
|
if ((this.cur_select_index == index) && (index != MainUiConst.btn_index.main_scene)) {
|
if (index == MainUiConst.btn_index.drama_scene) {
|
Utils.closeAllWindow();
|
}
|
return;
|
}
|
this.setMaiuiBtnStatus(index);
|
|
// 关闭所有窗体
|
Utils.closeAllWindow();
|
|
// 只要不是剧情副本,都切出战斗
|
if (index != MainUiConst.btn_index.Darma) {
|
this.battle_controller.requestCutOutBattle()
|
this.battle_controller.getModel().clearBattleScene();
|
// clearBattleScene
|
this.changeBackgroundMusic();
|
}
|
|
if (index == MainUiConst.btn_index.main_scene) {
|
var mainSceneCtrl = require("mainscene_controller").getInstance();
|
mainSceneCtrl.enterMainScene(true);
|
} else if (index == MainUiConst.btn_index.partner) {
|
var hero_controller = require("hero_controller").getInstance();
|
hero_controller.openHeroBagWindow(true, sub_type)
|
} else if (index == MainUiConst.btn_index.backpack) {
|
var controller = require("backpack_controller").getInstance()
|
controller.openMainWindow(true, sub_type)
|
} else if (index == MainUiConst.btn_index.drama_scene) {
|
this.mainui_controller.requestOpenBattleRelevanceWindow(BattleConst.Fight_Type.Darma)
|
} else if (index == MainUiConst.btn_index.esecsice) {
|
require("esecsice_controller").getInstance().openEsecsiceView(true);
|
} else if (index == MainUiConst.btn_index.guild) {
|
require("guild_controller").getInstance().checkOpenGuildWindow()
|
// 清楚主界面上面的红点
|
var GuildskillController = require("guildskill_controller");
|
GuildskillController.getInstance().getModel().clearGuildSkillIconRed();
|
} else if (index == MainUiConst.btn_index.hallows) {
|
var controller = require("hallows_controller").getInstance();
|
if (extend_data) {
|
var hallows_id = extend_data[0];
|
var index = extend_data[1];
|
var magic_id = extend_data[2];
|
controller.openHallowsMainWindow(true, hallows_id, index, magic_id);
|
} else {
|
controller.openHallowsMainWindow(true);
|
}
|
|
}
|
this.doChangeBySubType(index, sub_type, extend_data);
|
},
|
|
// 只要不是剧情战斗,都切刀指定音乐
|
changeBackgroundMusic: function () {
|
Utils.playMusic(AUDIO_TYPE.SCENE, "s_002", true);
|
},
|
|
//跳转处理
|
doChangeBySubType: function (main_type, sub_type, extend_data) {
|
if (main_type == null || sub_type == null) return
|
this.sub_type = sub_type;
|
gcore.Timer.set(function () {
|
if (this.sub_type && this.sub_type != sub_type) return
|
if (main_type == MainUiConst.btn_index.main_scene) {
|
if (sub_type == MainUiConst.sub_type.arena_call) {
|
var SceneConst = require("scene_const");
|
var ArenaConst = require("arena_const");
|
require("mainscene_controller").getInstance().openBuild(SceneConst.CenterSceneBuild.arena, ArenaConst.arena_type.loop)
|
} else if (sub_type == MainUiConst.sub_type.champion_call) {
|
var SceneConst = require("scene_const");
|
var ArenaConst = require("arena_const");
|
require("mainscene_controller").getInstance().openBuild(SceneConst.CenterSceneBuild.arena, ArenaConst.arena_type.rank)
|
} else if (sub_type == MainUiConst.sub_type.guild_boss) {
|
if (this.role_vo && this.role_vo.gid == 0) {
|
message(Utils.TI18N("您暂时还没有加入公会"))
|
} else {
|
this.mainui_controller.requestOpenBattleRelevanceWindow(BattleConst.Fight_Type.GuildDun)
|
}
|
} else if (sub_type == MainUiConst.sub_type.startower) {
|
this.mainui_controller.requestOpenBattleRelevanceWindow(BattleConst.Fight_Type.StarTower)
|
} else if (sub_type == MainUiConst.sub_type.partnersummon) {
|
require("partnersummon_controller").getInstance().openPartnerSummonWindow(true)
|
} else if (sub_type == MainUiConst.sub_type.escort) {
|
this.mainui_controller.requestOpenBattleRelevanceWindow(BattleConst.Fight_Type.Escort, extend_data)
|
} else if (sub_type == MainUiConst.sub_type.wonderful) {
|
if (typeof (extend_data) == "number") {
|
var ActionConst = require("action_const");
|
require("action_controller").getInstance().openActionMainPanel(true, ActionConst.ActionType.Wonderful, extend_data)
|
}
|
} else if (sub_type == MainUiConst.sub_type.godbattle) {
|
this.mainui_controller.requestOpenBattleRelevanceWindow(BattleConst.Fight_Type.Godbattle)
|
} else if (sub_type == MainUiConst.sub_type.world_boss) {
|
this.mainui_controller.requestOpenBattleRelevanceWindow(BattleConst.Fight_Type.WorldBoss)
|
} else if (sub_type == MainUiConst.sub_type.function_icon) {
|
this.mainui_controller.iconClickHandle(extend_data)
|
} else if (sub_type == MainUiConst.sub_type.guildwar) {
|
this.mainui_controller.requestOpenBattleRelevanceWindow(BattleConst.Fight_Type.GuildWar)
|
} else if (sub_type == MainUiConst.sub_type.ladderwar) {
|
this.mainui_controller.requestOpenBattleRelevanceWindow(BattleConst.Fight_Type.LadderWar)
|
} else if (sub_type == MainUiConst.sub_type.primuswar) {
|
this.mainui_controller.requestOpenBattleRelevanceWindow(BattleConst.Fight_Type.PrimusWar)
|
} else if (sub_type == MainUiConst.sub_type.expedit_fight) {
|
this.mainui_controller.requestOpenBattleRelevanceWindow(BattleConst.Fight_Type.ExpeditFight)
|
} else if (sub_type == MainUiConst.sub_type.endless) {
|
this.mainui_controller.requestOpenBattleRelevanceWindow(BattleConst.Fight_Type.Endless)
|
} else if (sub_type == MainUiConst.sub_type.dungeonstone) {
|
this.mainui_controller.requestOpenBattleRelevanceWindow(BattleConst.Fight_Type.DungeonStone, extend_data)
|
} else if (sub_type == MainUiConst.sub_type.seerpalace) { // -- 先知殿
|
if (extend_data && typeof (extend_data) == "number") {
|
require("seerpalace_controller").getInstance().openSeerpalaceMainWindow(true, extend_data)
|
} else {
|
require("seerpalace_controller").getInstance().openSeerpalaceMainWindow(true)
|
}
|
} else if (sub_type == MainUiConst.sub_type.adventure) { // -- 跳转神界冒险
|
require("adventure_controller").getInstance().requestEnterAdventure();
|
} else if (sub_type == MainUiConst.sub_type.forge_house) {//锻造屋
|
if (extend_data && typeof (extend_data) == "number") {
|
require("forgehouse_controller").getInstance().openForgeHouseView(true, extend_data);
|
} else {
|
require("forgehouse_controller").getInstance().openForgeHouseView(true);
|
}
|
}
|
} else if (main_type == MainUiConst.btn_index.drama_scene) {
|
if (sub_type == MainUiConst.sub_type.dungeon_auto) {
|
var battle_drama_model = BattleDramaController.getInstance().getModel()
|
var drama_data = battle_drama_model.getDramaData()
|
if (battle_drama_model && drama_data) {
|
var data = battle_drama_model.getSingleBossData(drama_data.max_dun_id)
|
BattleDramaController.getInstance().openDramBossInfoView(true, data)
|
}
|
}
|
}
|
}.bind(this), 200, 1)
|
},
|
|
// 是否在观战或者切磋,这个时候出二级提示,退出
|
checkFightClickStatus: function () {
|
var BattleController = require("battle_controller");
|
var is_click_status = BattleController.getInstance().getIsClickStatus();
|
var combat_type = BattleController.getInstance().getModel().getCombatType();
|
if (is_click_status) {
|
var BattleConst = require("battle_const");
|
var str = Utils.TI18N("正在观看录像或切磋中,是否退出?")
|
if (combat_type == BattleConst.Fight_Type.HeroTestWar) {
|
str = Utils.TI18N("正在观看战斗演示,是否切换界面?")
|
}
|
var comfire_fun = function () {
|
BattleController.getInstance().csFightExit();
|
}.bind(this);
|
var CommonAlert = require("commonalert");
|
CommonAlert.show(str, "确定", comfire_fun, "取消");
|
} else {
|
|
}
|
return is_click_status;
|
},
|
|
// 改变按钮状态
|
setMaiuiBtnStatus: function (index) {
|
if (this.cur_select_index == index) {
|
return;
|
}
|
if (this.cur_select_btn) {
|
if (this.cur_select_index == MainUiConst.btn_index.drama_scene) {
|
if (this.cur_select_btn.skeleton && this.cur_select_btn.skeleton.skeletonData) {
|
this.cur_select_btn.skeleton.setAnimation(0, "action1", true);
|
}
|
} else {
|
this.cur_select_btn.normal.active = true
|
this.cur_select_btn.selected.active = false
|
this.cur_select_btn.btn.setPosition(this.cur_select_btn.init_x, this.cur_select_btn.init_y)
|
}
|
}
|
this.cur_select_index = index;
|
var btn_object = this.bottom_btn_list[index];
|
this.cur_select_btn = btn_object
|
if (btn_object) {
|
if (this.cur_select_index == MainUiConst.btn_index.drama_scene) {
|
if (this.cur_select_btn.skeleton && this.cur_select_btn.skeleton.skeletonData) {
|
this.cur_select_btn.skeleton.setAnimation(0, "action2", true);
|
}
|
} else {
|
btn_object.normal.active = false
|
btn_object.selected.active = true
|
btn_object.btn.setPosition(btn_object.init_x, btn_object.init_y + 10)
|
}
|
}
|
|
// 设置选中的ui战斗类型,这里是需要记录的.要不然可能战斗和ui对不上
|
var fight_type = this.getUIFightByIndex(index);
|
this.mainui_controller.setUIFightType(fight_type);
|
},
|
|
// 根据主ui下面的标识,设置当前ui的战斗类型
|
getUIFightByIndex: function (index) {
|
switch (index) {
|
case MainUiConst.btn_index.main_scene:
|
return MainUiConst.ui_fight_type.main_scene;
|
case MainUiConst.btn_index.partner:
|
return MainUiConst.ui_fight_type.partner;
|
case MainUiConst.btn_index.backpack:
|
return MainUiConst.ui_fight_type.backpack;
|
case MainUiConst.btn_index.drama_scene:
|
return MainUiConst.ui_fight_type.drama_scene;
|
case MainUiConst.btn_index.esecsice:
|
return MainUiConst.ui_fight_type.esecsice;
|
case MainUiConst.btn_index.guild:
|
return MainUiConst.ui_fight_type.guild;
|
case MainUiConst.btn_index.hallows:
|
return MainUiConst.ui_fight_type.hallows;
|
default:
|
return MainUiConst.ui_fight_type.main_scene;
|
}
|
},
|
|
// 当前所处的主城主按钮标签
|
getMainUIIndex: function () {
|
return this.cur_select_index;
|
},
|
|
// 更新聊天num
|
updateChatMsgNum: function () {
|
var chat_model = ChatController.getInstance().getModel();
|
var red_num = chat_model.getUnreadNum();
|
if (red_num > 0) {
|
this.chat_red_bg.active = true;
|
if (red_num > 99)
|
red_num = "+99";
|
this.chat_red_num.string = red_num;
|
} else {
|
this.chat_red_bg.active = false;
|
}
|
},
|
|
// 更新角色数据
|
updateRoleData: function () {
|
this.updateRoleName();
|
this.updateRoleLev();
|
this.updateRoleCoin();
|
this.updateRoleGold();
|
this.updateRolePower();
|
this.updateRoleHead();
|
this.updateRoleVip();
|
this.updateRoleExp();
|
this.updateRoleHeadFrame();
|
},
|
|
updateRoleName: function () {
|
this.name_label.string = this.role_vo.name;
|
},
|
|
updateRoleLev: function () {
|
this.lev_label.string = this.role_vo.lev;
|
},
|
|
updateRoleCoin: function () {
|
this.coin_label.string = Utils.getMoneyString(this.role_vo.coin);
|
},
|
|
updateRoleGold: function () {
|
if (!this.is_hero_panel)
|
this.gold_label.string = Utils.getMoneyString(this.role_vo.gold);
|
},
|
|
updateRolePower: function () {
|
this.fight_label.string = this.role_vo.power;
|
},
|
|
updateRoleHead: function () {
|
this.player_head.setHeadRes(this.role_vo.face_id);
|
},
|
|
updateRoleHeadFrame: function () {
|
this.player_head.setFrameRes(this.role_vo.avatar_base_id);
|
},
|
|
updateRoleExp: function () {
|
if (this.role_vo == null || this.role_vo.exp == null || this.role_vo.exp_max == null) return
|
var pro = this.role_vo.exp / this.role_vo.exp_max;
|
this.exp_bar.scaleX = pro;
|
},
|
|
// 剧情章节变化的时候,开启下面图标
|
checkUnLockStatus: function (max_dun_id) {
|
if (max_dun_id == null) return;
|
this.max_dun_id = max_dun_id;
|
let is_unlock = false
|
for (let k = 0; k < this.bottom_btn_list.length; ++k) {
|
let btn = this.bottom_btn_list[k]
|
if (btn.config && btn.config.activate) {
|
let activate = btn.config.activate[0]
|
if (activate[0] == "dun") {
|
is_unlock = (max_dun_id >= activate[1])
|
if (is_unlock != btn.is_unlock) {
|
btn.is_unlock = is_unlock
|
if (btn.notice) {
|
btn.notice.active = (!is_unlock)
|
}
|
// if(is_unlock == false){
|
// setChildUnEnabled(true, btn)
|
// }else{
|
// setChildUnEnabled(false, btn)
|
// }
|
}
|
}
|
}
|
}
|
this.updateShenqi();
|
},
|
//升级的时候判断等级开启
|
checkUnLockStatusByLev(lev) {
|
if (this.role_vo == null) return;
|
let is_unlock = false
|
for (let k = 0; k < this.bottom_btn_list.length; ++k) {
|
let btn = this.bottom_btn_list[k]
|
if (btn.config && btn.config.activate) {
|
let activate = btn.config.activate[0]
|
if (activate[0] == "lev") {
|
is_unlock = (this.role_vo.lev >= activate[1])
|
if (is_unlock != btn.is_unlock) {
|
btn.is_unlock = is_unlock
|
if (btn.notice) {
|
btn.notice.active = (!is_unlock)
|
}
|
// if(is_unlock == false){
|
// setChildUnEnabled(true, btn)
|
// }else{
|
// setChildUnEnabled(false, btn)
|
// }
|
}
|
}
|
}
|
}
|
if (this.task_tips_panel == null) {
|
this.updateShenqi()
|
}
|
},
|
// ---------------------- 图标部分 start---------------------- --
|
//初始化技能图标列表
|
addIconList: function (list) {
|
if (list == null || Utils.next(list) == null) return;
|
for (var k in list) {
|
var vo = list[k];
|
if (vo != null && vo.config != null) {
|
if (!this.checkIconIn(vo.config.id)) {
|
|
this.render_list_dic[vo.config.id] = vo;
|
this.render_list.push(vo);
|
}
|
}
|
}
|
//这里先做一个排序
|
if (this.render_list != null && Utils.next(this.render_list != null)) {
|
this.render_list.sort(Utils.tableLowerSorter(["pos", "sort"]));
|
}
|
|
//开启计时器,准备创建图表f
|
if (this.add_function_timer == null) {
|
this.add_function_timer = gcore.Timer.set(function () {
|
this.createFunctionIcon();
|
}.bind(this), 2 / 60, -1)
|
}
|
},
|
|
//动态添加一个图标
|
addIcon: function (vo) {
|
if (vo == null || vo.config == null || this.checkIconIn(vo.config.id)) return
|
this.render_list_dic[vo.config.id] = vo;
|
this.render_list.push(vo);
|
this.render_list.sort(Utils.tableLowerSorter(["pos", "sort"]));
|
|
//开启计时器,准备创建图标
|
if (this.add_function_timer == null) {
|
this.add_function_timer = gcore.Timer.set(function () {
|
this.createFunctionIcon();
|
}.bind(this), 2 / 60, -1)
|
}
|
},
|
|
//监测一个图标是否存在
|
checkIconIn: function (id) {
|
if (this.function_list[id] != null || this.render_list_dic[id] != null) {
|
return true
|
}
|
return false
|
},
|
|
//动态移除一个图标
|
removeIcon: function (id) {
|
var config = gdata("function_data", "data_info", [id]);
|
if (config == null) return
|
if (this.function_list[id] != null) {
|
if (this.function_list[id].deleteMe) {
|
this.function_list[id].deleteMe();
|
this.function_list[id] = null;
|
}
|
}
|
for (var i in this.render_list) {
|
if (this.render_list[i].config.id == id) {
|
this.render_list.splice(i, 1);
|
break
|
}
|
}
|
this.render_list_dic[id] = null;
|
if (this.layout_list == null || this.layout_list[config.type] == null) return
|
for (var i in this.layout_list[config.type]) {
|
var v = this.layout_list[config.type][i];
|
if (v && v.config.id == id) {
|
this.layout_list[config.type].splice(i, 1);
|
break
|
}
|
}
|
this.updateIconLayout(config.type);
|
},
|
|
//创建一个图标
|
createFunctionIcon: function () {
|
if (!this.root_wnd) return;
|
if (this.render_list == null || Utils.next(this.render_list) == null) {
|
if (this.add_function_timer != null) {
|
gcore.Timer.del(this.add_function_timer);
|
this.add_function_timer = null;
|
}
|
return
|
}
|
// var data = this.render_list.shift();
|
var data = this.render_list.splice(0, 1)[0];
|
if (data == null) return
|
this.render_list_dic[data.config.id] = null;
|
//这类图标不需要在主界面显示
|
if (data.config && data.config.is_show == 0) return
|
this.addItemToTabArray(data);
|
},
|
|
//将图标添加到父节点容器
|
addItemToTabArray: function (data) {
|
if (data == null || data.config == null) return
|
if (this.layout_list == null) {
|
this.layout_list = {};
|
}
|
if (this.layout_list[data.config.type] == null) {
|
this.layout_list[data.config.type] = [];
|
}
|
var is_new = true;
|
for (var k in this.layout_list[data.config.type]) {
|
var v = this.layout_list[data.config.type][k];
|
if (v.config.id == data.config.id) {
|
v = data;
|
is_new = false;
|
break
|
}
|
}
|
data.is_new = is_new;
|
this.layout_list[data.config.type].push(data);
|
this.layout_list[data.config.type].sort(Utils.tableLowerSorter(["sort"]));
|
this.updateIconLayout(data.config.type);
|
},
|
|
//更新图标位置
|
updateIconLayout: function (type) {
|
if (this.layout_list == null || this.layout_list[type] == null || Utils.next(this.layout_list[type]) == null) return
|
var layout = this.getContainerByType(type);
|
if (layout == null) return
|
var len = Utils.getArrLen(this.layout_list[type]);
|
var icon = null;
|
for (let i = 0; i < len; i++) {
|
let data = this.layout_list[type][i];
|
if (data && data.config) {
|
if (this.function_list[data.config.id] == null) {
|
if (data.is_new == true) {
|
data.is_new = false;
|
var FunctionIcon = require("function_icon_panel");
|
icon = new FunctionIcon(data);
|
icon.show();
|
icon.setParent(layout);
|
this.function_list[data.config.id] = icon;
|
}
|
}
|
icon = this.function_list[data.config.id];
|
if (icon != null) {
|
this.setIconPosition(icon, i, layout, type)
|
}
|
}
|
}
|
if (this.root_wnd) {
|
this.updateHandleBtnShowStatus()
|
}
|
},
|
updateHandleBtnShowStatus() {
|
let right_bottom_1 = this.layout_list[FunctionIconVo.type.right_bottom_1]
|
let right_bottom_2 = this.layout_list[FunctionIconVo.type.right_bottom_2]
|
if (right_bottom_1 || right_bottom_2) {
|
if ((right_bottom_1 && right_bottom_1.length) || (right_bottom_2 && right_bottom_2.length)) {
|
this.handle_btn.active = true;
|
}
|
} else {
|
this.handle_btn.active = false;
|
}
|
},
|
//根据位置获取图标父节点信息
|
getContainerByType: function (type) {
|
if (this.icon_container_list != null) {
|
return this.icon_container_list[type];
|
}
|
},
|
|
//设置图标的位置
|
setIconPosition: function (icon, index, layout, type) {
|
var size = layout.getContentSize();
|
var _x = 0;
|
var _y = 0;
|
var off_height = 10;
|
if (type == FunctionIconVo.type.right_top_1) { // 右上,从右往左
|
_x = -icon.width * 0.5 - (index % this.left_max_sum) * (this.left_off + icon.width);
|
_y = -icon.height * 0.5 - Math.floor(index / this.left_max_sum) * (off_height + icon.height);
|
} else if (type == FunctionIconVo.type.right_bottom_1) { // 右下,从右往左
|
_x = -icon.width * 0.5 - (index % this.left_max_sum) * (this.left_off + icon.width);
|
} else if (type == FunctionIconVo.type.right_bottom_2) { // 右下,从下往上
|
_y = icon.height * 0.5 + index * (icon.height + this.right_off);
|
} else if (type == FunctionIconVo.type.right_top_2) { // 右上,从上往下
|
_x = -icon.width * 0.5;
|
_y = -icon.height * 0.5 - index * (icon.height + off_height);
|
}
|
if (icon.original == null || Utils.getNorKey(icon.original.x, icon.original.y) != Utils.getNorKey(_x, _y)) {
|
icon.setPosition(_x, _y);
|
icon.original = cc.v2(_x, _y);
|
}
|
|
//动态调整 right_top_2 的位置
|
var off_y = 0;
|
if (type == FunctionIconVo.type.right_top_1) {
|
off_y = Math.abs(_y - off_height - icon.height * 0.5); // 算出总高度
|
} else if (type == FunctionIconVo.type.right_top_2) {
|
var layout_list = this.layout_list[FunctionIconVo.type.right_top_1];
|
if (layout_list) {
|
var len = Utils.getArrLen(layout_list);
|
var temp_y = icon.height * 0.5 - Math.ceil(len / this.left_max_sum) * (off_height + icon.height);
|
off_y = Math.abs(temp_y - off_height - icon.height * 0.5);
|
}
|
}
|
if (off_y != 0 && this.top_2_off_y != off_y) {
|
this.top_2_off_y = off_y;
|
var top_1 = this.icon_container_list[FunctionIconVo.type.right_top_1];
|
var top_2 = this.icon_container_list[FunctionIconVo.type.right_top_2];
|
if (top_1 && top_2) {
|
top_2.y = top_1.y - off_y;
|
}
|
}
|
},
|
|
//定时器的统一倒计时
|
functionTimeTicketList: function () {
|
if (this.function_list && Utils.next(this.function_list) != null) {
|
for (var k in this.function_list) {
|
var icon = this.function_list[k];
|
if (icon && icon.data && icon.data.end_time && icon.data.end_time > 0) {
|
if (icon.updateTime) {
|
icon.updateTime();
|
}
|
}
|
}
|
}
|
if (this.action_list && Utils.next(this.action_list) != null) {
|
for (let i in this.action_list) {
|
let icon = this.action_list[i]
|
if (icon && icon.updateTime && icon.remain_sec && icon.remain_sec > 0) {
|
icon.updateTime()
|
}
|
}
|
}
|
},
|
|
//更新icon列表
|
functionUpdateList: function () {
|
if (this.function_list && Utils.next(this.function_list) != null) {
|
for (var k in this.function_list) {
|
var icon = this.function_list[k];
|
if (icon && icon.updateIconRes) {
|
icon.updateIconRes();
|
}
|
}
|
}
|
},
|
|
setBottomStatus: function (status) {
|
if (this.bottom_container)
|
this.bottom_container.active = status;
|
},
|
|
setTopStatus: function (status) {
|
if (this.top_container)
|
this.top_container.active = status;
|
},
|
|
updateRoleVip: function () {
|
this.vip_label.setNum(this.role_vo.vip_lev);
|
},
|
|
// --==============================--
|
// --@id:下面按钮序号
|
// --@data:data 可以是单纯bool值,或者是table形式{[1]={id=xxx,status=false}}
|
// --@return
|
// --==============================--
|
updateBtnTipsPoint: function (id, data) {
|
if (!this.bottom_btn_list[id]) return;
|
if (data == null) {
|
this.btn_cache_tips[id] = null;
|
} else {
|
if (typeof (data) != "object") {
|
this.btn_cache_tips[id] = data;
|
} else {
|
if (this.btn_cache_tips[id] == null) {
|
this.btn_cache_tips[id] = {};
|
}
|
if (data.bid != null) {
|
this.btn_cache_tips[id][data.bid] = data.status;
|
} else {
|
for (var i in data) {
|
if (data[i].bid != null) {
|
this.btn_cache_tips[id][data[i].bid] = data[i].status;
|
}
|
}
|
}
|
}
|
}
|
|
var bool = false;
|
if (this.btn_cache_tips[id]) {
|
if (typeof (this.btn_cache_tips[id]) == "object") {
|
for (var i in this.btn_cache_tips[id]) {
|
if (this.btn_cache_tips[id][i] == true) {
|
bool = true;
|
break;
|
}
|
}
|
} else {
|
bool = this.btn_cache_tips[id];
|
}
|
}
|
var btn_object = this.bottom_btn_list[id];
|
if (btn_object && btn_object.tips_status != bool) {
|
btn_object.tips_status = bool;
|
if (btn_object.tips_point) {
|
btn_object.tips_point.active = bool;
|
}
|
}
|
},
|
|
getRootWnd: function (cb) {
|
this.root_wnd_cb = cb;
|
if (this.root_wnd)
|
this.root_wnd_cb(this.root_wnd);
|
},
|
|
// ---------------------- 图标部分 end---------------------- --
|
//收缩右下角的图标
|
shrinkBtnContainer: function () {
|
if (this.is_in_shrink == true) return
|
this.is_in_shrink = true;
|
|
var layout_1 = this.icon_container_list[FunctionIconVo.type.right_bottom_1];
|
var layout_2 = this.icon_container_list[FunctionIconVo.type.right_bottom_2];
|
this.is_shrink = !this.is_shrink;
|
|
layout_1.active = true;
|
layout_2.active = true;
|
|
var len = 100;
|
var move_by_1 = null;
|
var move_by_2 = null;
|
var fade_1 = null;
|
var fade_2 = null;
|
|
if (this.is_shrink == true) {
|
move_by_1 = cc.moveBy(0.1, cc.v2(len, 0));
|
move_by_2 = cc.moveBy(0.1, cc.v2(0, -len));
|
fade_1 = cc.fadeOut(0.1);
|
fade_2 = cc.fadeOut(0.1);
|
} else {
|
move_by_1 = cc.moveBy(0.1, cc.v2(-len, 0));
|
move_by_2 = cc.moveBy(0.1, cc.v2(0, len));
|
fade_1 = cc.fadeIn(0.1);
|
fade_2 = cc.fadeIn(0.1);
|
}
|
|
var call_fun_1 = cc.callFunc(function () {
|
this.is_in_shrink = false;
|
if (this.is_shrink == true) {
|
layout_1.active = false;
|
}
|
}.bind(this))
|
var call_fun_2 = cc.callFunc(function () {
|
if (this.is_shrink == true) {
|
layout_2.active = false;
|
}
|
}.bind(this))
|
layout_1.runAction(cc.sequence(cc.spawn(move_by_1, fade_1), call_fun_1));
|
layout_2.runAction(cc.sequence(cc.spawn(move_by_2, fade_2), call_fun_2));
|
},
|
|
|
showPower: function (power_add, last_power) {
|
if (!power_add || !last_power) return;
|
if (this.power_show_nd == null) {
|
LoaderManager.getInstance().loadRes(PathTool.getPrefabPath("mainui", "power_show"), function (Prefab) {
|
if (this.power_show_nd) {
|
this.runPowerAction(power_add, last_power);
|
return
|
}
|
this.power_show_nd = Prefab;
|
ViewManager.getInstance().addToSceneNode(this.power_show_nd, SCENE_TAG.dialogue)
|
this.power_show_nd.setPosition(-SCREEN_WIDTH * 0.5, -SCREEN_HEIGHT * 0.5)
|
let power_show_nd = this.power_show_nd.getChildByName("container")
|
this.power_show_nd.power_sk = power_show_nd.getChildByName("ani_con").getComponent(sp.Skeleton)
|
let tex_con_nd = power_show_nd.getChildByName("txt_con");
|
this.power_show_nd.old_power_rb = tex_con_nd.getChildByName("old_power").getComponent(cc.RichText);
|
if (cc.sys.browserType == cc.sys.BROWSER_TYPE_IE) {
|
this.power_show_nd.old_power_rb.lineHeight = 60;
|
}
|
this.power_show_nd.add_power_lb = tex_con_nd.getChildByName("add_power").getComponent(cc.Label);
|
var anima_res = PathTool.getEffectRes(179);
|
var anima_path = PathTool.getSpinePath(anima_res);
|
LoaderManager.getInstance().loadRes(anima_path, function (power_sd) {
|
this.power_show_nd.power_sk.skeletonData = power_sd;
|
this.runPowerAction(power_add, last_power);
|
}.bind(this))
|
}.bind(this))
|
} else {
|
this.runPowerAction(power_add, last_power);
|
}
|
|
// this.power_show_nd = this.root_wnd.getChildByName("power_show");
|
// this.power_sk = this.power_show_nd.getChildByName("ani_con").getComponent(sp.Skeleton);
|
// var tex_con_nd = this.power_show_nd.getChildByName("txt_con");
|
// this.old_power_rb = tex_con_nd.getChildByName("old_power").getComponent(cc.RichText);
|
// this.add_power_lb = tex_con_nd.getChildByName("add_power").getComponent(cc.Label);
|
// if (this.power_sk.skeletonData) {
|
// this.runPowerAction(power_add, last_power);
|
// } else {
|
// var anima_res = PathTool.getEffectRes(179);
|
// var anima_path = PathTool.getSpinePath(anima_res);
|
// LoaderManager.getInstance().loadRes(anima_path, function(power_sd) {
|
// this.power_sk.skeletonData = power_sd;
|
// this.runPowerAction(power_add, last_power);
|
// }.bind(this))
|
// }
|
},
|
|
runPowerAction: function (power_add, last_power) {
|
this.power_show_nd.power_sk.setAnimation(0, "action", false);
|
|
if (this.add_timer) {
|
gcore.Timer.del(this.add_timer);
|
this.add_timer = null;
|
}
|
this.power_show_nd.stopAllActions();
|
|
var last_power_str = last_power + "";
|
var last_power_ds = "";
|
if(cc.sys.browserType == cc.sys.BROWSER_TYPE_IE){
|
last_power_ds = last_power_str;
|
}else{
|
for (var item_i in last_power_str) {
|
last_power_ds += "<img src='type23_" + last_power_str[item_i] + "'/>"
|
}
|
}
|
this.calcu_num = 0;
|
this.add_timer = gcore.Timer.set(function (power_add) {
|
this.calcu_num += 1;
|
if (this.calcu_num < 5) {
|
this.power_show_nd.add_power_lb.string = "+" + Math.ceil(this.calcu_num * 0.2 * power_add);
|
} else {
|
this.power_show_nd.add_power_lb.string = "+" + power_add;
|
}
|
}.bind(this, power_add), 200, 5)
|
|
|
this.power_show_nd.old_power_rb.string = last_power_ds;
|
this.power_show_nd.opacity = 255;
|
|
console.log("输出字符串", this.power_show_nd.old_power_rb.string);
|
console.log("输出字符串", last_power_ds);
|
|
var delay_time = new cc.delayTime(1);
|
var action = new cc.fadeOut(1);
|
var finish_cb = new cc.callFunc(function () {
|
if (this.add_timer) {
|
gcore.Timer.del(this.add_timer);
|
this.add_timer = null;
|
}
|
if (this.power_show_nd) {
|
this.power_show_nd.destroy()
|
this.power_show_nd = null;
|
}
|
}.bind(this));
|
var power_act = cc.sequence(delay_time, action, finish_cb);
|
this.power_show_nd.runAction(power_act);
|
},
|
|
updateHeroExp: function () {
|
if (this.is_hero_panel)
|
this.gold_label.string = Utils.getMoneyString(this.role_vo.hero_exp);
|
},
|
|
changeHeroStatus: function (is_hero) {
|
this.is_hero_panel = is_hero;
|
if (is_hero) {
|
LoaderManager.getInstance().loadRes(PathTool.getItemRes("22"), function (res) {
|
this.gold_sp.spriteFrame = res;
|
}.bind(this))
|
this.gold_label.string = Utils.getMoneyString(this.role_vo.hero_exp);
|
} else {
|
LoaderManager.getInstance().loadRes(PathTool.getItemRes("3"), function (res) {
|
this.gold_sp.spriteFrame = res
|
}.bind(this))
|
this.gold_label.string = Utils.getMoneyString(this.role_vo.gold);
|
}
|
},
|
creatorChatBtn() {
|
this.chat_btn_nd = new cc.Node("chat_btn");
|
let widget = this.chat_btn_nd.addComponent(cc.Widget)
|
widget.isAlignBottom = true
|
widget.bottom = 367;
|
this.chat_btn_nd.x = 317
|
ViewManager.getInstance().addToSceneNode(this.chat_btn_nd, SCENE_TAG.top);
|
let btn = this.chat_btn_nd.addComponent(cc.Button);
|
btn.transition = cc.Button.Transition.SCALE;
|
btn.zoomScale = 0.9;
|
btn.duration = 0.1;
|
LoaderManager.getInstance().loadRes(PathTool.getUIIconPath("mainui", "mainui_chat_main_icon"), (function (res_object) {
|
this.chat_btn_nd.addComponent(cc.Sprite).spriteFrame = res_object;
|
}).bind(this));
|
this.chat_red_bg = new cc.Node("chat_red_bg");
|
LoaderManager.getInstance().loadRes(PathTool.getUIIconPath("mainui", "mainui_1034"), (function (res_object) {
|
this.chat_red_bg.addComponent(cc.Sprite).spriteFrame = res_object;
|
}).bind(this));
|
this.chat_btn_nd.addChild(this.chat_red_bg);
|
this.chat_red_bg.setPosition(23, 25);
|
this.chat_red_bg.active = false;
|
this.chat_red_num = new cc.Node("chat_red_num").addComponent(cc.Label);
|
this.chat_red_num.fontSize = 18;
|
this.chat_red_num.lineHeight = 18;
|
this.chat_red_num.horizontalAlign = cc.macro.TextAlignment.CENTER;
|
this.chat_red_num.verticalAlign = cc.macro.TextAlignment.CENTER;
|
this.chat_red_bg.addChild(this.chat_red_num.node)
|
let touch_began = cc.v2()
|
let is_move = false;
|
this.chat_btn_nd.on("touchstart", function (event) {
|
is_move = false
|
touch_began = event.getLocation()
|
}, this)
|
this.chat_btn_nd.on("touchmove", function (event) {
|
let pos = event.getLocation()
|
if (!is_move) {
|
let is_click = Math.abs(pos.x - touch_began.x) <= 30 && Math.abs(pos.y - touch_began.y) <= 30
|
if (is_click == false) {
|
is_move = true;
|
}
|
}
|
if (is_move) {
|
pos = ViewManager.getInstance().getSceneNode(SCENE_TAG.top).convertToNodeSpaceAR(pos)
|
if (!this.checkPosInRect(pos)) return
|
this.chat_btn_nd.setPosition(pos)
|
}
|
}, this)
|
this.chat_btn_nd.on("touchend", function (event) {
|
if (is_move == false) {
|
Utils.playButtonSound(1)
|
var ChatCtrl = require("chat_controller");
|
ChatCtrl.getInstance().openChatPanel();
|
this.showChatBtn(false)
|
}
|
}, this)
|
let GuideController = require("guide_controller")
|
if (GuideController.getInstance().isInGuide()) {
|
this.setMainUIChatBubbleStatus(false)
|
}
|
},
|
setMainUIChatBubbleStatus(status) {
|
this.chat_bubble_status = status
|
this.chat_btn_nd.stopAllActions()
|
if (status) {
|
this.root_wnd.runAction(cc.sequence(cc.delayTime(0.2), cc.callFunc(function () {
|
if (this.chat_bubble_status == true) {
|
this.showChatBtn(this.chat_bubble_status)
|
}
|
}, this)))
|
} else {
|
this.showChatBtn(this.chat_bubble_status)
|
}
|
},
|
checkPosInRect(pos) {
|
// let width = cc.winSize.width > SCREEN_WIDTH ? SCREEN_WIDTH : cc.winSize.width;
|
// let size = cc.size(width,cc.winSize.height)
|
let size = this.root_wnd.getContentSize()
|
let left_x = -(size.width / 2) + 40
|
let right_x = size.width / 2 - 40
|
let top_y = size.height / 2 - (this.top_container.height + 60)
|
let bottom_y = -(size.height / 2) + (this.bottom_container.height + 60)
|
if (pos.x < left_x) return false
|
if (pos.y < bottom_y) return false
|
if (pos.x > right_x) return false
|
if (pos.y > top_y) return false
|
return true
|
},
|
showChatBtn(status) {
|
if (this.chat_btn_nd) {
|
this.chat_btn_nd.active = status
|
}
|
},
|
// 检测是否有新的气泡提示
|
checkShowNewPromptBubble() {
|
let model = PromptController.getInstance().getModel()
|
let data = model.getNotBubblePrompt()
|
if (data) {
|
this.showPromptBubble(data)
|
}
|
let list = model.getPromptList()
|
if (Utils.getArrLen(list) > 0) {
|
this.showPromptTips(true, list)
|
}
|
},
|
// -- 显示系统提示气泡
|
showPromptBubble(data) {
|
if (data) {
|
data.setShowBubbleStatus(true)
|
this.prompt_bubble_layout.stopAllActions()
|
this.prompt_tips_btn.active = (true)
|
this.prompt_bubble_layout.active = (true)
|
this.prompt_desc.string = (data.name)
|
this.prompt_desc._updateRenderData(true)
|
let size = this.prompt_desc.node.getContentSize()
|
this.prompt_bubble.setContentSize(cc.size(size.width + 60, this.prompt_bubble_size.height))
|
|
let fadein = cc.fadeIn(0.7)
|
let fadeout = cc.fadeOut(0.7)
|
this.prompt_bubble_layout.runAction(cc.sequence(fadein, fadeout))
|
}
|
},
|
// -- 显示系统提示
|
showPromptTips(status, list) {
|
cc.log(status, list, "showPromptTips")
|
if (status == true && list && Utils.next(list) != null) {
|
this.prompt_tips_btn.active = (true)
|
this.prompt_tips_scroll.destroyAllChildren()
|
let max_width = 0
|
for (let k = 0; k < list.length; ++k) {
|
let v = list[k]
|
this.count_size_label.string = (v.name)
|
this.count_size_label._updateRenderData(true)
|
let size = this.count_size_label.node.getContentSize()
|
if (max_width < size.width) {
|
max_width = size.width
|
}
|
}
|
if (max_width < 168) {
|
max_width = 168 //原本的大小
|
}
|
// --字的宽度和按钮的宽度相差20
|
max_width = max_width + 20
|
|
let len = Utils.getArrLen(list)
|
let button_height = 49
|
let button_height_space = 12
|
let res = PathTool.getUIIconPath("mainui", "mainui_tips_bg1")
|
let max_height = Math.max(this.prompt_tips_scroll_size.height, len * (button_height_space + button_height))
|
let scroll_height = Math.min(len * (button_height_space + button_height), 160)
|
|
// --根据大小调整下scroll和背景大小
|
let tips_scroll_width = max_width + 4
|
let tips_bg_width = tips_scroll_width + (this.prompt_tips_bg_size.width - this.prompt_tips_scroll_size.width)
|
this.prompt_tips_scroll.setContentSize(cc.size(tips_scroll_width, scroll_height))
|
// this.prompt_tips_scroll:setInnerContainerSize(cc.size(tips_scroll_width, scroll_height))
|
this.prompt_tips_bg.setContentSize(cc.size(tips_bg_width, scroll_height + 60))
|
|
if (scroll_height > 160) {
|
this.prompt_tips_scroll.setContentSize(cc.size(tips_scroll_width, max_height))
|
}
|
for (let i = 0; i < list.length; ++i) {
|
let v = list[i]
|
let item = new cc.Node()
|
let image = item.addComponent(cc.Sprite)
|
image.type = cc.Sprite.Type.SLICED;
|
image.sizeMode = cc.Sprite.SizeMode.CUSTOM;
|
item.setPosition(tips_scroll_width / 2, 5 + (button_height_space + button_height) * i)
|
item.setContentSize(cc.size(max_width, button_height))
|
item.setAnchorPoint(0.5, 0)
|
LoaderManager.getInstance().loadRes(res, function (SpriteFrame) {
|
image.spriteFrame = SpriteFrame;
|
}.bind(this))
|
this.prompt_tips_scroll.addChild(item)
|
let label = new cc.Node().addComponent(cc.Label)
|
label.node.color = new cc.Color().fromHEX(Config.color_data.data_color16[175])
|
label.string = v.name;
|
label.fontSize = 22;
|
label.lineHeight = 26;
|
label.node.y = button_height / 2
|
item.addChild(label.node)
|
let btn = item.addComponent(cc.Button)
|
btn.transition = cc.Button.Transition.SCALE;
|
btn.duration = 0.1;
|
btn.zoomScale = 0.9;
|
item.on('touchend', function () {
|
this.prompt_mask.active = false;
|
this.mainui_controller.onClickPromptTipsItem(v)
|
this.prompt_tips_layout.active = (false)
|
}, this)
|
}
|
|
} else {
|
this.prompt_tips_btn.active = (false)
|
this.prompt_tips_layout.active = (false)
|
if (this.prompt_mask) {
|
this.prompt_mask.active = (false)
|
}
|
}
|
},
|
_onClickPromptTips() {
|
if (this.prompt_tips_layout.active) {
|
this.prompt_tips_layout.active = false;
|
if (this.prompt_mask) {
|
this.prompt_mask.active = false;
|
}
|
} else {
|
this.prompt_tips_layout.active = (true)
|
if (this.prompt_mask) {
|
this.prompt_mask.active = true;
|
}
|
}
|
},
|
//创建深海小程序客服浮标
|
creatorCustomerServiceBtn: function () {
|
if (this.customer_service) {
|
this.customer_service.deleteMe();
|
this.customer_service = null;
|
}
|
this.customer_service = Utils.createClass("customer_service_window");
|
var container = require("viewmanager").getInstance().getSceneNode(SCENE_TAG.loading);
|
|
this.customer_service.setParent(container);
|
this.customer_service.show();
|
},
|
|
|
});
|
|
module.exports = MainUIView;
|