From eeb41581874088ffb3740c2b2d9ff4311abc3f86 Mon Sep 17 00:00:00 2001 From: TJH Date: Fri, 10 Apr 2026 11:23:16 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9A=BE=E5=BA=A6=E9=80=89=E6=8B=A9=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/Game/Prefab/AutoSpinPanel.prefab | 12 +- assets/Game/Prefab/Icons/10.prefab | 1 - assets/Game/Prefab/Icons/4.prefab | 1 - assets/Game/Scripts/Icon.ts | 28 +- assets/Game/Scripts/Roller.ts | 32 +- assets/Game/Scripts/RollerManager.ts | 62 ++-- assets/Game/Scripts/SlotMsg.ts | 139 ++++++++- assets/Game/Scripts/SlotScene.ts | 15 +- assets/Game/Scripts/UpLayer.ts | 13 +- assets/Game/SlotScene.prefab | 4 +- assets/Game/Textures/Spines/ChooseDiff.meta | 9 + .../Spines/ChooseDiff/Volatility.atlas | 13 + .../Spines/ChooseDiff/Volatility.atlas.meta | 12 + .../Spines/ChooseDiff/Volatility.json | 1 + .../Spines/ChooseDiff/Volatility.json.meta | 11 + .../Textures/Spines/ChooseDiff/Volatility.png | Bin 0 -> 2755 bytes .../Spines/ChooseDiff/Volatility.png.meta | 134 ++++++++ assets/Main/I18nJson/lang.json | 293 +++++++++++++++--- assets/Main/Scripts/main/comm.ts | 28 +- assets/Main/Scripts/main/loading.ts | 16 +- assets/Main/TipMessagePanel.prefab | 6 +- 21 files changed, 693 insertions(+), 137 deletions(-) create mode 100644 assets/Game/Textures/Spines/ChooseDiff.meta create mode 100644 assets/Game/Textures/Spines/ChooseDiff/Volatility.atlas create mode 100644 assets/Game/Textures/Spines/ChooseDiff/Volatility.atlas.meta create mode 100644 assets/Game/Textures/Spines/ChooseDiff/Volatility.json create mode 100644 assets/Game/Textures/Spines/ChooseDiff/Volatility.json.meta create mode 100644 assets/Game/Textures/Spines/ChooseDiff/Volatility.png create mode 100644 assets/Game/Textures/Spines/ChooseDiff/Volatility.png.meta diff --git a/assets/Game/Prefab/AutoSpinPanel.prefab b/assets/Game/Prefab/AutoSpinPanel.prefab index 257fc6f..fb0d100 100644 --- a/assets/Game/Prefab/AutoSpinPanel.prefab +++ b/assets/Game/Prefab/AutoSpinPanel.prefab @@ -574,9 +574,9 @@ "_dstBlendFactor": 4, "_color": { "__type__": "cc.Color", - "r": 130, - "g": 214, - "b": 40, + "r": 255, + "g": 246, + "b": 187, "a": 255 }, "_spriteFrame": { @@ -1058,9 +1058,9 @@ "_dstBlendFactor": 4, "_color": { "__type__": "cc.Color", - "r": 130, - "g": 214, - "b": 40, + "r": 255, + "g": 246, + "b": 187, "a": 255 }, "_spriteFrame": { diff --git a/assets/Game/Prefab/Icons/10.prefab b/assets/Game/Prefab/Icons/10.prefab index a190fe6..66f02f2 100644 --- a/assets/Game/Prefab/Icons/10.prefab +++ b/assets/Game/Prefab/Icons/10.prefab @@ -1158,7 +1158,6 @@ "multiNode": { "__id__": 36 }, - "bombNode": null, "multiSpriteFrames": [ { "__uuid__": "41856c4f-db7d-41ef-bd58-cd9c9987baee@f9941", diff --git a/assets/Game/Prefab/Icons/4.prefab b/assets/Game/Prefab/Icons/4.prefab index 067c407..0b1d159 100644 --- a/assets/Game/Prefab/Icons/4.prefab +++ b/assets/Game/Prefab/Icons/4.prefab @@ -899,7 +899,6 @@ "__id__": 26 }, "multiNode": null, - "bombNode": null, "multiSpriteFrames": [], "blurMultiSpriteFrames": [], "_id": "" diff --git a/assets/Game/Scripts/Icon.ts b/assets/Game/Scripts/Icon.ts index 45821c9..64bd977 100644 --- a/assets/Game/Scripts/Icon.ts +++ b/assets/Game/Scripts/Icon.ts @@ -28,8 +28,8 @@ export class Icon extends Component { @property(Node) multiNode: Node = null; - @property(Node) - bombNode: Node = null; + // @property(Node) + // bombNode: Node = null; @property([SpriteFrame]) multiSpriteFrames: SpriteFrame[] = []; @@ -63,8 +63,14 @@ export class Icon extends Component { this.normalNode.active = true; this.showFastIcon(false); this.spineNode.active = false; - if (this.multiNode) this.multiNode.active = false; - if (this.bombNode) this.bombNode.active = false; + if (this.multiNode) { + this.multiNode.active = false; + this.multiNode.setScale(1, 1, 1); + } + // if (this.bombNode) { + // this.bombNode.active = false; + // this.bombNode.setScale(1, 1, 1); + // } let spine = this.spineNode.getChildByName('spine').getComponent(sp.Skeleton); if (spine) { @@ -172,6 +178,20 @@ export class Icon extends Component { } } + playMultiSpine() { + this.spineNode.active = true; + this.normalNode.active = false; + let spine = this.spineNode.getChildByName('spine').getComponent(sp.Skeleton); + if (spine) { + // spine.setAnimation(0, 'xiaoshi', false); + // spine.setCompleteListener(() => { + // spine.setCompleteListener(null); + // this.spineNode.active = false; + // this.bombNode.active = true; + // }) + } + } + playDeleteSpine() { let spine = this.spineNode.getChildByName('spine').getComponent(sp.Skeleton); diff --git a/assets/Game/Scripts/Roller.ts b/assets/Game/Scripts/Roller.ts index 613b588..d8b26af 100644 --- a/assets/Game/Scripts/Roller.ts +++ b/assets/Game/Scripts/Roller.ts @@ -158,12 +158,11 @@ export class Roller extends Component { } for (let i = 0; i < this.row; i++) { - this.createNormalIcon(i, data[i], 1); - + this.createNormalIcon(i, data[i]); } } - createNormalIcon(pos: number, iconIndex: number, test: number = 0): Node { + createNormalIcon(pos: number, iconIndex: number): Node { let iconNode = this.iconFactory.icfactoryCreateIcon(iconIndex); let icon = iconNode.getComponent(Icon); icon.initIcon(iconIndex, 1, this._rollerId); @@ -222,18 +221,17 @@ export class Roller extends Component { let seen = new Set(); let exitTopY = this.getIconPosition(4).y - (this.row - 2) * this.iconHeight; - // 图标向上飞出,顶行先出(行间隔 0.03s,快速模式同时) - // 修改为图标向下飞出,底行先出,速度不变 + // 开转时旧图标快速退场:底行先出,普通模式做轻微错峰 for (let i = this.row - 1; i >= 0; i--) { let icon = this.grid[i]; if (icon && !seen.has(icon)) { seen.add(icon); this._exitingIcons.push(icon); let iconRef = icon; - let exitDelay = this._info.isFastSpin ? 0 : (this.row - i) * 0.03; + let exitDelay = this._info.isFastSpin ? 0 : (this.row - 1 - i) * 0.02; tween(iconRef) .delay(exitDelay) - .to(0.18, { position: v3(0, exitTopY, 0) }, { easing: 'quadIn' }) + .to(0.14, { position: v3(0, exitTopY, 0) }, { easing: 'quadIn' }) .call(() => { let idx = this._exitingIcons.indexOf(iconRef); if (idx !== -1) this._exitingIcons.splice(idx, 1); @@ -253,7 +251,7 @@ export class Roller extends Component { this._info.state = ROLLER_STATE.ACCELERATE; // 退场结束后标记"可掉落" - let exitDuration = this._info.isFastSpin ? 0.18 : 0.18 + (this.row - 1) * 0.03; + let exitDuration = this._info.isFastSpin ? 0.14 : 0.14 + (this.row - 1) * 0.02; this.scheduleOnce(() => { if (this._info.state !== ROLLER_STATE.ACCELERATE) return; this._info.state = ROLLER_STATE.UNIFORM; @@ -287,8 +285,8 @@ export class Roller extends Component { let topY = this.getIconPosition(0, 1).y; let isFast = this._info.isFastSpin; - // 普通模式行间隔 0.05s;快速/急停无间隔 - let rowInterval = isFast ? 0 : 0.05; + // 普通模式行间隔更紧凑;快速/急停无间隔 + let rowInterval = isFast ? 0 : 0.035; let maxTime = 0; for (let i = 0; i < this.row; i++) { @@ -321,7 +319,7 @@ export class Roller extends Component { // 列延迟 + 行内延迟 let rowDelay = extraDelay + (this.row - 1 - i) * rowInterval; // 底行先落,顶行后落 let distance = Math.abs(startY - targetPos.y); - let fallTime = Math.min(Math.max(Math.sqrt(distance) / 55, 0.15), 0.32); + let fallTime = Math.min(Math.max(Math.sqrt(distance) / 55, 0.12), 0.24); let iconRef = iconNode; if (this._info.noBounce) { @@ -340,8 +338,8 @@ export class Roller extends Component { maxTime = Math.max(maxTime, rowDelay + fallTime); } else { let bounceH = Math.min(Math.max(distance * 0.08, 6), 18); - let bounceUp = 0.08; - let bounceDown = 0.06; + let bounceUp = 0.05; + let bounceDown = 0.04; let bouncePos = targetPos.clone().add(v3(0, bounceH, 0)); tween(iconRef) @@ -469,7 +467,7 @@ export class Roller extends Component { allIcons = [...this._newCreateIconNode, ...allIcons]; allIcons.sort((a, b) => b.position.y - a.position.y); - let interval = 0.05; + let interval = 0.03; let targetPos = this.row; let dealyCount = 0; let timeEnd = 0; @@ -484,13 +482,13 @@ export class Roller extends Component { if (iconNode.position.y !== targetPosition.y) { let distance = Math.abs(iconNode.position.y - targetPosition.y); - let fallTime = Math.min(Math.max(Math.sqrt(distance) / 55, 0.12), 0.28); + let fallTime = Math.min(Math.max(Math.sqrt(distance) / 55, 0.10), 0.20); let bounceH1 = Math.min(Math.max(distance * 0.18, 12), 26); let bounceH2 = Math.floor(bounceH1 * 0.5); - let bounceTime1Up = Math.min(Math.max(0.06 + bounceH1 * 0.002, 0.08), 0.12); - let bounceTime1Down = bounceTime1Up * 0.85; + let bounceTime1Up = Math.min(Math.max(0.05 + bounceH1 * 0.0015, 0.05), 0.08); + let bounceTime1Down = bounceTime1Up * 0.8; let bouncePos2 = targetPosition.clone().add(v3(0, bounceH2, 0)); diff --git a/assets/Game/Scripts/RollerManager.ts b/assets/Game/Scripts/RollerManager.ts index 64170d4..5945fe1 100644 --- a/assets/Game/Scripts/RollerManager.ts +++ b/assets/Game/Scripts/RollerManager.ts @@ -5,17 +5,8 @@ import { ICON_HEIGHT, ICON_WIDTH, IParsedGameData, ROLLER_COMBINE_EVENT, ROLLER_ import { AudioManager } from '../../Main/Scripts/managers/AudioManager'; let { ccclass, property, executeInEditMode } = _decorator; -// 帧到启动ID映射(按帧序) -let frameOrder = [ - { frame: 1, ids: [0] }, - { frame: 5, ids: [1] }, - { frame: 8, ids: [2] }, - { frame: 11, ids: [3] }, - { frame: 14, ids: [4] }, - { frame: 17, ids: [5] }, -]; - -let fps = 30; +// 普通模式下各列起转的间隔(秒) +let startScrollStagger = 0.08; @ccclass('RollerManager') @executeInEditMode @@ -181,18 +172,14 @@ export class RollerManager extends Component { this.node.emit(ROLLER_COMBINE_EVENT.ROLLER_BOUNCE, rollerId); let stopData = this._resultStopData[rollerId]; - let isWild = stopData.indexOf(0) !== -1; - let isScatter = stopData.indexOf(1) !== -1; + let isScatter = stopData.indexOf(0) !== -1; if (!this._isFreeSpin && !this._isManualStop && !this._isFastSpin) { - if (isWild && !isScatter) { - AudioManager.instance.playSFX('Appear_Wild_Sound'); - } if (isScatter) { AudioManager.instance.playSFX('Appear_Scatter_Sound'); } - if (!isWild && !isScatter) { + if (!isScatter) { AudioManager.instance.playSFX('Roller_Down'); } } @@ -214,7 +201,7 @@ export class RollerManager extends Component { hasEmitScatterTween: boolean = false; onRollerStop(rollerId: number) { - this.node.emit(ROLLER_COMBINE_EVENT.ONE_ROLLER_STOP, rollerId); + this.node.emit(ROLLER_COMBINE_EVENT.ONE_ROLLER_STOP, rollerId); let allRollerStop = true; for (let i = 0; i < this.allRollers.length; i++) { @@ -230,18 +217,13 @@ export class RollerManager extends Component { this.hasEmitScatterTween = false; if (this._isFastSpin || this._isManualStop) { - let hasScatter = this._parsedData.PanData.indexOf(1) !== -1; - let hasWild = this._parsedData.PanData.indexOf(0) !== -1; - - if (hasWild && !hasScatter) { - AudioManager.instance.playSFX('Appear_Wild_Sound'); - } + let hasScatter = this._parsedData.PanData.indexOf(0) !== -1; if (hasScatter) { AudioManager.instance.playSFX('Appear_Scatter_Sound'); } - if (!hasWild && !hasScatter) { + if (!hasScatter) { AudioManager.instance.playSFX('Roller_Down'); } } @@ -421,18 +403,16 @@ export class RollerManager extends Component { } } } else { - frameOrder.forEach(({ frame, ids }) => { - let delay = Math.max(0, (frame - 1) / fps); - ids.forEach(id => { - let roller = this.allRollers[id]; - if (roller) { - this.scheduleOnce(() => { - if (this._isManualStop) return; - roller.startScroll(); - }, delay); - } - }); - }); + for (let i = 0; i < this.allRollers.length; i++) { + let roller = this.allRollers[i]; + let delay = i * startScrollStagger; + if (roller) { + this.scheduleOnce(() => { + if (this._isManualStop) return; + roller.startScroll(); + }, delay); + } + } } } @@ -443,8 +423,8 @@ export class RollerManager extends Component { let panData = data.PanData; this._resultStopData = this.splitArray(panData, [5, 5, 5, 5, 5, 5]); - this.distributeFreeMulMap(data.FreeMulMap); - + this.distributeFreeMulMap(data.FreeMulMap); + if (this._isFastSpin) { // 快速模式:所有列同时掉落 for (let i = 0; i < this.allRollers.length; i++) { @@ -452,9 +432,9 @@ export class RollerManager extends Component { roller.stopScroll(this._resultStopData[i], 0); } } else { - // 普通模式:从左到右依次掉落,每列间隔 0.12s + // 普通模式:从左到右依次掉落,每列间隔更紧凑 for (let i = 0; i < this.allRollers.length; i++) { - const colDelay = i * 0.12; + const colDelay = i * 0.09; const roller = this.allRollers[i]; const stopData = this._resultStopData[i]; this.scheduleOnce(() => { diff --git a/assets/Game/Scripts/SlotMsg.ts b/assets/Game/Scripts/SlotMsg.ts index 2c98406..4da5aaa 100644 --- a/assets/Game/Scripts/SlotMsg.ts +++ b/assets/Game/Scripts/SlotMsg.ts @@ -1,9 +1,11 @@ -import { _decorator, Component, instantiate, Label, Node, sp, Sprite, Tween, tween, UIOpacity, UITransform, v3, Vec3 } from 'cc'; +import { _decorator, Component, director, instantiate, Label, Node, sp, Sprite, Tween, tween, UIOpacity, UITransform, v3, Vec3 } from 'cc'; import { I18nManager } from '../../Main/Scripts/managers/I18nManager'; import { getLanguage, gold2cash } from '../../Main/Scripts/main/comm'; import { UIManager } from '../../Main/Scripts/managers/UIManager'; import { AudioManager } from '../../Main/Scripts/managers/AudioManager'; import { Icon } from './Icon'; +import { SlotGame } from './SlotGame'; +import { SlotBar } from './SlotBar'; const { ccclass, property } = _decorator; @ccclass('SlotMsg') @@ -148,6 +150,7 @@ export class SlotMsg extends Component { let msg = this.middleMsgSpine.node.getChildByName('msg'); let winCount = msg.getChildByName('winCount'); winCount.getComponent(Label).string = gold2cash(endScore); + AudioManager.instance.playSFX('Slot_Msg_Normal_Win'); } showTotalWinMsg(endScore: number) { @@ -173,11 +176,137 @@ export class SlotMsg extends Component { this.largeMsgSpine.node.active = false; } + /** + * 展示多倍炸弹倍率动画 + * @param spinData 当前spin数据 + * @param callBack 动画结束回调 + * + * 此函数内部的run是async,从上到下用await/同步promise的方式,严格保证顺序和队列效果,一步一步地执行动画和界面更新。 + * 下面会对run里每一行的逻辑做中文注释,逐步解析 + */ showMultiWinAnimation(spinData, callBack: () => void) { - this.scheduleOnce(() => { - this.showTotalWinMsg(spinData.WinInfo.MulDesc.Multied); - callBack(); - }, 1) + // 获取倍率描述,多模式下兼容字段名 + let mulDesc = spinData?.WinInfo?.MulDesc || spinData?.WinInfo?.muldesc; + let multiedScore = mulDesc?.Multied; // 最终得到的分数 + let mulValue = mulDesc?.Mul; // 总倍率 + let slotGame = director.getScene()?.getComponentInChildren(SlotGame); + let bombInfos = slotGame?.getCurrentBombSettleInfos?.() || []; // 炸弹节点信息 + + if (!bombInfos.length) { + console.error('SlotGame not find bombInfos msg'); + return; + } + + // 提示分数的spine节点和最终显示位置 + let msg = this.largeMsgSpine.node.getChildByName('msg'); + let winCount = msg.getChildByName('winCount'); + let uiTf = this.node.getComponent(UITransform); + let centerLocalPos = v3(0, -315, 0); // 动画中心点坐标(本地) + let targetLocalPos = uiTf.convertToNodeSpaceAR(winCount.getWorldPosition()); // 目标分数字显示位置 + + // 设置一个节点的多倍文本 + let setMulText = (node: Node, mul: number) => { + let labNode = node.getChildByName('lab'); + if (!labNode) return; + let lab = labNode.getComponent(Label); + if (!lab) return; + lab.string = `x${mul}`; + }; + + // 节点tween到目标位置的promise(动画完resolve) + let tweenToAsync = (node: Node, toPos: Vec3, duration: number) => { + return new Promise((resolve) => { + tween(node) + .to(duration, { position: toPos }, { easing: 'quadInOut' }) + .call(() => resolve()) + .start(); + }); + }; + + // 放大动画(脉冲)的promise(动画完resolve) + let pulseAsync = (node: Node) => { + return new Promise((resolve) => { + tween(node) + .to(0.2, { scale: v3(1.5, 1.5, 1.5) }, { easing: 'quadOut' }) + .call(() => resolve()) + .start(); + }); + }; + + // 延迟promise,用于动画间隔 + let delayAsync = (seconds: number) => { + return new Promise((resolve) => { + this.scheduleOnce(() => resolve(), seconds); + }); + }; + + // === 跑队列 === + // 这部分run内部就是完整的队列模式,所有动画/节点操作都是await同步执行 + let run = async () => { + // 1. 克隆一个multiNode,做为动画的中心倍率展示 + let seedNode = bombInfos[0]?.multiNode; + let centerMulNode = instantiate(seedNode); + this.node.addChild(centerMulNode); + centerMulNode.setPosition(centerLocalPos); + centerMulNode.setScale(1, 1, 1); + centerMulNode.active = false; + setMulText(centerMulNode, 0); + + let sumMul = 0; + // 2. 遍历每一个待结算的bomb多倍icon,按顺序“飞入中心”, 逐步累加 + for (let i = 0; i < bombInfos.length; i++) { + let info = bombInfos[i]; + if (!info?.multiNode?.isValid) continue; + + let iconComp = info.iconNode?.getComponent(Icon); + // 2.1 播放爆炸动画 加入队列,爆炸完之后再进行下一步 + await new Promise((resolve) => { + iconComp.playMultiSpine(); + this.scheduleOnce(() => resolve(), 0.2); + }); + + // 2.2 当前multiNode放大(脉冲动画),await保证上一步结束 + await pulseAsync(info.multiNode); + + // 2.3 复制multiNode,实际用于“飞入中心” + let sourceWorldPos = info.multiNode.getWorldPosition(); + let sourceLocalPos = uiTf.convertToNodeSpaceAR(sourceWorldPos); + let flyNode = instantiate(info.multiNode); + info.multiNode.active = false; + this.node.addChild(flyNode); + flyNode.setPosition(sourceLocalPos); + + // 2.4 飞到中心动画 + await tweenToAsync(flyNode, centerLocalPos, 0.3); + flyNode.destroy(); + + // 2.5 累加倍率,中心节点显示最新总倍率 + sumMul += info.mul; + centerMulNode.active = true; + setMulText(centerMulNode, sumMul); + + // 2.6 中心放大动画(脉冲) + await pulseAsync(centerMulNode); + + // 2.7 小延迟,准备下一个icon + await delayAsync(0.08); + } + + + // 4. 中心multi飞到最终目标位置 + await tweenToAsync(centerMulNode, targetLocalPos, 0.2); + centerMulNode.destroy(); + + // 5. 展示最终总分获胜弹窗 + this.showTotalWinMsg(multiedScore); + // 直接调用回调(如果业务上需要动画结束后再回调可考虑调整) + if (callBack) callBack(); + let slotBar = director.getScene()?.getComponentInChildren(SlotBar); + if (slotBar) slotBar.updateWinMsg(spinData.AllScore); + }; + + // 直接触发队列执行,不等待run()结束,动画流程内部用await限定顺序,外部流程不依赖 + run(); } showTipSmall(tips: string, Type: string = "") { diff --git a/assets/Game/Scripts/SlotScene.ts b/assets/Game/Scripts/SlotScene.ts index 270b8d6..791adc3 100644 --- a/assets/Game/Scripts/SlotScene.ts +++ b/assets/Game/Scripts/SlotScene.ts @@ -112,6 +112,9 @@ export class SlotScene extends Component { GameDataManager.instance.canClickIconMsg = false; this.slotBar.setGameInfo(this.gameInfo); this.slotMsg.showLabelMsgForTween(); + this.node.getChildByName('Choose').children.forEach((child: Node, index: number) => { + child.active = index == GameDataManager.instance.chooseDiff - 1; + }) this.updateGameState(); this.isFreeSpin = this.spinData.Free != null && this.spinData && this.spinData.Free && this.spinData.Free.LeftCount > 0; if (this.isFreeSpin) { @@ -146,6 +149,7 @@ export class SlotScene extends Component { this.slotBar.manualStop(this.hasEliminate); this.slotGame.playIconWinAni(this.spinData); this.slotMsg.showRoundWinMsg(this.spinData.WinInfo.Score); + this.slotBar.updateWinMsg(this.spinData.AllScore); if (this.isDebug) { this.nextSpinInfo = GAME_DATA; } else { @@ -351,6 +355,7 @@ export class SlotScene extends Component { if (this.hasEliminate) { this.slotGame.playIconWinAni(this.spinData); this.slotMsg.showRoundWinMsg(this.spinData.WinInfo.Score); + this.slotBar.updateWinMsg(this.spinData.AllScore); if (this.isDebug) { this.nextSpinInfo = GAME_DATA; } else { @@ -405,6 +410,7 @@ export class SlotScene extends Component { if (this.hasEliminate) { this.slotGame.playIconWinAni(this.spinData); this.slotMsg.showRoundWinMsg(this.spinData.WinInfo.Score); + this.slotBar.updateWinMsg(this.spinData.AllScore); if (this.isDebug) { this.nextSpinInfo = GAME_DATA; } else { @@ -419,7 +425,7 @@ export class SlotScene extends Component { handleSpinResult() { this.lastSpinInfo = this.spinInfo; this.spinData = this.spinInfo.Data; - // this.spinData.AllScore = 700000; + // this.spinData.AllScore = 7000000000; this.isReceiveMsg = true; if (this.spinInfo.Frb.Ongoing && this.isAutoSpin) this.slotBar.closeAutoSpin(); @@ -448,9 +454,7 @@ export class SlotScene extends Component { this.slotGame.upLayer.playScatterWaitSpine(true); this.scheduleOnce(() => { this.slotGame.upLayer.playScatterSpine(false); - this.updateBg(true); - this.slotBar.updateIsFreeSpin(true); - this.slotBar.setLeftCount(this.spinData.Free.MaxCount); + this.scheduleOnce(() => { this.updateBg(true); this.slotBar.updateIsFreeSpin(true); this.slotBar.setLeftCount(this.spinData.Free.MaxCount); }, 1) NodePoolManager.instance.getNodeFromPoolDynamic("FreeSpinEnter", "Prefab/FreeSpinEnter", "Game").then((prefab: Node) => { this.node.addChild(prefab); let freeCount = this.spinData.Free.MaxCount; @@ -584,13 +588,14 @@ export class SlotScene extends Component { if (this.spinData.WinInfo.MulDesc == null) { this.slotMsg.showTotalWinMsg(this.spinData.RoundInfo.Score); + this.slotBar.updateWinMsg(this.spinData.RoundInfo.Score); callBack(); return; } if (this.spinData.WinInfo.MulDesc !== null) { this.slotMsg.showTotalWinMsg(this.spinData.WinInfo.MulDesc.UnMultied); - this.slotMsg.showMultiWinAnimation(this.spinData, callBack) + this.slotMsg.showMultiWinAnimation(this.spinData, callBack); return; } } diff --git a/assets/Game/Scripts/UpLayer.ts b/assets/Game/Scripts/UpLayer.ts index 49ad44d..7bd62b7 100644 --- a/assets/Game/Scripts/UpLayer.ts +++ b/assets/Game/Scripts/UpLayer.ts @@ -186,18 +186,7 @@ export class UpLayer extends Component { for (let i = 0; i < rm.allRollers.length; i++) { this.syncSpecialFromRoller(rm.allRollers[i]); } - } - - playReadyHandAni(rollerId: number) { - this.readHandLayer.active = true; - this.setReadHandSkeletonActive(true); - this.readyHandNode.getComponent(sp.Skeleton).setAnimation(0, 'animation', true); - - this.readyHandGrayNode.children.forEach(child => child.active = true) - this.readyHandGrayNode.children[rollerId].active = false; - - this.readyHandNode.setPosition(this.readyHandGrayNode.children[rollerId].position.clone()); - } + } setReadHandSkeletonActive(bol: boolean) { this.readyHandNode.active = bol; diff --git a/assets/Game/SlotScene.prefab b/assets/Game/SlotScene.prefab index b7b5c42..e96b900 100644 --- a/assets/Game/SlotScene.prefab +++ b/assets/Game/SlotScene.prefab @@ -25545,7 +25545,7 @@ }, { "__type__": "cc.Node", - "_name": "choose", + "_name": "Choose", "_objFlags": 0, "__editorExtras__": {}, "_parent": { @@ -26106,7 +26106,7 @@ }, "component": "", "_componentId": "869a6c2dfpJV5PioVAJJ/Lk", - "handler": "", + "handler": "onBtnChooseDiff", "customEventData": "" }, { diff --git a/assets/Game/Textures/Spines/ChooseDiff.meta b/assets/Game/Textures/Spines/ChooseDiff.meta new file mode 100644 index 0000000..b055901 --- /dev/null +++ b/assets/Game/Textures/Spines/ChooseDiff.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "ab66cc55-1313-4bf9-83e0-dd497d468b1f", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/Game/Textures/Spines/ChooseDiff/Volatility.atlas b/assets/Game/Textures/Spines/ChooseDiff/Volatility.atlas new file mode 100644 index 0000000..5e96307 --- /dev/null +++ b/assets/Game/Textures/Spines/ChooseDiff/Volatility.atlas @@ -0,0 +1,13 @@ + +Volatility.png +size: 122,122 +format: RGBA8888 +filter: Linear,Linear +repeat: none +5ueJ + rotate: false + xy: 2, 2 + size: 118, 118 + orig: 128, 128 + offset: 5, 5 + index: -1 diff --git a/assets/Game/Textures/Spines/ChooseDiff/Volatility.atlas.meta b/assets/Game/Textures/Spines/ChooseDiff/Volatility.atlas.meta new file mode 100644 index 0000000..4612d2f --- /dev/null +++ b/assets/Game/Textures/Spines/ChooseDiff/Volatility.atlas.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.0.0", + "importer": "*", + "imported": true, + "uuid": "477dc91c-e91a-4480-a469-6e3288a8e463", + "files": [ + ".atlas", + ".json" + ], + "subMetas": {}, + "userData": {} +} diff --git a/assets/Game/Textures/Spines/ChooseDiff/Volatility.json b/assets/Game/Textures/Spines/ChooseDiff/Volatility.json new file mode 100644 index 0000000..68db920 --- /dev/null +++ b/assets/Game/Textures/Spines/ChooseDiff/Volatility.json @@ -0,0 +1 @@ +{"skeleton":{"hash":"qGwrP/Xxgy3GycXezqKYcgMy7uQ","spine":"3.8.99","x":-563.75,"y":-961,"width":1104.75,"height":1922,"images":"./i2/","audio":"E:/项目/Slot/拉布布/源文件/Volatility/i2"},"bones":[{"name":"root"},{"name":"a","parent":"root"},{"name":"1","parent":"a"},{"name":"A","parent":"1"},{"name":"K","parent":"a"},{"name":"K1","parent":"K"},{"name":"K2","parent":"K","x":-18.55,"y":-28.43},{"name":"K3","parent":"K","x":-39.54,"y":-60.66},{"name":"K4","parent":"K","x":-60.23,"y":-96.2},{"name":"K5","parent":"K","x":-81.83,"y":-131.38},{"name":"K6","parent":"K","x":-103.61,"y":-168.22},{"name":"K7","parent":"K","x":-128.79,"y":-206.6},{"name":"K8","parent":"K","x":-152.36,"y":-244.27},{"name":"K9","parent":"K","x":-177.27,"y":-283.82},{"name":"K10","parent":"K","x":-201.29,"y":-324.15},{"name":"K11","parent":"K","x":-225.56,"y":-367.43},{"name":"K12","parent":"K","x":-251.05,"y":-406.62},{"name":"K13","parent":"K","x":-275.55,"y":-446.79},{"name":"K14","parent":"K","x":-301.58,"y":-489.06},{"name":"K15","parent":"K","x":-327.67,"y":-532.96},{"name":"bone","parent":"root","length":956.43,"rotation":-121.57,"x":0.08,"y":-0.06,"color":"ff00004a"},{"name":"K16","parent":"K","x":-350.61,"y":-570.25},{"name":"K17","parent":"K","x":-374.03,"y":-607.05},{"name":"K18","parent":"K","x":-396.02,"y":-643.86},{"name":"K19","parent":"K","x":-416.1,"y":-678.75},{"name":"K20","parent":"K","x":-440,"y":-716.04},{"name":"K21","parent":"K","x":-461.03,"y":-749.97},{"name":"K22","parent":"K","x":-480.63,"y":-783.43},{"name":"K23","parent":"K","x":-499.75,"y":-813.07},{"name":"K24","parent":"K","x":-499.75,"y":-813.07},{"name":"K25","parent":"K","x":-499.75,"y":-813.07},{"name":"K26","parent":"K","x":-499.75,"y":-813.07},{"name":"K27","parent":"K","x":-499.75,"y":-813.07},{"name":"K28","parent":"K","x":-499.75,"y":-813.07},{"name":"KK","parent":"K"},{"name":"KK2","parent":"K","x":-499.75,"y":-813.07},{"name":"骨骼","parent":"root","x":-499.01,"y":-800.95},{"name":"骨骼2","parent":"root","x":-499.01,"y":-800.95}],"slots":[{"name":"bg","bone":"a"},{"name":"组 5","bone":"a"},{"name":"IconDifficulty","bone":"骨骼"},{"name":"IconDifficulty3","bone":"骨骼","blend":"additive"},{"name":"IconDifficulty2","bone":"骨骼2"},{"name":"TitleAndBtn","bone":"1"},{"name":"组 4","bone":"1"},{"name":"组 6","bone":"A","color":"ffffff00","blend":"additive"},{"name":"Confirm","bone":"1"},{"name":"k1","bone":"K1","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k29","bone":"KK","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k2","bone":"K2","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k3","bone":"K3","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k4","bone":"K4","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k5","bone":"K5","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k6","bone":"K6","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k7","bone":"K7","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k8","bone":"K8","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k9","bone":"K9","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k10","bone":"K10","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k11","bone":"K11","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k12","bone":"K12","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k13","bone":"K13","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k14","bone":"K14","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k15","bone":"K15","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k16","bone":"K16","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k17","bone":"K17","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k18","bone":"K18","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k19","bone":"K19","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k20","bone":"K20","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k21","bone":"K21","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k22","bone":"K22","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k23","bone":"K23","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k24","bone":"K24","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k25","bone":"K25","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k26","bone":"K26","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k27","bone":"K27","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k28","bone":"K28","color":"ffffff00","attachment":"5ueJ","blend":"additive"},{"name":"k30","bone":"KK2","color":"ffffff00","attachment":"5ueJ","blend":"additive"}],"skins":[{"name":"default","attachments":{"k1":{"5ueJ":{"width":128,"height":128}},"k2":{"5ueJ":{"width":128,"height":128}},"k3":{"5ueJ":{"width":128,"height":128}},"k4":{"5ueJ":{"width":128,"height":128}},"k5":{"5ueJ":{"width":128,"height":128}},"k6":{"5ueJ":{"width":128,"height":128}},"k7":{"5ueJ":{"width":128,"height":128}},"k8":{"5ueJ":{"width":128,"height":128}},"k9":{"5ueJ":{"width":128,"height":128}},"k10":{"5ueJ":{"width":128,"height":128}},"k11":{"5ueJ":{"width":128,"height":128}},"k12":{"5ueJ":{"width":128,"height":128}},"k13":{"5ueJ":{"width":128,"height":128}},"k14":{"5ueJ":{"width":128,"height":128}},"k15":{"5ueJ":{"width":128,"height":128}},"k16":{"5ueJ":{"width":128,"height":128}},"k17":{"5ueJ":{"width":128,"height":128}},"k18":{"5ueJ":{"width":128,"height":128}},"k19":{"5ueJ":{"width":128,"height":128}},"k20":{"5ueJ":{"width":128,"height":128}},"k21":{"5ueJ":{"width":128,"height":128}},"k22":{"5ueJ":{"width":128,"height":128}},"k23":{"5ueJ":{"width":128,"height":128}},"k24":{"5ueJ":{"width":128,"height":128}},"k25":{"5ueJ":{"width":128,"height":128}},"k26":{"5ueJ":{"width":128,"height":128}},"k27":{"5ueJ":{"width":128,"height":128}},"k28":{"5ueJ":{"width":128,"height":128}},"k29":{"5ueJ":{"width":128,"height":128}},"k30":{"5ueJ":{"width":128,"height":128}}}}],"animations":{"animation":{"slots":{"k1":{"color":[{"color":"ffffff00"},{"time":0.0605,"color":"ffffffff","curve":"stepped"},{"time":0.1091,"color":"ffffffff"},{"time":0.3523,"color":"ffffff00"}]},"k2":{"color":[{"time":0.0361,"color":"ffffff00"},{"time":0.0848,"color":"ffffffff","curve":"stepped"},{"time":0.1333,"color":"ffffffff"},{"time":0.3767,"color":"ffffff00"}]},"k3":{"color":[{"time":0.0605,"color":"ffffff00"},{"time":0.1091,"color":"ffffffff","curve":"stepped"},{"time":0.158,"color":"ffffffff"},{"time":0.4008,"color":"ffffff00"}]},"k4":{"color":[{"time":0.0848,"color":"ffffff00"},{"time":0.1333,"color":"ffffffff","curve":"stepped"},{"time":0.1817,"color":"ffffffff"},{"time":0.4254,"color":"ffffff00"}]},"k5":{"color":[{"time":0.1091,"color":"ffffff00"},{"time":0.158,"color":"ffffffff","curve":"stepped"},{"time":0.2064,"color":"ffffffff"},{"time":0.4497,"color":"ffffff00"}]},"k6":{"color":[{"time":0.1333,"color":"ffffff00"},{"time":0.1817,"color":"ffffffff","curve":"stepped"},{"time":0.2311,"color":"ffffffff"},{"time":0.4741,"color":"ffffff00"}]},"k7":{"color":[{"time":0.158,"color":"ffffff00"},{"time":0.2064,"color":"ffffffff","curve":"stepped"},{"time":0.2551,"color":"ffffffff"},{"time":0.4984,"color":"ffffff00"}]},"k8":{"color":[{"time":0.1817,"color":"ffffff00"},{"time":0.2311,"color":"ffffffff","curve":"stepped"},{"time":0.2795,"color":"ffffffff"},{"time":0.5227,"color":"ffffff00"}]},"k9":{"color":[{"time":0.2064,"color":"ffffff00"},{"time":0.2551,"color":"ffffffff","curve":"stepped"},{"time":0.3038,"color":"ffffffff"},{"time":0.5471,"color":"ffffff00"}]},"k10":{"color":[{"time":0.2311,"color":"ffffff00"},{"time":0.2795,"color":"ffffffff","curve":"stepped"},{"time":0.3281,"color":"ffffffff"},{"time":0.5714,"color":"ffffff00"}]},"k11":{"color":[{"time":0.2551,"color":"ffffff00"},{"time":0.3038,"color":"ffffffff","curve":"stepped"},{"time":0.3523,"color":"ffffffff"},{"time":0.5957,"color":"ffffff00"}]},"k12":{"color":[{"time":0.2795,"color":"ffffff00"},{"time":0.3281,"color":"ffffffff","curve":"stepped"},{"time":0.3767,"color":"ffffffff"},{"time":0.62,"color":"ffffff00"}]},"k13":{"color":[{"time":0.3038,"color":"ffffff00"},{"time":0.3523,"color":"ffffffff","curve":"stepped"},{"time":0.4008,"color":"ffffffff"},{"time":0.6444,"color":"ffffff00"}]},"k14":{"color":[{"time":0.3281,"color":"ffffff00"},{"time":0.3767,"color":"ffffffff","curve":"stepped"},{"time":0.4254,"color":"ffffffff"},{"time":0.6688,"color":"ffffff00"}]},"k15":{"color":[{"time":0.3523,"color":"ffffff00"},{"time":0.4008,"color":"ffffffff","curve":"stepped"},{"time":0.4497,"color":"ffffffff"},{"time":0.6929,"color":"ffffff00"}]},"k16":{"color":[{"time":0.3767,"color":"ffffff00"},{"time":0.4254,"color":"ffffffff","curve":"stepped"},{"time":0.4741,"color":"ffffffff"},{"time":0.7174,"color":"ffffff00"}]},"k17":{"color":[{"time":0.4008,"color":"ffffff00"},{"time":0.4497,"color":"ffffffff","curve":"stepped"},{"time":0.4984,"color":"ffffffff"},{"time":0.742,"color":"ffffff00"}]},"k18":{"color":[{"time":0.4254,"color":"ffffff00"},{"time":0.4741,"color":"ffffffff","curve":"stepped"},{"time":0.5227,"color":"ffffffff"},{"time":0.7661,"color":"ffffff00"}]},"k19":{"color":[{"time":0.4497,"color":"ffffff00"},{"time":0.4984,"color":"ffffffff","curve":"stepped"},{"time":0.5471,"color":"ffffffff"},{"time":0.7904,"color":"ffffff00"}]},"k20":{"color":[{"time":0.4741,"color":"ffffff00"},{"time":0.5227,"color":"ffffffff","curve":"stepped"},{"time":0.5714,"color":"ffffffff"},{"time":0.815,"color":"ffffff00"}]},"k21":{"color":[{"time":0.4984,"color":"ffffff00"},{"time":0.5471,"color":"ffffffff","curve":"stepped"},{"time":0.5957,"color":"ffffffff"},{"time":0.8393,"color":"ffffff00"}]},"k22":{"color":[{"time":0.5227,"color":"ffffff00"},{"time":0.5714,"color":"ffffffff","curve":"stepped"},{"time":0.62,"color":"ffffffff"},{"time":0.8633,"color":"ffffff00"}]},"k23":{"color":[{"time":0.5714,"color":"ffffff00"},{"time":0.62,"color":"ffffffff","curve":"stepped"},{"time":0.6688,"color":"ffffffff"},{"time":0.912,"color":"ffffff00"}]},"k24":{"color":[{"time":0.5957,"color":"ffffff00"},{"time":0.6444,"color":"ffffffff","curve":"stepped"},{"time":0.6929,"color":"ffffffff"},{"time":0.9361,"color":"ffffff00"}]},"k25":{"color":[{"time":0.62,"color":"ffffff00"},{"time":0.6688,"color":"ffffffff","curve":"stepped"},{"time":0.7174,"color":"ffffffff"},{"time":0.9607,"color":"ffffff00"}]},"k26":{"color":[{"time":0.6444,"color":"ffffff00"},{"time":0.6929,"color":"ffffffff","curve":"stepped"},{"time":0.742,"color":"ffffffff"},{"time":0.985,"color":"ffffff00"}]},"k27":{"color":[{"time":0.6688,"color":"ffffff00"},{"time":0.7174,"color":"ffffffff","curve":"stepped"},{"time":0.7661,"color":"ffffffff"},{"time":1.0093,"color":"ffffff00"}]},"k28":{"color":[{"time":0.6929,"color":"ffffff00"},{"time":0.742,"color":"ffffffff","curve":"stepped"},{"time":0.7904,"color":"ffffffff"},{"time":1.0333,"color":"ffffff00"}]},"k29":{"color":[{"color":"ffffff00"},{"time":0.0605,"color":"ffffffff","curve":"stepped"},{"time":0.1091,"color":"ffffffff"},{"time":0.3523,"color":"ffffff00"}]},"k30":{"color":[{"time":0.6929,"color":"ffffff00"},{"time":0.742,"color":"ffffffff","curve":"stepped"},{"time":0.7904,"color":"ffffffff"},{"time":1.0333,"color":"ffffff00"}]}},"bones":{"K2":{"rotate":[{"angle":10}]},"K3":{"rotate":[{"angle":20}]},"K4":{"rotate":[{"angle":30}]},"K5":{"rotate":[{"angle":40}]},"K6":{"rotate":[{"angle":50}]},"K7":{"rotate":[{"angle":60}]},"K8":{"rotate":[{"angle":70}]},"K9":{"rotate":[{"angle":80}]},"K10":{"rotate":[{"angle":90}]},"K11":{"rotate":[{"angle":10}]},"K12":{"rotate":[{"angle":20}]},"K13":{"rotate":[{"angle":30}]},"K14":{"rotate":[{"angle":40}]},"K15":{"rotate":[{"angle":50}]},"K16":{"rotate":[{"angle":60}]},"K17":{"rotate":[{"angle":70}]},"K18":{"rotate":[{"angle":80}]},"K20":{"rotate":[{"angle":10}]},"K21":{"rotate":[{"angle":20}]},"K22":{"rotate":[{"angle":30}]},"K23":{"rotate":[{"angle":40}]},"K24":{"rotate":[{"angle":50}]},"K25":{"rotate":[{"angle":60}]},"K26":{"rotate":[{"angle":70}]},"K27":{"rotate":[{"angle":80}]},"KK":{"scale":[{"curve":0.412,"c2":0.6,"c3":0.75},{"time":0.3667,"x":1.5,"y":1.5}]},"KK2":{"scale":[{"time":0.6667,"curve":0.412,"c2":0.6,"c3":0.75},{"time":1.0333,"x":1.4,"y":1.4}]}}},"animation2":{"slots":{"Confirm":{"color":[{"time":0.4667,"color":"ffffffff"},{"time":0.5027,"color":"ffffff00"}]},"IconDifficulty":{"attachment":[{"name":null},{"time":1.1333,"name":null}]},"IconDifficulty2":{"color":[{"color":"ffffff00","curve":"stepped"},{"time":1.1333,"color":"ffffff00"},{"time":1.1667,"color":"ffffffff"},{"time":1.3333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":1.1333,"name":null},{"time":1.6667,"name":null}]},"IconDifficulty3":{"color":[{"color":"ffffff00","curve":"stepped"},{"time":1.1333,"color":"ffffff00"},{"time":1.1667,"color":"ffffffff"},{"time":1.3333,"color":"ffffff00"}],"attachment":[{"name":null},{"time":1.1333,"name":null}]},"TitleAndBtn":{"color":[{"time":0.4667,"color":"ffffffff"},{"time":0.5027,"color":"ffffff00"}]},"k1":{"color":[{"time":0.4667,"color":"ffffff00"},{"time":0.527,"color":"ffffffff","curve":"stepped"},{"time":0.5757,"color":"ffffffff"},{"time":0.819,"color":"ffffff00"}]},"k2":{"color":[{"time":0.5027,"color":"ffffff00"},{"time":0.5514,"color":"ffffffff","curve":"stepped"},{"time":0.6,"color":"ffffffff"},{"time":0.8433,"color":"ffffff00"}]},"k3":{"color":[{"time":0.527,"color":"ffffff00"},{"time":0.5757,"color":"ffffffff","curve":"stepped"},{"time":0.6244,"color":"ffffffff"},{"time":0.8673,"color":"ffffff00"}]},"k4":{"color":[{"time":0.5514,"color":"ffffff00"},{"time":0.6,"color":"ffffffff","curve":"stepped"},{"time":0.6487,"color":"ffffffff"},{"time":0.892,"color":"ffffff00"}]},"k5":{"color":[{"time":0.5757,"color":"ffffff00"},{"time":0.6244,"color":"ffffffff","curve":"stepped"},{"time":0.673,"color":"ffffffff"},{"time":0.9163,"color":"ffffff00"}]},"k6":{"color":[{"time":0.6,"color":"ffffff00"},{"time":0.6487,"color":"ffffffff","curve":"stepped"},{"time":0.6973,"color":"ffffffff"},{"time":0.9406,"color":"ffffff00"}]},"k7":{"color":[{"time":0.6244,"color":"ffffff00"},{"time":0.673,"color":"ffffffff","curve":"stepped"},{"time":0.7217,"color":"ffffffff"},{"time":0.965,"color":"ffffff00"}]},"k8":{"color":[{"time":0.6487,"color":"ffffff00"},{"time":0.6973,"color":"ffffffff","curve":"stepped"},{"time":0.746,"color":"ffffffff"},{"time":0.9893,"color":"ffffff00"}]},"k9":{"color":[{"time":0.673,"color":"ffffff00"},{"time":0.7217,"color":"ffffffff","curve":"stepped"},{"time":0.7703,"color":"ffffffff"},{"time":1.0136,"color":"ffffff00"}]},"k10":{"color":[{"time":0.6973,"color":"ffffff00"},{"time":0.746,"color":"ffffffff","curve":"stepped"},{"time":0.7947,"color":"ffffffff"},{"time":1.038,"color":"ffffff00"}]},"k11":{"color":[{"time":0.7217,"color":"ffffff00"},{"time":0.7703,"color":"ffffffff","curve":"stepped"},{"time":0.819,"color":"ffffffff"},{"time":1.0623,"color":"ffffff00"}]},"k12":{"color":[{"time":0.746,"color":"ffffff00"},{"time":0.7947,"color":"ffffffff","curve":"stepped"},{"time":0.8433,"color":"ffffffff"},{"time":1.0866,"color":"ffffff00"}]},"k13":{"color":[{"time":0.7703,"color":"ffffff00"},{"time":0.819,"color":"ffffffff","curve":"stepped"},{"time":0.8673,"color":"ffffffff"},{"time":1.1109,"color":"ffffff00"}]},"k14":{"color":[{"time":0.7947,"color":"ffffff00"},{"time":0.8433,"color":"ffffffff","curve":"stepped"},{"time":0.892,"color":"ffffffff"},{"time":1.1354,"color":"ffffff00"}]},"k15":{"color":[{"time":0.819,"color":"ffffff00"},{"time":0.8673,"color":"ffffffff","curve":"stepped"},{"time":0.9163,"color":"ffffffff"},{"time":1.1596,"color":"ffffff00"}]},"k16":{"color":[{"time":0.8433,"color":"ffffff00"},{"time":0.892,"color":"ffffffff","curve":"stepped"},{"time":0.9406,"color":"ffffffff"},{"time":1.1839,"color":"ffffff00"}]},"k17":{"color":[{"time":0.8673,"color":"ffffff00"},{"time":0.9163,"color":"ffffffff","curve":"stepped"},{"time":0.965,"color":"ffffffff"},{"time":1.2083,"color":"ffffff00"}]},"k18":{"color":[{"time":0.892,"color":"ffffff00"},{"time":0.9406,"color":"ffffffff","curve":"stepped"},{"time":0.9893,"color":"ffffffff"},{"time":1.2327,"color":"ffffff00"}]},"k19":{"color":[{"time":0.9163,"color":"ffffff00"},{"time":0.965,"color":"ffffffff","curve":"stepped"},{"time":1.0136,"color":"ffffffff"},{"time":1.2569,"color":"ffffff00"}]},"k20":{"color":[{"time":0.9406,"color":"ffffff00"},{"time":0.9893,"color":"ffffffff","curve":"stepped"},{"time":1.038,"color":"ffffffff"},{"time":1.2813,"color":"ffffff00"}]},"k21":{"color":[{"time":0.965,"color":"ffffff00"},{"time":1.0136,"color":"ffffffff","curve":"stepped"},{"time":1.0623,"color":"ffffffff"},{"time":1.3056,"color":"ffffff00"}]},"k22":{"color":[{"time":0.9893,"color":"ffffff00"},{"time":1.038,"color":"ffffffff","curve":"stepped"},{"time":1.0866,"color":"ffffffff"},{"time":1.3299,"color":"ffffff00"}]},"k23":{"color":[{"time":1.038,"color":"ffffff00"},{"time":1.0866,"color":"ffffffff","curve":"stepped"},{"time":1.1354,"color":"ffffffff"},{"time":1.3786,"color":"ffffff00"}]},"k24":{"color":[{"time":1.0623,"color":"ffffff00"},{"time":1.1109,"color":"ffffffff","curve":"stepped"},{"time":1.1596,"color":"ffffffff"},{"time":1.4027,"color":"ffffff00"}]},"k25":{"color":[{"time":1.0866,"color":"ffffff00"},{"time":1.1354,"color":"ffffffff","curve":"stepped"},{"time":1.1839,"color":"ffffffff"},{"time":1.4272,"color":"ffffff00"}]},"k26":{"color":[{"time":1.1109,"color":"ffffff00"},{"time":1.1596,"color":"ffffffff","curve":"stepped"},{"time":1.2083,"color":"ffffffff"},{"time":1.4516,"color":"ffffff00"}]},"k27":{"color":[{"time":1.1354,"color":"ffffff00"},{"time":1.1839,"color":"ffffffff","curve":"stepped"},{"time":1.2327,"color":"ffffffff"},{"time":1.4759,"color":"ffffff00"}]},"k28":{"color":[{"time":1.1596,"color":"ffffff00"},{"time":1.2083,"color":"ffffffff","curve":"stepped"},{"time":1.2569,"color":"ffffffff"},{"time":1.5,"color":"ffffff00"}]},"k29":{"color":[{"time":0.4667,"color":"ffffff00"},{"time":0.527,"color":"ffffffff","curve":"stepped"},{"time":0.5757,"color":"ffffffff"},{"time":0.819,"color":"ffffff00"}]},"k30":{"color":[{"time":1.1596,"color":"ffffff00"},{"time":1.2083,"color":"ffffffff","curve":"stepped"},{"time":1.2569,"color":"ffffffff"},{"time":1.5,"color":"ffffff00"}]},"组 4":{"color":[{"time":0.4667,"color":"ffffffff"},{"time":0.5027,"color":"ffffff00"}]},"组 6":{"color":[{"color":"ffffff00"},{"time":0.0667,"color":"ffffff6a"},{"time":0.3333,"color":"ffffff00"}]}},"bones":{"A":{"scale":[{"curve":0.394,"c2":0.58,"c3":0.75},{"time":0.3333,"x":1.1,"y":1.1}]},"1":{"scale":[{"time":0.3333,"curve":0.25,"c3":0.75},{"time":0.5027,"x":0.043,"y":0.043}]},"K2":{"rotate":[{"time":0.4667,"angle":10}]},"K3":{"rotate":[{"time":0.4667,"angle":20}]},"K4":{"rotate":[{"time":0.4667,"angle":30}]},"K5":{"rotate":[{"time":0.4667,"angle":40}]},"K6":{"rotate":[{"time":0.4667,"angle":50}]},"K7":{"rotate":[{"time":0.4667,"angle":60}]},"K8":{"rotate":[{"time":0.4667,"angle":70}]},"K9":{"rotate":[{"time":0.4667,"angle":80}]},"K10":{"rotate":[{"time":0.4667,"angle":90}]},"K11":{"rotate":[{"time":0.4667,"angle":10}]},"K12":{"rotate":[{"time":0.4667,"angle":20}]},"K13":{"rotate":[{"time":0.4667,"angle":30}]},"K14":{"rotate":[{"time":0.4667,"angle":40}]},"K15":{"rotate":[{"time":0.4667,"angle":50}]},"K16":{"rotate":[{"time":0.4667,"angle":60}]},"K17":{"rotate":[{"time":0.4667,"angle":70}]},"K18":{"rotate":[{"time":0.4667,"angle":80}]},"K20":{"rotate":[{"time":0.4667,"angle":10}]},"K21":{"rotate":[{"time":0.4667,"angle":20}]},"K22":{"rotate":[{"time":0.4667,"angle":30}]},"K23":{"rotate":[{"time":0.4667,"angle":40}]},"K24":{"rotate":[{"time":0.4667,"angle":50}]},"K25":{"rotate":[{"time":0.4667,"angle":60}]},"K26":{"rotate":[{"time":0.4667,"angle":70}]},"K27":{"rotate":[{"time":0.4667,"angle":80}]},"KK":{"scale":[{"time":0.4667,"curve":0.412,"c2":0.6,"c3":0.75},{"time":0.8333,"x":1.5,"y":1.5}]},"KK2":{"scale":[{"time":1.1333,"curve":0.412,"c2":0.6,"c3":0.75},{"time":1.5,"x":1.4,"y":1.4}]},"骨骼2":{"scale":[{"time":1.1333,"curve":0.448,"c2":0.75,"c3":0.75},{"time":1.3333,"x":1.2,"y":1.2}]}}}}} \ No newline at end of file diff --git a/assets/Game/Textures/Spines/ChooseDiff/Volatility.json.meta b/assets/Game/Textures/Spines/ChooseDiff/Volatility.json.meta new file mode 100644 index 0000000..f7e1679 --- /dev/null +++ b/assets/Game/Textures/Spines/ChooseDiff/Volatility.json.meta @@ -0,0 +1,11 @@ +{ + "ver": "1.2.6", + "importer": "spine-data", + "imported": true, + "uuid": "9030fe79-4cec-4ffe-bcc0-0e8ea00c664e", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": {} +} diff --git a/assets/Game/Textures/Spines/ChooseDiff/Volatility.png b/assets/Game/Textures/Spines/ChooseDiff/Volatility.png new file mode 100644 index 0000000000000000000000000000000000000000..77e64a6e39b4f0acd7f82277116883e107e83ca0 GIT binary patch literal 2755 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 0) { + GameDataManager.instance.gamePending = gamePending.Data[0]; + GameDataManager.instance.chooseDiff = +gamePending.Data[0].split('_')[2]; + } else { + if (localStorage.getItem('HasGamePending') !== null) { + GameDataManager.instance.gamePending = String(getGameId()) + '_' + localStorage.getItem('HasGamePending'); + GameDataManager.instance.chooseDiff = +localStorage.getItem('HasGamePending'); + } else { + GameDataManager.instance.chooseDiff = 2; + GameDataManager.instance.gamePending = getGameId() + '_' + 2; + } + } let gameInfo = await callGameApi("gameinfo", {}); GameDataManager.instance.gameInfo = gameInfo; diff --git a/assets/Main/TipMessagePanel.prefab b/assets/Main/TipMessagePanel.prefab index 0968761..de5188d 100644 --- a/assets/Main/TipMessagePanel.prefab +++ b/assets/Main/TipMessagePanel.prefab @@ -1354,9 +1354,9 @@ "_dstBlendFactor": 4, "_color": { "__type__": "cc.Color", - "r": 130, - "g": 214, - "b": 40, + "r": 255, + "g": 246, + "b": 187, "a": 255 }, "_spriteFrame": {