SamsaraGame/Welfare.ts.bak

1467 lines
52 KiB
TypeScript
Raw Permalink Normal View History

2025-04-24 16:57:46 +08:00
import AudioUtil from "../core/AudioUtil";
import GameModel from "../core/GameModel";
import ItemUtil from "../core/ItemUtil";
import MsgAlert from "../game/msg/MsgAlert";
import DugMgr from "../game/role/DugMgr";
import VIPUtil from "../game/role/VIPUtil";
import FGAlert from "../gear_2.3.4/fgui/FGAlert";
import FGUtil from "../gear_2.3.4/fgui/FGUtil";
import SKDataUtil from "../gear_2.3.4/util/SKDataUtil";
import SKUIUtil from "../gear_2.3.4/util/SKUIUtil";
import RechargeReward from "../rechargeReward/RechargeReward";
import GameUtil from "../core/GameUtil";
import Shop from "../Shop";
const { ccclass, property } = cc._decorator;
@ccclass
export default class Welfare extends cc.Component {
/**
*
*/
public static Instance: Welfare = null;
static vipBtnStart: number = 6;//VIP等级按钮起始下标
static maxMenuBtnNum: number = 20;//按钮列表数量
/**
*
*/
welfarePanel: fgui.GComponent = null;
/**
*
*/
firstChargeView: fgui.GComponent = null;
/**
*
*/
dayChargeView: fgui.GComponent = null;
//累计充值面板
totalChargeView: fgui.GComponent = null;
/**
*
*/
signInView: fgui.GComponent = null;
/**
*
*/
levelRewardView: fgui.GComponent = null;
levelRewardData: any = [];
/**
*
*/
vipView: fgui.GComponent = null;
/**
* VIP等级按钮
*/
showVIPLeveListBtn: boolean = false;
/**
*
*/
dugView: fgui.GComponent = null;
isDug: boolean = false;
/**
*
*/
giftCodeView: fgui.GComponent = null;
/**
*
*/
bindUserView: fgui.GComponent = null;
/**
*
*/
rewardPanel: fgui.GComponent = null;
isRewarding: boolean = false;
dayMap: any = null;
stopTap: boolean = false;
/**
*
*/
prefabObject: any = {};
select_level: number = 0;
onLoad() {
if (Welfare.Instance === null) {
Welfare.Instance = this;
this.loadPrefab();
} else {
this.destroy();
return;
}
}
/**
*
*/
loadPrefab() {
// 加载所需的预制体
var prefabList = [
{ url: "Prefabs/particle", name: "particle" },
{ url: "Prefabs/BagItemDetail", name: "BagItemDetail" },
{ url: "Prefabs/dragonBones", name: "dragonBones" },
{ url: "Prefabs/Photo1102", name: "Photo1102" }
]
this.prefabObject = {}
for (let item of prefabList) {
cc.loader.loadRes(item.url, cc.Prefab, (err, prefab) => {
if (err)
console.warn(err);
else {
this.prefabObject[item.name] = prefab;
}
})
}
}
openWelfareByAsync() {
let handler = new fgui.AsyncOperation();
handler.createObject("main_ui", "welfare_main_new",);
handler.callback = (obj) => {
this.openWelfare(obj)
}
}
/**
*
*/
openWelfare(obj) {
console.log("openWelfare")
if (obj) {
this.welfarePanel = obj.asCom;
FGUtil.root().addChild(this.welfarePanel);
this.welfarePanel.makeFullScreen();
} else {
if (!this.welfarePanel || (this.welfarePanel && !this.welfarePanel.node && !SKUIUtil.isValid(this.welfarePanel.node))) {
this.welfarePanel = FGUtil.create("main_ui", "welfare_main_new");
FGUtil.root().addChild(this.welfarePanel);
this.welfarePanel.makeFullScreen();
}
}
console.log("openWelfare1111")
// 关闭按钮
let mask = FGUtil.getButton(this.welfarePanel, "mask")
let closeBtn = FGUtil.getComponent(this.welfarePanel, "alert/close_btn")
this.pushCloseEvent(mask, this.welfarePanel);
this.pushCloseEvent(closeBtn, this.welfarePanel);
if (this.dayMap == null) {
if (GameModel.player.dayMap != null) {
this.dayMap = SKDataUtil.clone(GameModel.player.dayMap);
GameModel.player.dayMap = null;
}
else
this.dayMap = {};
}
// 隐藏VIP等级按钮
// this.hideVIPBtnList();
console.log("hideBtn")
// 动态隐藏按钮
this.hideBtn();
console.log("openFirstChargeView")
// 默认打开首充面板
this.openFirstChargeView();
this.initEvent();
// 请求每日签到数据,显示签到提示
GameModel.send(`c2c_sign_in`, { roleId: GameModel.player.roleid });
GameModel.send(`c2s_bindinfo`, { roleId: GameModel.player.roleid });
this.showLevelRewardTip();
}
showDailySignInTip(data) {
if (!SKUIUtil.isFGUIValid(this.welfarePanel)) return;
// 根据当日有无签到显示圆点
let menuList = FGUtil.getList(this.welfarePanel, "alert/welfare/menu_list");
let listData = JSON.parse(data.signInData);
let today = data.day;
menuList.getChildAt(3).asCom.getController("showDot").selectedIndex = listData[today - 1].flag == 0 ? 1 : 0;
}
showLevelRewardTip() {
var showDot = false;
let dataList: any = Object.values(SKDataUtil.clone(GameModel.conf_level));
for (let i in dataList) {
// 奖励道具
let cur_level = GameModel.player.level + '';
let level_reward = GameModel.player.level_reward.split(':');
if (cur_level >= dataList[i].level) {
if (level_reward.indexOf(dataList[i].level + '') == -1) {
showDot = true;
}
}
}
// 根据有无可领取奖励显示圆点
let menuList = FGUtil.getList(this.welfarePanel, "alert/welfare/menu_list");
menuList.getChildAt(4).asCom.getController("showDot").selectedIndex = showDot ? 1 : 0;
}
initEvent() {
// 按钮列表
let menuList = FGUtil.getList(this.welfarePanel, "alert/welfare/menu_list");
console.log("11111111")
// 首充奖励按钮
menuList.getChildAt(0).onClick(this.openFirstChargeView, this);
console.log("22222222")
// 每日首充按钮
menuList.getChildAt(1).onClick(this.openDayFirstChargeView, this);
console.log("33333333")
// 累计充值按钮
menuList.getChildAt(2).onClick(this.openTotalChargeView, this);
console.log("44444444")
// 每日签到按钮
menuList.getChildAt(3).onClick(this.openSignInView, this);
console.log("55555555")
// 等级奖励按钮
menuList.getChildAt(4).onClick(this.openLevelRewardView, this)
console.log("66666666")
// vip等级列表按钮
menuList.getChildAt(5).onClick(this.openVipView, this)
console.log("77777777")
// VIP等级按钮
this.select_level = 0
for (let i = Welfare.vipBtnStart; i < Welfare.vipBtnStart + 11; i++) {
menuList.getChildAt(i).clearClick();
menuList.getChildAt(i).onClick(() => {
this.selectVIPBtn(i);
})
}
console.log("8888888")
// 蓝色的梦按钮
menuList.getChildAt(17).onClick(this.openDugView, this);
console.log("99999999")
// 礼包激活码
menuList.getChildAt(18).onClick(this.openGiftPackCodeView, this);
console.log("AAAAAAA")
// 礼包激活码
menuList.getChildAt(19).onClick(this.openBindUserView, this)
// 累充奖励
// menuList.getChildAt(20).onClick(this.openRewardPanel, this)
console.log("BBBBBBBBBB")
}
selectBtn(idx) {
// 按钮列表
let menuList = FGUtil.getList(this.welfarePanel, "alert/welfare/menu_list");
for (let i = 0; i <= Welfare.maxMenuBtnNum; i++) {
// for (let i = 0; i <= 6; i++) {
if (i >= Welfare.vipBtnStart && i < Welfare.vipBtnStart + 11) continue;
if (i == idx)
menuList.getChildAt(i).asCom.getController("selected").selectedIndex = 1;
else
menuList.getChildAt(i).asCom.getController("selected").selectedIndex = 0;
}
this.hideVIPBtnList();
}
showVIPBtnList() {
this.showVIPLeveListBtn = true;
let menuList = FGUtil.getList(this.welfarePanel, "alert/welfare/menu_list");
for (let i = Welfare.vipBtnStart; i < Welfare.vipBtnStart + 11; i++) {
menuList.getChildAt(i).visible = true;
}
}
/**
* VIP等级按钮
*/
hideVIPBtnList() {
if (!this.welfarePanel || !this.welfarePanel.node) {
console.warn("未找到奖励主面板");
return;
}
this.showVIPLeveListBtn = false;
let menuList = FGUtil.getList(this.welfarePanel, "alert/welfare/menu_list");
for (let i = Welfare.vipBtnStart; i < Welfare.vipBtnStart + 11; i++) {
menuList.getChildAt(i).visible = false;
}
}
selectVIPBtn(idx) {
this.select_level = idx - Welfare.vipBtnStart
// 按钮列表
let menuList = FGUtil.getList(this.welfarePanel, "alert/welfare/menu_list")
for (let i = Welfare.vipBtnStart; i < Welfare.vipBtnStart + 11; i++) {
if (i == idx)
menuList.getChildAt(i).asCom.getController("selected").selectedIndex = 1;
else
menuList.getChildAt(i).asCom.getController("selected").selectedIndex = 0;
}
this.refreshVipInfo(idx - Welfare.vipBtnStart);
}
/**
*
*/
hideBtn() {
if (!this.welfarePanel || !this.welfarePanel.node) {
console.warn("未找到奖励主面板");
return;
}
// 按钮列表
var menuList = FGUtil.getList(this.welfarePanel, "alert/welfare/menu_list");
// if (GameModel.player.hideIconList["vip"] == 1) {
menuList.getChildAt(1).visible = true;
menuList.getChildAt(5).visible = true;
// menuList.getChildAt(20).visible = false;
menuList.getChildAt(17).visible = false;
menuList.getChildAt(19).visible = false;
// }
// if (GameModel.player.hideIconList["dream"] == 1) {
// menuList.getChildAt(16).visible = false;
// }
if (GameModel.player.hideIconList["sign"] == 1) {
menuList.getChildAt(3).visible = false;
}
if (GameModel.player.hideIconList["level"] == 1) {
menuList.getChildAt(4).visible = false;
}
if (GameModel.player.hideIconList["kac"] == 0) {
menuList.getChildAt(18).visible = true;
} else {
menuList.getChildAt(19).visible = false;
}
// if (GameModel.player.hideIconList["tie"] == 0) {
// menuList.getChildAt(19).visible = true;
// } else {
// menuList.getChildAt(19).visible = false;
// }
}
/**
*
*/
openFirstChargeView() {
this.clearPanel();
this.selectBtn(0);
if (!this.welfarePanel || !this.welfarePanel.node) {
console.warn("未找到奖励主面板");
return;
}
// 获取主面板
var pView = FGUtil.getComponent(this.welfarePanel, "alert/welfare");
// 添加面板
if (!this.firstChargeView || (this.firstChargeView && !this.firstChargeView.node && !SKUIUtil.isValid(this.firstChargeView.node))) {
this.firstChargeView = FGUtil.create("main_ui", "first_charge");
this.firstChargeView.x = 180;
this.firstChargeView.y = 0;
pView.addChild(this.firstChargeView);
}
this.firstChargeView.visible = true;
FGUtil.getTextField(this.firstChargeView, "n20").font = "xiuweiNum";
FGUtil.getTextField(this.firstChargeView, "n20").fontSize = 30;
// 获取首充数据
let list = SKDataUtil.clone(GameModel.game_conf.firstCharge);
for (let i = 0; i < list.length; i++) {
let path = `item_${i + 1}`;
let item = FGUtil.getButton(this.firstChargeView, path);
let data = list[i];
let itemData = ItemUtil.getItemData(data.prop);
item.icon = `ui://main_ui/${itemData.icon}`;
let tip = FGUtil.getTextField(item, "tip");
tip.text = `${SKDataUtil.transform(data.count)}`;
tip.visible = true;
let anim = FGUtil.getAnim(item, "effect");
anim.visible = true;
anim.playing = true;
item.clearClick()
item.onClick((eve) => {
eve.stopPropagation()
this.showInfo(itemData)
})
// FGUtil.getControl(item, "check").selectedIndex = GameModel.player.getgift == 0 ? 1 : 0
}
// 是否已经首充
if (GameModel.player.chargesum >= 30) {
if (GameModel.player.getgift == 0)
FGUtil.getControl(this.firstChargeView, "isOver").selectedIndex = 1
else {
FGUtil.getButton(this.firstChargeView, "charge_btn").text = "领取奖励";
FGUtil.getButton(this.firstChargeView, "charge_btn").clearClick()
FGUtil.getButton(this.firstChargeView, "charge_btn").onClick(this.clickGetCharge, this);
}
} else {
// 充值按钮
FGUtil.getButton(this.firstChargeView, "charge_btn").text = "前往充值";
FGUtil.getButton(this.firstChargeView, "charge_btn").clearClick()
FGUtil.getButton(this.firstChargeView, "charge_btn").onClick(this.clickCharge, this);
}
// 显示龙骨 0.3秒延迟后加载
// if (this.prefabObject["Photo1102"] == null) return;
//var pNode = this.firstChargeView.node;
// if (pNode.getChildByName("Photo1102") || pNode.getChildByName("dbNode")) return;
// var img = cc.instantiate(this.prefabObject["Photo1102"]);
// pNode.name = "Photo1102";
// pNode.setPosition(115, 386)
// pNode.addChild(img)
this.scheduleOnce(() => {
if (this.prefabObject["dragonBones"] == null) return;
var dbNode = this.firstChargeView.node;
// if (dbNode.getChildByName("Photo1102")) {
// dbNode.destroy();
// }
if (dbNode.getChildByName("dbNode")) return;
var db = cc.instantiate(this.prefabObject["dragonBones"]);
db.name = "dbNode";
db.setPosition(110, -380)
dbNode.addChild(db)
}, 0.3)
}
refreshFirshCharge() {
if (!SKUIUtil.isFGUIValid(this.firstChargeView)) return;
GameModel.player.getgift = 0;
this.firstChargeView.visible = true;
// 获取首充数据
let list = SKDataUtil.clone(GameModel.game_conf.firstCharge);
for (let i = 0; i < list.length; i++) {
let path = `item_${i + 1}`;
let item = FGUtil.getButton(this.firstChargeView, path);
let data = list[i];
let itemData = ItemUtil.getItemData(data.prop);
item.icon = `ui://main_ui/${itemData.icon}`;
let tip = FGUtil.getTextField(item, "tip");
tip.text = `${SKDataUtil.transform(data.count)}`;
tip.visible = true;
let anim = FGUtil.getAnim(item, "effect");
anim.visible = true;
anim.playing = true;
item.clearClick()
item.onClick((eve) => {
eve.stopPropagation()
this.showInfo(itemData)
})
// FGUtil.getControl(item, "check").selectedIndex = GameModel.player.getgift == 0 ? 1 : 0
}
FGUtil.getControl(this.firstChargeView, "isOver").selectedIndex = 1
// 获取首充数据
for (let i = 0; i < list.length; i++) {
let id = list[i].prop;
this.scheduleOnce(() => {
this.dropItemToBag(id)
}, i * 0.3)
}
}
/**
*
*/
openDayFirstChargeView() {
this.clearPanel();
this.selectBtn(1);
if (!this.welfarePanel || !this.welfarePanel.node) {
console.warn("未找到奖励主面板");
return;
}
// 获取主面板
var pView = FGUtil.getComponent(this.welfarePanel, "alert/welfare");
// 添加面板
if (!this.dayChargeView || (this.dayChargeView && !this.dayChargeView.node && !SKUIUtil.isValid(this.dayChargeView.node))) {
this.dayChargeView = FGUtil.create("main_ui", "today_charge");
this.dayChargeView.x = 202;
this.dayChargeView.y = 24;
pView.addChild(this.dayChargeView);
}
this.dayChargeView.visible = true;
// 充值按钮
FGUtil.getButton(this.dayChargeView, "charge_btn").onClick(this.clickCharge, this);
let conf = GameModel.game_conf.today;
var dayReward = {};
for (let item of conf) {
if (dayReward[item.money] == null) {
dayReward[item.money] = [];
}
dayReward[item.money].push(item);
}
let list = FGUtil.getList(this.dayChargeView, "list");
list.removeChildrenToPool();
let index = 0;
if (this.dayMap == null) {
this.dayMap = {};
}
let daySum = (this.dayMap[`daySum`] || 0);
for (let key in dayReward) {
let data = dayReward[key];
let cell = list.addItemFromPool().asButton;
cell.title = `今日累计充值${key}元(${key}元/${daySum}元)`;
let i = 1;
let current = (this.dayMap[`day_${key}`] || 0);
let getBtn = FGUtil.getButton(cell, "get_btn");
getBtn.data = key;
getBtn.onClick(this.clickGet, this);
let flag = FGUtil.getComponent(cell, "flag");
if (current > 0) {
getBtn.visible = false;
flag.visible = true;
} else {
if (daySum >= SKDataUtil.toNumber(key)) {
getBtn.visible = true;
} else {
getBtn.visible = false;
}
flag.visible = false;
}
for (let item of data) {
let itemData = ItemUtil.getItemData(item.item_id);
let itemBtn = FGUtil.getButton(cell, `item_${i}`);
itemBtn.icon = `ui://main_ui/${itemData.icon}`;
let tip = FGUtil.getTextField(itemBtn, "tip");
tip.text = `${SKDataUtil.transform(item.count)}`;
tip.visible = true;
let anim = FGUtil.getAnim(itemBtn, "effect");
anim.visible = getBtn.visible;
anim.playing = getBtn.visible;
i++;
itemBtn.clearClick()
itemBtn.onClick((eve) => {
eve.stopPropagation()
this.showInfo(itemData)
})
}
if (daySum >= SKDataUtil.toNumber(key)) {
index++;
}
}
// list.scrollToView(Math.max(0, index - 1), true, false);
let refrestBtn = FGUtil.getList(this.dayChargeView, "refresh_btn");
refrestBtn.clearClick();
refrestBtn.onClick(() => {
GameModel.send("c2s_clear_day", {
roleid: GameModel.player.roleid
})
}, this);
}
/**
*
*/
clickGet(event: fgui.Event) {
let temp = fgui.GObject.cast(event.currentTarget);
let money = temp.data;
GameModel.send(`c2s_day_reward`, {
money: money
});
}
openTotalChargeView(){
this.clearPanel();
this.selectBtn(2);
if (!this.welfarePanel || !this.welfarePanel.node) {
console.warn("未找到奖励主面板");
return;
}
// 获取主面板
var pView = FGUtil.getComponent(this.welfarePanel, "alert/welfare");
// 添加面板
if (!this.totalChargeView || (this.totalChargeView && !this.totalChargeView.node && !SKUIUtil.isValid(this.totalChargeView.node))) {
this.totalChargeView = FGUtil.create("main_ui", "rechargeReward");
this.totalChargeView.x = 180;
this.totalChargeView.y = 0;
pView.addChild(this.totalChargeView);
}
this.totalChargeView.visible = true;
var num = GameModel.player.chargesum;
FGUtil.getTextField(this.rewardPanel, "count").text = String(num);
this.initRewardList(num);
}
/**
*
*/
openSignInView(event: any = null, refresh: boolean = false, data: any = []) {
this.clearPanel();
this.selectBtn(2);
if (!this.welfarePanel || !this.welfarePanel.node) {
console.warn("未找到奖励主面板");
return;
}
// 获取主面板
var pView = FGUtil.getComponent(this.welfarePanel, "alert/welfare");
// 添加面板
if (!this.signInView || (this.signInView && !this.signInView.node && !SKUIUtil.isValid(this.signInView.node))) {
this.signInView = FGUtil.create("main_ui", "sign_in");
this.signInView.x = 174;
this.signInView.y = 0;
pView.addChild(this.signInView);
}
this.signInView.visible = true
// 请求签到数据
if (!refresh) {
GameModel.send(`c2s_ask_daily_info`, {});
GameModel.send(`c2c_sign_in`, { roleId: GameModel.player.roleid });
return;
}
// 签到道具列表
let rewardedList = FGUtil.getList(this.signInView, "n16");
// 签到数据
let listData = JSON.parse(data.signInData);
// 今天日期
let today = data.day;
// 显示转圈
if (listData[today - 1].flag == 0) {
var effNode = rewardedList.getChildAt(today - 1).asCom.node.getChildByName("effect8866")
if (!effNode)
this.showParticle(rewardedList.getChildAt(today - 1).asCom.node);
}
else {
var effNode = rewardedList.getChildAt(today - 1).asCom.node.getChildByName("effect8866")
if (effNode)
rewardedList.getChildAt(today - 1).asCom.node.removeChild(effNode);
}
for (let i = 0; i < 31; i++) {
let item = rewardedList.getChildAt(i).asCom;
if (i >= listData.length) {
item.visible = false;
continue
}
if (!listData[i]) {
item.visible = false;
continue
}
let itemData = ItemUtil.getItemData(listData[i].prop);
// 数量
FGUtil.getTextField(item, "item/num").text = listData[i].num;
// 日期
FGUtil.getTextField(item, "time").text = listData[i].day;
// 图标
FGUtil.getLoader(item, "item/img").url = `ui://main_ui/${itemData.icon}`;
// 图标按钮
let button = FGUtil.getButton(item, "item");
button.clearClick();
// 根据flag显示不同状态
FGUtil.getControl(item, "item/state").selectedIndex = listData[i].flag == 0 ? (listData[i].day < today ? 1 : 0) : 2;
button.onClick(() => {
// 点击的日期已经签到
if (listData[i].flag != 0) {
console.log("点击的日期已经签到")
this.showInfo(itemData);
return;
}
// 活跃度不足点击显示物品信息
if (GameModel.player.todayActive < 120 && listData[i].day < today) {
console.log("活跃度不足点击显示物品信息")
this.showInfo(itemData);
return;
}
// 活跃度足够可以补签
if (GameModel.player.todayActive >= 120 && listData[i].day < today) {
console.log("活跃度足够可以补签")
if (this.isSameDay(GameModel.player.mendDate, new Date().toLocaleDateString())) {
// 今日已经补签
console.log("今日您已经补签过哦")
MsgAlert.addMsg("今日您已经补签过哦!")
return
}
FGAlert.show(`是否进行补签?`, () => {
FGAlert.hide();
}, () => {
FGAlert.hide();
GameModel.send("c2c_check_in", {
roleId: GameModel.player.roleid,
type: 2,
signInData: SKDataUtil.toJson(listData[i])
});
});
return;
}
// 今日之后的显示信息
if (listData[i].day > today) {
console.log("今日之后的显示信息")
this.showInfo(itemData);
return;
}
// 今日未签到
if (listData[i].day == today && listData[i].flag == 0) {
console.log("今日未签到")
GameModel.send("c2c_check_in", {
roleId: GameModel.player.roleid,
type: 1,
signInData: SKDataUtil.toJson(listData[i])
})
}
}, this)
}
}
isSameDay(a, b) {
var arr1 = a.split("/")
var arr2 = b.split("/")
for (let i in arr1) {
if (parseInt(arr1[i]) != parseInt(arr2[i])) {
return false
}
}
return true
}
showInfo(itemInfo) {
if (!this.welfarePanel || !this.welfarePanel.node) {
console.warn("未找到奖励主面板");
return;
}
if (itemInfo != null && this.prefabObject["BagItemDetail"] != null) {
let detail = cc.instantiate(this.prefabObject["BagItemDetail"]);
detail.parent = this.welfarePanel.node;
detail.setPosition(this.welfarePanel.node.width / 2, -this.welfarePanel.node.height / 2)
detail.name = 'BagItemDetail';
detail.getComponent('BagItemDetail').loadInfo(itemInfo);
}
}
showParticle(pNode) {
var effNode = null;
if (this.prefabObject["particle"]) {
effNode = cc.instantiate(this.prefabObject["particle"])
effNode.name = "effect8866"
pNode.addChild(effNode)
this.moveParticle(effNode.children[0])
this.moveParticle(effNode.children[1])
}
}
moveParticle(node) {
cc.tween(node)
.by(0.5, { y: -80 })
.by(0.5, { x: 80 })
.by(0.5, { y: 80 })
.by(0.5, { x: -80 })
.union()
.repeatForever()
.start()
}
dropItemToBag(id) {
if (!this.welfarePanel || !this.welfarePanel.node) {
console.warn("未找到奖励主面板");
return;
}
var t = cc.tween;
var itemNode = new cc.Node("dropItem");
itemNode.addComponent(cc.Sprite).spriteFrame;
var data = ItemUtil.getItemData(id);
itemNode.getComponent(cc.Sprite).spriteFrame = ItemUtil.getItemIconBy(data);
itemNode.getComponent(cc.Sprite).sizeMode = cc.Sprite.SizeMode.CUSTOM
itemNode.width = 50;
itemNode.height = 50;
itemNode.setPosition(this.welfarePanel.node.width / 2 + 120, -this.welfarePanel.node.height + 80)
itemNode.opacity = 0;
itemNode.parent = this.welfarePanel.node;
t(itemNode)
.parallel(
t().by(0.4, { y: 80 }),
t().to(0.2, { opacity: 255 })
)
.delay(0.15)
.call(() => {
let bezerby = cc.bezierBy(0.5, [cc.v2(88, 10), cc.v2(130, 80), cc.v2(155, -350)]);
itemNode.runAction(cc.sequence(cc.spawn(bezerby, cc.rotateBy(0.3, 90)), cc.removeSelf()));
})
.start()
}
openLevelRewardView() {
this.clearPanel();
this.selectBtn(3);
if (!this.welfarePanel || !this.welfarePanel.node) {
console.warn("未找到奖励主面板");
return;
}
// 获取主面板
var pView = FGUtil.getComponent(this.welfarePanel, "alert/welfare");
// 添加面板
if (!this.levelRewardView || (this.levelRewardView && !this.levelRewardView.node && !SKUIUtil.isValid(this.levelRewardView.node))) {
this.levelRewardView = FGUtil.create("main_ui", "level_reward");
this.levelRewardView.x = 175;
this.levelRewardView.y = 0;
pView.addChild(this.levelRewardView);
}
this.levelRewardView.visible = true
// 等级奖励列表
let rewardedList = FGUtil.getList(this.levelRewardView, "list");
rewardedList.itemRenderer = this.initLevelRewardItem.bind(this);
// 虚拟列表
rewardedList.setVirtual();
this.levelRewardData = Object.values(SKDataUtil.clone(GameModel.conf_level));
rewardedList.numItems = this.levelRewardData.length;
}
initLevelRewardItem(idx, obj: fairygui.GObject) {
var item = obj.asCom;
// 等级
FGUtil.getTextField(item, "level").text = this.levelRewardData[idx].des;
if (this.levelRewardData[idx].level > 100)
FGUtil.getTextField(item, "level").color = new cc.Color(255, 161, 42);
else
FGUtil.getTextField(item, "level").color = new cc.Color(34, 170, 81);
// 奖励道具
let reward_item_array = this.levelRewardData[idx].reward_item.split(';');
for (var j = 0; j < reward_item_array.length; j++) {
if (j >= 4) break;
// 道具图标
let itemData = ItemUtil.getItemData(reward_item_array[j].split(':')[0])
FGUtil.getButton(item, `r${j + 1}`).icon = `ui://main_ui/${itemData.icon}`;
// 道具数量
FGUtil.getButton(item, `r${j + 1}`).title = SKDataUtil.transform(reward_item_array[j].split(':')[1]);
FGUtil.getButton(item, `r${j + 1}`).clearClick();
FGUtil.getButton(item, `r${j + 1}`).onClick(() => {
this.showInfo(itemData);
}, this)
}
let cur_level = GameModel.player.level;
let cur_relive = GameModel.player.relive;
let level_reward = GameModel.player.level_reward.split(':');
if (cur_relive > this.levelRewardData[idx].relive || (cur_relive == this.levelRewardData[idx].relive && cur_level >= this.levelRewardData[idx].level)) {
if (level_reward.indexOf(this.levelRewardData[idx].level + '') == -1) {
// 没有领取
FGUtil.getControl(item, "state").selectedIndex = 2;
let btn = FGUtil.getButton(item, "n8");
btn.node["idx"] = idx;
btn.onClick(this.getLevelReward, this)
} else
// 已领取
FGUtil.getControl(item, "state").selectedIndex = 1;
}
else
// 未达标
FGUtil.getControl(item, "state").selectedIndex = 0;
}
getLevelReward(e: Event) {
var idx = -1;
if (e && e.target && !isNaN(e.target["idx"]))
idx = e.target["idx"];
if (idx < 0)
return;
GameModel.send('c2s_level_reward', {
roleid: GameModel.player.roleid,
level: parseInt(this.levelRewardData[idx].level),
});
}
/**
* vip面板
*/
openVipView() {
this.clearPanel();
this.selectBtn(4);
this.showVIPBtnList();
if (!this.welfarePanel || !this.welfarePanel.node) {
console.warn("未找到奖励主面板");
return;
}
// 获取主面板
var pView = FGUtil.getComponent(this.welfarePanel, "alert/welfare");
// 添加面板
if (!this.vipView || (this.vipView && !this.vipView.node && !SKUIUtil.isValid(this.vipView.node))) {
this.vipView = FGUtil.create("main_ui", "vip");
this.vipView.x = 210;
this.vipView.y = 28;
pView.addChild(this.vipView);
}
let chargeSum = (GameModel.player.chargesum || 0);
let vipLevel = VIPUtil.getVipLevel(chargeSum);
FGUtil.getButton(this.vipView, "charge_btn").onClick(this.clickCharge, this);
// 打开充值面板
let titleRT = FGUtil.getRichTextField(this.vipView, "title_rt");
let money = VIPUtil.getNextMoney(vipLevel, chargeSum);
let title = `您已经是满级VIP!`;
if (money > 0) {
title = `再充值${money}元即可成为[img]ui://main_ui/vip_${vipLevel + 1}[/img]`;
}
titleRT.text = title;
if (this.vipView.visible == false) {
this.vipView.visible = true
this.refreshVipInfo(this.select_level)
} else {
this.selectVIPBtn(vipLevel + Welfare.vipBtnStart)
}
}
/**
* vip等级信息显示
*/
refreshVipInfo(level) {
if (!this.vipView || !this.vipView.node) {
console.warn("未找到vip主面板");
return;
}
if (this.dayMap == null) {
this.dayMap = {};
}
let selectedLevel = level;
let reward = VIPUtil.getVipReward(selectedLevel);
let current = FGUtil.getComponent(this.vipView, "current");
let titleRT = FGUtil.getRichTextField(current, "title_rt");
titleRT.text = `[img]ui://main_ui/vip_${selectedLevel}[/img]每日福利奖励`;
let getBtn = FGUtil.getButton(current, "get_btn");
getBtn.data = selectedLevel;
getBtn.onClick(this.clickVipGet, this);
let flag = FGUtil.getComponent(current, "flag");
let chargeSum = (GameModel.player.chargesum || 0);
let vipLevel = VIPUtil.getVipLevel(chargeSum);
if (vipLevel >= selectedLevel) {
current.grayed = false;
current.touchable = true;
let receive = (this.dayMap[`vip_${selectedLevel}`] || 0);
if (receive > 0) {
getBtn.visible = false;
flag.visible = true;
} else {
getBtn.visible = true;
flag.visible = false;
}
} else {
current.grayed = true;
current.touchable = false;
getBtn.visible = false;
flag.visible = false;
}
let i = 1;
for (let itemData of reward) {
let itemBtn = FGUtil.getButton(current, `item_${i}`);
itemBtn.icon = `ui://main_ui/${itemData.icon}`;
let tip = FGUtil.getTextField(itemBtn, "tip");
tip.text = `${SKDataUtil.transform(itemData.count)}`;
tip.visible = true;
let anim = FGUtil.getAnim(itemBtn, "effect");
anim.visible = getBtn.visible;
anim.playing = getBtn.visible;
i++;
itemBtn.clearClick()
itemBtn.onClick((eve) => {
eve.stopPropagation()
this.showInfo(itemData)
})
}
}
clickVipGet(event: fgui.Event) {
let temp = fgui.GObject.cast(event.currentTarget);
let vipLevel = temp.data;
GameModel.send(`c2s_vip_reward`, {
type: 0,
vipLevel: vipLevel
});
}
// 刷新挖宝
openDugView() {
this.clearPanel();
this.selectBtn(16);
if (!this.welfarePanel || !this.welfarePanel.node) {
console.warn("未找到奖励主面板");
return;
}
// 获取主面板
var pView = FGUtil.getComponent(this.welfarePanel, "alert/welfare");
// 添加面板
if (!this.dugView || (this.dugView && !this.dugView.node && !SKUIUtil.isValid(this.dugView.node))) {
this.dugView = FGUtil.create("main_ui", "treasure");
this.dugView.setScale(0.9, 0.9);
this.dugView.x = 196;
this.dugView.y = 59;
pView.addChild(this.dugView);
}
this.dugView.visible = true
let data = this.dayMap[`dug_1`];
if (data == null) {
GameModel.send(`c2s_dug_list`, { type: 1 });
return;
}
let count = data.count;
let i = 1;
for (let item of data.list) {
if (i > 32) {
continue;
}
let itemData = ItemUtil.getItemData(item.item_id);
if (itemData == null) {
continue;
}
let itemBtn = FGUtil.getButton(this.dugView, `item_${i}`);
itemBtn.touchable = (count > -1);
itemBtn.icon = `ui://main_ui/${itemData.icon}`;
itemBtn.data = i - 1;
let tip = FGUtil.getTextField(itemBtn, "tip");
tip.text = `${SKDataUtil.transform(item.count)}`;
tip.color = SKUIUtil.colorOfString(item.level > 1 ? "#FFFF00" : "#FFFFFF");
tip.visible = true;
let high_flag = FGUtil.getImage(itemBtn, "high_flag");
let high_border = FGUtil.getImage(itemBtn, "high_border");
high_flag.visible = item.level > 1;
high_border.visible = item.level > 1;
let dugBG = FGUtil.getImage(itemBtn, "dug_bg");
let done = (item.done != null ? item.done : 0);
dugBG.visible = (done == 0 && count > -1);
itemBtn.touchable = (done == 0 && count > -1);
i++;
}
var updateDug = FGUtil.getButton(this.dugView, "update_btn");
var startDug = FGUtil.getButton(this.dugView, "start_btn");
updateDug.onClick(this.clickUpdateDug, this);
if (count < 0) {
updateDug.visible = true;
startDug.visible = true;
startDug.enabled = true;
} else {
updateDug.visible = false;
startDug.visible = false;
}
this.refreshDugTitle(count + 1);
updateDug.enabled = true;
FGUtil.getButton(this.dugView, "start_btn").onClick(this.clickStartDug, this);
for (let i = 1; i <= 32; i++) {
let itemBtn = FGUtil.getButton(this.dugView, `item_${i}`);
itemBtn.onClick(this.clickDug, this);
}
}
clickUpdateDug(event: fgui.Event) {
if (!this.dugView || !this.dugView.node) {
console.warn("未找到挖宝面板")
return
}
var updateDug = FGUtil.getButton(this.dugView, "update_btn");
updateDug.enabled = false;
GameModel.send(`c2s_dug_list`, { type: 1 });
}
hideAllDug() {
if (!this.dugView || !this.dugView.node) {
console.warn("未找到挖宝面板")
return
}
for (let i = 1; i <= 32; i++) {
let itemBtn = FGUtil.getButton(this.dugView, `item_${i}`);
let dugBG = FGUtil.getImage(itemBtn, "dug_bg");
dugBG.visible = true;
itemBtn.touchable = true;
}
}
clickStartDug(event: fgui.Event) {
if (!this.dugView || !this.dugView.node) {
console.warn("未找到挖宝面板")
return
}
let updateDug = FGUtil.getButton(this.dugView, "update_btn");
let startDug = FGUtil.getButton(this.dugView, "start_btn");
FGAlert.show(`开始挖宝后,今日将不能再刷新!`, () => {
FGAlert.hide();
}, () => {
FGAlert.hide();
updateDug.visible = false;
startDug.visible = false;
this.hideAllDug();
GameModel.send("c2s_dug", { type: 1, index: -1 });
});
}
clickDug(event: fgui.Event) {
if (!this.dugView || !this.dugView.node) {
console.warn("未找到挖宝面板")
return
}
if (this.isDug) {
return;
}
let dug = this.dayMap[`dug_1`];
if (dug == null) {
this.isDug = false;
return;
}
let count = dug.count;
let myJade = GameModel.player.gameData.jade;
let needJade = DugMgr.shared.getJade(count);
if (myJade < needJade) {
FGAlert.show(`${count + 1}次挖宝所需${needJade}仙玉不足!`, () => {
FGAlert.hide();
}, () => {
FGAlert.hide();
});
return;
}
this.isDug = true;
let itemBtn = fgui.GObject.cast(event.currentTarget).asButton;
var dugAnim = FGUtil.getAnim(this.dugView, "dug_anim");
dugAnim.x = itemBtn.x + 40;
dugAnim.y = itemBtn.y;
dugAnim.setPlaySettings(0, -1, 1, -1, () => {
let index = itemBtn.data;
GameModel.send(`c2s_dug`, { type: 1, index: index });
}, this);
dugAnim.playing = true;
dugAnim.visible = true;
}
dugEnd(data: any) {
if (!this.dugView || !this.dugView.node) {
console.warn("未找到挖宝面板")
return
}
var dugAnim = FGUtil.getAnim(this.dugView, "dug_anim");
this.isDug = false;
dugAnim.visible = false;
dugAnim.playing = false;
let state = data.state;
if (state != 1) {
return;
}
let index = data.index;
let itemBtn = FGUtil.getButton(this.dugView, `item_${index + 1}`);
let dug = this.dayMap[`dug_1`];
dug.count = dug.count + 1;
dug.list[index].done = 1;
let dugBG = FGUtil.getImage(itemBtn, "dug_bg");
dugBG.visible = false;
itemBtn.touchable = false;
this.refreshDugTitle(dug.count + 1);
}
refreshDugTitle(next: number) {
if (!this.dugView || !this.dugView.node) {
console.warn("未找到挖宝面板")
return
}
let title = FGUtil.getRichTextField(this.dugView, "title");
let myJade = GameModel.player.gameData.jade;
let jade_rt = FGUtil.getRichTextField(this.dugView, "jade_rt");
jade_rt.text = `当前[img]ui://main_ui/9004[/img] ${myJade}`;
if (next < 1) {
title.text = `挖宝活动每日零时重置!`;
jade_rt.visible = false;
} else if (next <= 32) {
title.text = `${next}次挖宝将消耗${DugMgr.shared.getJade(next - 1)}[img]ui://main_ui/9004[/img]`;
jade_rt.visible = true;
} else {
title.text = `今日挖宝结束!`;
jade_rt.visible = true;
}
}
openGiftPackCodeView() {
this.clearPanel();
this.selectBtn(17);
if (!this.welfarePanel || !this.welfarePanel.node) {
console.warn("未找到奖励主面板");
return;
}
// 重置拦截点击
this.stopTap = false;
// 获取主面板
var pView = FGUtil.getComponent(this.welfarePanel, "alert/welfare");
// 添加面板
if (!this.giftCodeView || (this.giftCodeView && !this.giftCodeView.node && !SKUIUtil.isValid(this.giftCodeView.node))) {
this.giftCodeView = FGUtil.create("main_ui", "gift_pack_code");
this.giftCodeView.x = 182;
this.giftCodeView.y = 15;
pView.addChild(this.giftCodeView);
}
this.giftCodeView.visible = true
let editBox = FGUtil.getList(this.giftCodeView, "n1");
let sendBtn = FGUtil.getButton(this.giftCodeView, "btn")
sendBtn.clearClick();
sendBtn.onClick(() => {
if (this.stopTap) {
MsgAlert.addMsg("请稍后再试")
return
}
if (editBox.text.length < 10 || editBox.text.length > 12) {
MsgAlert.addMsg("请输入正确的激活码")
} else {
this.stopTap = true
GameModel.send("c2s_convert", {
roleid: GameModel.player.roleid,
code: editBox.text
})
this.scheduleOnce(() => {
this.stopTap = false
}, 1)
}
}, this)
}
openBindUserView() {
this.clearPanel();
this.selectBtn(18);
if (!this.welfarePanel || !this.welfarePanel.node) {
console.warn("未找到奖励主面板");
return;
}
// 重置拦截点击
this.stopTap = false;
// 获取主面板
var pView = FGUtil.getComponent(this.welfarePanel, "alert/welfare");
// 添加面板
if (!this.bindUserView || (this.bindUserView && !this.bindUserView.node && !SKUIUtil.isValid(this.bindUserView.node))) {
this.bindUserView = FGUtil.create("main_ui", "bind_user");
this.bindUserView.x = 182;
this.bindUserView.y = 15;
pView.addChild(this.bindUserView);
}
this.bindUserView.visible = true
let editBox = FGUtil.getList(this.bindUserView, "n1");
let sendBtn = FGUtil.getButton(this.bindUserView, "btn")
sendBtn.clearClick();
sendBtn.onClick(() => {
if (editBox.text.length <= 0) {
MsgAlert.addMsg('请输入被绑定的账号')
return
}
GameModel.send("c2s_binding", {
roleid: GameModel.player.roleid,
broleId: editBox.text
})
this.closeAll()
}, this)
if (GameModel.player.bindInfo != null && Object.keys(GameModel.player.bindInfo).length > 0) {
FGUtil.getControl(this.bindUserView, "isbind").selectedIndex = 1;
FGUtil.getLoader(this.bindUserView, "head").texture = GameModel.getRoleHead(GameModel.player.bindInfo.resid);
FGUtil.getTextField(this.bindUserView, "name").text = GameModel.player.bindInfo.name;
FGUtil.getTextField(this.bindUserView, "level").text = GameUtil.getReliveText(GameModel.player.bindInfo.relive, GameModel.player.bindInfo.level);
}
if (GameModel.player.bplayerinfo != null && GameModel.player.bplayerinfo.length > 0) {
FGUtil.getControl(this.bindUserView, "beBind").selectedIndex = 1;
let list = FGUtil.getList(this.bindUserView, "list");
list.removeChildren();
for (let i in GameModel.player.bplayerinfo) {
var item = list.addItem().asCom;
FGUtil.getLoader(item, "head").texture = GameModel.getRoleHead(GameModel.player.bplayerinfo[i].resid);
FGUtil.getTextField(item, "name").text = GameModel.player.bplayerinfo[i].name;
FGUtil.getTextField(item, "level").text = GameUtil.getReliveText(GameModel.player.bplayerinfo[i].relive, GameModel.player.bplayerinfo[i].level);
}
}
}
/**
*
*/
openRewardPanel(refresh: Boolean = false) {
this.clearPanel();
this.selectBtn(19);
RechargeReward.Instance.openRewardPanel3();
return
if (!this.welfarePanel || !this.welfarePanel.node) {
console.warn("未找到奖励主面板");
return;
}
// 获取主面板
var pView = FGUtil.getComponent(this.welfarePanel, "alert/welfare");
// 添加面板
if (!SKUIUtil.isFGUIValid(this.rewardPanel)) {
this.rewardPanel = FGUtil.create("main_ui", "rechargeReward");
this.rewardPanel.x = 215;
this.rewardPanel.y = 10;
pView.addChild(this.rewardPanel);
}
this.rewardPanel.visible = true
// let charge = GameModel.conf_charge["1"];
// var num = GameModel.player.chargesum * (charge.jade / charge.money)
var num = GameModel.player.chargesum;
FGUtil.getTextField(this.rewardPanel, "count").text = String(num);
this.initRewardList(num);
}
/**
*
*/
initRewardList(num) {
let reward_list = GameModel.conf_charge_reward2;
let list = [];
for (let i = 1; reward_list[i]; ++i) {
let item = reward_list[i];
list.push(item);
}
list.sort((a, b) => {
return a.money - b.money;
});
let rewardList = FGUtil.getList(this.rewardPanel, "list")
rewardList.removeChildrenToPool();
for (let i = 0; i < list.length; i++) {
let rewardItem = rewardList.addItemFromPool().asCom;
FGUtil.getTextField(rewardItem, "title").text = `累计充值${list[i].money}元(${num}元/${list[i].money}元)`
let has_gain = ((GameModel.player.rewardrecord & (1 << (i))) > 0);
let getBtn = FGUtil.getButton(rewardItem, "get_btn");
let flag = FGUtil.getComponent(rewardItem, "flag");
if (has_gain) {
flag.visible = true;
getBtn.visible = false;
} else {
flag.visible = false;
if (num >= list[i].money) {
getBtn.data = i + 1;
getBtn.onClick(this.clickRewardGet, this);
} else {
getBtn.visible = false
}
}
for (let j = 0; j < list[i].list.length; j++) {
let itemData = ItemUtil.getItemData(list[i].list[j].itemIid);
let itemBtn = FGUtil.getButton(rewardItem, `item_${j + 1}`);
itemBtn.icon = `ui://main_ui/${itemData.icon}`;
itemBtn.clearClick();
itemBtn.onClick((eve) => {
eve.stopPropagation()
this.showInfo(itemData)
})
let tip = FGUtil.getTextField(itemBtn, "tip");
tip.text = `${SKDataUtil.transform(list[i].list[j].count)}`;
tip.visible = true;
let anim = FGUtil.getAnim(itemBtn, "effect");
anim.visible = getBtn.visible;
anim.playing = getBtn.visible;
}
}
}
clickRewardGet(event: fgui.Event) {
if (this.isRewarding) {
MsgAlert.addMsg("您点击太快了")
return
}
this.isRewarding = true;
let temp = fgui.GObject.cast(event.currentTarget);
let idx = temp.data;
let rewardList = FGUtil.getList(this.rewardPanel, "list")
var rewardItem = rewardList.getChildAt(idx - 1).asCom;
let getBtn = FGUtil.getButton(rewardItem, "get_btn");
let flag = FGUtil.getComponent(rewardItem, "flag");
getBtn.visible = false
flag.visible = true
GameModel.send('c2s_charge_reward', { rewardid: idx });
this.scheduleOnce(() => {
this.isRewarding = false;
}, 0.5)
}
/**
*
*/
clickCharge() {
Shop.Instance.openShopMainPanel(true);
this.clearPanel()
this.closeAll();
return;
let mainNode = cc.find('Canvas/MainUI');
if (mainNode) {
FGUtil.dispose(this.welfarePanel);
let mainUI = mainNode.getComponent("MainUI");
AudioUtil.playOpenAudio();
let shopNode = SKUIUtil.createSubNode(mainNode, cc.v2(0, 0), mainUI.shopUI, 'ShopUI');
let shopUI = shopNode.getComponent("ShopUI");
shopUI.selectedIndex = 2;
}
}
clickGetCharge() {
if (!SKUIUtil.isFGUIValid(this.firstChargeView)) return
FGUtil.getButton(this.firstChargeView, "charge_btn").clearClick()
GameModel.send("c2s_remunerate", {})
}
/**
*
*/
clearPanel() {
if (!this.welfarePanel || !this.welfarePanel.node) {
console.warn("未找到奖励主面板");
return;
}
var pView = FGUtil.getComponent(this.welfarePanel, "alert/welfare");
for (let i = 1; i < pView._children.length; i++) {
var item = pView.getChildAt(i);
item.visible = false
}
}
closeAll() {
FGUtil.dispose(this.welfarePanel);
this.welfarePanel = null;
this.firstChargeView = null;
this.dayChargeView = null;
this.unscheduleAllCallbacks();
}
/**
*
*/
pushCloseEvent(item: fairygui.GComponent, target: fairygui.GComponent, call: Function = null) {
item.clearClick();
item.onClick(() => {
call && call();
this.unscheduleAllCallbacks();
FGUtil.dispose(target);
target = null;
}, this)
}
/**
* 182 15
* 182 15
*/
}