"use strict";
cc._RF.push(module, '9d519STSvhOj6I6XYU/K6r2', 'action_acc_level_up_gift_panel');
// Scripts/mod/action/view/action_acc_level_up_gift_panel.js
"use strict";
// --------------------------------------------------------------------
// @author: xxx@syg.com(必填, 创建模块的人员)
// @description:
// 这里是描述这个窗体的作用的
//
Create: 2019-04-18 17:58:10
// --------------------------------------------------------------------
var PathTool = require("pathtool");
var TimeTool = require("timetool");
var ActionController = require("action_controller");
var ActionEvent = require("action_event");
var RoleController = require("role_controller");
var ActionAccLevelUpGiftPanel = cc.Class({
"extends": BasePanel,
ctor: function ctor() {
this.prefabPath = PathTool.getPrefabPath("action", "action_acc_level_up_gift_panel");
this.ctrl = ActionController.getInstance();
this.holiday_bid = arguments[0];
},
// 可以初始化声明一些变量的
initConfig: function initConfig() {
// --列表数据
this.cell_data_list = []; // --预制
this.cell_list = {};
this.rewardList = [];
},
// 初始化一些配置数据,可以用于声明一些变量之类的
initPanel: function initPanel() {
var self = this;
self.main_container = self.root_wnd.getChildByName("main_container");
self.title_con = self.main_container.getChildByName("title_con");
self.title_img = self.title_con.getChildByName("title_img");
var tab_vo = self.ctrl.getActionSubTabVo(self.holiday_bid);
if (tab_vo) {
if (tab_vo.aim_title == null || tab_vo.aim_title == "") {
tab_vo.aim_title = "txt_cn_action_acc_level_up_gift";
}
var path = PathTool.getUIIconPath("bigbg/action", tab_vo.aim_title);
this.loadRes(path, function (res) {
self.title_img.getComponent(cc.Sprite).spriteFrame = res;
}.bind(this));
}
self.charge_con_sv = this.seekChild("charge_con", cc.ScrollView);
var dec = self.title_con.getChildByName("dec");
dec.getComponent(cc.Label).string = "活动期间,玩家可领取已达档次奖励\n奖励限时限量,先到先得";
this.time_rt = self.title_con.getChildByName("time_node").getChildByName("time_lab").getComponent(cc.RichText);
self.setLessTime(tab_vo.remain_sec);
},
// 注册事件监听的接口,不需要手动调用,如果是使用gcore.GlobalEvent监听,可以直接调用addGlobalEvent
registerEvent: function registerEvent() {
this.addGlobalEvent(ActionEvent.UPDATE_LEVEL_UP_GIFT, function (data) {
if (data) {
this.setData(data);
}
}.bind(this));
this.ctrl.send21200();
},
// 预制体加载完成之后,添加到对应主节点之后的回调可以设置一些数据了
onShow: function onShow(params) {},
// 面板设置不可见的回调,这里做一些不可见的屏蔽处理
onHide: function onHide() {},
setData: function setData(data) {
this.cell_data_list = [];
var self = this;
var is_redpoint = false;
for (var i = 0; i < data.gifts.length; ++i) {
var v = data.gifts[i];
var config = gdata("lev_gift_data", "data_level_welfare", v.id);
if (config) {
var _data = {};
_data.id = v.id;
_data.config = config;
self.cell_data_list.push(_data);
} //--status 0:不能领取, 1:可领取, 2:已领取
if (self.cell_data_list[i]) {
if (v.status == 1 && v.num >= self.cell_data_list[i].config.num) {
// --已领数量已经满了 也算不能领取
v.status = 4;
}
if (v.status == 0) {
//--不可领取
self.cell_data_list[i].order = 2;
} else if (v.status == 4) {
//--可领取但是已经没有得领取了
self.cell_data_list[i].order = 3;
v.status = 0;
} else if (v.status == 2) {
// --已领取
self.cell_data_list[i].order = 4;
} else {
// --可领取
self.cell_data_list[i].order = 1;
}
self.cell_data_list[i].status = v.status; //--状态
// --判定是否有红点
if (!is_redpoint && v.status == 1) {
is_redpoint = true;
}
self.cell_data_list[i].num = v.num; //--全服数量
}
}
self.cell_data_list.sort(Utils.tableLowerSorter(["order"], ["id"]));
this.ctrl.setHolidayStatus(self.holiday_bid, is_redpoint);
self.updateScrollviewList();
},
updateScrollviewList: function updateScrollviewList() {
var _this = this;
this.charge_con_sv.content.height = this.cell_data_list.length * 150;
var _loop = function _loop(i) {
var k = _this.cell_data_list[i];
if (_this.cell_list[k.id] == null) {
Utils.delayRun(_this.charge_con_sv.content, i / 30, function () {
this.loadRes(PathTool.getPrefabPath("action", "action_acc_level_up_gift_item"), function (Prefab) {
var node = Prefab;
this.charge_con_sv.content.addChild(node);
var cellView = node.getChildByName("main_container").getChildByName("item_scrollview").getComponent(cc.ScrollView);
var offsetX = 10;
var scale = 0.8;
var width = 120;
cellView.content.widht = width * scale * k.config.reward.length + (k.config.reward.length - 1 * offsetX);
var item_count = k.config.reward.length;
if (item_count <= 4) {
cellView.enabled = false;
} else {
cellView.enabled = true;
}
node.getChildByName("main_container").getChildByName("btn_go").on("click", function () {
Utils.playButtonSound(1);
this.setCellTouched(k.id);
}, this);
var arr = [];
for (var j = 0; j < k.config.reward.length; ++j) {
var v = k.config.reward[j];
var item_node = ItemsPool.getInstance().getItem("backpack_item");
item_node.setDefaultTip();
item_node.setPosition(width / 2 + j * (width + offsetX) * scale, 0);
item_node.setParent(cellView.content);
item_node.initConfig(false, scale, false, true);
item_node.show();
item_node.setData({
bid: v[0],
num: v[1]
});
arr.push(item_node);
}
this.cell_list[k.id] = node;
this.setCellByIndex(node, k);
this.updateCellByIndex(node, i);
this.rewardList.push(arr);
}.bind(this));
}.bind(_this));
} else {
_this.updateCellByIndex(_this.cell_list[k.id], i);
}
};
for (var i = 0; i < this.cell_data_list.length; ++i) {
_loop(i);
}
},
setCellTouched: function setCellTouched(id) {
for (var i = 0; i < this.cell_data_list.length; ++i) {
var v = this.cell_data_list[i];
if (v.id == id) {
if (v.status == 1) {
this.ctrl.send21201(id);
}
break;
}
}
},
setCellByIndex: function setCellByIndex(cell, data) {
var cell_data = data;
if (!cell_data) return;
var config = cell_data.config; // --角色等级
var role_vo = RoleController.getInstance().getRoleVo();
var lev = role_vo && role_vo.lev || 0;
var levStr;
var main_container = cell.getChildByName("main_container");
var title = main_container.getChildByName("title");
if (lev >= config.lev) {
title.color = new cc.Color(44, 125, 8);
levStr = "达到" + config.lev + "级 (" + config.lev + "/" + config.lev + ")";
} else {
title.color = new cc.Color(90, 58, 51);
levStr = "达到" + config.lev + "级 (" + lev + "/" + config.lev + ")";
}
title.getComponent(cc.Label).string = levStr;
},
updateCellByIndex: function updateCellByIndex(cell, index) {
cell.y = -cell.height / 2 - index * cell.height;
var cell_data = this.cell_data_list[index];
var btn_go = cell.getChildByName("main_container").getChildByName("btn_go");
var pic_has = cell.getChildByName("main_container").getChildByName("pic_has");
var config = cell_data.config; // --按钮
if (cell_data.status == 0) {
// --不可领取
btn_go.active = true;
pic_has.active = false;
Utils.setGreyButton(btn_go.getComponent(cc.Button), true);
btn_go.getChildByName("Label").color = new cc.Color(255, 255, 255);
} else if (cell_data.status == 1) {
// --可以领取
btn_go.active = true;
pic_has.active = false;
Utils.setGreyButton(btn_go.getComponent(cc.Button), false);
btn_go.getChildByName("Label").color = new cc.Color(37, 85, 6);
} else {
// --已领取
btn_go.active = false;
pic_has.active = true;
}
var portion_count = cell.getChildByName("main_container").getChildByName("portion_count"); // --领取数量
var count = config.num - cell_data.num;
if (count < 0) {
count = 0;
}
portion_count.getComponent(cc.Label).string = "还剩" + count + "份";
},
setVisibleStatus: function setVisibleStatus(bool) {
bool = bool || false;
this.setVisible(bool);
},
setLessTime: function setLessTime(less_time) {
if (!this.time_rt) {
return;
}
less_time = less_time || 0;
if (less_time > 0) {
this.setTimeFormatString(less_time);
if (this.time_tichet == null) {
this.time_tichet = gcore.Timer.set(function () {
less_time--;
this.setTimeFormatString(less_time);
if (less_time <= 0) {
gcore.Timer.del(this.time_tichet);
this.time_tichet = null;
}
}.bind(this), 1000, -1);
}
} else {
this.setTimeFormatString(less_time);
}
},
setTimeFormatString: function setTimeFormatString(time) {
var self = this;
if (time > 0) {
var str = "剩余时间:" + TimeTool.getTimeFormatDayIIIIII(time) + "";
self.time_rt.string = str;
} else {
self.time_rt.string = "";
}
},
// 当面板从主节点释放掉的调用接口,需要手动调用,而且也一定要调用
onDelete: function onDelete() {
if (this.time_tichet) {
gcore.Timer.del(this.time_tichet);
this.time_tichet = null;
}
if (this.cell_list) {
for (var i = 0; i < this.rewardList.length; ++i) {
for (var j = 0; j < this.rewardList[i].length; ++j) {
if (this.rewardList[i][j].deleteMe) {
this.rewardList[i][j].deleteMe();
}
}
}
}
}
});
cc._RF.pop();