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 */ }