import JiaZai from "../../Script/JiaZai"; import Utils from "../../Script/module/Pay/Utils"; import { MiniGameManager } from "../../Script/Sdk/MiniGameManager"; import { MiniGameSdk } from "../../Script/Sdk/MiniGameSdk"; const { ccclass, property } = cc._decorator; //排行榜 @ccclass export default class GachaManager extends cc.Component { @property(cc.Node) //用户头像换图 avatar: cc.Node = null; @property({ type: [cc.SpriteFrame], tooltip: "头像图片" }) icon: Array = []; @property({ type: [cc.SpriteFrame], tooltip: "头像稀有度" }) kuang: Array = []; avatarData: any = null; own = 0; reward = 0; onLoad() { this.avatarData = []; this.own = 0; this.reward = 0; // this.init(); } //初始化数据 init(data, film) { this.avatarData = []; this.own = 0; console.log("222222初始化数据", data); if (data) { this.avatarData = data; this.own = this.avatarData.length; } for (let i = 0; i < this.avatarData.length; i++) { let iphone = this.avatarData[i] - 19; this.avatar.children[iphone].getChildByName("own").active = true; } let botoom = this.node.getChildByName("bottom"); botoom.getChildByName("no").active = false; botoom.getChildByName("yes").active = false; if (this.own >= 8) { botoom.getChildByName("total").active = false; botoom.active = false; this.node.getChildByName("finishi").active = true; } else { let cost = this.getCostFilm(); botoom.getChildByName("total").getComponent(cc.Label).string = cost.toString(); console.log("抽卡所需film", cost); if (film >= cost) { botoom.getChildByName("yes").active = true; console.log("有足够film"); botoom.getChildByName("yes").getComponent(cc.Label).string = film.toString(); } else { console.log("没有足够film"); botoom.getChildByName("no").active = true; botoom.getChildByName("no").getComponent(cc.Label).string = film.toString(); } console.log("拥有film", film); } } getCostFilm() { let film = [5, 10, 25, 35, 55, 70, 100, 120]; if (this.own > film.length) this.own = film.length - 1; let count = film[this.own]; return count; } closeGacha() { const jiazaiNode = cc.find("Canvas"); // 假设 JiaZai 挂在 Canvas 节点 const jiazaiComp = jiazaiNode.getComponent(JiaZai); if (jiazaiComp) { jiazaiComp.closeGacha(); } else { console.log("无法获取JiaZai组件"); } } playGacha() { if (this.own >= 8) { MiniGameSdk.API.showToast("已拥有当期所有头像"); return; } else { let cost = this.getCostFilm(); if (cc.fx.GameConfig.GM_INFO.film < cost) { MiniGameSdk.API.showToast("代币不足,闯关获取更多代币!"); return; } } this.openLoad(); Utils.getGacha‌(res => { console.log("抽卡结果", res); if (res.code == 1) { console.log("抽卡成功"); cc.fx.GameConfig.GM_INFO.film = res.data.film; console.log("所剩余代币", cc.fx.GameConfig.GM_INFO.film); let headArr = cc.fx.GameTool.getAvatarData(res.data.headArr); this.init(headArr, cc.fx.GameConfig.GM_INFO.film); this.openReward(res.data.reward); cc.fx.GameTool.shushu_Track("avatar_gacha", { pool_id: "spring", pull_count: (this.own + 1), film_count: (8 - this.own), film_left: (8 - this.own - 1), is_success: true, result: "spring_" + res.data.reward.toString(), }); } else if (res.code == 0) { MiniGameSdk.API.showToast(res.msg); cc.fx.GameTool.shushu_Track("avatar_gacha", { pool_id: "spring", pull_count: (this.own + 1), film_count: (8 - this.own), film_left: (8 - this.own), is_success: false, result: "", }); } else { MiniGameSdk.API.showToast("网络异常,请稍后再试"); cc.fx.GameTool.shushu_Track("avatar_gacha", { pool_id: "spring", pull_count: (this.own + 1), film_count: (8 - this.own), film_left: (8 - this.own), is_success: false, result: "", }); } this.closeLoad(); }); // let cost = this.getCostFilm(); // if (cc.fx.GameConfig.GM_INFO.film >= cost) { // } } openReward(data) { this.reward = data; this.node.getChildByName("geReward").active = true; this.node.getChildByName("geReward").getChildByName("r").zIndex = 100; this.node.getChildByName("geReward").getChildByName("sr").zIndex = 100; this.node.getChildByName("geReward").getChildByName("ssr").zIndex = 100; this.node.getChildByName("geReward").getChildByName("r").active = false; this.node.getChildByName("geReward").getChildByName("sr").active = false; this.node.getChildByName("geReward").getChildByName("ssr").active = false; this.node.getChildByName("geReward").getChildByName("btn").active = false; let kuang = 0; if (data == 24 || data == 25) kuang = 1; else if (data == 26) kuang = 2; else kuang = 0; this.node.getChildByName("geReward").getChildByName("paper").getChildByName("bg").getComponent(cc.Sprite).spriteFrame = this.kuang[kuang]; this.node.getChildByName("geReward").getChildByName("paper").getChildByName("icon").getComponent(cc.Sprite).spriteFrame = this.icon[this.reward - 19]; this.node.getChildByName("geReward").getChildByName("paper").opacity = 0; this.node.getChildByName("geReward").getChildByName("dayin1").opacity = 0; this.node.getChildByName("geReward").getChildByName("dayin2").opacity = 0; this.node.getChildByName("geReward").getChildByName("dayin1").zIndex = 2; this.node.getChildByName("geReward").getChildByName("dayin2").zIndex = 4; this.node.getChildByName("geReward").getChildByName("paper").getChildByName("bg").getComponent("CardFlipEffect").init(); this.node.getChildByName("geReward").getChildByName("paper").getChildByName("icon").getComponent("CardFlipEffect").init(); cc.tween(this.node.getChildByName("geReward").getChildByName("paper")) .to(0.2, { opacity: 255 }) .start(); cc.tween(this.node.getChildByName("geReward").getChildByName("dayin1")) .to(0.2, { opacity: 255 }) .start(); cc.tween(this.node.getChildByName("geReward").getChildByName("dayin2")) .to(0.2, { opacity: 255 }) .start(); } showReward() { this.node.getChildByName("geReward").getChildByName("btn").active = true; let actionName = cc.fx.GameTool.getActionName(this.reward.toString()); if (this.reward < 24) { this.node.getChildByName("geReward").getChildByName("r").active = true; cc.fx.GameTool.loadSpineSimple(this.node.getChildByName("geReward").getChildByName("r").getChildByName("sp"), actionName); } else if (this.reward == 24 || this.reward == 25) { this.node.getChildByName("geReward").getChildByName("sr").active = true; cc.fx.GameTool.loadSpineSimple(this.node.getChildByName("geReward").getChildByName("sr").getChildByName("sp"), actionName); if (this.reward == 24) { this.node.getChildByName("geReward").getChildByName("sr").getChildByName("sp").y = 60 } else { this.node.getChildByName("geReward").getChildByName("sr").getChildByName("sp").y = 35 } } else if (this.reward == 26) { this.node.getChildByName("geReward").getChildByName("ssr").active = true; cc.fx.GameTool.loadSpineSimple(this.node.getChildByName("geReward").getChildByName("ssr").getChildByName("sp"), actionName); } } closeReward() { this.node.getChildByName("geReward").active = false; } openLoad() { this.node.getChildByName("Loading").active = true; this.node.getChildByName("Loading").getChildByName("load").stopAllActions(); this.node.getChildByName("Loading").getChildByName("load").runAction(cc.rotateTo(2, 1080).repeatForever()); } closeLoad() { this.node.getChildByName("Loading").active = false; } start() { } }