diff --git a/assets/GameplayIntro/compressed.meta b/assets/GameplayIntro/compressed.meta new file mode 100644 index 00000000..4c96a1d0 --- /dev/null +++ b/assets/GameplayIntro/compressed.meta @@ -0,0 +1,13 @@ +{ + "ver": "1.1.3", + "uuid": "491356dd-e7a1-43b9-8d71-79a8ae4c56a5", + "importer": "folder", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/assets/Scene/GameScene.fire b/assets/Scene/GameScene.fire index 0e4cd060..a6eec5ab 100644 --- a/assets/Scene/GameScene.fire +++ b/assets/Scene/GameScene.fire @@ -5170,7 +5170,18 @@ "MapBlockPrefab": { "__uuid__": "6023e99b-9806-44e9-8325-487a6cfdf3e5" }, - "VinePrefab": null, + "VinePrefab": { + "__uuid__": "044002ff-89b0-43b1-9f05-2b64c057b755" + }, + "hourglassPrefab": { + "__uuid__": "54e4d6f7-56a9-4a9a-ac1b-5fe8f0c19b08" + }, + "rocketPrefab": { + "__uuid__": "856d5b25-8b93-4463-92fd-348ff7ae798c" + }, + "rocketBoxPrefab": { + "__uuid__": "6790907b-e558-4c95-b3a2-3f87485e3d48" + }, "Wall_Prefab": [ null ], @@ -14589,6 +14600,12 @@ "__id__": 2 }, "_enabled": true, + "threeWinsPrefab": { + "__uuid__": "abc8f49b-e719-4eb4-8b01-8f7ed6a909c9" + }, + "threeWinsFont": { + "__uuid__": "7ed7640c-5fe6-4777-98f2-299424c47a92" + }, "label": null, "text": "hello", "freeze": { diff --git a/assets/Script/Block.ts b/assets/Script/Block.ts index 7fb456a5..3d2adb7d 100644 --- a/assets/Script/Block.ts +++ b/assets/Script/Block.ts @@ -1506,7 +1506,7 @@ export default class Block extends cc.Component { // ============================================ touchStart(event) { if (this.spawnLocked || this.over || MapConroler._instance.gameOver || MapConroler._instance.touchIng - || MapConroler._instance.oldRainbowPreparing) return; + || MapConroler._instance.oldRainbowPreparing || MapConroler._instance.startBoostPreparing) return; if (this.oldRainbow) this.refreshOldRainbowVisual(); // 返回世界坐标 let touchLoc = event.getLocation(); diff --git a/assets/Script/GameManager.ts b/assets/Script/GameManager.ts index 30b12a58..a5b93fe3 100644 --- a/assets/Script/GameManager.ts +++ b/assets/Script/GameManager.ts @@ -19,6 +19,7 @@ import ClientUpdate from "./module/Config/ClientUpdate"; import DailyTaskProgressTracker from "./module/Task/DailyTaskProgressTracker"; import ServerEnvironment from "./module/Config/ServerEnvironment"; import ServerSwitch from "./module/Config/ServerSwitch"; +import ThreeWinStreak from "./ThreeWinStreak"; const { ccclass, property } = cc._decorator; @@ -83,6 +84,7 @@ export default class GameManager extends cc.Component { // }); this.startTimeCutDown(); cc.fx.GameConfig.init(true); + ThreeWinStreak.restore(); ClientUpdate.initialize(); cc.fx.GameConfig.GM_INFO.sceneValue = "loadScene"; cc.fx.GameConfig.GM_INFO.gameState = false; @@ -483,6 +485,7 @@ export default class GameManager extends cc.Component { } // console.log("服务器强制刷新状态__________", data.data.forcedUpdate); //如果有连胜记录,就赋值 + ThreeWinStreak.restore(data.data, data.data.forcedUpdate === true); if (cc.fx.GameConfig.forceOldRainbowWinStreakC || cc.fx.GameConfig.forceRainbowWinStreakB) { cc.fx.GameConfig.GM_INFO.winStreak = 10; cc.fx.GameConfig.GM_INFO.winState = true; diff --git a/assets/Script/Map.ts b/assets/Script/Map.ts index 0ea9cc0d..1752295a 100644 --- a/assets/Script/Map.ts +++ b/assets/Script/Map.ts @@ -4,6 +4,9 @@ import RainbowOldVisual from "./RainbowOldVisual"; import RainbowOldOpening from "./RainbowOldOpening"; import { oldRainbowPool, chooseOldRainbowTarget } from "./RainbowOldRules"; import { applyRainbowElimination } from "./RainbowCut"; +import StartBoostOpening from "./StartBoostOpening"; +import ThreeWinStreak from "./ThreeWinStreak"; +import { StartBoostLoadout, startBoostRewards, consumeCarriedStartBoost } from "./StartBoostLoadout"; // Learn TypeScript: // - https://docs.cocos.com/creator/manual/en/scripting/typescript.html // Learn Attribute: @@ -55,6 +58,22 @@ export default class MapConroler extends cc.Component { @property({ type: cc.Prefab, tooltip: "藤蔓预制体(未单独绑定时使用 Block_Prop[22])" }) VinePrefab: cc.Prefab = null; + @property(cc.Prefab) + hourglassPrefab: cc.Prefab = null; + @property(cc.Prefab) + rocketPrefab: cc.Prefab = null; + @property(cc.Prefab) + rocketBoxPrefab: cc.Prefab = null; + startBoostPreparing = false; + private startBoostOpening: StartBoostOpening = null; + private startBoostsApplied = false; + private startBoostLoadout: StartBoostLoadout = null; + private startBoostPanelOpening = false; + private startBoostKey = ""; + private static startBoostReplay: { key: string; loadout: StartBoostLoadout } = null; + threeWinStreak: ThreeWinStreak; + private startBoostAssetsLoading = false; + private startBoostAssets: cc.Prefab[] = []; private blockAssetsReady = false; oldRainbowPreparing = false; private oldRainbowEntryBlocker: cc.Node = null; @@ -319,8 +338,15 @@ export default class MapConroler extends cc.Component { cc.fx.GameConfig.GM_INFO.winState = true; } this.oldRainbowPreparing = cc.fx.GameConfig.isOldRainbowRewardActive(); + this.startBoostPreparing = cc.fx.GameConfig.isStartBoostersUnlocked(); + this.threeWinStreak = new ThreeWinStreak(this.startBoostPreparing); + const info = cc.fx.GameConfig.GM_INFO; + this.startBoostKey = `${info.level}:${info.GameplayType}:${info.otherLevel}`; + const replay = MapConroler.startBoostReplay; + if (this.startBoostPreparing && replay && replay.key === this.startBoostKey) this.startBoostLoadout = replay.loadout; + MapConroler.startBoostReplay = null; this.initBottomLayout(); - if (this.oldRainbowPreparing) { + if (this.oldRainbowPreparing && !this.startBoostPreparing) { this.oldRainbowEntryBlocker = new cc.Node("OldRainbowEntryBlocker"); this.oldRainbowEntryBlocker.setContentSize(cc.winSize); this.oldRainbowEntryBlocker.addComponent(cc.BlockInputEvents); @@ -420,6 +446,7 @@ export default class MapConroler extends cc.Component { const SceneManager = canvasTemp.getComponent("SceneManager"); if (SceneManager) { MapConroler._instance.SceneManager = SceneManager + if (this.startBoostPreparing) SceneManager.beginDynamicPopupLoad("startBoosters"); } else { // console.log("SceneManager 组件未找到"); } @@ -628,6 +655,10 @@ export default class MapConroler extends cc.Component { } onDestroy() { + if (this.startBoostOpening) this.startBoostOpening.dispose(); + this.startBoostAssets.forEach(prefab => prefab.decRef()); + this.startBoostAssets = []; + if (this.startBoostPreparing || this.startBoostsApplied) this.SceneManager?.finishDynamicPopupLoad("startBoosters"); if (this.oldRainbowOpening) this.oldRainbowOpening.dispose(); this.oldRainbowOpening = null; this.oldRainbowEntryReady = null; @@ -1094,7 +1125,7 @@ export default class MapConroler extends cc.Component { // 10. 发送游戏开始事件到服务器 // ============================================ startUpdate() { - if (this.oldRainbowPreparing) return; + if (this.oldRainbowPreparing || this.startBoostPreparing) return; // 停止冰冻外圈特效 this.onBlockClick(); if (this.iceTrue() == true) { @@ -1106,6 +1137,7 @@ export default class MapConroler extends cc.Component { } if (this.gameStart == false) { this.gameStart = true; + this.threeWinStreak.begin(); let power = cc.fx.GameTool.getUserPowerTime(); if (!power) { cc.fx.GameTool.setUserHealth(-1, (data) => { @@ -1132,6 +1164,7 @@ export default class MapConroler extends cc.Component { "is_frenzy": this.is_frenzy, "infinity": endLevel, "win_streak": cc.fx.GameConfig.GM_INFO.winStreak, + "pilot_drop": this.startBoostLoadout ? this.startBoostLoadout.streak : 0, } if (cc.fx.GameConfig.GM_INFO.winStreak >= 10 && cc.fx.GameConfig.GM_INFO.otherLevel == 0) { cc.fx.GameConfig.GM_INFO.winState = cc.fx.GameConfig.forceOldRainbowWinStreakC || cc.fx.GameConfig.forceRainbowWinStreakB; @@ -1160,6 +1193,28 @@ export default class MapConroler extends cc.Component { // ============================================ rainbowStreak: RainbowStreak = null; + private updateStartBoostOpening(dt: number): void { + const transition = this.node.parent.parent.parent.getChildByName("zhuanchang"); + if (transition && transition.active) return; + if (!this.startBoostsApplied) { + if (!this.startBoostLoadout) return; + const rewards = startBoostRewards(this.startBoostLoadout.streak); + const hasBoosts = rewards.hourglass + rewards.rocket + Number(this.startBoostLoadout.hourglass) + Number(this.startBoostLoadout.rocket) > 0; + if (hasBoosts && (!this.startBoostOpening || !this.startBoostOpening.update(dt, false))) return; + if (this.startBoostOpening) { + this.startBoostOpening.dispose(); + this.startBoostOpening = null; + } + this.startBoostsApplied = true; + if (this.rainbowStreak) { + this.rainbowStreak.startOpening(); + return; + } + } else if (this.rainbowStreak && !this.rainbowStreak.updateOpening(dt)) return; + this.startBoostPreparing = false; + if (this.oldRainbowEntryReady) this.oldRainbowEntryReady(); + } + /** 同一地图只在初始化完成时调用;空池也完成本次机会,复活不重发。 */ private applyOldRainbowAtStart(): void { if (!this.oldRainbowPreparing || this.oldRainbowOpening) return; @@ -1398,19 +1453,78 @@ export default class MapConroler extends cc.Component { const schedulePopupWarmup = () => { if (!wallReady || !blockReady || popupWarmupScheduled) return; if (!this.isMapRuntimeAlive()) return; - if (this.oldRainbowPreparing) { + if (this.oldRainbowPreparing || this.startBoostPreparing) { this.oldRainbowEntryReady = schedulePopupWarmup; // 首次进关先揭幕;飞行时钟会等待转场真正结束。 if (this.waitingForFirstEntry) this.finishFirstGameplayEntry(true); } try { + if (this.startBoostPreparing) { + if (!this.startBoostLoadout) { + if (this.startBoostPanelOpening) return; + this.SceneManager.openThreeWins(selection => { + if (!this.isMapRuntimeAlive()) return; + this.startBoostLoadout = { streak: cc.fx.GameConfig.GM_INFO.threeWinStreak, ...selection }; + this.SceneManager.beginDynamicPopupLoad("startBoosters"); + schedulePopupWarmup(); + }); + this.startBoostPanelOpening = true; + return; + } + const rewards = startBoostRewards(this.startBoostLoadout.streak); + if (!rewards.hourglass && !rewards.rocket && !this.startBoostLoadout.hourglass && !this.startBoostLoadout.rocket) return; + // 编辑器可能继续预览旧场景缓存;缺少新绑定时加载同一组指定预制体。 + if (!this.hourglassPrefab || !this.rocketPrefab || !this.rocketBoxPrefab) { + if (this.startBoostAssetsLoading) return; + this.startBoostAssetsLoading = true; + cc.assetManager.loadAny([ + "54e4d6f7-56a9-4a9a-ac1b-5fe8f0c19b08", "856d5b25-8b93-4463-92fd-348ff7ae798c", + "6790907b-e558-4c95-b3a2-3f87485e3d48" + ], { type: cc.Prefab }, (error, prefabs: cc.Prefab[]) => { + this.startBoostAssetsLoading = false; + if (error) { + if (this.isMapRuntimeAlive()) cc.fx.GameConfig.showBlockLoadError(error, + schedulePopupWarmup, "开场道具资源加载失败\n点击重试"); + return; + } + prefabs.forEach(prefab => prefab.addRef()); + if (!this.isMapRuntimeAlive()) { prefabs.forEach(prefab => prefab.decRef()); return; } + this.startBoostAssets = prefabs; + [this.hourglassPrefab, this.rocketPrefab, this.rocketBoxPrefab] = prefabs; + schedulePopupWarmup(); + }); + return; + } + if (!this.startBoostOpening) this.startBoostOpening = new StartBoostOpening(this, this.startBoostLoadout, prop => { + if (!consumeCarriedStartBoost(this.startBoostLoadout, prop, cc.fx.GameConfig.GM_INFO)) return; + cc.fx.GameTool.saveStartBoostInventory(prop); + cc.fx.GameTool.shushu_Track("resource_cost", { + change_reason: "使用道具", + id: prop === "hourglass" ? "2006" : "2007", + num: -1, + }); + }); + return; + } this.applyOldRainbowAtStart(); } catch (error) { - cc.fx.GameConfig.showBlockLoadError(error, schedulePopupWarmup, "彩虹资源加载失败\n点击重试"); + cc.fx.GameConfig.showBlockLoadError(error, schedulePopupWarmup, + this.startBoostPreparing ? "开场道具资源加载失败\n点击重试" : "彩虹资源加载失败\n点击重试"); return; } if (this.oldRainbowPreparing) return; this.oldRainbowEntryReady = null; + if (this.startBoostsApplied) { + this.SceneManager.finishDynamicPopupLoad("startBoosters"); + if (this.oldRainbowEntryGuidesPending) { + this.oldRainbowEntryGuidesPending = false; + this.showMapEntryGuides(); + } + if (this.oldRainbowIntroPending) { + this.oldRainbowIntroPending = false; + this.showEnterNewModeIfNeeded(); + } + } if (!this.spawnGatesInitialized) this.initSpawnGates(); popupWarmupScheduled = true; // console.log(`[进关耗时][地图资源确认及生成] 完成,独立耗时=${Date.now() - this.mapPreparationStartedAt}ms,从开始累计=${Date.now() - this.entryStartedAt}ms`); @@ -1448,7 +1562,7 @@ export default class MapConroler extends cc.Component { schedulePopupWarmup(); }); this.blockInit(() => { - if (!this.oldRainbowPreparing) this.initSpawnGates(); + if (!this.oldRainbowPreparing && !this.startBoostPreparing) this.initSpawnGates(); if (cc.fx.GameConfig.isRainbowRewardActive()) { this.rainbowStreak = new RainbowStreak(this, cc.find("Canvas/Game/GameNode/Bottom/rainbow")); } @@ -1542,7 +1656,7 @@ export default class MapConroler extends cc.Component { }, 100); - if (this.oldRainbowPreparing) this.oldRainbowEntryGuidesPending = true; + if (this.oldRainbowPreparing || this.startBoostPreparing) this.oldRainbowEntryGuidesPending = true; else this.showMapEntryGuides(); } @@ -3976,10 +4090,10 @@ export default class MapConroler extends cc.Component { } //时间增加 - addTime(time) { + addTime(time, refreshDisplay = true) { if (this.gameOver == true || this.timeNumber <= 0) return; this.timeNumber += time; - NumberToImage.getTimeMargi3((this.timeNumber), 45, "company_", this.timeLabel) + if (refreshDisplay) NumberToImage.getTimeMargi3((this.timeNumber), 45, "company_", this.timeLabel) } // ============================================ @@ -4555,6 +4669,7 @@ export default class MapConroler extends cc.Component { if (this.canCompleteLevel() && !this.gameWin && !this.gameOver) { // console.log("获胜了成功了!!!!!!") this.gameWin = true; + this.threeWinStreak.win(); CloudRiseService.finish(true); cc.fx.GameTool.recordStarterPackLevelResult(true); this.gameStart = false; @@ -4725,7 +4840,7 @@ export default class MapConroler extends cc.Component { } showEnterNewModeIfNeeded() { - if (this.oldRainbowPreparing) { + if (this.oldRainbowPreparing || this.startBoostPreparing) { this.oldRainbowIntroPending = true; return; } @@ -5182,6 +5297,11 @@ export default class MapConroler extends cc.Component { this.SceneManager.releasePausePanel(); } + if (!this.gameStart && !this.gameWin && !this.gameOver && this.startBoostLoadout) { + MapConroler.startBoostReplay = { key: this.startBoostKey, loadout: this.startBoostLoadout }; + } else { + this.threeWinStreak.fail(); + } this.gameStart = false; this.againCanTouch = false; @@ -5547,6 +5667,7 @@ export default class MapConroler extends cc.Component { return; } // 没有需提示的损失时,直接显示原有 Health 结果页。 + this.threeWinStreak.fail(); this.hideLoseReasonPanels(lose); if (!cc.fx.GameConfig.isWinStreakUnlocked() && cc.fx.GameConfig.GM_INFO.otherLevel == 0) { cc.fx.GameTool.setWinStreak("fail"); @@ -5573,6 +5694,7 @@ export default class MapConroler extends cc.Component { if (!lose) return; if (!await this.settleCloudRiseLoss(false)) return; if (!cc.isValid(lose, true)) return; + this.threeWinStreak.fail(); if (cc.fx.GameConfig.GM_INFO.otherLevel == 0) { if (this.revive) this.revive.getComponent("Revive").offShow(); if (this.node) { @@ -5641,6 +5763,7 @@ export default class MapConroler extends cc.Component { } // MiniGameSdk.API.showToast("体力值减少"); cc.fx.GameConfig.LEVEL_INFO_init(false, 0, false); + if (customEventData == false) this.threeWinStreak.fail(); if (cc.fx.GameConfig.GM_INFO.otherLevel == 0 && customEventData == false) { cc.fx.GameTool.setWinStreak("fail"); DailyTaskProgressTracker.invalidateAttempt(); @@ -5978,7 +6101,7 @@ export default class MapConroler extends cc.Component { // 6. 时间归零时触发游戏失败 // ============================================ startTimeCutDown() { - if (this.oldRainbowPreparing) return; + if (this.oldRainbowPreparing || this.startBoostPreparing) return; // 保证始终只有一个游戏倒计时回调,避免多次启动后时间成倍减少。 this.stopTimeCutDown(); this.startBoom(); @@ -8434,6 +8557,10 @@ export default class MapConroler extends cc.Component { // ============================================ update(dt) { if (!this.blockAssetsReady) return; + if (this.startBoostPreparing) { + this.updateStartBoostOpening(dt); + return; + } this.updateOldRainbowOpening(dt); if (this.oldRainbowPreparing) return; if (this.rainbowStreak) this.rainbowStreak.update(dt); diff --git a/assets/Script/RainbowCut.ts b/assets/Script/RainbowCut.ts index b012b444..23ad2be1 100644 --- a/assets/Script/RainbowCut.ts +++ b/assets/Script/RainbowCut.ts @@ -104,7 +104,7 @@ function reshapeProps(map: any, block: any, cut: RainbowCut): void { } } -function reshape(map: any, block: any, cut: RainbowCut, template: cc.Node, upper: boolean): void { +export function reshape(map: any, block: any, cut: RainbowCut, template: cc.Node, upper: boolean): void { const node: cc.Node = block.node; if (!upper) { // 只清理由自己占用的格子,不调用会触发机关判定的接口。 @@ -156,7 +156,7 @@ function reshape(map: any, block: any, cut: RainbowCut, template: cc.Node, upper } /** 原节点身份不变,重新生成联动碰撞代理,不解除组合或重置连接计数。 */ -function refreshLinks(map: any, changed: any[]): void { +export function refreshLinks(map: any, changed: any[]): void { const linksOf = (block: any): cc.Node[] => { const nodes = (block.teamBlocks || []).slice(); if ((block.type === 9 || block.type === 1 || block.type === 10) && block.block_Info.node) { diff --git a/assets/Script/RainbowStreak.ts b/assets/Script/RainbowStreak.ts index ea1831e3..d0fbe386 100644 --- a/assets/Script/RainbowStreak.ts +++ b/assets/Script/RainbowStreak.ts @@ -8,6 +8,7 @@ export default class RainbowStreak { readonly energy = new RainbowEnergy(); casting = false; private first = true; + private opening = false; private hidden = false; private credited = new Set(); private bottle: cc.Node; @@ -67,6 +68,7 @@ export default class RainbowStreak { } private counting(): boolean { + if (this.opening) return !this.hidden && !this.map.gameOver && !this.map.gameWin; return !this.hidden && this.map.gameStart && this.map.scheduleCallback != null && !this.map.pause && !this.map.gameOver && !this.map.gameWin && !this.map.shopPause && !this.map.isPauseOpen() && !this.map.iceTrue() && this.map.timeNumber > 0; @@ -134,6 +136,22 @@ export default class RainbowStreak { this.render(); } + /** 沙漏/火箭测试开场结束后施放首次彩虹,不提前开始计时或扣体力。 */ + startOpening(): void { + this.first = false; + this.opening = true; + const candidates = this.refreshAvailability(); + if (this.energy.consume()) this.begin(candidates); + this.render(); + } + + updateOpening(dt: number): boolean { + this.update(dt); + if (this.casting || this.fadingFlights.length) return false; + this.opening = false; + return true; + } + eliminated(node: cc.Node): void { if (this.credited.has(node)) return; this.credited.add(node); @@ -170,8 +188,8 @@ export default class RainbowStreak { if (t >= 1) this.finish(true); } const candidates = this.refreshAvailability(); - this.energy.tick(dt, !this.first && this.counting()); - if (!this.first && !this.casting && this.counting() && !this.map.touchIng + this.energy.tick(dt, !this.opening && !this.first && this.counting()); + if (!this.opening && !this.first && !this.casting && this.counting() && !this.map.touchIng && !this.map.ishammer && !this.map.ismagic && !this.map.magicMask.active && !this.map.node.children.some(node => cc.isValid(node, true) && node.getComponent("Block")?.isTouch) && !this.settling() diff --git a/assets/Script/RocketCut.ts b/assets/Script/RocketCut.ts new file mode 100644 index 00000000..b7de9647 --- /dev/null +++ b/assets/Script/RocketCut.ts @@ -0,0 +1,74 @@ +import { reshape, refreshLinks } from "./RainbowCut"; +import { RAINBOW_SHAPES } from "./RainbowRules"; +import { RocketCut } from "./RocketRules"; + +/** 不调用消除入口:不推进机关、计数、彩虹能量,也不生成替代方块。 */ +export function applyRocketCut(map: any, block: any, cut: RocketCut): void { + const origin = block.rocketOrigin || block.node.uuid; + const x = block.posX, y = block.posY; + if (!cut.fragments.length) { + block.allBlocks.forEach(p => { + const cell = map.mapBlocksWall[x + p.x][y + p.y].getComponent("MapBlock"); + if (cell.block_Id === block.node.uuid) { cell.block_Id = ""; cell.nowColor = -1; } + }); + map.blocks.splice(map.blocks.indexOf(block.node), 1); + block.node.active = false; + block.node.removeFromParent(); + block.node.destroy(); + } else { + const first = cut.fragments[0]; + const upper = block.type === 1 && block.block_Info.node?.getComponent("Block"); + const template = cc.instantiate(map.Block_Array[first.shape]); + const floors = block.node.children.filter(node => node.getComponent("Floor")).map(node => ({ + node, x: Math.round((node.x + 65) / 120), y: Math.round((node.y - 60) / 120), + time: node.getComponent("Floor").time + })); + // 只有普通块及其普通地板/问号覆盖允许分裂,因此没有钥匙等附件归属转移。 + const info = cut.fragments.length > 1 ? JSON.parse(JSON.stringify(block.block_Info)) : null; + if (info) { + const question = block.node.getChildByName("question"); + if (question) info.questionTime = question.getComponent("Question").time; + floors.forEach(floor => { + if (!RAINBOW_SHAPES[first.shape].some(p => p.x + first.offset.x === floor.x && p.y + first.offset.y === floor.y)) { + floor.node.active = false; + floor.node.removeFromParent(); + floor.node.destroy(); + } + }); + } + if (upper) { upper.posX = x; upper.posY = y; } + reshape(map, block, first, template, false); + block.rocketOrigin = origin; + if (upper) { + reshape(map, upper, first, template, true); + const offset = upper.getStackingPos(); + upper.node.setPosition(block.node.x + offset.x, block.node.y + offset.y); + upper.stacking = cc.v2(offset.x, offset.y); + upper.startPos = upper.node.position.clone(); + } + template.destroy(); + for (const fragment of cut.fragments.slice(1)) { + const node = cc.instantiate(map.Block_Array[fragment.shape]); + const cell = map.mapBlocksWall[x + fragment.offset.x][y + fragment.offset.y]; + node.parent = map.node; + node.setPosition(cell.x + 65, cell.y - 60); + const ids = map.blocks.map(n => Number(n.getComponent("Block").blockId) || 0); + const extra = node.getComponent("Block"); + extra.init({ ...info, id: Math.max(0, ...ids) + 1, block: fragment.shape, + position: { x: node.x, y: node.y } }, null, null, null, null); + extra.rocketOrigin = origin; + node.children.forEach(child => { + const floor = child.getComponent("Floor"); + if (!floor) return; + const px = Math.round((child.x + 65) / 120), py = Math.round((child.y - 60) / 120); + const old = floors.find(p => p.x === px + fragment.offset.x && p.y === py + fragment.offset.y); + floor.init(old.time, extra.posX + px, extra.posY + py); + }); + map.blocks.push(node); + extra.cmupdate(); + } + refreshLinks(map, upper ? [block, upper] : [block]); + block.cmupdate(); + } + map.blockNum = map.blocks.length; +} diff --git a/assets/Script/RocketCut.ts.meta b/assets/Script/RocketCut.ts.meta new file mode 100644 index 00000000..23050fe1 --- /dev/null +++ b/assets/Script/RocketCut.ts.meta @@ -0,0 +1,10 @@ +{ + "ver": "1.1.0", + "uuid": "5e70396e-5d38-4ec6-b448-30df1f56e43a", + "importer": "typescript", + "isPlugin": false, + "loadPluginInWeb": true, + "loadPluginInNative": true, + "loadPluginInEditor": false, + "subMetas": {} +} \ No newline at end of file diff --git a/assets/Script/RocketRules.ts b/assets/Script/RocketRules.ts new file mode 100644 index 00000000..1028a1a9 --- /dev/null +++ b/assets/Script/RocketRules.ts @@ -0,0 +1,114 @@ +import { RainbowCell, RainbowCut, RAINBOW_SHAPES, rainbowPriority } from "./RainbowRules"; + +export interface RocketCut { cell: RainbowCell; fragments: RainbowCut[]; } + +function key(cells: RainbowCell[]): string { + const x = Math.min(...cells.map(p => p.x)), y = Math.min(...cells.map(p => p.y)); + return cells.map(p => (p.x - x) + "," + (p.y - y)).sort().join(";"); +} + +/** 每次仅删除一格;其余四邻接连通片各自匹配已有形状。 */ +export function rocketCuts(cells: RainbowCell[], edgeOnly = false): RocketCut[] { + return cells.map(cell => { + const pending = cells.filter(p => p !== cell).slice(); + const fragments: RainbowCut[] = []; + while (pending.length) { + const group = [pending.pop()]; + for (let i = 0; i < group.length; i++) { + for (let j = pending.length - 1; j >= 0; j--) { + if (Math.abs(pending[j].x - group[i].x) + Math.abs(pending[j].y - group[i].y) === 1) { + group.push(pending.splice(j, 1)[0]); + } + } + } + const shape = RAINBOW_SHAPES.findIndex(points => points.length === group.length && key(points) === key(group)); + if (shape < 0) throw new Error("火箭残块缺少对应形状: " + key(group)); + fragments.push({ cell, shape, offset: { + x: Math.min(...group.map(p => p.x)) - Math.min(...RAINBOW_SHAPES[shape].map(p => p.x)), + y: Math.min(...group.map(p => p.y)) - Math.min(...RAINBOW_SHAPES[shape].map(p => p.y)) + } }); + } + return { cell, fragments }; + }).filter(cut => !edgeOnly || cut.fragments.length === 1); +} + +export const ROCKET_CUTS = RAINBOW_SHAPES.map(shape => rocketCuts(shape)); + +export function rocketEdgeOnly(block: any, protectedColors: Set): boolean { + const info = block.block_Info; + return protectedColors.has(block.color) || (block.type !== 0 && block.type !== 16) + || !!block.flowerType || info.lock != null || info.colorArray != null || info.colorChange != null + || !!info.horizontal || !!info.vertical || info.floorMove === true + || (block.teamBlocks || []).length > 1; +} + +export function rocketCandidates(map: any): any[] { + const blocks = map.blocks.filter(node => cc.isValid(node, true) && node.active) + .map(node => node.getComponent("Block")).filter(Boolean); + const buttons = new Set((map.buttonBlock || []).map(node => node.getComponent("MapBlock").color)); + const protectedColors = new Set(); + (map.wallArray || []).forEach(node => { + const wall = node.getChildByName("wall").getComponent("Wall"); + (wall.colorStartArray || []).forEach(color => protectedColors.add(color)); + if (wall.special === 2) protectedColors.add(wall.color); + }); + const glued = new Set(); + blocks.forEach(block => { + if (block.type === 9 || block.type === 19) { + glued.add(block.node); + if (block.block_Info.node) glued.add(block.block_Info.node); + } + if ((block.adhesiveNode || []).some(node => cc.isValid(node, true) && node.active + && node.getComponent("Adhesive")?.target)) glued.add(block.node); + }); + return blocks.filter(block => !block.spawnLocked && !block.over && !block.rainbowEliminating + && !block.oldRainbow && block.color !== 100 && block.color !== 11 + && [10, 11, 22].indexOf(block.type) < 0 && !!ROCKET_CUTS[block.block_Info.block]) + .map(block => { + const upper = block.type === 1 && block.block_Info.node?.getComponent("Block"); + const layers = upper ? [block, upper] : [block]; + if (layers.some(layer => glued.has(layer.node) || buttons.has(layer.color))) return null; + const edgeOnly = layers.some(layer => rocketEdgeOnly(layer, protectedColors)); + const cuts = ROCKET_CUTS[block.block_Info.block].filter(cut => !edgeOnly || cut.fragments.length === 1); + return { block, cuts, edgeOnly, origin: block.rocketOrigin || block.node.uuid, + priority: block.allBlocks.length === 1 ? 2 : layers.some(layer => rainbowPriority(layer) > 0) ? 1 : 0 }; + }).filter(candidate => candidate && candidate.cuts.length); +} + +export function chooseRocketTarget(candidates: any[], hit: Set, remaining: number, + random: () => number = Math.random): any { + if (!candidates.length) return null; + const priority = Math.min(...candidates.map(candidate => candidate.priority)); + let pool = candidates.filter(candidate => candidate.priority === priority); + const fresh = pool.filter(candidate => !hit.has(candidate.origin)); + if (fresh.length) pool = fresh; + const target = pool[Math.floor(random() * pool.length)]; + // 1932 等候选不足的开局,重复从边缘裁切,保留主体供后续火箭命中。 + const edges = target.cuts.filter(cut => cut.fragments.length === 1); + const cuts = candidates.length < remaining && edges.length ? edges : target.cuts; + return { target, cut: cuts[Math.floor(random() * cuts.length)] }; +} + +export interface RocketShot { x: number; y: number; origin: string; cut: RocketCut; } + +/** 只在候选快照上模拟逐发裁切;同一原块的实际命中须保持规划顺序。 */ +export function planRocketShots(map: any, count = 3, random: () => number = Math.random): RocketShot[] { + let pool = rocketCandidates(map).map(candidate => ({ ...candidate, + x: candidate.block.posX, y: candidate.block.posY })); + const shots: RocketShot[] = [], hit = new Set(); + for (let remaining = count; remaining > 0; remaining--) { + const choice = chooseRocketTarget(pool, hit, remaining, random); + if (!choice) break; + const { target, cut } = choice; + shots.push({ x: target.x + cut.cell.x, y: target.y + cut.cell.y, origin: target.origin, cut }); + hit.add(target.origin); + pool = pool.filter(candidate => candidate !== target); + for (const fragment of cut.fragments) { + const cuts = ROCKET_CUTS[fragment.shape].filter(next => !target.edgeOnly || next.fragments.length === 1); + if (cuts.length) pool.push({ ...target, cuts, + x: target.x + fragment.offset.x, y: target.y + fragment.offset.y, + priority: RAINBOW_SHAPES[fragment.shape].length === 1 ? 2 : target.priority }); + } + } + return shots; +} diff --git a/assets/Script/RocketRules.ts.meta b/assets/Script/RocketRules.ts.meta new file mode 100644 index 00000000..5e3ff3dc --- /dev/null +++ b/assets/Script/RocketRules.ts.meta @@ -0,0 +1,10 @@ +{ + "ver": "1.1.0", + "uuid": "93746ec7-0a81-4f9c-95d8-18bc8c4b3e17", + "importer": "typescript", + "isPlugin": false, + "loadPluginInWeb": true, + "loadPluginInNative": true, + "loadPluginInEditor": false, + "subMetas": {} +} \ No newline at end of file diff --git a/assets/Script/SceneManager.ts b/assets/Script/SceneManager.ts index bca54062..9ddc57f5 100644 --- a/assets/Script/SceneManager.ts +++ b/assets/Script/SceneManager.ts @@ -13,6 +13,8 @@ import LoadingCatAnimation from "./LoadingCatAnimation"; import Utils from "./module/Pay/Utils"; import { starterPackRemaining } from "./module/Config/StarterPack"; import NumberToImage from "./NumberToImage"; +import ThreeWinsPanel, { ThreeWinsSelection } from "./ThreeWinsPanel"; +import { canCarryStartBoost, infiniteStartBoost, StartBoostProp } from "./StartBoostLoadout"; import { MiniGameSdk } from "./Sdk/MiniGameSdk"; const { ccclass, property } = cc._decorator; @@ -32,6 +34,76 @@ export default class SceneManager extends cc.Component { private static activeInstance: SceneManager = null; + @property(cc.Prefab) + threeWinsPrefab: cc.Prefab = null; + + @property(cc.SpriteAtlas) + threeWinsFont: cc.SpriteAtlas = null; + + private threeWinsRoot: cc.Node = null; + private threeWinsPanel: ThreeWinsPanel = null; + + private threeWinsData() { + const info = cc.fx.GameConfig.GM_INFO; + const level = cc.fx.GameTool.maxLevel() && info.GameplayType === 1 ? info.endLevelNum : info.level + 1; + return { level, threeWinStreak: info.threeWinStreak, tenWinStreak: info.winStreak, + hourglassAmount: info.hourglassAmount, rocketAmount: info.rocketAmount, + infiniteHourglass: infiniteStartBoost(info, "hourglass"), infiniteRocket: infiniteStartBoost(info, "rocket") }; + } + + getStartBoostBoxFrame(streak: number): cc.SpriteFrame { + return this.threeWinsPrefab.data.getChildByName("box").getChildByName("box" + Math.min(3, streak)) + .getComponent(cc.Sprite).spriteFrame; + } + + openThreeWins(onStart: (selection: ThreeWinsSelection) => void) { + if (!this.isPopupRuntimeAlive() || this.threeWinsRoot) return; + if (!this.threeWinsPrefab || !this.threeWinsFont) throw new Error("GameScene 未绑定 threeWins 预制体或字体"); + const root = this.threeWinsRoot = new cc.Node("threeWinsModal"); + root.setContentSize(cc.winSize); + root.addComponent(cc.BlockInputEvents); + this.node.addChild(root); + root.zIndex = 1000; + try { + const view = cc.instantiate(this.threeWinsPrefab); + root.addChild(view); + view.setPosition(0, 0); + const mask = view.getChildByName("New Sprite(Splash)"); + mask.parent = root; + mask.setSiblingIndex(0); + const panel = this.threeWinsPanel = view.addComponent(ThreeWinsPanel); + panel.init(this.threeWinsFont, this.threeWinsData(), { + onProp: (prop, selected) => { + cc.fx.AudioManager._instance.playEffect("anniu_little", null); + if (selected && !canCarryStartBoost(cc.fx.GameConfig.GM_INFO, prop)) { + this.openPropBuy(prop); + } else panel.setSelected(prop, selected); + }, + onStart: selection => { + for (const prop of ["hourglass", "rocket"] as StartBoostProp[]) { + if (selection[prop] && !canCarryStartBoost(cc.fx.GameConfig.GM_INFO, prop)) { + panel.setSelected(prop, false); + this.openPropBuy(prop); + return; + } + } + cc.fx.AudioManager._instance.playEffect("anniu_Big", null); + this.threeWinsRoot = null; + this.threeWinsPanel = null; + root.active = false; + root.destroy(); + onStart(selection); + }, + }); + this.finishDynamicPopupLoad("startBoosters"); + } catch (error) { + this.threeWinsRoot = null; + this.threeWinsPanel = null; + root.destroy(); + throw error; + } + } + private isPopupRuntimeAlive(): boolean { return cc.isValid(this, true) && SceneManager.activeInstance === this @@ -1369,6 +1441,7 @@ export default class SceneManager extends cc.Component { if (continueControl && continueControl._touch && MapConroler && MapConroler._instance) { continueControl.setTouch(false); if (!await MapConroler._instance.settleCloudRiseLoss(true) || !this.isPopupRuntimeAlive()) return; + MapConroler._instance.threeWinStreak.fail(); this.closePause(); if (MapConroler._instance.gameStart == true) { // MiniGameSdk.API.showToast("体力值减少"); @@ -1838,10 +1911,14 @@ export default class SceneManager extends cc.Component { const target = prop && prop.getChildByName(name); if (!target) throw new Error(`propWindow item is missing: ${name}`); - ["freeze", "hammer", "magic"].forEach((itemName) => { + ["freeze", "hammer", "magic", "hourglass", "rocket"].forEach((itemName) => { prop.getChildByName(itemName).active = itemName === name; }); - prop.getChildByName("buy_Btn").getComponent("btnControl").setTouch(true); + prop.getChildByName("buy_Btn").active = name !== "hourglass" && name !== "rocket"; + this.propBuyButton(prop).getComponent("btnControl").setTouch(true); + const overOpening = this.threeWinsRoot && this.threeWinsRoot.active; + propRoot.parent = overOpening ? this.node : gameRoot; + propRoot.zIndex = overOpening ? this.threeWinsRoot.zIndex + 1 : 1000; propRoot.active = true; prop.scale = 0.3; cc.tween(prop) @@ -1871,7 +1948,7 @@ export default class SceneManager extends cc.Component { cc.fx.AudioManager._instance.playEffect("anniu_Big", null); const propRoot = this.getDynamicPopup("propWindow"); const prop = propRoot && propRoot.getChildByName("prop"); - const buyBtn = prop && prop.getChildByName("buy_Btn"); + const buyBtn = this.propBuyButton(prop); const buyControl = buyBtn && buyBtn.getComponent("btnControl"); const map = MapConroler && MapConroler._instance; if (buyControl && buyControl._touch && map && cc.isValid(map, true)) { @@ -1882,14 +1959,45 @@ export default class SceneManager extends cc.Component { map.buyHammer(); else if (this.btnName == "magic") map.buyMagic(); + else if (this.btnName === "hourglass" || this.btnName === "rocket") + this.buyStartBoost(this.btnName); } } + private propBuyButton(prop: cc.Node): cc.Node { + if (!prop) return null; + if (this.btnName === "hourglass" || this.btnName === "rocket") { + return prop.getChildByName(this.btnName).getChildByName("buy_Btn"); + } + return prop.getChildByName("buy_Btn"); + } + + private buyStartBoost(prop: StartBoostProp) { + const cost = prop === "hourglass" ? 200 : 800; + if (cc.fx.GameConfig.GM_INFO.coin < cost) { + MiniGameSdk.API.showToast("金币不足,无法购买道具"); + this.resetBtn(); + const popup = this.getDynamicPopup("propWindow"); + const canOpen = () => this.isPopupRuntimeAlive() && popup === this.getDynamicPopup("propWindow") + && !!popup && popup.active && this.btnName === prop; + this.scheduleOnce(() => { + if (canOpen()) this.openShop(null, undefined, canOpen); + }, 0.5); + return; + } + cc.fx.GameTool.buyProp(prop === "hourglass" ? 2006 : 2007, () => { + if (!this.isPopupRuntimeAlive()) return; + this.updateCoin(); + this.closePropBuy(false); + if (this.threeWinsPanel) this.threeWinsPanel.setSelected(prop, true); + }); + } + resetBtn() { if (!this.isPopupRuntimeAlive()) return; const propRoot = this.getDynamicPopup("propWindow"); const prop = propRoot && propRoot.getChildByName("prop"); - const buyBtn = prop && prop.getChildByName("buy_Btn"); + const buyBtn = this.propBuyButton(prop); const buyControl = buyBtn && buyBtn.getComponent("btnControl"); if (buyControl) buyControl.setTouch(true); } @@ -1940,9 +2048,10 @@ export default class SceneManager extends cc.Component { } //打开商店 - openShop(event, customEventData?: string) { + openShop(event, customEventData?: string, canOpen?: () => boolean) { if (event) cc.fx.AudioManager._instance.playEffect("anniu_little", null); if (!this.isPopupRuntimeAlive()) return; + if (canOpen && !canOpen()) return; console.log("进入sceneManager openShop"); if (!cc.fx.GameConfig.GM_INFO.canIos) { return; @@ -1958,6 +2067,7 @@ export default class SceneManager extends cc.Component { const onShopDouble = (res) => { if (!this.isPopupRuntimeAlive()) return; + if (canOpen && !canOpen()) return; if (shopPath !== cc.fx.GameConfig.getShopPrefabPath()) return; if (res.code === 1) { let eventName = ""; @@ -2076,6 +2186,10 @@ export default class SceneManager extends cc.Component { } this.releasePropWindowPanel(); + if (this.threeWinsRoot && this.threeWinsPanel) { + this.threeWinsPanel.refresh(this.threeWinsData()); + this.threeWinsRoot.active = true; + } } openRewardWindow(data, callBack) { @@ -2214,7 +2328,11 @@ export default class SceneManager extends cc.Component { // this.node.addChild(reddemCodeNode); } update(dt) { - + if (this.threeWinsPanel) { + this.threeWinsPanel.refreshInventory(this.threeWinsData()); + const transition = this.node.getChildByName("zhuanchang"); + if (!transition || !transition.active) this.threeWinsPanel.playEntry(); + } } public setPic(url, node) { diff --git a/assets/Script/StartBoostLoadout.ts b/assets/Script/StartBoostLoadout.ts new file mode 100644 index 00000000..9474c2dc --- /dev/null +++ b/assets/Script/StartBoostLoadout.ts @@ -0,0 +1,32 @@ +export type StartBoostProp = "hourglass" | "rocket"; + +export interface StartBoostLoadout { + streak: number; + hourglass: boolean; + rocket: boolean; + spentHourglass?: boolean; + spentRocket?: boolean; +} + +export function startBoostRewards(streak: number): { hourglass: number; rocket: number } { + return { hourglass: streak >= 3 ? 3 : streak > 0 ? 2 : 0, + rocket: streak >= 3 ? 2 : streak >= 2 ? 1 : 0 }; +} + +export function infiniteStartBoost(info: any, prop: StartBoostProp): boolean { + return Number(info[prop === "hourglass" ? "infiniteHourglassTime" : "infiniteRocketTime"]) > Date.now() / 1000; +} + +export function canCarryStartBoost(info: any, prop: StartBoostProp): boolean { + return infiniteStartBoost(info, prop) || info[prop + "Amount"] > 0; +} + +/** 原配置只在未开始的重开中复用;已使用的自选道具不重复扣。 */ +export function consumeCarriedStartBoost(loadout: StartBoostLoadout, prop: StartBoostProp, info: any): boolean { + const spent = prop === "hourglass" ? "spentHourglass" : "spentRocket"; + if (!loadout[prop] || loadout[spent]) return false; + loadout[spent] = true; + if (infiniteStartBoost(info, prop)) return false; + info[prop + "Amount"] = Math.max(0, (Number(info[prop + "Amount"]) || 0) - 1); + return true; +} diff --git a/assets/Script/StartBoostLoadout.ts.meta b/assets/Script/StartBoostLoadout.ts.meta new file mode 100644 index 00000000..82b483ec --- /dev/null +++ b/assets/Script/StartBoostLoadout.ts.meta @@ -0,0 +1,10 @@ +{ + "ver": "1.1.0", + "uuid": "9dc02e21-5db2-42ed-bdf9-9bf7a9dd23d1", + "importer": "typescript", + "isPlugin": false, + "loadPluginInWeb": true, + "loadPluginInNative": true, + "loadPluginInEditor": false, + "subMetas": {} +} \ No newline at end of file diff --git a/assets/Script/StartBoostOpening.ts b/assets/Script/StartBoostOpening.ts new file mode 100644 index 00000000..1050770b --- /dev/null +++ b/assets/Script/StartBoostOpening.ts @@ -0,0 +1,460 @@ +import { planRocketShots, RocketShot } from "./RocketRules"; +import { applyRocketCut } from "./RocketCut"; +import NumberToImage from "./NumberToImage"; +import { StartBoostLoadout, StartBoostProp, startBoostRewards } from "./StartBoostLoadout"; + +const ENTRY_SECONDS = 0.65; +const ENTRY_HOLD_SECONDS = 0.3; +const LAUNCH_CLOUD_SECONDS = 0.65; +const HOURGLASS_SPEED = 1320; +const ROCKET_SPEED = 950; +const ROCKET_ARC_HEIGHT = 480; +// 复用炸弹的爆炸段,跳过火箭命中后不需要的引爆前摇。 +const ROCKET_IMPACT_START_SECONDS = 0.3333; +const HOURGLASS_FLIGHT_SCALE = 0.7; + +function flightPoint(from: cc.Vec2, control: cc.Vec2, to: cc.Vec2, t: number): cc.Vec2 { + const u = 1 - t; + return cc.v2(u * u * from.x + 2 * u * t * control.x + t * t * to.x, + u * u * from.y + 2 * u * t * control.y + t * t * to.y); +} + +function flightDistances(from: cc.Vec2, control: cc.Vec2, to: cc.Vec2): number[] { + const distances = [0]; + let previous = from; + for (let sample = 1; sample <= 64; sample++) { + const point = flightPoint(from, control, to, sample / 64); + distances.push(distances[sample - 1] + Math.hypot(point.x - previous.x, point.y - previous.y)); + previous = point; + } + return distances; +} + +interface OpeningFlight { + node: cc.Node; + from: cc.Vec2; + to: cc.Vec2; + control: cc.Vec2; + distances: number[]; + shot: RocketShot; + trail: cc.ParticleSystem; + timeText: cc.Node; + landed: boolean; + impact: cc.Node; + impactElapsed: number; + impactSeconds: number; +} + +interface CarriedEntry { + node: cc.Node; + rocket: boolean; + from: cc.Vec2; + to: cc.Vec2; + trail: cc.ParticleSystem; + arrived: boolean; +} + +/** 按本局连胜奖励与自选道具播放开场,携带道具实际发射时通知扣除。 */ +export default class StartBoostOpening { + private root = new cc.Node("startBoostOpening"); + private box: cc.Node; + private items: cc.Node[] = []; + private flights: OpeningFlight[] = []; + private carriedEntries: CarriedEntry[] = []; + private hourglassCount: number; + private hourglassHeight: number; + private rocketCount: number; + private boxScale: cc.Vec2; + private elapsed = 0; + private launched = false; + private smokeTexture: cc.Texture2D; + private smokeFrame: cc.SpriteFrame; + private cloudTexture: cc.Texture2D; + private cloudFrame: cc.SpriteFrame; + private sparkleTexture: cc.Texture2D; + private sparkleFrame: cc.SpriteFrame; + private launchCloud: cc.Node; + private displayedTime: number = null; + private timeTarget: number = null; + private hidden = false; + private disposed = false; + private hide = () => { this.hidden = true; this.root.active = false; }; + private show = () => { this.hidden = false; }; + + constructor(private map: any, loadout: StartBoostLoadout, private onUseCarried: (prop: StartBoostProp) => void) { + if (!map.hourglassPrefab || !map.rocketPrefab || !map.rocketBoxPrefab) throw new Error("缺少沙漏、火箭或 rocketBox 预制体"); + const canvas = cc.find("Canvas"); + canvas.addChild(this.root); + this.root.zIndex = cc.macro.MAX_ZINDEX - 1; + this.root.setPosition(canvas.convertToNodeSpaceAR(cc.v2(cc.winSize.width / 2, cc.winSize.height / 2))); + this.box = cc.instantiate(map.rocketBoxPrefab); + this.box.setPosition(0, 160); + const free = startBoostRewards(loadout.streak); + this.box.active = free.hourglass + free.rocket > 0; + if (this.box.active) { + const sprite = this.box.getComponent(cc.Sprite); + const frame = map.SceneManager.getStartBoostBoxFrame(loadout.streak); + if (frame && frame !== sprite.spriteFrame) { + const height = sprite.sizeMode === cc.Sprite.SizeMode.CUSTOM ? this.box.height : sprite.spriteFrame.getRect().height; + const size = frame.getRect(); + sprite.sizeMode = cc.Sprite.SizeMode.CUSTOM; + sprite.spriteFrame = frame; + this.box.setContentSize(height * size.width / size.height, height); + } + } + this.boxScale = cc.v2(this.box.scaleX, this.box.scaleY); + this.hourglassCount = free.hourglass + (loadout.hourglass ? 1 : 0); + this.rocketCount = free.rocket + (loadout.rocket ? 1 : 0); + if (!this.hourglassCount) { + const reference = cc.instantiate(map.hourglassPrefab); + this.root.addChild(reference); + this.hourglassHeight = reference.height; + reference.active = false; + reference.destroy(); + } + for (let i = 0; i < this.hourglassCount + this.rocketCount; i++) { + const rocket = i >= this.hourglassCount; + const node = cc.instantiate(rocket ? map.rocketPrefab : map.hourglassPrefab); + node.parent = this.root; + if (!rocket) this.hourglassHeight = node.height; + node.setScale(rocket ? this.hourglassHeight * 0.65 / node.height : 0.65); + node.setPosition(rocket ? -42 + (i - this.hourglassCount) * 84 : -54 + i * 54, this.box.y + 24); + // 箱子贴图已经绘有道具;实体在飞出时显示,避免重复叠放图案。 + node.active = false; + this.items.push(node); + if ((!rocket && i === free.hourglass) || (rocket && i === this.hourglassCount + free.rocket)) { + const from = this.root.convertToNodeSpaceAR(cc.v2(rocket ? cc.winSize.width - 60 : 60, -80)); + this.carriedEntries.push({ node, rocket, from, to: cc.v2(rocket ? 280 : -280, -500), + trail: null, arrived: false }); + node.setPosition(from); + } + } + this.root.addChild(this.box); + this.box.opacity = 0; + this.root.active = false; + cc.game.on(cc.game.EVENT_HIDE, this.hide); + cc.game.on(cc.game.EVENT_SHOW, this.show); + } + + update(dt: number, paused: boolean): boolean { + if (this.disposed) return true; + this.root.active = !this.hidden && !paused; + if (!this.root.active) return false; + this.elapsed += dt; + if (!this.launched) { + this.updateEntry(); + // 三个入场动画同时结束,原地停顿 0.3 秒并出现烟团,再一起飞出。 + if (this.elapsed >= ENTRY_SECONDS) this.updateLaunchCloud( + Math.min(1, (this.elapsed - ENTRY_SECONDS) / ENTRY_HOLD_SECONDS), false); + if (this.elapsed >= ENTRY_SECONDS + ENTRY_HOLD_SECONDS) this.beginFlights(); + return false; + } + this.updateLaunchCloud(Math.min(1, this.elapsed / LAUNCH_CLOUD_SECONDS), true); + this.updateTimeDisplay(dt); + for (const flight of this.flights) { + if (flight.landed) { + flight.impactElapsed += dt; + continue; + } + const rocket = !!flight.shot; + const distances = flight.distances; + const distance = Math.min(distances[distances.length - 1], this.elapsed * (rocket ? ROCKET_SPEED : HOURGLASS_SPEED)); + const end = distances.findIndex((value, index) => index > 0 && value >= distance); + const fraction = (distance - distances[end - 1]) / (distances[end] - distances[end - 1]); + const t = (end - 1 + fraction) / (distances.length - 1); + const u = 1 - t; + const control = flight.control; + const node = flight.node; + node.setPosition(flightPoint(flight.from, control, flight.to, t)); + if (rocket) { + // 沙漏本轮只缩小飞行显示,火箭沿用原有的尺寸变化。 + const referenceScale = this.hourglassCount ? this.items[0].scaleY / HOURGLASS_FLIGHT_SCALE : 0.65 - 0.25 * t; + node.setScale(this.hourglassHeight * referenceScale / node.height); + const dx = u * (control.x - flight.from.x) + t * (flight.to.x - control.x); + const dy = u * (control.y - flight.from.y) + t * (flight.to.y - control.y); + node.angle = Math.atan2(dy, dx) * 180 / Math.PI - 90; + } else { + node.setScale((0.65 - 0.25 * t) * HOURGLASS_FLIGHT_SCALE); + flight.timeText.setPosition(node.x - node.width * node.scaleX / 4, + node.y + node.height * node.scaleY / 2 - 8); + } + flight.trail.node.setPosition(this.root.convertToNodeSpaceAR( + node.convertToWorldSpaceAR(cc.v2(0, rocket ? -node.height : 0)))); + if (t === 1) this.land(flight); + } + return this.elapsed >= LAUNCH_CLOUD_SECONDS && this.displayedTime === this.timeTarget && + this.carriedEntries.every(entry => this.elapsed + ENTRY_HOLD_SECONDS >= entry.trail.life + entry.trail.lifeVar) && + this.flights.every(flight => flight.landed && flight.impactElapsed >= flight.impactSeconds); + } + + private updateEntry(): void { + const progress = Math.min(1, this.elapsed / ENTRY_SECONDS); + const back = progress - 1; + const scale = 0.6 + 0.4 * (1 + 2.70158 * back * back * back + 1.70158 * back * back); + this.box.setScale(this.boxScale.x * scale, this.boxScale.y * scale); + this.box.opacity = Math.round(255 * Math.min(1, progress * 4)); + const v = progress * progress * (3 - 2 * progress), u = 1 - v; + for (const entry of this.carriedEntries) { + if (entry.arrived) continue; + if (!entry.trail) { + entry.node.active = true; + entry.trail = this.makeTrail(entry.rocket); + entry.node.setSiblingIndex(this.root.childrenCount - 1); + } + const control = cc.v2(entry.to.x, entry.from.y + (entry.to.y - entry.from.y) * 0.55); + entry.node.setPosition(u * u * entry.from.x + 2 * u * v * control.x + v * v * entry.to.x, + u * u * entry.from.y + 2 * u * v * control.y + v * v * entry.to.y); + if (entry.rocket) { + const dx = u * (control.x - entry.from.x) + v * (entry.to.x - control.x); + const dy = u * (control.y - entry.from.y) + v * (entry.to.y - control.y); + entry.node.angle = Math.atan2(dy, dx) * 180 / Math.PI - 90; + } + entry.trail.node.setPosition(this.root.convertToNodeSpaceAR(entry.node.convertToWorldSpaceAR( + cc.v2(0, entry.rocket ? -entry.node.height * entry.node.anchorY : 0)))); + if (progress === 1) { + entry.arrived = true; + entry.node.angle = 0; + entry.trail.stopSystem(); + } + } + } + + private beginFlights(): void { + const shots = planRocketShots(this.map, this.rocketCount); + const rocketDistances = new Map(); + this.elapsed = 0; + this.launched = true; + this.box.active = false; + for (let i = this.hourglassCount + shots.length; i < this.items.length; i++) this.items[i].active = false; + for (let i = 0; i < this.hourglassCount + shots.length; i++) { + const node = this.items[i], shot = i >= this.hourglassCount ? shots[i - this.hourglassCount] : null; + const destination = shot ? this.map.mapBlocksWall[shot.x][shot.y] + : this.map.timeLabel.parent.getChildByName("time_icon"); + const to = this.root.convertToNodeSpaceAR(destination.convertToWorldSpaceAR(cc.v2(0, 0))); + node.active = true; + if (shot) { + // 用火箭尖端作飞行锚点,爆炸落点精确落在被裁掉的格子上。 + const tip = node.convertToWorldSpaceAR(cc.v2(0, node.height * (1 - node.anchorY))); + node.anchorY = 1; + node.setPosition(this.root.convertToNodeSpaceAR(tip)); + } else { + node.setScale(node.scaleX * HOURGLASS_FLIGHT_SCALE); + } + const trail = this.makeTrail(!!shot); + trail.node.setPosition(this.root.convertToNodeSpaceAR( + node.convertToWorldSpaceAR(cc.v2(0, shot ? -node.height : 0)))); + node.setSiblingIndex(this.root.childrenCount - 1); + let timeText: cc.Node = null; + if (!shot) { + timeText = new cc.Node("hourglassPlusTen"); + this.root.addChild(timeText); + timeText.anchorX = 1; + const label = timeText.addComponent(cc.Label); + label.string = "+10"; + label.fontSize = 54; + label.lineHeight = 60; + label.enableBold = true; + const outline = timeText.addComponent(cc.LabelOutline); + outline.color = cc.color(55, 45, 35); + outline.width = 3; + timeText.setPosition(node.x - node.width * node.scaleX / 4, + node.y + node.height * node.scaleY / 2 - 8); + } + const from = cc.v2(node.x, node.y); + const control = shot ? cc.v2((from.x + to.x) / 2, Math.max(from.y, to.y) + ROCKET_ARC_HEIGHT) + // 沙漏交替绕左、绕右,后续沙漏使用更宽、不同高度的弧线,最后汇入时钟。 + : cc.v2((from.x + to.x) / 2 + (i % 2 === 0 ? -1 : 1) * (240 + Math.floor(i / 2) * 180), + from.y + (to.y - from.y) * (0.4 + i * 0.12)); + let distances = flightDistances(from, control, to); + if (shot) { + const previous = rocketDistances.get(shot.origin); + // 同一原块后续命中至少晚 0.1 秒;延长弧线,保持同时起飞和同速。 + const minimum = previous === undefined ? 0 : previous + ROCKET_SPEED * 0.1; + if (distances[distances.length - 1] < minimum) { + let low = control.y, high = control.y + minimum; + for (let step = 0; step < 12; step++) { + control.y = (low + high) / 2; + const trial = flightDistances(from, control, to); + if (trial[trial.length - 1] < minimum) low = control.y; + else high = control.y; + } + control.y = high; + distances = flightDistances(from, control, to); + } + rocketDistances.set(shot.origin, distances[distances.length - 1]); + } + this.flights.push({ node, shot, to, from, control, distances, trail, timeText, + landed: false, impact: null, impactElapsed: 0, impactSeconds: trail.life + trail.lifeVar }); + if (this.carriedEntries.some(entry => entry.node === node)) this.onUseCarried(shot ? "rocket" : "hourglass"); + } + } + + private land(flight: OpeningFlight): void { + flight.node.active = false; + flight.landed = true; + flight.trail.stopSystem(); + if (!flight.shot) { + flight.timeText.active = false; + if (this.displayedTime === null) this.displayedTime = this.map.timeNumber; + this.map.addTime(10, false); + this.timeTarget = this.map.timeNumber; + return; + } else { + const bomb = cc.instantiate(this.map.Block_Prop[6]); + flight.impact = cc.instantiate(bomb.getChildByName("zhandan")); + bomb.destroy(); + flight.impact.active = true; + const skeleton = flight.impact.getComponent(sp.Skeleton); + this.root.addChild(flight.impact); + flight.impact.setPosition(flight.to); + const track = skeleton.setAnimation(0, "eff", false); + track.trackTime = Math.min(ROCKET_IMPACT_START_SECONDS, track.animation.duration); + flight.impactSeconds = Math.max(flight.impactSeconds, track.animation.duration - track.trackTime); + const shot = flight.shot; + const id = this.map.mapBlocksWall[shot.x][shot.y].getComponent("MapBlock").block_Id; + const block = this.map.blocks.find(node => node.uuid === id).getComponent("Block"); + applyRocketCut(this.map, block, shot.cut); + } + if (!flight.impact.parent) this.root.addChild(flight.impact); + flight.impact.setPosition(flight.to); + } + + private updateTimeDisplay(dt: number): void { + if (this.displayedTime === null || this.displayedTime === this.timeTarget) return; + const previous = Math.floor(this.displayedTime); + this.displayedTime = Math.min(this.timeTarget, this.displayedTime + dt * 30); + const current = Math.floor(this.displayedTime); + if (current !== previous) NumberToImage.getTimeMargi3(current, 45, "company_", this.map.timeLabel); + } + + private updateLaunchCloud(progress: number, dispersing: boolean): void { + if (!this.launchCloud) { + const size = 64, pixels = new Uint8Array(size * size * 4); + for (let y = 0; y < size; y++) for (let x = 0; x < size; x++) { + const radius = Math.hypot(x + 0.5 - size / 2, y + 0.5 - size / 2) / (size / 2); + const softness = Math.max(0, 1 - radius * radius); + const offset = (y * size + x) * 4; + pixels[offset] = pixels[offset + 1] = pixels[offset + 2] = 255; + pixels[offset + 3] = Math.round(160 * softness * softness); + } + this.cloudTexture = new cc.Texture2D(); + this.cloudTexture.initWithData(pixels, cc.Texture2D.PixelFormat.RGBA8888, size, size); + this.cloudFrame = new cc.SpriteFrame(this.cloudTexture); + this.launchCloud = new cc.Node("launchCloud"); + this.root.addChild(this.launchCloud); + // 箱子和实际携带的道具各有独立烟团,中心固定,散开时也留出间隔。 + const targets = [...(this.box.active ? [this.box] : []), ...this.carriedEntries.map(entry => entry.node)]; + targets.forEach(target => { + const cloud = new cc.Node("cloud"); + this.launchCloud.addChild(cloud); + cloud.setPosition(this.root.convertToNodeSpaceAR(target.convertToWorldSpaceAR( + cc.v2(target.width * (0.5 - target.anchorX), target.height * (0.5 - target.anchorY))))); + // 统一圆形轮廓,只按包围圆调整大小,不跟随物品的长宽比例拉伸。 + cloud.setScale((Math.hypot(target.width * target.scaleX, target.height * target.scaleY) + 20) / 300 + * (target === this.box ? 0.7 : 1)); + for (let i = 0; i < 19; i++) { + const puff = new cc.Node("puff"); + cloud.addChild(puff); + puff.addComponent(cc.Sprite).spriteFrame = this.cloudFrame; + } + }); + } + this.launchCloud.active = !(dispersing && progress === 1); + if (!this.launchCloud.active) return; + this.launchCloud.opacity = Math.round(255 * (dispersing ? 1 : Math.min(1, progress * 2))); + this.launchCloud.children.forEach(cloud => cloud.children.forEach((puff, i) => { + const layer = i === 0 ? 0 : i <= 6 ? 1 : 2; + const radius = layer * 55; + const angle = i <= 6 ? (i - 1) * Math.PI / 3 : (i - 7) * Math.PI / 6; + // 外层先散,内层稍后散;同层也略微错开,避免整团一起消失。 + const delay = (2 - layer) * 0.1 + i % 3 * 0.025; + const phase = dispersing ? Math.min(1, Math.max(0, (progress - delay) / (0.8 - layer * 0.1))) : 0; + const fade = phase * phase * (3 - 2 * phase); + puff.opacity = Math.round((155 - layer * 20 - i % 3 * 9) * (1 - fade)); + const spread = dispersing ? 1 + fade * (0.07 + layer * 0.04) : 0.6 + progress * 0.4; + puff.setPosition(Math.cos(angle) * radius * spread, Math.sin(angle) * radius * spread); + puff.setScale((2.5 + i % 3 * 0.05) * (dispersing ? 1 + fade * 0.1 : 0.5 + progress * 0.5)); + })); + } + + private ensureSmokeFrame(): void { + if (!this.smokeFrame) { + const size = 32, pixels = new Uint8Array(size * size * 4); + for (let y = 0; y < size; y++) for (let x = 0; x < size; x++) { + const radius = Math.hypot(x + 0.5 - size / 2, y + 0.5 - size / 2) / (size / 2); + const offset = (y * size + x) * 4; + pixels[offset] = pixels[offset + 1] = pixels[offset + 2] = 255; + pixels[offset + 3] = Math.round(255 * Math.pow(Math.max(0, 1 - radius), 2)); + } + this.smokeTexture = new cc.Texture2D(); + this.smokeTexture.initWithData(pixels, cc.Texture2D.PixelFormat.RGBA8888, size, size); + this.smokeFrame = new cc.SpriteFrame(this.smokeTexture); + } + } + + private makeTrail(rocket: boolean): cc.ParticleSystem { + if (rocket) this.ensureSmokeFrame(); + else this.ensureSparkleFrame(); + const node = new cc.Node(rocket ? "rocketSmoke" : "hourglassGlow"); + this.root.addChild(node); + const smoke = node.addComponent(cc.ParticleSystem); + smoke.custom = true; + smoke.playOnLoad = false; + smoke.spriteFrame = rocket ? this.smokeFrame : this.sparkleFrame; + smoke.duration = -1; + smoke.positionType = cc.ParticleSystem.PositionType.FREE; + smoke.totalParticles = rocket ? 180 : 40; + smoke.emissionRate = rocket ? 180 : 35; + smoke.life = rocket ? 0.65 : 0.5; + smoke.lifeVar = 0.1; + smoke.startSize = rocket ? 48 : 32; + smoke.startSizeVar = rocket ? 10 : 12; + smoke.endSize = rocket ? 100 : 10; + smoke.endSizeVar = rocket ? 16 : 4; + smoke.speed = rocket ? 12 : 8; + smoke.speedVar = rocket ? 5 : 4; + smoke.angleVar = 180; + smoke.gravity = cc.v2(0, rocket ? -12 : 0); + smoke.startColor = rocket ? cc.color(190, 190, 190, 235) : cc.color(255, 255, 255, 255); + smoke.endColor = rocket ? cc.color(130, 130, 130, 0) : cc.color(255, 255, 255, 0); + smoke.srcBlendFactor = cc.macro.SRC_ALPHA; + smoke.dstBlendFactor = rocket ? cc.macro.ONE_MINUS_SRC_ALPHA : cc.macro.ONE; + smoke.resetSystem(); + return smoke; + } + + private ensureSparkleFrame(): void { + if (this.sparkleFrame) return; + // 白色亮点、柔光和短星芒;与烟雾分开,避免影响火箭及开箱烟团。 + const size = 64, pixels = new Uint8Array(size * size * 4); + for (let y = 0; y < size; y++) for (let x = 0; x < size; x++) { + const dx = Math.abs((x + 0.5 - size / 2) / (size / 2)); + const dy = Math.abs((y + 0.5 - size / 2) / (size / 2)); + const radiusSquared = dx * dx + dy * dy; + const glow = Math.exp(-radiusSquared * 24) + 0.18 * Math.exp(-radiusSquared * 5); + const rays = 0.7 * (Math.exp(-dx * 45) * Math.pow(1 - dy, 2) + + Math.exp(-dy * 45) * Math.pow(1 - dx, 2)); + const offset = (y * size + x) * 4; + pixels[offset] = pixels[offset + 1] = pixels[offset + 2] = 255; + pixels[offset + 3] = Math.round(255 * Math.min(1, Math.max(glow, rays))); + } + this.sparkleTexture = new cc.Texture2D(); + this.sparkleTexture.initWithData(pixels, cc.Texture2D.PixelFormat.RGBA8888, size, size); + this.sparkleFrame = new cc.SpriteFrame(this.sparkleTexture); + } + + dispose(): void { + if (this.disposed) return; + this.disposed = true; + cc.game.off(cc.game.EVENT_HIDE, this.hide); + cc.game.off(cc.game.EVENT_SHOW, this.show); + this.root.active = false; + this.root.destroy(); + if (this.smokeFrame) this.smokeFrame.destroy(); + if (this.smokeTexture) this.smokeTexture.destroy(); + if (this.cloudFrame) this.cloudFrame.destroy(); + if (this.cloudTexture) this.cloudTexture.destroy(); + if (this.sparkleFrame) this.sparkleFrame.destroy(); + if (this.sparkleTexture) this.sparkleTexture.destroy(); + } +} diff --git a/assets/Script/StartBoostOpening.ts.meta b/assets/Script/StartBoostOpening.ts.meta new file mode 100644 index 00000000..22674447 --- /dev/null +++ b/assets/Script/StartBoostOpening.ts.meta @@ -0,0 +1,10 @@ +{ + "ver": "1.1.0", + "uuid": "9a5d604d-0a4c-4cbb-9b15-563d71edbc5b", + "importer": "typescript", + "isPlugin": false, + "loadPluginInWeb": true, + "loadPluginInNative": true, + "loadPluginInEditor": false, + "subMetas": {} +} \ No newline at end of file diff --git a/assets/Script/ThreeWinStreak.ts b/assets/Script/ThreeWinStreak.ts new file mode 100644 index 00000000..62444892 --- /dev/null +++ b/assets/Script/ThreeWinStreak.ts @@ -0,0 +1,81 @@ +import Utils from "./module/Pay/Utils"; + +/** 独立于十连胜;一局的资格在创建时固定,失败在确定放弃时结算。 */ +export default class ThreeWinStreak { + private started = false; + private settled = false; + + constructor(private enabled: boolean) {} + + private static count(value: any): number { + const number = Number(value); + return Number.isFinite(number) ? Math.min(3, Math.max(0, Math.floor(number))) : 0; + } + + /** 无参数先恢复本地;登录后传服务器数据,旧账号缺失字段从零开始。 */ + static restore(serverData?: { threeWinStreak?: number }, forced = false) { + if (cc.fx.GameConfig.forceThreeWinStreak) { + cc.fx.GameConfig.GM_INFO.threeWinStreak = 3; + return; + } + const storage = cc.fx.StorageMessage; + if (serverData && forced) { + storage.setStorage("threeWinStreakPending", false); + storage.setStorage("threeWinStreakUnsynced", null); + } else if (storage.getStorage("threeWinStreakPending") === true) { + // 上局开始后未正常结算就杀端,保留待同步的清零结果。 + storage.setStorage("threeWinStreak", 0); + storage.setStorage("threeWinStreakPending", false); + storage.setStorage("threeWinStreakUnsynced", 0); + } + const unsynced = storage.getStorage("threeWinStreakUnsynced"); + const hasUnsynced = typeof unsynced === "number" && Number.isFinite(unsynced); + const value = hasUnsynced ? unsynced : serverData + ? serverData.threeWinStreak : storage.getStorage("threeWinStreak"); + const count = this.count(value); + cc.fx.GameConfig.GM_INFO.threeWinStreak = count; + storage.setStorage("threeWinStreak", count); + if (serverData && hasUnsynced) this.sync(count); + } + + begin() { + if (!this.enabled || this.started || this.settled) return; + this.started = true; + if (cc.fx.GameConfig.forceThreeWinStreak) return; + cc.fx.StorageMessage.setStorage("threeWinStreakPending", true); + } + + win() { + if (!this.enabled || this.settled) return; + this.finish(ThreeWinStreak.count(cc.fx.GameConfig.GM_INFO.threeWinStreak) + 1); + } + + fail() { + if (!this.enabled || !this.started || this.settled) return; + this.finish(0); + } + + private finish(value: number) { + this.settled = true; + if (cc.fx.GameConfig.forceThreeWinStreak) { + cc.fx.GameConfig.GM_INFO.threeWinStreak = 3; + return; + } + const count = ThreeWinStreak.count(value); + const storage = cc.fx.StorageMessage; + cc.fx.GameConfig.GM_INFO.threeWinStreak = count; + storage.setStorage("threeWinStreak", count); + storage.setStorage("threeWinStreakPending", false); + storage.setStorage("threeWinStreakUnsynced", count); + ThreeWinStreak.sync(count); + } + + private static sync(count: number) { + Utils.setWinStreak((data) => { + const storage = cc.fx.StorageMessage; + if (data && data.code === 1 && storage.getStorage("threeWinStreakUnsynced") === count) { + storage.setStorage("threeWinStreakUnsynced", null); + } + }, { threeWinStreak: count }); + } +} diff --git a/assets/Script/ThreeWinStreak.ts.meta b/assets/Script/ThreeWinStreak.ts.meta new file mode 100644 index 00000000..cbb6edf7 --- /dev/null +++ b/assets/Script/ThreeWinStreak.ts.meta @@ -0,0 +1,10 @@ +{ + "ver": "1.1.0", + "uuid": "e47a4504-0ef5-4ba3-8316-24108d877f88", + "importer": "typescript", + "isPlugin": false, + "loadPluginInWeb": true, + "loadPluginInNative": true, + "loadPluginInEditor": false, + "subMetas": {} +} \ No newline at end of file diff --git a/assets/Script/ThreeWinsPanel.ts b/assets/Script/ThreeWinsPanel.ts new file mode 100644 index 00000000..fc58d065 --- /dev/null +++ b/assets/Script/ThreeWinsPanel.ts @@ -0,0 +1,161 @@ +import NumberToImage from "./NumberToImage"; + +const { ccclass } = cc._decorator; + +export type ThreeWinsProp = "hourglass" | "rocket"; + +export interface ThreeWinsSelection { + hourglass: boolean; + rocket: boolean; +} + +export interface ThreeWinsPanelData { + level: number; + threeWinStreak: number; + tenWinStreak: number; + hourglassAmount: number; + rocketAmount: number; + infiniteHourglass?: boolean; + infiniteRocket?: boolean; +} + +export interface ThreeWinsPanelCallbacks { + onProp: (prop: ThreeWinsProp, selected: boolean) => void; + onStart: (selection: ThreeWinsSelection) => void; +} + +/** 只管理预制体显示和选择;库存检查、购买及开局由 SceneManager 处理。 */ +@ccclass +export default class ThreeWinsPanel extends cc.Component { + private atlas: cc.SpriteAtlas = null; + private data: ThreeWinsPanelData = null; + private callbacks: ThreeWinsPanelCallbacks = null; + private selected: ThreeWinsSelection = { hourglass: false, rocket: false }; + private bound = false; + private entryScale: cc.Vec2 = null; + + init(atlas: cc.SpriteAtlas, data: ThreeWinsPanelData, callbacks: ThreeWinsPanelCallbacks) { + this.atlas = atlas; + this.callbacks = callbacks; + this.selected = { hourglass: false, rocket: false }; + if (!this.bound) { + this.node.getChildByName("hourglass").on("click", this.onHourglass, this); + this.node.getChildByName("rocket").on("click", this.onRocket, this); + this.node.getChildByName("begin").on("click", this.onStart, this); + this.bound = true; + } + this.refresh(data); + this.entryScale = cc.v2(this.node.scaleX, this.node.scaleY); + this.node.setScale(0); + } + + playEntry() { + if (!this.entryScale) return; + const scale = this.entryScale; + this.entryScale = null; + cc.tween(this.node) + .to(0.28, { scaleX: scale.x * 1.06, scaleY: scale.y * 1.06 }, { easing: "cubicOut" }) + .to(0.10, { scaleX: scale.x * 0.97, scaleY: scale.y * 0.97 }, { easing: "sineInOut" }) + .to(0.12, { scaleX: scale.x, scaleY: scale.y }, { easing: "sineOut" }) + .start(); + } + + refresh(data: ThreeWinsPanelData) { + this.data = data; + const tier = Math.min(3, Math.max(0, Math.floor(data.threeWinStreak || 0))); + const tenWins = Math.min(10, Math.max(0, Math.floor(data.tenWinStreak || 0))); + const box = this.node.getChildByName("box"); + for (let i = 0; i <= 3; i++) box.getChildByName("box" + i).active = i === tier; + + const three = this.node.getChildByName("three"); + three.getChildByName("progress").getComponent(cc.Sprite).spriteFrame = this.atlas.getSpriteFrame("progress_" + tier); + for (let i = 1; i <= 3; i++) three.getChildByName("progress" + i).active = i <= tier; + this.node.getChildByName("progress").getComponent(cc.Sprite).fillRange = tenWins / 10; + + this.renderNumber(this.node.getChildByName("custom"), data.level, "custom_", 44); + this.renderNumber(this.node.getChildByName("rainbowNumber"), tenWins, "rainbow", 34, true); + this.renderProp("hourglass"); + this.renderProp("rocket"); + } + + refreshInventory(data: ThreeWinsPanelData) { + const previous = this.data; + this.data = data; + if (!previous || previous.hourglassAmount !== data.hourglassAmount || previous.infiniteHourglass !== data.infiniteHourglass) { + this.renderProp("hourglass"); + } + if (!previous || previous.rocketAmount !== data.rocketAmount || previous.infiniteRocket !== data.infiniteRocket) { + this.renderProp("rocket"); + } + } + + setSelected(prop: ThreeWinsProp, selected: boolean) { + this.selected[prop] = selected; + this.renderProp(prop); + } + + private onHourglass() { + if (this.callbacks) this.callbacks.onProp("hourglass", !this.selected.hourglass); + } + + private onRocket() { + if (this.callbacks) this.callbacks.onProp("rocket", !this.selected.rocket); + } + + private onStart() { + if (this.callbacks) this.callbacks.onStart({ ...this.selected }); + } + + private renderProp(prop: ThreeWinsProp) { + const node = this.node.getChildByName(prop); + const count = prop === "hourglass" ? this.data.hourglassAmount : this.data.rocketAmount; + const infinite = prop === "hourglass" ? this.data.infiniteHourglass : this.data.infiniteRocket; + const available = count > 0 || !!infinite; + if (!available) this.selected[prop] = false; + const selected = this.selected[prop]; + node.getChildByName("add").active = !available; + node.getChildByName("select").active = selected; + const remaining = node.getChildByName("remaining"); + remaining.active = available && !selected; + + const amount = remaining.getChildByName("number"); + if (infinite) { + this.clearNumber(amount); + this.addCountSymbol(amount, "∞", 0); + return; + } + + this.renderNumber(amount, count, "prop_", 30); + } + + private renderNumber(target: cc.Node, value: number, prefix: string, spacing: number, right = false) { + this.clearNumber(target); + const number = Math.max(0, Math.floor(value || 0)); + NumberToImage.numberToImageNodesPublic(this.atlas, number, spacing, 0, prefix, target, false); + const offset = right ? (target.childrenCount - 1) * spacing : (target.childrenCount - 1) * spacing / 2; + for (const digit of target.children) digit.x -= offset; + } + + private clearNumber(target: cc.Node) { + for (const child of target.children.slice()) child.destroy(); + target.removeAllChildren(); + } + + private addCountSymbol(target: cc.Node, text: string, x: number) { + const node = new cc.Node("symbol"); + node.parent = target; + node.x = x; + const label = node.addComponent(cc.Label); + label.string = text; + label.fontSize = 36; + label.lineHeight = 44; + label.enableBold = true; + const outline = node.addComponent(cc.LabelOutline); + outline.color = cc.color(126, 44, 20); + outline.width = 2; + } + + onDestroy() { + this.callbacks = null; + } +} diff --git a/assets/Script/ThreeWinsPanel.ts.meta b/assets/Script/ThreeWinsPanel.ts.meta new file mode 100644 index 00000000..0259697b --- /dev/null +++ b/assets/Script/ThreeWinsPanel.ts.meta @@ -0,0 +1,10 @@ +{ + "ver": "1.1.0", + "uuid": "b463c761-fd6c-44bb-84ef-8fe8a792dab6", + "importer": "typescript", + "isPlugin": false, + "loadPluginInWeb": true, + "loadPluginInNative": true, + "loadPluginInEditor": false, + "subMetas": {} +} \ No newline at end of file diff --git a/assets/Script/module/Config/GameConfig.ts b/assets/Script/module/Config/GameConfig.ts index 8191e413..74d465d4 100644 --- a/assets/Script/module/Config/GameConfig.ts +++ b/assets/Script/module/Config/GameConfig.ts @@ -444,6 +444,13 @@ export class GameConfig { // 临时老彩虹测试开关(默认关闭):开启后强制 C、立即解锁连胜、始终十连胜。 static forceOldRainbowWinStreakC = false; + // 临时测试:本地始终保持三连胜,不写入真实存档;false 恢复正常规则。 + static forceThreeWinStreak = false; + + static isStartBoostersUnlocked(): boolean { + return this.GM_INFO.level + 1 >= 25 && !(this.GM_INFO.otherLevel > 0); + } + static isRainbowWinStreak(): boolean { if (this.forceOldRainbowWinStreakC) return false; if (this.forceRainbowWinStreakB) return true; @@ -471,7 +478,8 @@ export class GameConfig { } static gameplayBlockExtraPaths(blocks: any[]): string[] { - return GAMEPLAY_ATLAS_PATHS.concat(this.isRainbowRewardActive() ? rainbowTexturePaths(blocks) : []); + return GAMEPLAY_ATLAS_PATHS.concat(this.isRainbowRewardActive() || this.isStartBoostersUnlocked() + ? rainbowTexturePaths(blocks) : []); } static isWinStreakUnlocked(): boolean { @@ -594,6 +602,7 @@ export class GameConfig { getItemType: number; popPassCheck: boolean; // 弹窗通行证 passCheckActivate: boolean; winStreak: number; //连胜 + threeWinStreak: number; //独立三连胜,奖励封顶三档 tasks: any; addLevel: number; //每日/周任务数据 address: string; //用户城市信息 firstTime: number; //用户注册时间 @@ -820,6 +829,7 @@ export class GameConfig { popPassCheck: false, // 弹窗通行证 passCheckActivate: false, winStreak: (this.forceOldRainbowWinStreakC || this.forceRainbowWinStreakB) ? 10 : 0, //测试模式默认十连胜 + threeWinStreak: this.forceThreeWinStreak ? 3 : 0, tasks: { levelPass: { value: 0, target: 0, state: 0 }, share: { value: 0, target: 0, state: 0 }, useEnergy: { value: 0, target: 0, state: 0 }, useProp: { value: 0, target: 0, state: 0 } }, addLevel: 0, //每日过关数 address: "", //用户城市信息 diff --git a/assets/Script/module/Pay/Utils.ts b/assets/Script/module/Pay/Utils.ts index bd0971de..431ec466 100644 --- a/assets/Script/module/Pay/Utils.ts +++ b/assets/Script/module/Pay/Utils.ts @@ -1633,7 +1633,7 @@ export default class Utils { } //设置连胜次数 - static setWinStreak(callBack) { + static setWinStreak(callBack, fields?: { winStreak?: number; threeWinStreak?: number }) { //@ts-ignore if ((typeof wx !== 'undefined' && wx !== null) || (typeof tt !== 'undefined' && tt !== null)) { let uid = cc.fx.StorageMessage.getStorage("uid"); @@ -1644,7 +1644,7 @@ export default class Utils { let setData = { uid: cc.fx.GameConfig.GM_INFO.uid, action: 'save', - winStreak: cc.fx.GameConfig.GM_INFO.winStreak, + ...(fields || { winStreak: cc.fx.GameConfig.GM_INFO.winStreak }), } Utils.POST("setWinStreak", setData, res => { if (res.code === 1) { diff --git a/assets/Script/module/Tool/GameTool.ts b/assets/Script/module/Tool/GameTool.ts index 9209505a..aa5e9bfb 100644 --- a/assets/Script/module/Tool/GameTool.ts +++ b/assets/Script/module/Tool/GameTool.ts @@ -849,7 +849,7 @@ var GameTool = { //更改用户道具数 buyProp(propid, callback: Function) { //@ts-ignore - if ((typeof wx !== 'undefined' && wx !== null) || (typeof tt !== 'undefined' && tt !== null)) { + if ((typeof wx !== 'undefined' && wx !== null) || (typeof tt !== 'undefined' && tt !== null) || propid === 2006 || propid === 2007) { let num = 3; let cost = 600; @@ -861,6 +861,10 @@ var GameTool = { else if (propid == 2002) { num = 1; } + else if (propid == 2006 || propid == 2007) { + cost = propid == 2006 ? 200 : 800; + if (cc.fx.GameConfig.GM_INFO.coin < cost) return; + } //console.log("_____________新版本", num); cc.fx.GameTool.changeCoin(-cost); const dataTemp = { @@ -887,11 +891,19 @@ var GameTool = { cc.fx.GameConfig.GM_INFO.magicAmount += num; propNumber = cc.fx.GameConfig.GM_INFO.magicAmount; } + else if (propid == 2006 || propid == 2007) { + const prop = propid == 2006 ? "hourglass" : "rocket"; + _id = prop + "_in_game"; + cc.fx.GameConfig.GM_INFO[prop + "Amount"] += num; + propNumber = cc.fx.GameConfig.GM_INFO[prop + "Amount"]; + } const timestamp = Date.now(); - let propInfo = cc.fx.StorageMessage.getStorage("prop"); + let propInfo = cc.fx.StorageMessage.getStorage("prop") || {}; propInfo.hammerAmount = cc.fx.GameConfig.GM_INFO.hammerAmount; propInfo.magicAmount = cc.fx.GameConfig.GM_INFO.magicAmount; propInfo.freezeAmount = cc.fx.GameConfig.GM_INFO.freezeAmount; + propInfo.hourglassAmount = cc.fx.GameConfig.GM_INFO.hourglassAmount; + propInfo.rocketAmount = cc.fx.GameConfig.GM_INFO.rocketAmount; propInfo.timestamp = timestamp; cc.fx.StorageMessage.setStorage("prop", propInfo); @@ -937,6 +949,15 @@ var GameTool = { }, //改变用户道具 + saveStartBoostInventory(prop: "hourglass" | "rocket") { + const amount = cc.fx.GameConfig.GM_INFO[prop + "Amount"]; + const cached = cc.fx.StorageMessage.getStorage("prop") || {}; + cached[prop + "Amount"] = amount; + cached.timestamp = Date.now(); + cc.fx.StorageMessage.setStorage("prop", cached); + this.setUserProp(prop === "hourglass" ? 2006 : 2007, amount, null); + }, + setUserProp(propid, amount, callback) { //@ts-ignore if ((typeof wx !== 'undefined' && wx !== null) || (typeof tt !== 'undefined' && tt !== null)) { @@ -958,7 +979,7 @@ var GameTool = { else if (propid == 2002) { newPropData = amount; } - else if (propid == 2003) { + else if (propid == 2003 || propid == 2006 || propid == 2007) { newPropData = amount; } @@ -1546,10 +1567,12 @@ var GameTool = { stage_id: userLevel, is_frenzy: data.is_frenzy, infinity: data.infinity, + pilot_drop: data.pilot_drop || 0, } if (cc.fx.GameConfig.GM_INFO.otherLevel > 0) { eventData = { stage_id: cc.fx.GameConfig.GM_INFO.otherLevel, + pilot_drop: data.pilot_drop || 0, } } break; diff --git a/assets/UI/prop/get.png b/assets/UI/prop/get.png new file mode 100644 index 00000000..6353db1d Binary files /dev/null and b/assets/UI/prop/get.png differ diff --git a/assets/UI/prop/get.png.meta b/assets/UI/prop/get.png.meta new file mode 100644 index 00000000..486df696 --- /dev/null +++ b/assets/UI/prop/get.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "c38df1b0-cc5a-456c-822d-445da50c1679", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 100, + "height": 82, + "platformSettings": {}, + "subMetas": { + "get": { + "ver": "1.0.6", + "uuid": "dde22b43-d679-45fc-b7ef-eb3910b15f01", + "importer": "sprite-frame", + "rawTextureUuid": "c38df1b0-cc5a-456c-822d-445da50c1679", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 100, + "height": 82, + "rawWidth": 100, + "rawHeight": 82, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/begin.png b/assets/UI/prop/threeWins/begin.png new file mode 100644 index 00000000..24ff2663 Binary files /dev/null and b/assets/UI/prop/threeWins/begin.png differ diff --git a/assets/UI/prop/threeWins/begin.png.meta b/assets/UI/prop/threeWins/begin.png.meta new file mode 100644 index 00000000..2eda6308 --- /dev/null +++ b/assets/UI/prop/threeWins/begin.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "58458622-1e73-4bd7-a027-faa8c068d54c", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 472, + "height": 162, + "platformSettings": {}, + "subMetas": { + "begin": { + "ver": "1.0.6", + "uuid": "e96d80c7-bc9b-432a-81c1-918f0f826e45", + "importer": "sprite-frame", + "rawTextureUuid": "58458622-1e73-4bd7-a027-faa8c068d54c", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 472, + "height": 162, + "rawWidth": 472, + "rawHeight": 162, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/box0.png b/assets/UI/prop/threeWins/box0.png new file mode 100644 index 00000000..3bb0f285 Binary files /dev/null and b/assets/UI/prop/threeWins/box0.png differ diff --git a/assets/UI/prop/threeWins/box0.png.meta b/assets/UI/prop/threeWins/box0.png.meta new file mode 100644 index 00000000..50ac534d --- /dev/null +++ b/assets/UI/prop/threeWins/box0.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "3fce659d-4e6a-4f7b-a2dd-ce29b9c5ef25", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 336, + "height": 329, + "platformSettings": {}, + "subMetas": { + "box0": { + "ver": "1.0.6", + "uuid": "3471be78-1700-41c0-b0e8-5c9552137da8", + "importer": "sprite-frame", + "rawTextureUuid": "3fce659d-4e6a-4f7b-a2dd-ce29b9c5ef25", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": -19, + "trimX": 0, + "trimY": 38, + "width": 336, + "height": 291, + "rawWidth": 336, + "rawHeight": 329, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/box1.png b/assets/UI/prop/threeWins/box1.png new file mode 100644 index 00000000..907aef04 Binary files /dev/null and b/assets/UI/prop/threeWins/box1.png differ diff --git a/assets/UI/prop/threeWins/box1.png.meta b/assets/UI/prop/threeWins/box1.png.meta new file mode 100644 index 00000000..907e75a5 --- /dev/null +++ b/assets/UI/prop/threeWins/box1.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "951a6a7f-2791-4ebd-a0d2-9e4a917e26a8", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 336, + "height": 329, + "platformSettings": {}, + "subMetas": { + "box1": { + "ver": "1.0.6", + "uuid": "238869a8-0e31-4242-bf93-d213c3a9de6f", + "importer": "sprite-frame", + "rawTextureUuid": "951a6a7f-2791-4ebd-a0d2-9e4a917e26a8", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 336, + "height": 329, + "rawWidth": 336, + "rawHeight": 329, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/box2.png b/assets/UI/prop/threeWins/box2.png new file mode 100644 index 00000000..a4f4476e Binary files /dev/null and b/assets/UI/prop/threeWins/box2.png differ diff --git a/assets/UI/prop/threeWins/box2.png.meta b/assets/UI/prop/threeWins/box2.png.meta new file mode 100644 index 00000000..eb0d3f15 --- /dev/null +++ b/assets/UI/prop/threeWins/box2.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "a7d68b5a-12b5-46d8-b0ff-be7d75c2323d", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 406, + "height": 378, + "platformSettings": {}, + "subMetas": { + "box2": { + "ver": "1.0.6", + "uuid": "ad4d3415-9594-44a1-8407-322777babe54", + "importer": "sprite-frame", + "rawTextureUuid": "a7d68b5a-12b5-46d8-b0ff-be7d75c2323d", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 406, + "height": 378, + "rawWidth": 406, + "rawHeight": 378, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/box3.png b/assets/UI/prop/threeWins/box3.png index f99a6b71..346274e4 100644 Binary files a/assets/UI/prop/threeWins/box3.png and b/assets/UI/prop/threeWins/box3.png differ diff --git a/assets/UI/prop/threeWins/box3.png.meta b/assets/UI/prop/threeWins/box3.png.meta index fee07181..75ef7f07 100644 --- a/assets/UI/prop/threeWins/box3.png.meta +++ b/assets/UI/prop/threeWins/box3.png.meta @@ -8,8 +8,8 @@ "premultiplyAlpha": false, "genMipmaps": false, "packable": true, - "width": 242, - "height": 218, + "width": 483, + "height": 436, "platformSettings": {}, "subMetas": { "box3": { @@ -24,10 +24,10 @@ "offsetY": 0, "trimX": 0, "trimY": 0, - "width": 242, - "height": 218, - "rawWidth": 242, - "rawHeight": 218, + "width": 483, + "height": 436, + "rawWidth": 483, + "rawHeight": 436, "borderTop": 0, "borderBottom": 0, "borderLeft": 0, diff --git a/assets/UI/prop/threeWins/daoju.png b/assets/UI/prop/threeWins/daoju.png new file mode 100644 index 00000000..b4fe06a7 Binary files /dev/null and b/assets/UI/prop/threeWins/daoju.png differ diff --git a/assets/UI/prop/threeWins/daoju.png.meta b/assets/UI/prop/threeWins/daoju.png.meta new file mode 100644 index 00000000..3192ed2e --- /dev/null +++ b/assets/UI/prop/threeWins/daoju.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "8251ff9b-0d35-495b-a597-cbc8ed9e7d5a", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 228, + "height": 228, + "platformSettings": {}, + "subMetas": { + "daoju": { + "ver": "1.0.6", + "uuid": "c16ef371-b6e7-4645-92b8-6b0a80efb5af", + "importer": "sprite-frame", + "rawTextureUuid": "8251ff9b-0d35-495b-a597-cbc8ed9e7d5a", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 228, + "height": 228, + "rawWidth": 228, + "rawHeight": 228, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/daojukuangBg.png b/assets/UI/prop/threeWins/daojukuangBg.png new file mode 100644 index 00000000..87eafb46 Binary files /dev/null and b/assets/UI/prop/threeWins/daojukuangBg.png differ diff --git a/assets/UI/prop/threeWins/daojukuangBg.png.meta b/assets/UI/prop/threeWins/daojukuangBg.png.meta new file mode 100644 index 00000000..41b62dc0 --- /dev/null +++ b/assets/UI/prop/threeWins/daojukuangBg.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "3b90eded-579b-47df-9cb2-5baf41ef94b4", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 214, + "height": 216, + "platformSettings": {}, + "subMetas": { + "daojukuangBg": { + "ver": "1.0.6", + "uuid": "f41af2de-2767-4631-9c28-ef74b58a9eee", + "importer": "sprite-frame", + "rawTextureUuid": "3b90eded-579b-47df-9cb2-5baf41ef94b4", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": -0.5, + "trimX": 1, + "trimY": 1, + "width": 212, + "height": 215, + "rawWidth": 214, + "rawHeight": 216, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/dik00.png b/assets/UI/prop/threeWins/dik00.png new file mode 100644 index 00000000..b9df8ec1 Binary files /dev/null and b/assets/UI/prop/threeWins/dik00.png differ diff --git a/assets/UI/prop/threeWins/dik00.png.meta b/assets/UI/prop/threeWins/dik00.png.meta new file mode 100644 index 00000000..66445c01 --- /dev/null +++ b/assets/UI/prop/threeWins/dik00.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "2a8a6f11-be5a-4abc-b1c7-67b4b7391a5f", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 190, + "height": 190, + "platformSettings": {}, + "subMetas": { + "dik00": { + "ver": "1.0.6", + "uuid": "2e0a80d2-cbe1-4c05-bcea-c7f954d910e6", + "importer": "sprite-frame", + "rawTextureUuid": "2a8a6f11-be5a-4abc-b1c7-67b4b7391a5f", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 190, + "height": 190, + "rawWidth": 190, + "rawHeight": 190, + "borderTop": 62, + "borderBottom": 76, + "borderLeft": 74, + "borderRight": 75, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/dikkkk.png b/assets/UI/prop/threeWins/dikkkk.png new file mode 100644 index 00000000..73200bca Binary files /dev/null and b/assets/UI/prop/threeWins/dikkkk.png differ diff --git a/assets/UI/prop/threeWins/dikkkk.png.meta b/assets/UI/prop/threeWins/dikkkk.png.meta new file mode 100644 index 00000000..6ad7ff66 --- /dev/null +++ b/assets/UI/prop/threeWins/dikkkk.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "45f7773c-8f58-47d0-bf85-a7889a4d7e86", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 862, + "height": 754, + "platformSettings": {}, + "subMetas": { + "dikkkk": { + "ver": "1.0.6", + "uuid": "3f9aa048-60dd-4f65-acfd-6780204b8c6f", + "importer": "sprite-frame", + "rawTextureUuid": "45f7773c-8f58-47d0-bf85-a7889a4d7e86", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 862, + "height": 754, + "rawWidth": 862, + "rawHeight": 754, + "borderTop": 223, + "borderBottom": 519, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/erhao.png b/assets/UI/prop/threeWins/erhao.png new file mode 100644 index 00000000..bfb2efa4 Binary files /dev/null and b/assets/UI/prop/threeWins/erhao.png differ diff --git a/assets/UI/prop/threeWins/erhao.png.meta b/assets/UI/prop/threeWins/erhao.png.meta new file mode 100644 index 00000000..fa850b25 --- /dev/null +++ b/assets/UI/prop/threeWins/erhao.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "b53b3cb8-314f-486d-a1ab-a1550cc55dd5", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 177, + "height": 48, + "platformSettings": {}, + "subMetas": { + "erhao": { + "ver": "1.0.6", + "uuid": "ec780d1b-a7a3-4430-9212-8cf51119df24", + "importer": "sprite-frame", + "rawTextureUuid": "b53b3cb8-314f-486d-a1ab-a1550cc55dd5", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 177, + "height": 48, + "rawWidth": 177, + "rawHeight": 48, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/hourglass.png b/assets/UI/prop/threeWins/hourglass.png index 925d794a..dfe135ca 100644 Binary files a/assets/UI/prop/threeWins/hourglass.png and b/assets/UI/prop/threeWins/hourglass.png differ diff --git a/assets/UI/prop/threeWins/hourglass.png.meta b/assets/UI/prop/threeWins/hourglass.png.meta index e6e97aff..9e55b63b 100644 --- a/assets/UI/prop/threeWins/hourglass.png.meta +++ b/assets/UI/prop/threeWins/hourglass.png.meta @@ -8,8 +8,8 @@ "premultiplyAlpha": false, "genMipmaps": false, "packable": true, - "width": 88, - "height": 124, + "width": 228, + "height": 322, "platformSettings": {}, "subMetas": { "hourglass": { @@ -24,10 +24,10 @@ "offsetY": 0, "trimX": 0, "trimY": 0, - "width": 88, - "height": 124, - "rawWidth": 88, - "rawHeight": 124, + "width": 228, + "height": 322, + "rawWidth": 228, + "rawHeight": 322, "borderTop": 0, "borderBottom": 0, "borderLeft": 0, diff --git a/assets/UI/prop/threeWins/jiahao.png b/assets/UI/prop/threeWins/jiahao.png new file mode 100644 index 00000000..4e8fe74b Binary files /dev/null and b/assets/UI/prop/threeWins/jiahao.png differ diff --git a/assets/UI/prop/threeWins/jiahao.png.meta b/assets/UI/prop/threeWins/jiahao.png.meta new file mode 100644 index 00000000..908cad3d --- /dev/null +++ b/assets/UI/prop/threeWins/jiahao.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "2bb2e70f-5aeb-4873-993f-7af2097468ba", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 68, + "height": 74, + "platformSettings": {}, + "subMetas": { + "jiahao": { + "ver": "1.0.6", + "uuid": "914ed47f-988f-40db-ae8b-66e0bf7652bd", + "importer": "sprite-frame", + "rawTextureUuid": "2bb2e70f-5aeb-4873-993f-7af2097468ba", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 68, + "height": 74, + "rawWidth": 68, + "rawHeight": 74, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/jindu01.png b/assets/UI/prop/threeWins/jindu01.png new file mode 100644 index 00000000..97ed0d76 Binary files /dev/null and b/assets/UI/prop/threeWins/jindu01.png differ diff --git a/assets/UI/prop/threeWins/jindu01.png.meta b/assets/UI/prop/threeWins/jindu01.png.meta new file mode 100644 index 00000000..d7f17cb6 --- /dev/null +++ b/assets/UI/prop/threeWins/jindu01.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "13807b51-8d00-4f0f-bc26-197928cdc656", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 98, + "height": 80, + "platformSettings": {}, + "subMetas": { + "jindu01": { + "ver": "1.0.6", + "uuid": "2e7b181e-3507-414e-97ca-f5d872274408", + "importer": "sprite-frame", + "rawTextureUuid": "13807b51-8d00-4f0f-bc26-197928cdc656", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 1, + "trimY": 0, + "width": 96, + "height": 80, + "rawWidth": 98, + "rawHeight": 80, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/jindu02.png b/assets/UI/prop/threeWins/jindu02.png new file mode 100644 index 00000000..6aad4082 Binary files /dev/null and b/assets/UI/prop/threeWins/jindu02.png differ diff --git a/assets/UI/prop/threeWins/jindu02.png.meta b/assets/UI/prop/threeWins/jindu02.png.meta new file mode 100644 index 00000000..ed5e463e --- /dev/null +++ b/assets/UI/prop/threeWins/jindu02.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "87c3d7a4-57af-4128-add9-82410135f205", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 98, + "height": 81, + "platformSettings": {}, + "subMetas": { + "jindu02": { + "ver": "1.0.6", + "uuid": "dba01350-b43c-46a9-8c0e-5bb751eb30e7", + "importer": "sprite-frame", + "rawTextureUuid": "87c3d7a4-57af-4128-add9-82410135f205", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": -0.5, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 97, + "height": 81, + "rawWidth": 98, + "rawHeight": 81, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/jindu03.png b/assets/UI/prop/threeWins/jindu03.png new file mode 100644 index 00000000..65b8eb6f Binary files /dev/null and b/assets/UI/prop/threeWins/jindu03.png differ diff --git a/assets/UI/prop/threeWins/jindu03.png.meta b/assets/UI/prop/threeWins/jindu03.png.meta new file mode 100644 index 00000000..71bd53bb --- /dev/null +++ b/assets/UI/prop/threeWins/jindu03.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "299a7b76-287b-47f2-887e-4dec53c88b0d", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 98, + "height": 80, + "platformSettings": {}, + "subMetas": { + "jindu03": { + "ver": "1.0.6", + "uuid": "77b05e56-6ac4-4464-9677-e7758bc1019e", + "importer": "sprite-frame", + "rawTextureUuid": "299a7b76-287b-47f2-887e-4dec53c88b0d", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 98, + "height": 80, + "rawWidth": 98, + "rawHeight": 80, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/jinduBg.png b/assets/UI/prop/threeWins/jinduBg.png new file mode 100644 index 00000000..ae0cf730 Binary files /dev/null and b/assets/UI/prop/threeWins/jinduBg.png differ diff --git a/assets/UI/prop/threeWins/jinduBg.png.meta b/assets/UI/prop/threeWins/jinduBg.png.meta new file mode 100644 index 00000000..098ee69d --- /dev/null +++ b/assets/UI/prop/threeWins/jinduBg.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "e7c9aca9-01ad-4e88-a9d7-839deae424e9", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 262, + "height": 85, + "platformSettings": {}, + "subMetas": { + "jinduBg": { + "ver": "1.0.6", + "uuid": "bf3beea2-1ffc-4d76-8d07-bbe83b1b9e09", + "importer": "sprite-frame", + "rawTextureUuid": "e7c9aca9-01ad-4e88-a9d7-839deae424e9", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 262, + "height": 85, + "rawWidth": 262, + "rawHeight": 85, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/lianshengjind.png b/assets/UI/prop/threeWins/lianshengjind.png new file mode 100644 index 00000000..6f0b4b49 Binary files /dev/null and b/assets/UI/prop/threeWins/lianshengjind.png differ diff --git a/assets/UI/prop/threeWins/lianshengjind.png.meta b/assets/UI/prop/threeWins/lianshengjind.png.meta new file mode 100644 index 00000000..26d16f58 --- /dev/null +++ b/assets/UI/prop/threeWins/lianshengjind.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "758bb53b-af1d-4d32-9b28-acd56b7f911a", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 187, + "height": 43, + "platformSettings": {}, + "subMetas": { + "lianshengjind": { + "ver": "1.0.6", + "uuid": "2137246a-aabd-46ad-bfc5-d80be665e524", + "importer": "sprite-frame", + "rawTextureUuid": "758bb53b-af1d-4d32-9b28-acd56b7f911a", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 187, + "height": 43, + "rawWidth": 187, + "rawHeight": 43, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/little_rainbow.png b/assets/UI/prop/threeWins/little_rainbow.png new file mode 100644 index 00000000..894c0739 Binary files /dev/null and b/assets/UI/prop/threeWins/little_rainbow.png differ diff --git a/assets/UI/prop/threeWins/little_rainbow.png.meta b/assets/UI/prop/threeWins/little_rainbow.png.meta new file mode 100644 index 00000000..16059763 --- /dev/null +++ b/assets/UI/prop/threeWins/little_rainbow.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "eff6312c-f0d7-4d64-bb76-49b9f9f6caad", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 145, + "height": 156, + "platformSettings": {}, + "subMetas": { + "little_rainbow": { + "ver": "1.0.6", + "uuid": "1e79f3d6-af31-4d9c-b61b-74929440537c", + "importer": "sprite-frame", + "rawTextureUuid": "eff6312c-f0d7-4d64-bb76-49b9f9f6caad", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 1, + "trimY": 0, + "width": 143, + "height": 156, + "rawWidth": 145, + "rawHeight": 156, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/rocket.png b/assets/UI/prop/threeWins/rocket.png index 5c44effe..9690fbc6 100644 Binary files a/assets/UI/prop/threeWins/rocket.png and b/assets/UI/prop/threeWins/rocket.png differ diff --git a/assets/UI/prop/threeWins/shuipdi.png b/assets/UI/prop/threeWins/shuipdi.png new file mode 100644 index 00000000..7b13d028 Binary files /dev/null and b/assets/UI/prop/threeWins/shuipdi.png differ diff --git a/assets/UI/prop/threeWins/shuipdi.png.meta b/assets/UI/prop/threeWins/shuipdi.png.meta new file mode 100644 index 00000000..867b9373 --- /dev/null +++ b/assets/UI/prop/threeWins/shuipdi.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "c8e2a0fc-e660-4f8a-959c-f89ec9bfa218", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 198, + "height": 198, + "platformSettings": {}, + "subMetas": { + "shuipdi": { + "ver": "1.0.6", + "uuid": "1d885710-02b4-424c-b32b-df11973d0ded", + "importer": "sprite-frame", + "rawTextureUuid": "c8e2a0fc-e660-4f8a-959c-f89ec9bfa218", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 1, + "trimY": 1, + "width": 196, + "height": 196, + "rawWidth": 198, + "rawHeight": 198, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/shuziBg.png b/assets/UI/prop/threeWins/shuziBg.png new file mode 100644 index 00000000..ca04c682 Binary files /dev/null and b/assets/UI/prop/threeWins/shuziBg.png differ diff --git a/assets/UI/prop/threeWins/shuziBg.png.meta b/assets/UI/prop/threeWins/shuziBg.png.meta new file mode 100644 index 00000000..7f247951 --- /dev/null +++ b/assets/UI/prop/threeWins/shuziBg.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "6002fa76-5c47-40de-a2f1-812cdf2c7a12", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 68, + "height": 74, + "platformSettings": {}, + "subMetas": { + "shuziBg": { + "ver": "1.0.6", + "uuid": "d45452ee-6ac4-4adc-ad49-cd876b55589f", + "importer": "sprite-frame", + "rawTextureUuid": "6002fa76-5c47-40de-a2f1-812cdf2c7a12", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 68, + "height": 74, + "rawWidth": 68, + "rawHeight": 74, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/threeWinsFont.plist b/assets/UI/prop/threeWins/threeWinsFont.plist new file mode 100644 index 00000000..3d3d20a0 --- /dev/null +++ b/assets/UI/prop/threeWins/threeWinsFont.plist @@ -0,0 +1,516 @@ + + + + + frames + + custom_0.png + + frame + {{92,63},{45,59}} + offset + {0,0} + rotated + + sourceColorRect + {{0,2},{45,59}} + sourceSize + {45,63} + + custom_1.png + + frame + {{180,63},{27,59}} + offset + {-1,1} + rotated + + sourceColorRect + {{8,1},{27,59}} + sourceSize + {45,63} + + custom_2.png + + frame + {{139,63},{39,59}} + offset + {0,1} + rotated + + sourceColorRect + {{3,1},{39,59}} + sourceSize + {45,63} + + custom_3.png + + frame + {{176,2},{37,59}} + offset + {-1,1} + rotated + + sourceColorRect + {{3,1},{37,59}} + sourceSize + {45,63} + + custom_4.png + + frame + {{88,2},{45,59}} + offset + {0,0} + rotated + + sourceColorRect + {{0,2},{45,59}} + sourceSize + {45,63} + + custom_5.png + + frame + {{135,2},{39,59}} + offset + {0,1} + rotated + + sourceColorRect + {{3,1},{39,59}} + sourceSize + {45,63} + + custom_6.png + + frame + {{45,2},{41,61}} + offset + {-1,1} + rotated + + sourceColorRect + {{1,0},{41,61}} + sourceSize + {45,63} + + custom_7.png + + frame + {{45,65},{45,59}} + offset + {0,0} + rotated + + sourceColorRect + {{0,2},{45,59}} + sourceSize + {45,63} + + custom_8.png + + frame + {{2,65},{41,61}} + offset + {0,0} + rotated + + sourceColorRect + {{2,1},{41,61}} + sourceSize + {45,63} + + custom_9.png + + frame + {{2,2},{41,61}} + offset + {0,0} + rotated + + sourceColorRect + {{2,1},{41,61}} + sourceSize + {45,63} + + progressBg_3.png + + frame + {{470,28},{24,32}} + offset + {0,1} + rotated + + sourceColorRect + {{3,0},{24,32}} + sourceSize + {30,34} + + progressBg_guan.png + + frame + {{322,94},{30,32}} + offset + {0,0} + rotated + + sourceColorRect + {{0,0},{30,32}} + sourceSize + {30,32} + + progressBg_xiegang.png + + frame + {{385,2},{25,39}} + offset + {0,0} + rotated + + sourceColorRect + {{0,0},{25,39}} + sourceSize + {25,39} + + progress_0.png + + frame + {{290,94},{30,32}} + offset + {0,1} + rotated + + sourceColorRect + {{0,0},{30,32}} + sourceSize + {30,34} + + progress_1.png + + frame + {{209,111},{18,32}} + offset + {-1,1} + rotated + + sourceColorRect + {{5,0},{18,32}} + sourceSize + {30,34} + + progress_2.png + + frame + {{470,54},{26,30}} + offset + {0,0} + rotated + + sourceColorRect + {{2,2},{26,30}} + sourceSize + {30,34} + + progress_3.png + + frame + {{470,2},{24,32}} + offset + {0,1} + rotated + + sourceColorRect + {{3,0},{24,32}} + sourceSize + {30,34} + + prop_0.png + + frame + {{408,43},{30,37}} + offset + {0,0} + rotated + + sourceColorRect + {{0,1},{30,37}} + sourceSize + {30,39} + + prop_1.png + + frame + {{448,80},{20,37}} + offset + {0,0} + rotated + + sourceColorRect + {{5,1},{20,37}} + sourceSize + {30,39} + + prop_2.png + + frame + {{440,41},{28,37}} + offset + {-1,0} + rotated + + sourceColorRect + {{0,1},{28,37}} + sourceSize + {30,39} + + prop_3.png + + frame + {{470,82},{26,37}} + offset + {0,0} + rotated + + sourceColorRect + {{2,1},{26,37}} + sourceSize + {30,39} + + prop_4.png + + frame + {{386,84},{30,37}} + offset + {0,0} + rotated + + sourceColorRect + {{0,1},{30,37}} + sourceSize + {30,39} + + prop_5.png + + frame + {{418,82},{28,37}} + offset + {-1,1} + rotated + + sourceColorRect + {{0,0},{28,37}} + sourceSize + {30,39} + + prop_6.png + + frame + {{412,2},{28,37}} + offset + {-1,0} + rotated + + sourceColorRect + {{0,1},{28,37}} + sourceSize + {30,39} + + prop_7.png + + frame + {{354,92},{30,37}} + offset + {0,0} + rotated + + sourceColorRect + {{0,1},{30,37}} + sourceSize + {30,39} + + prop_8.png + + frame + {{378,43},{28,39}} + offset + {-1,0} + rotated + + sourceColorRect + {{0,0},{28,39}} + sourceSize + {30,39} + + prop_9.png + + frame + {{355,2},{28,39}} + offset + {0,0} + rotated + + sourceColorRect + {{1,0},{28,39}} + sourceSize + {30,39} + + rainbow0.png + + frame + {{281,48},{35,44}} + offset + {0,0} + rotated + + sourceColorRect + {{0,1},{35,44}} + sourceSize + {35,46} + + rainbow1.png + + frame + {{351,48},{25,42}} + offset + {-1,0} + rotated + + sourceColorRect + {{4,2},{25,42}} + sourceSize + {35,46} + + rainbow2.png + + frame + {{287,2},{33,44}} + offset + {-1,1} + rotated + + sourceColorRect + {{0,0},{33,44}} + sourceSize + {35,46} + + rainbow3.png + + frame + {{322,2},{31,44}} + offset + {-1,1} + rotated + + sourceColorRect + {{1,0},{31,44}} + sourceSize + {35,46} + + rainbow4.png + + frame + {{250,2},{35,44}} + offset + {0,0} + rotated + + sourceColorRect + {{0,1},{35,44}} + sourceSize + {35,46} + + rainbow5.png + + frame + {{318,48},{31,44}} + offset + {0,1} + rotated + + sourceColorRect + {{2,0},{31,44}} + sourceSize + {35,46} + + rainbow6.png + + frame + {{244,96},{33,44}} + offset + {-1,0} + rotated + + sourceColorRect + {{0,1},{33,44}} + sourceSize + {35,46} + + rainbow7.png + + frame + {{244,50},{35,44}} + offset + {0,1} + rotated + + sourceColorRect + {{0,0},{35,44}} + sourceSize + {35,46} + + rainbow8.png + + frame + {{215,2},{33,46}} + offset + {0,0} + rotated + + sourceColorRect + {{1,0},{33,46}} + sourceSize + {35,46} + + rainbow9.png + + frame + {{209,63},{33,46}} + offset + {0,0} + rotated + + sourceColorRect + {{1,0},{33,46}} + sourceSize + {35,46} + + xiegan00.png + + frame + {{442,2},{26,37}} + offset + {0,0} + rotated + + sourceColorRect + {{0,0},{26,37}} + sourceSize + {26,37} + + + metadata + + format + 2 + realTextureFileName + threeWinsFont.png + size + {504,132} + smartupdate + $TexturePacker:SmartUpdate:d314eda09df83f5a2c16c0ff9b279c60$ + textureFileName + threeWinsFont.png + + + diff --git a/assets/UI/prop/threeWins/threeWinsFont.plist.meta b/assets/UI/prop/threeWins/threeWinsFont.plist.meta new file mode 100644 index 00000000..b7d3fe76 --- /dev/null +++ b/assets/UI/prop/threeWins/threeWinsFont.plist.meta @@ -0,0 +1,887 @@ +{ + "ver": "1.2.6", + "uuid": "7ed7640c-5fe6-4777-98f2-299424c47a92", + "importer": "asset", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "size": { + "width": 504, + "height": 132 + }, + "type": "Texture Packer", + "subMetas": { + "custom_0.png": { + "ver": "1.0.6", + "uuid": "fc777226-b812-4341-bf30-bcbe6acc34f5", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 92, + "trimY": 63, + "width": 45, + "height": 59, + "rawWidth": 45, + "rawHeight": 63, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "custom_1.png": { + "ver": "1.0.6", + "uuid": "9c7e6b23-f2a7-4e22-be62-777d4bef05ea", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": -1, + "offsetY": 1, + "trimX": 180, + "trimY": 63, + "width": 27, + "height": 59, + "rawWidth": 45, + "rawHeight": 63, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "custom_2.png": { + "ver": "1.0.6", + "uuid": "e001e2fa-b22a-4327-a048-e48691c6846a", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 1, + "trimX": 139, + "trimY": 63, + "width": 39, + "height": 59, + "rawWidth": 45, + "rawHeight": 63, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "custom_3.png": { + "ver": "1.0.6", + "uuid": "c8e7f56f-8445-4596-888b-6e20285de239", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": -1, + "offsetY": 1, + "trimX": 176, + "trimY": 2, + "width": 37, + "height": 59, + "rawWidth": 45, + "rawHeight": 63, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "custom_4.png": { + "ver": "1.0.6", + "uuid": "270813d0-6bc1-4b10-aaca-de4fe664e0f7", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 88, + "trimY": 2, + "width": 45, + "height": 59, + "rawWidth": 45, + "rawHeight": 63, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "custom_5.png": { + "ver": "1.0.6", + "uuid": "1eeafac1-810c-4db2-8909-7cdc91c3e286", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 1, + "trimX": 135, + "trimY": 2, + "width": 39, + "height": 59, + "rawWidth": 45, + "rawHeight": 63, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "custom_6.png": { + "ver": "1.0.6", + "uuid": "5b7befce-d4c7-412b-83f7-3505ed4e005c", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": -1, + "offsetY": 1, + "trimX": 45, + "trimY": 2, + "width": 41, + "height": 61, + "rawWidth": 45, + "rawHeight": 63, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "custom_7.png": { + "ver": "1.0.6", + "uuid": "f5bd64ae-6b5f-4c8d-bfb8-95eaa0ae0301", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 45, + "trimY": 65, + "width": 45, + "height": 59, + "rawWidth": 45, + "rawHeight": 63, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "custom_8.png": { + "ver": "1.0.6", + "uuid": "66bac11d-ee08-42d5-ad2a-71b7ea738b79", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 2, + "trimY": 65, + "width": 41, + "height": 61, + "rawWidth": 45, + "rawHeight": 63, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "custom_9.png": { + "ver": "1.0.6", + "uuid": "f38aa1e5-df48-44d6-8e0d-3cffd6004e0d", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 2, + "trimY": 2, + "width": 41, + "height": 61, + "rawWidth": 45, + "rawHeight": 63, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "progressBg_3.png": { + "ver": "1.0.6", + "uuid": "32a34113-d9b4-4ce4-a820-55db829eddb6", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 1, + "trimX": 470, + "trimY": 28, + "width": 24, + "height": 32, + "rawWidth": 30, + "rawHeight": 34, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "progressBg_guan.png": { + "ver": "1.0.6", + "uuid": "2cc8910f-e57f-4b1e-b2f8-19263efbecfd", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 322, + "trimY": 94, + "width": 30, + "height": 32, + "rawWidth": 30, + "rawHeight": 32, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "progressBg_xiegang.png": { + "ver": "1.0.6", + "uuid": "850b2489-38fa-47b8-b402-75ab260bacde", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 385, + "trimY": 2, + "width": 25, + "height": 39, + "rawWidth": 25, + "rawHeight": 39, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "progress_0.png": { + "ver": "1.0.6", + "uuid": "2eb09278-dad4-4034-9c6a-df493c0145a6", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 1, + "trimX": 290, + "trimY": 94, + "width": 30, + "height": 32, + "rawWidth": 30, + "rawHeight": 34, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "progress_1.png": { + "ver": "1.0.6", + "uuid": "180ee889-2108-41f2-8410-4a85a6b47cec", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": -1, + "offsetY": 1, + "trimX": 209, + "trimY": 111, + "width": 18, + "height": 32, + "rawWidth": 30, + "rawHeight": 34, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "progress_2.png": { + "ver": "1.0.6", + "uuid": "53dea695-d0d9-484e-95a2-5810d97a38ae", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 0, + "trimX": 470, + "trimY": 54, + "width": 26, + "height": 30, + "rawWidth": 30, + "rawHeight": 34, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "progress_3.png": { + "ver": "1.0.6", + "uuid": "8f402bc1-b384-4309-be93-9a34117c98f7", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": 0, + "offsetY": 1, + "trimX": 470, + "trimY": 2, + "width": 24, + "height": 32, + "rawWidth": 30, + "rawHeight": 34, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "prop_0.png": { + "ver": "1.0.6", + "uuid": "3d082ede-ef1a-48e4-ad68-a3ed330840ca", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 408, + "trimY": 43, + "width": 30, + "height": 37, + "rawWidth": 30, + "rawHeight": 39, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "prop_1.png": { + "ver": "1.0.6", + "uuid": "3708bb61-b21b-4420-a02a-0f935195697c", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 448, + "trimY": 80, + "width": 20, + "height": 37, + "rawWidth": 30, + "rawHeight": 39, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "prop_2.png": { + "ver": "1.0.6", + "uuid": "587eacde-971e-441a-8549-9cf7e0fe6f36", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": -1, + "offsetY": 0, + "trimX": 440, + "trimY": 41, + "width": 28, + "height": 37, + "rawWidth": 30, + "rawHeight": 39, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "prop_3.png": { + "ver": "1.0.6", + "uuid": "8e5f038c-6f19-447d-8d85-4fbf4218e225", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 470, + "trimY": 82, + "width": 26, + "height": 37, + "rawWidth": 30, + "rawHeight": 39, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "prop_4.png": { + "ver": "1.0.6", + "uuid": "e0d7fc1a-8e00-481a-be1d-1e7593b68623", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 386, + "trimY": 84, + "width": 30, + "height": 37, + "rawWidth": 30, + "rawHeight": 39, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "prop_5.png": { + "ver": "1.0.6", + "uuid": "72eeca6a-089d-4bb5-bc71-4252c3d81f06", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": -1, + "offsetY": 1, + "trimX": 418, + "trimY": 82, + "width": 28, + "height": 37, + "rawWidth": 30, + "rawHeight": 39, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "prop_6.png": { + "ver": "1.0.6", + "uuid": "dc873966-ca57-421b-8543-e3e2ec373ed3", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": -1, + "offsetY": 0, + "trimX": 412, + "trimY": 2, + "width": 28, + "height": 37, + "rawWidth": 30, + "rawHeight": 39, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "prop_7.png": { + "ver": "1.0.6", + "uuid": "ae3167a6-6385-4590-b9e3-e337d4c88d29", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 354, + "trimY": 92, + "width": 30, + "height": 37, + "rawWidth": 30, + "rawHeight": 39, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "prop_8.png": { + "ver": "1.0.6", + "uuid": "fba9a416-c691-4e1c-b043-df68ca0ddbe9", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": -1, + "offsetY": 0, + "trimX": 378, + "trimY": 43, + "width": 28, + "height": 39, + "rawWidth": 30, + "rawHeight": 39, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "prop_9.png": { + "ver": "1.0.6", + "uuid": "91599364-8409-4afc-8dee-7865656e28f2", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 355, + "trimY": 2, + "width": 28, + "height": 39, + "rawWidth": 30, + "rawHeight": 39, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "rainbow0.png": { + "ver": "1.0.6", + "uuid": "248caf56-e3ef-41ad-9fae-51c320ff33ec", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 281, + "trimY": 48, + "width": 35, + "height": 44, + "rawWidth": 35, + "rawHeight": 46, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "rainbow1.png": { + "ver": "1.0.6", + "uuid": "95431c78-5064-46a4-9825-961b7d3be2e2", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": -1, + "offsetY": 0, + "trimX": 351, + "trimY": 48, + "width": 25, + "height": 42, + "rawWidth": 35, + "rawHeight": 46, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "rainbow2.png": { + "ver": "1.0.6", + "uuid": "7f539041-fc00-403f-ae96-b4a3ccc6704f", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": -1, + "offsetY": 1, + "trimX": 287, + "trimY": 2, + "width": 33, + "height": 44, + "rawWidth": 35, + "rawHeight": 46, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "rainbow3.png": { + "ver": "1.0.6", + "uuid": "51869832-55c6-4cbc-8ab9-dcd873f4b8f5", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": -1, + "offsetY": 1, + "trimX": 322, + "trimY": 2, + "width": 31, + "height": 44, + "rawWidth": 35, + "rawHeight": 46, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "rainbow4.png": { + "ver": "1.0.6", + "uuid": "73acc286-b85f-4c8a-ab9a-aa9116c099d0", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 250, + "trimY": 2, + "width": 35, + "height": 44, + "rawWidth": 35, + "rawHeight": 46, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "rainbow5.png": { + "ver": "1.0.6", + "uuid": "6d8a77b4-bc03-4705-9814-a4330d27c6b3", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 1, + "trimX": 318, + "trimY": 48, + "width": 31, + "height": 44, + "rawWidth": 35, + "rawHeight": 46, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "rainbow6.png": { + "ver": "1.0.6", + "uuid": "6291ded4-b5b7-40ae-9f4c-719d8534c2af", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": true, + "offsetX": -1, + "offsetY": 0, + "trimX": 244, + "trimY": 96, + "width": 33, + "height": 44, + "rawWidth": 35, + "rawHeight": 46, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "rainbow7.png": { + "ver": "1.0.6", + "uuid": "5a457d1e-7a01-491a-9d24-578afcc70be7", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 1, + "trimX": 244, + "trimY": 50, + "width": 35, + "height": 44, + "rawWidth": 35, + "rawHeight": 46, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "rainbow8.png": { + "ver": "1.0.6", + "uuid": "102d18ea-79c0-41d1-bb48-9470c68095c5", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 215, + "trimY": 2, + "width": 33, + "height": 46, + "rawWidth": 35, + "rawHeight": 46, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "rainbow9.png": { + "ver": "1.0.6", + "uuid": "17fe1abd-c47d-404f-b15f-1f83adf87dc1", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 209, + "trimY": 63, + "width": 33, + "height": 46, + "rawWidth": 35, + "rawHeight": 46, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + }, + "xiegan00.png": { + "ver": "1.0.6", + "uuid": "78ba6ea6-3f8d-44be-9716-df7fb22e18fe", + "importer": "sprite-frame", + "rawTextureUuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 442, + "trimY": 2, + "width": 26, + "height": 37, + "rawWidth": 26, + "rawHeight": 37, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "spriteType": "normal", + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/threeWinsFont.png b/assets/UI/prop/threeWins/threeWinsFont.png new file mode 100644 index 00000000..9a7af2f4 Binary files /dev/null and b/assets/UI/prop/threeWins/threeWinsFont.png differ diff --git a/assets/UI/prop/threeWins/threeWinsFont.png.meta b/assets/UI/prop/threeWins/threeWinsFont.png.meta new file mode 100644 index 00000000..bbe49c58 --- /dev/null +++ b/assets/UI/prop/threeWins/threeWinsFont.png.meta @@ -0,0 +1,15 @@ +{ + "ver": "2.3.7", + "uuid": "d570af57-fd5e-478e-a347-c287e0a6f129", + "importer": "texture", + "type": "raw", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 504, + "height": 132, + "platformSettings": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/threeWinsShine.png b/assets/UI/prop/threeWins/threeWinsShine.png new file mode 100644 index 00000000..80179a80 Binary files /dev/null and b/assets/UI/prop/threeWins/threeWinsShine.png differ diff --git a/assets/UI/prop/threeWins/threeWinsShine.png.meta b/assets/UI/prop/threeWins/threeWinsShine.png.meta new file mode 100644 index 00000000..b3b4f674 --- /dev/null +++ b/assets/UI/prop/threeWins/threeWinsShine.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "34400d9e-32ca-4686-9f67-9bf54af073c2", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 312, + "height": 290, + "platformSettings": {}, + "subMetas": { + "threeWinsShine": { + "ver": "1.0.6", + "uuid": "0156ed3b-1b76-469e-8916-1e993279f2b8", + "importer": "sprite-frame", + "rawTextureUuid": "34400d9e-32ca-4686-9f67-9bf54af073c2", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 312, + "height": 290, + "rawWidth": 312, + "rawHeight": 290, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/xiaoguan.png b/assets/UI/prop/threeWins/xiaoguan.png new file mode 100644 index 00000000..8df11ad9 Binary files /dev/null and b/assets/UI/prop/threeWins/xiaoguan.png differ diff --git a/assets/UI/prop/threeWins/xiaoguan.png.meta b/assets/UI/prop/threeWins/xiaoguan.png.meta new file mode 100644 index 00000000..0cb5475d --- /dev/null +++ b/assets/UI/prop/threeWins/xiaoguan.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "c306d352-de8d-4b0c-8d53-747d5da92227", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 27, + "height": 29, + "platformSettings": {}, + "subMetas": { + "xiaoguan": { + "ver": "1.0.6", + "uuid": "8cf5be7d-238e-4e1e-a608-746d6bf88bb9", + "importer": "sprite-frame", + "rawTextureUuid": "c306d352-de8d-4b0c-8d53-747d5da92227", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 27, + "height": 29, + "rawWidth": 27, + "rawHeight": 29, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/xiaojindu.png b/assets/UI/prop/threeWins/xiaojindu.png new file mode 100644 index 00000000..2ae606b5 Binary files /dev/null and b/assets/UI/prop/threeWins/xiaojindu.png differ diff --git a/assets/UI/prop/threeWins/xiaojindu.png.meta b/assets/UI/prop/threeWins/xiaojindu.png.meta new file mode 100644 index 00000000..105b71e2 --- /dev/null +++ b/assets/UI/prop/threeWins/xiaojindu.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "42c9f24b-1cac-4e1d-a25d-04eacda4b554", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 171, + "height": 40, + "platformSettings": {}, + "subMetas": { + "xiaojindu": { + "ver": "1.0.6", + "uuid": "e7f55ead-c651-4e4d-b343-b4437bdc2f4e", + "importer": "sprite-frame", + "rawTextureUuid": "42c9f24b-1cac-4e1d-a25d-04eacda4b554", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 171, + "height": 40, + "rawWidth": 171, + "rawHeight": 40, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/xiaoshuip00.png b/assets/UI/prop/threeWins/xiaoshuip00.png new file mode 100644 index 00000000..cef76827 Binary files /dev/null and b/assets/UI/prop/threeWins/xiaoshuip00.png differ diff --git a/assets/UI/prop/threeWins/xiaoshuip00.png.meta b/assets/UI/prop/threeWins/xiaoshuip00.png.meta new file mode 100644 index 00000000..2eca2347 --- /dev/null +++ b/assets/UI/prop/threeWins/xiaoshuip00.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "68d4e4c1-b05e-48c5-949c-4b6cda49f680", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 184, + "height": 199, + "platformSettings": {}, + "subMetas": { + "xiaoshuip00": { + "ver": "1.0.6", + "uuid": "8b6a5b9e-1b21-44c1-9c7a-8901242e8c44", + "importer": "sprite-frame", + "rawTextureUuid": "68d4e4c1-b05e-48c5-949c-4b6cda49f680", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 184, + "height": 199, + "rawWidth": 184, + "rawHeight": 199, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/xuanzedaojzi.png b/assets/UI/prop/threeWins/xuanzedaojzi.png new file mode 100644 index 00000000..821b2585 Binary files /dev/null and b/assets/UI/prop/threeWins/xuanzedaojzi.png differ diff --git a/assets/UI/prop/threeWins/xuanzedaojzi.png.meta b/assets/UI/prop/threeWins/xuanzedaojzi.png.meta new file mode 100644 index 00000000..f7285069 --- /dev/null +++ b/assets/UI/prop/threeWins/xuanzedaojzi.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "f17ec12c-4173-450b-8c49-e27032c8f579", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 742, + "height": 42, + "platformSettings": {}, + "subMetas": { + "xuanzedaojzi": { + "ver": "1.0.6", + "uuid": "476ad02d-d637-499a-a511-84f7e05da8ed", + "importer": "sprite-frame", + "rawTextureUuid": "f17ec12c-4173-450b-8c49-e27032c8f579", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 742, + "height": 42, + "rawWidth": 742, + "rawHeight": 42, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/UI/prop/threeWins/ziziz.png b/assets/UI/prop/threeWins/ziziz.png new file mode 100644 index 00000000..6d6e6d32 Binary files /dev/null and b/assets/UI/prop/threeWins/ziziz.png differ diff --git a/assets/UI/prop/threeWins/ziziz.png.meta b/assets/UI/prop/threeWins/ziziz.png.meta new file mode 100644 index 00000000..88a728c8 --- /dev/null +++ b/assets/UI/prop/threeWins/ziziz.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "a5cd4d1b-8a49-4f2a-b83a-386ce141953d", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 488, + "height": 58, + "platformSettings": {}, + "subMetas": { + "ziziz": { + "ver": "1.0.6", + "uuid": "7d681c79-cc36-4b23-abe2-d1fab1b4581d", + "importer": "sprite-frame", + "rawTextureUuid": "a5cd4d1b-8a49-4f2a-b83a-386ce141953d", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 488, + "height": 58, + "rawWidth": 488, + "rawHeight": 58, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/gacha_bundle/compressed.meta b/assets/gacha_bundle/compressed.meta new file mode 100644 index 00000000..69862916 --- /dev/null +++ b/assets/gacha_bundle/compressed.meta @@ -0,0 +1,13 @@ +{ + "ver": "1.1.3", + "uuid": "0e9d3080-403b-4aee-85bc-cdd2e7b97b42", + "importer": "folder", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/assets/gacha_bundle/img/cat.meta b/assets/gacha_bundle/img/cat.meta new file mode 100644 index 00000000..7d3a43d2 --- /dev/null +++ b/assets/gacha_bundle/img/cat.meta @@ -0,0 +1,13 @@ +{ + "ver": "1.1.3", + "uuid": "d98e8c38-ed42-4ab5-bb4f-2e1060e26cb6", + "importer": "folder", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/assets/libs/dn-sdk-minigame.meta b/assets/libs/dn-sdk-minigame.meta new file mode 100644 index 00000000..596c33bb --- /dev/null +++ b/assets/libs/dn-sdk-minigame.meta @@ -0,0 +1,13 @@ +{ + "ver": "1.1.3", + "uuid": "dc95500c-537d-42ee-9197-f4bfcae93325", + "importer": "folder", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/assets/passCheck/script.meta b/assets/passCheck/script.meta new file mode 100644 index 00000000..0d10c1b6 --- /dev/null +++ b/assets/passCheck/script.meta @@ -0,0 +1,13 @@ +{ + "ver": "1.1.3", + "uuid": "56ffd962-0771-4946-bc03-6981dbf5f019", + "importer": "folder", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/assets/prefab/pop/threeWins.prefab b/assets/prefab/pop/threeWins.prefab new file mode 100644 index 00000000..e9c208d9 --- /dev/null +++ b/assets/prefab/pop/threeWins.prefab @@ -0,0 +1,5219 @@ +[ + { + "__type__": "cc.Prefab", + "_name": "", + "_objFlags": 0, + "_native": "", + "data": { + "__id__": 1 + }, + "optimizationPolicy": 0, + "asyncLoadAssets": false, + "readonly": false + }, + { + "__type__": "cc.Node", + "_name": "threeWins", + "_objFlags": 0, + "_parent": null, + "_children": [ + { + "__id__": 2 + }, + { + "__id__": 7 + }, + { + "__id__": 10 + }, + { + "__id__": 13 + }, + { + "__id__": 15 + }, + { + "__id__": 18 + }, + { + "__id__": 21 + }, + { + "__id__": 24 + }, + { + "__id__": 27 + }, + { + "__id__": 30 + }, + { + "__id__": 33 + }, + { + "__id__": 36 + }, + { + "__id__": 39 + }, + { + "__id__": 42 + }, + { + "__id__": 45 + }, + { + "__id__": 47 + }, + { + "__id__": 51 + }, + { + "__id__": 80 + }, + { + "__id__": 82 + }, + { + "__id__": 96 + }, + { + "__id__": 118 + } + ], + "_active": true, + "_components": [ + { + "__id__": 139 + } + ], + "_prefab": { + "__id__": 140 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 1080, + "height": 1920 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 540, + 960, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "New Sprite(Splash)", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 3 + }, + { + "__id__": 4 + }, + { + "__id__": 5 + } + ], + "_prefab": { + "__id__": 6 + }, + "_opacity": 150, + "_color": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 1080, + "height": 2920 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 2 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91" + }, + "_type": 0, + "_sizeMode": 0, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.Widget", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 2 + }, + "_enabled": true, + "alignMode": 1, + "_target": null, + "_alignFlags": 45, + "_left": 0, + "_right": 0, + "_top": -500, + "_bottom": -500, + "_verticalCenter": 0, + "_horizontalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 100, + "_originalHeight": 100, + "_id": "" + }, + { + "__type__": "cc.BlockInputEvents", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 2 + }, + "_enabled": true, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "6fQXoiv7VJAIO9blQ3UyQp", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "bg", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 8 + } + ], + "_prefab": { + "__id__": 9 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 862, + "height": 1298 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 7 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "3f9aa048-60dd-4f65-acfd-6780204b8c6f" + }, + "_type": 1, + "_sizeMode": 0, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "eabW/KHM5HkqYlVOTIHnMY", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 11 + } + ], + "_prefab": { + "__id__": 12 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 488, + "height": 58 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 508.8, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 10 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "7d681c79-cc36-4b23-abe2-d1fab1b4581d" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "8drYW6eihBvYhA8gvhtTGw", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "custom", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [], + "_prefab": { + "__id__": 14 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 0, + "height": 0 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 511.722, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "98sLgUudZEK5mdOX4xJ9vI", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 16 + } + ], + "_prefab": { + "__id__": 17 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 742, + "height": 302 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 212.871, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 15 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "2e0a80d2-cbe1-4c05-bcea-c7f954d910e6" + }, + "_type": 1, + "_sizeMode": 0, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "9dZKbxsRREkIndONsPUC6p", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 19 + } + ], + "_prefab": { + "__id__": 20 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 742, + "height": 42 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + -5.271, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 18 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "476ad02d-d637-499a-a511-84f7e05da8ed" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "5brlnxf+1LnoznexVkjlc3", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 22 + } + ], + "_prefab": { + "__id__": 23 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 196, + "height": 196 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + -367.209, + -448.031, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 21 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "1d885710-02b4-424c-b32b-df11973d0ded" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "3dnHt5bW1MLo20MdhWiz34", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 25 + } + ], + "_prefab": { + "__id__": 26 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 143, + "height": 156 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + -367.315, + -446.189, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 24 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "1e79f3d6-af31-4d9c-b61b-74929440537c" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "59UEKv/2FH0YWmPbp3it/W", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 28 + } + ], + "_prefab": { + "__id__": 29 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 177, + "height": 48 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + -367.315, + -535.454, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 27 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "ec780d1b-a7a3-4430-9212-8cf51119df24" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "0f2++ZRr5K16tpua5xP0/+", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "progress", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 31 + } + ], + "_prefab": { + "__id__": 32 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 171, + "height": 40 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + -367.315, + -535.454, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 30 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "e7f55ead-c651-4e4d-b343-b4437bdc2f4e" + }, + "_type": 3, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "e99yloFRpHipXeu4SIH7yj", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 34 + } + ], + "_prefab": { + "__id__": 35 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 26, + "height": 37 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + -367.315, + -536.981, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 33 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "78ba6ea6-3f8d-44be-9716-df7fb22e18fe" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": { + "__uuid__": "7ed7640c-5fe6-4777-98f2-299424c47a92" + }, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "f3vqMvHM5K/62ERxPWqtQn", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 37 + } + ], + "_prefab": { + "__id__": 38 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 25, + "height": 42 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + -341.21, + -536.981, + 0, + 0, + 0, + 0, + 1, + 0.8, + 0.8, + 0.8 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 36 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "95431c78-5064-46a4-9825-961b7d3be2e2" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": { + "__uuid__": "7ed7640c-5fe6-4777-98f2-299424c47a92" + }, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "83pDxXBmhMzrQ25rlSi6if", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 40 + } + ], + "_prefab": { + "__id__": 41 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 35, + "height": 44 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + -316.362, + -536.981, + 0, + 0, + 0, + 0, + 1, + 0.8, + 0.8, + 0.8 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 39 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "248caf56-e3ef-41ad-9fae-51c320ff33ec" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": { + "__uuid__": "7ed7640c-5fe6-4777-98f2-299424c47a92" + }, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "efo4OWZ71K+oQvOY5q3+VC", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 43 + } + ], + "_prefab": { + "__id__": 44 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 312, + "height": 290 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + -205.567, + 214.352, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 42 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "0156ed3b-1b76-469e-8916-1e993279f2b8" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "32ox3ssyFD3bssGfqz7ajk", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "sprite", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [], + "_prefab": { + "__id__": 46 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 40, + "height": 36 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "e4VHjoS3xF5YN6HvVVSuhi", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "begin", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 48 + }, + { + "__id__": 49 + } + ], + "_prefab": { + "__id__": 50 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 472, + "height": 162 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + -465.601, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 0 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 47 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "e96d80c7-bc9b-432a-81c1-918f0f826e45" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.Button", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 47 + }, + "_enabled": true, + "_normalMaterial": null, + "_grayMaterial": null, + "duration": 0.1, + "zoomScale": 1.1, + "clickEvents": [], + "_N$interactable": true, + "_N$enableAutoGrayEffect": false, + "_N$transition": 3, + "transition": 3, + "_N$normalColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_N$pressedColor": { + "__type__": "cc.Color", + "r": 211, + "g": 211, + "b": 211, + "a": 255 + }, + "pressedColor": { + "__type__": "cc.Color", + "r": 211, + "g": 211, + "b": 211, + "a": 255 + }, + "_N$hoverColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "hoverColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_N$disabledColor": { + "__type__": "cc.Color", + "r": 124, + "g": 124, + "b": 124, + "a": 255 + }, + "_N$normalSprite": null, + "_N$pressedSprite": null, + "pressedSprite": null, + "_N$hoverSprite": null, + "hoverSprite": null, + "_N$disabledSprite": null, + "_N$target": { + "__id__": 47 + }, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "02osfvAoNLs6QlWbXBeHlI", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "three", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [ + { + "__id__": 52 + }, + { + "__id__": 55 + }, + { + "__id__": 58 + }, + { + "__id__": 61 + }, + { + "__id__": 64 + }, + { + "__id__": 67 + }, + { + "__id__": 70 + }, + { + "__id__": 73 + }, + { + "__id__": 76 + } + ], + "_active": true, + "_components": [], + "_prefab": { + "__id__": 79 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 0, + "height": 0 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 165.651, + 212.842, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 51 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 53 + } + ], + "_prefab": { + "__id__": 54 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 187, + "height": 43 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 83.093, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 52 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "2137246a-aabd-46ad-bfc5-d80be665e524" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "5ckb38r7ZHK7KrA6VGHIyJ", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 51 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 56 + } + ], + "_prefab": { + "__id__": 57 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 262, + "height": 85 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + -2.71, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 55 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "bf3beea2-1ffc-4d76-8d07-bbe83b1b9e09" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "b59qP0hO1F5osAyH2jKhWq", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 51 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 59 + } + ], + "_prefab": { + "__id__": 60 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 25, + "height": 39 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + -76.772, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 58 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "850b2489-38fa-47b8-b402-75ab260bacde" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": { + "__uuid__": "7ed7640c-5fe6-4777-98f2-299424c47a92" + }, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "f50cVISpVKzYFPeADrDjLc", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 51 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 62 + } + ], + "_prefab": { + "__id__": 63 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 24, + "height": 32 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 31.612, + -76.772, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 61 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "32a34113-d9b4-4ce4-a820-55db829eddb6" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": { + "__uuid__": "7ed7640c-5fe6-4777-98f2-299424c47a92" + }, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "9892fcUqtMHZp4BpvlDcHq", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 51 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 65 + } + ], + "_prefab": { + "__id__": 66 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 30, + "height": 32 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 67.74, + -76.772, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 64 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "2cc8910f-e57f-4b1e-b2f8-19263efbecfd" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": { + "__uuid__": "7ed7640c-5fe6-4777-98f2-299424c47a92" + }, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "b1YPX1UEBKLoROJBFwy5zU", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "progress", + "_objFlags": 0, + "_parent": { + "__id__": 51 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 68 + } + ], + "_prefab": { + "__id__": 69 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 30, + "height": 32 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + -34.833, + -74.798, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 67 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "2eb09278-dad4-4034-9c6a-df493c0145a6" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": { + "__uuid__": "7ed7640c-5fe6-4777-98f2-299424c47a92" + }, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "4a39sEU9lJ/Kz+4pisva1/", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "progress1", + "_objFlags": 0, + "_parent": { + "__id__": 51 + }, + "_children": [], + "_active": false, + "_components": [ + { + "__id__": 71 + } + ], + "_prefab": { + "__id__": 72 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 96, + "height": 80 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + -81.715, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 70 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "2e7b181e-3507-414e-97ca-f5d872274408" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "80gtdRmmNGtbst6ziinqPp", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "progress2", + "_objFlags": 0, + "_parent": { + "__id__": 51 + }, + "_children": [], + "_active": false, + "_components": [ + { + "__id__": 74 + } + ], + "_prefab": { + "__id__": 75 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 97, + "height": 81 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 73 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "dba01350-b43c-46a9-8c0e-5bb751eb30e7" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "16hUBW+PhHMJ7dgVXX+PnO", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "progress3", + "_objFlags": 0, + "_parent": { + "__id__": 51 + }, + "_children": [], + "_active": false, + "_components": [ + { + "__id__": 77 + } + ], + "_prefab": { + "__id__": 78 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 98, + "height": 80 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 81.715, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 76 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "77b05e56-6ac4-4464-9677-e7758bc1019e" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "e5pS+JEvBICbptrRcxsetN", + "sync": false + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "edPhGRHO5McZwKz/8qTGcB", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "rainbowNumber", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [], + "_prefab": { + "__id__": 81 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 35, + "height": 44 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + -403.344, + -536.981, + 0, + 0, + 0, + 0, + 1, + 0.8, + 0.8, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "acE2z3ABBDpIzeE86mQPVq", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "box", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [ + { + "__id__": 83 + }, + { + "__id__": 86 + }, + { + "__id__": 89 + }, + { + "__id__": 92 + } + ], + "_active": true, + "_components": [], + "_prefab": { + "__id__": 95 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 0, + "height": 0 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + -203.81, + 212.595, + 0, + 0, + 0, + 0, + 1, + 0.5, + 0.5, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "box0", + "_objFlags": 0, + "_parent": { + "__id__": 82 + }, + "_children": [], + "_active": false, + "_components": [ + { + "__id__": 84 + } + ], + "_prefab": { + "__id__": 85 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 336, + "height": 291 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 83 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "3471be78-1700-41c0-b0e8-5c9552137da8" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "3dbdmbvfdHmoxSKRZCIy6z", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "box1", + "_objFlags": 0, + "_parent": { + "__id__": 82 + }, + "_children": [], + "_active": false, + "_components": [ + { + "__id__": 87 + } + ], + "_prefab": { + "__id__": 88 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 336, + "height": 329 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 86 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "238869a8-0e31-4242-bf93-d213c3a9de6f" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "71rsrhjt1HcJCLWhChGtaa", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "box2", + "_objFlags": 0, + "_parent": { + "__id__": 82 + }, + "_children": [], + "_active": false, + "_components": [ + { + "__id__": 90 + } + ], + "_prefab": { + "__id__": 91 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 406, + "height": 378 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 89 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "ad4d3415-9594-44a1-8407-322777babe54" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "78rk7/2b9GDIhCuQ5TY97K", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "box3", + "_objFlags": 0, + "_parent": { + "__id__": 82 + }, + "_children": [], + "_active": false, + "_components": [ + { + "__id__": 93 + } + ], + "_prefab": { + "__id__": 94 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 483, + "height": 436 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 92 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "adf7d4cf-77b4-4c88-aac7-b3b03876ac13" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "eahjxWIxdPQqDsKKfTgwvc", + "sync": false + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "4c2naRqB9EyowIbcfCv7bs", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "hourglass", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [ + { + "__id__": 97 + }, + { + "__id__": 100 + }, + { + "__id__": 103 + }, + { + "__id__": 109 + } + ], + "_active": true, + "_components": [ + { + "__id__": 114 + }, + { + "__id__": 115 + } + ], + "_prefab": { + "__id__": 117 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 212, + "height": 215 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + -140, + -156.211, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 96 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 98 + } + ], + "_prefab": { + "__id__": 99 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 228, + "height": 322 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 8.467, + 0, + 0, + 0, + 0, + 1, + 0.35, + 0.35, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 97 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "f7251357-23c6-4c00-87a3-3d34f040b5f2" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "eaLmvvAEdLGpNCcFIZsNrv", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "add", + "_objFlags": 0, + "_parent": { + "__id__": 96 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 101 + } + ], + "_prefab": { + "__id__": 102 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 68, + "height": 74 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 79.838, + -83.651, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 100 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "914ed47f-988f-40db-ae8b-66e0bf7652bd" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "6ajfkKvWJBqIARyNv7XP1y", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "select", + "_objFlags": 0, + "_parent": { + "__id__": 96 + }, + "_children": [ + { + "__id__": 104 + } + ], + "_active": false, + "_components": [ + { + "__id__": 107 + } + ], + "_prefab": { + "__id__": 108 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 228, + "height": 228 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 103 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 105 + } + ], + "_prefab": { + "__id__": 106 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 100, + "height": 82 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 104 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "dde22b43-d679-45fc-b7ef-eb3910b15f01" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "e3nD9rlnJNw7M7nNpvLZsf", + "sync": false + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 103 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "c16ef371-b6e7-4645-92b8-6b0a80efb5af" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "094FrFsXlHSpY6XaV7MnZR", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "remaining", + "_objFlags": 0, + "_parent": { + "__id__": 96 + }, + "_children": [ + { + "__id__": 110 + } + ], + "_active": false, + "_components": [ + { + "__id__": 112 + } + ], + "_prefab": { + "__id__": 113 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 68, + "height": 74 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 78.667, + -84.617, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "number", + "_objFlags": 0, + "_parent": { + "__id__": 109 + }, + "_children": [], + "_active": true, + "_components": [], + "_prefab": { + "__id__": 111 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 68, + "height": 74 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "dfI6RjAeZEeJGfLVCol5KL", + "sync": false + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 109 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "d45452ee-6ac4-4adc-ad49-cd876b55589f" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "88on1lyRRMK6WGzsyIYY78", + "sync": false + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 96 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "f41af2de-2767-4631-9c28-ef74b58a9eee" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.Button", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 96 + }, + "_enabled": true, + "_normalMaterial": null, + "_grayMaterial": null, + "duration": 0.1, + "zoomScale": 1.2, + "clickEvents": [ + { + "__id__": 116 + } + ], + "_N$interactable": true, + "_N$enableAutoGrayEffect": false, + "_N$transition": 0, + "transition": 0, + "_N$normalColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_N$pressedColor": { + "__type__": "cc.Color", + "r": 211, + "g": 211, + "b": 211, + "a": 255 + }, + "pressedColor": { + "__type__": "cc.Color", + "r": 211, + "g": 211, + "b": 211, + "a": 255 + }, + "_N$hoverColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "hoverColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_N$disabledColor": { + "__type__": "cc.Color", + "r": 124, + "g": 124, + "b": 124, + "a": 255 + }, + "_N$normalSprite": null, + "_N$pressedSprite": null, + "pressedSprite": null, + "_N$hoverSprite": null, + "hoverSprite": null, + "_N$disabledSprite": null, + "_N$target": { + "__id__": 96 + }, + "_id": "" + }, + { + "__type__": "cc.ClickEvent", + "target": null, + "component": "", + "_componentId": "", + "handler": "", + "customEventData": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "42Wu2LbTRA7aoD1Bc++9qK", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "rocket", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [ + { + "__id__": 119 + }, + { + "__id__": 122 + }, + { + "__id__": 125 + }, + { + "__id__": 131 + } + ], + "_active": true, + "_components": [ + { + "__id__": 136 + }, + { + "__id__": 137 + } + ], + "_prefab": { + "__id__": 138 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 212, + "height": 215 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 140, + -156.211, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 0 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 118 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 120 + } + ], + "_prefab": { + "__id__": 121 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 212, + "height": 361 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 8.467, + 0, + 0, + 0, + 0, + 1, + 0.35, + 0.35, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 119 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "5e1e3114-b841-4ac2-88b2-86f06b31eaa8" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "3dPuO4y/dFirOQtXISrfy9", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "add", + "_objFlags": 0, + "_parent": { + "__id__": 118 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 123 + } + ], + "_prefab": { + "__id__": 124 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 68, + "height": 74 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 79.838, + -83.651, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 122 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "914ed47f-988f-40db-ae8b-66e0bf7652bd" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "323plu3fBL/rist8auWShT", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "select", + "_objFlags": 0, + "_parent": { + "__id__": 118 + }, + "_children": [ + { + "__id__": 126 + } + ], + "_active": false, + "_components": [ + { + "__id__": 129 + } + ], + "_prefab": { + "__id__": 130 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 228, + "height": 228 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 125 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 127 + } + ], + "_prefab": { + "__id__": 128 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 100, + "height": 82 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 126 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "dde22b43-d679-45fc-b7ef-eb3910b15f01" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "8bRK7V0GRH65oxBe7K9EDC", + "sync": false + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 125 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "c16ef371-b6e7-4645-92b8-6b0a80efb5af" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "cd60XPPnNLy6ISaU5JgQcu", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "remaining", + "_objFlags": 0, + "_parent": { + "__id__": 118 + }, + "_children": [ + { + "__id__": 132 + } + ], + "_active": false, + "_components": [ + { + "__id__": 134 + } + ], + "_prefab": { + "__id__": 135 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 68, + "height": 74 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 79.398, + -83.642, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "number", + "_objFlags": 0, + "_parent": { + "__id__": 131 + }, + "_children": [], + "_active": true, + "_components": [], + "_prefab": { + "__id__": 133 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 0, + "height": 0 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "20JyKdHpFG1r00X+Kul+Qa", + "sync": false + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 131 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "d45452ee-6ac4-4adc-ad49-cd876b55589f" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "2a+W4C5TdABKuSIdXj1E49", + "sync": false + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 118 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "f41af2de-2767-4631-9c28-ef74b58a9eee" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.Button", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 118 + }, + "_enabled": true, + "_normalMaterial": null, + "_grayMaterial": null, + "duration": 0.1, + "zoomScale": 1.1, + "clickEvents": [], + "_N$interactable": true, + "_N$enableAutoGrayEffect": false, + "_N$transition": 3, + "transition": 3, + "_N$normalColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_N$pressedColor": { + "__type__": "cc.Color", + "r": 211, + "g": 211, + "b": 211, + "a": 255 + }, + "pressedColor": { + "__type__": "cc.Color", + "r": 211, + "g": 211, + "b": 211, + "a": 255 + }, + "_N$hoverColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "hoverColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_N$disabledColor": { + "__type__": "cc.Color", + "r": 124, + "g": 124, + "b": 124, + "a": 255 + }, + "_N$normalSprite": null, + "_N$pressedSprite": null, + "pressedSprite": null, + "_N$hoverSprite": null, + "hoverSprite": null, + "_N$disabledSprite": null, + "_N$target": { + "__id__": 118 + }, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "2ekAN/yXhJh6BP3JiuEJfP", + "sync": false + }, + { + "__type__": "cc.Widget", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 1 + }, + "_enabled": true, + "alignMode": 1, + "_target": null, + "_alignFlags": 45, + "_left": 0, + "_right": 0, + "_top": 0, + "_bottom": 0, + "_verticalCenter": 0, + "_horizontalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 1080, + "_originalHeight": 1920, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "", + "sync": false + } +] \ No newline at end of file diff --git a/assets/prefab/pop/threeWins.prefab.meta b/assets/prefab/pop/threeWins.prefab.meta new file mode 100644 index 00000000..b0fbf5f3 --- /dev/null +++ b/assets/prefab/pop/threeWins.prefab.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.3.2", + "uuid": "abc8f49b-e719-4eb4-8b01-8f7ed6a909c9", + "importer": "prefab", + "optimizationPolicy": "AUTO", + "asyncLoadAssets": false, + "readonly": false, + "subMetas": {} +} \ No newline at end of file diff --git a/assets/propWindow/compressed.meta b/assets/propWindow/compressed.meta new file mode 100644 index 00000000..fef762ea --- /dev/null +++ b/assets/propWindow/compressed.meta @@ -0,0 +1,13 @@ +{ + "ver": "1.1.3", + "uuid": "70901048-9a6e-4080-97ca-5d5a7ccfc8a9", + "importer": "folder", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/assets/propWindow/prefab/PropWindow.prefab b/assets/propWindow/prefab/PropWindow.prefab index 733603d0..11e84180 100644 --- a/assets/propWindow/prefab/PropWindow.prefab +++ b/assets/propWindow/prefab/PropWindow.prefab @@ -27,14 +27,14 @@ "_active": true, "_components": [ { - "__id__": 122 + "__id__": 186 }, { - "__id__": 123 + "__id__": 187 } ], "_prefab": { - "__id__": 124 + "__id__": 188 }, "_opacity": 255, "_color": { @@ -267,12 +267,18 @@ }, { "__id__": 116 + }, + { + "__id__": 148 + }, + { + "__id__": 180 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 121 + "__id__": 185 }, "_opacity": 255, "_color": { @@ -4261,23 +4267,32 @@ }, { "__type__": "cc.Node", - "_name": "close", + "_name": "rocket", "_objFlags": 0, "_parent": { "__id__": 7 }, - "_children": [], - "_active": true, - "_components": [ + "_children": [ { "__id__": 117 }, { - "__id__": 118 + "__id__": 120 + }, + { + "__id__": 123 + }, + { + "__id__": 126 + }, + { + "__id__": 129 } ], + "_active": false, + "_components": [], "_prefab": { - "__id__": 120 + "__id__": 147 }, "_opacity": 255, "_color": { @@ -4289,8 +4304,8 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 103, - "height": 112 + "width": 0, + "height": 0 }, "_anchorPoint": { "__type__": "cc.Vec2", @@ -4301,8 +4316,519 @@ "__type__": "TypedArray", "ctor": "Float64Array", "array": [ - 369.913, - 740.038, + 0, + 116.199, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "hammer_Label", + "_objFlags": 0, + "_parent": { + "__id__": 116 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 118 + } + ], + "_prefab": { + "__id__": 119 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 165, + "height": 86 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 370, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 117 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "bcd560e4-a084-4f6c-b58e-69de2c6bd37a" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "dfjIVRADJNuolVN8qZyqK6", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "hammer_Label", + "_objFlags": 0, + "_parent": { + "__id__": 116 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 121 + } + ], + "_prefab": { + "__id__": 122 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 458, + "height": 53 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + -309.002, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 120 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "805f31ac-72cc-4815-905a-aa87253b86d9" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "dd3yxCThJG9qRFV1deLIQt", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "hammer_Icon", + "_objFlags": 0, + "_parent": { + "__id__": 116 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 124 + } + ], + "_prefab": { + "__id__": 125 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 212, + "height": 361 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 24.943, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 123 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "bd966c86-17eb-4897-9642-3968a79988ea" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "abhRu8oaNNCY3/YODhvgwO", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 116 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 127 + } + ], + "_prefab": { + "__id__": 128 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 144, + "height": 102 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 180.858, + -84.328, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 126 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "d6dc38cb-4956-4677-8e4e-3720f0cac0e9" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "8fbd3pZ9hNVZBYOVoyeV8b", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "buy_Btn", + "_objFlags": 0, + "_parent": { + "__id__": 116 + }, + "_children": [ + { + "__id__": 130 + }, + { + "__id__": 133 + }, + { + "__id__": 136 + }, + { + "__id__": 139 + } + ], + "_active": true, + "_components": [ + { + "__id__": 142 + }, + { + "__id__": 143 + }, + { + "__id__": 145 + } + ], + "_prefab": { + "__id__": 146 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 636, + "height": 173 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + -548.988, 0, 0, 0, @@ -4326,12 +4852,76 @@ "groupIndex": 0, "_id": "" }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 129 + }, + "_children": [], + "_active": false, + "_components": [ + { + "__id__": 131 + } + ], + "_prefab": { + "__id__": 132 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 32, + "height": 61 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 52.523, + 6.769, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, { "__type__": "cc.Sprite", "_name": "", "_objFlags": 0, "node": { - "__id__": 116 + "__id__": 130 }, "_enabled": true, "_materials": [ @@ -4342,7 +4932,379 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "4eb76a13-bdd5-44cb-975d-32fd4900be79" + "__uuid__": "01b33f17-a428-4b45-bd9d-6879f3e80d4d" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": { + "__uuid__": "fa9a438e-1f24-47fe-bbcd-b75abcff2ea8" + }, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "8fNrjFVCtBULoBj1QhtbVy", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 129 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 134 + } + ], + "_prefab": { + "__id__": 135 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 55, + "height": 63 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 118.085, + 6.769, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 133 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "837692cc-2850-4a36-b913-0851d05d17f8" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": { + "__uuid__": "fa9a438e-1f24-47fe-bbcd-b75abcff2ea8" + }, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "7eDDbYQgdH9pT+iMnTdYMN", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 129 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 137 + } + ], + "_prefab": { + "__id__": 138 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 59, + "height": 61 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 173.418, + 6.769, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 136 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "a8743269-1766-4da5-a1db-aab5c3de7234" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": { + "__uuid__": "fa9a438e-1f24-47fe-bbcd-b75abcff2ea8" + }, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "227ftqmrpM8Lm2yVcasjT6", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 129 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 140 + } + ], + "_prefab": { + "__id__": 141 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 59, + "height": 61 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 230.103, + 6.769, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 139 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "a8743269-1766-4da5-a1db-aab5c3de7234" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": { + "__uuid__": "fa9a438e-1f24-47fe-bbcd-b75abcff2ea8" + }, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "a8m3nvlPVGZbBMC0U67/yt", + "sync": false + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 129 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "0e54b4bc-f5a9-4a3f-82dc-b3c9537da2af" }, "_type": 0, "_sizeMode": 1, @@ -4363,7 +5325,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 116 + "__id__": 129 }, "_enabled": true, "_normalMaterial": null, @@ -4372,7 +5334,7 @@ "zoomScale": 1.1, "clickEvents": [ { - "__id__": 119 + "__id__": 144 } ], "_N$interactable": true, @@ -4428,7 +5390,1393 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 116 + "__id__": 129 + }, + "_id": "" + }, + { + "__type__": "cc.ClickEvent", + "target": { + "__id__": 1 + }, + "component": "", + "_componentId": "18d78LkxoVIxZ6CvdHDQaL9", + "handler": "clickBtn", + "customEventData": "" + }, + { + "__type__": "6ee6czJ4eVNb4Feiqps5SIa", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 129 + }, + "_enabled": true, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "6bOWZ1xMZP5boImqUNLIyB", + "sync": false + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "27kDRgoxhAm6l4gJSqv4Fa", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "hourglass", + "_objFlags": 0, + "_parent": { + "__id__": 7 + }, + "_children": [ + { + "__id__": 149 + }, + { + "__id__": 152 + }, + { + "__id__": 155 + }, + { + "__id__": 158 + }, + { + "__id__": 161 + } + ], + "_active": false, + "_components": [], + "_prefab": { + "__id__": 179 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 0, + "height": 0 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 116.199, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "hammer_Label", + "_objFlags": 0, + "_parent": { + "__id__": 148 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 150 + } + ], + "_prefab": { + "__id__": 151 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 170, + "height": 87 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 370, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 149 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "016d0c2d-5f7e-4859-a83c-600caa7d2448" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "1bKtXctT9JO47Ul2IYRMaT", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "hammer_Label", + "_objFlags": 0, + "_parent": { + "__id__": 148 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 153 + } + ], + "_prefab": { + "__id__": 154 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 438, + "height": 55 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + -309.002, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 152 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "a7e43ad5-c8df-46fe-8ae4-f536cf7a648a" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "6ag7jhLVBL+pmSGmnYdaYW", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "hammer_Icon", + "_objFlags": 0, + "_parent": { + "__id__": 148 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 156 + } + ], + "_prefab": { + "__id__": 157 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 228, + "height": 322 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 24.943, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 155 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "442be7de-cf03-4fc0-82f3-90d9d855408c" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "07VKAVridELZouzbHdNoHd", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 148 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 159 + } + ], + "_prefab": { + "__id__": 160 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 144, + "height": 102 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 214.058, + -84.328, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 158 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "d6dc38cb-4956-4677-8e4e-3720f0cac0e9" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "b90x6PsR9KHKdsYYNWvjaz", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "buy_Btn", + "_objFlags": 0, + "_parent": { + "__id__": 148 + }, + "_children": [ + { + "__id__": 162 + }, + { + "__id__": 165 + }, + { + "__id__": 168 + }, + { + "__id__": 171 + } + ], + "_active": true, + "_components": [ + { + "__id__": 174 + }, + { + "__id__": 175 + }, + { + "__id__": 177 + } + ], + "_prefab": { + "__id__": 178 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 636, + "height": 173 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + -548.988, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 0 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 161 + }, + "_children": [], + "_active": false, + "_components": [ + { + "__id__": 163 + } + ], + "_prefab": { + "__id__": 164 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 32, + "height": 61 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 52.523, + 6.769, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 162 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "01b33f17-a428-4b45-bd9d-6879f3e80d4d" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": { + "__uuid__": "fa9a438e-1f24-47fe-bbcd-b75abcff2ea8" + }, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "dabDJtJINGeaYQyPvKQ2Jv", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 161 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 166 + } + ], + "_prefab": { + "__id__": 167 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 53, + "height": 61 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 118.085, + 6.769, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 165 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "7b93a019-5dc2-4925-bb61-1226de4cc1eb" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": { + "__uuid__": "fa9a438e-1f24-47fe-bbcd-b75abcff2ea8" + }, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "0f/gr0gOZL0o7oG8u+j+08", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 161 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 169 + } + ], + "_prefab": { + "__id__": 170 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 59, + "height": 61 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 173.418, + 6.769, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 168 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "a8743269-1766-4da5-a1db-aab5c3de7234" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": { + "__uuid__": "fa9a438e-1f24-47fe-bbcd-b75abcff2ea8" + }, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "8c+HiD6H5FVbzHcrOuIBnF", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "New Sprite", + "_objFlags": 0, + "_parent": { + "__id__": 161 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 172 + } + ], + "_prefab": { + "__id__": 173 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 59, + "height": 61 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 230.103, + 6.769, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 171 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "a8743269-1766-4da5-a1db-aab5c3de7234" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": { + "__uuid__": "fa9a438e-1f24-47fe-bbcd-b75abcff2ea8" + }, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "aczzRV3cVOyq3ri7Vs6dSk", + "sync": false + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 161 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "0e54b4bc-f5a9-4a3f-82dc-b3c9537da2af" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.Button", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 161 + }, + "_enabled": true, + "_normalMaterial": null, + "_grayMaterial": null, + "duration": 0.1, + "zoomScale": 1.1, + "clickEvents": [ + { + "__id__": 176 + } + ], + "_N$interactable": true, + "_N$enableAutoGrayEffect": false, + "_N$transition": 3, + "transition": 3, + "_N$normalColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_N$pressedColor": { + "__type__": "cc.Color", + "r": 211, + "g": 211, + "b": 211, + "a": 255 + }, + "pressedColor": { + "__type__": "cc.Color", + "r": 211, + "g": 211, + "b": 211, + "a": 255 + }, + "_N$hoverColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "hoverColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_N$disabledColor": { + "__type__": "cc.Color", + "r": 124, + "g": 124, + "b": 124, + "a": 255 + }, + "_N$normalSprite": null, + "_N$pressedSprite": null, + "pressedSprite": null, + "_N$hoverSprite": null, + "hoverSprite": null, + "_N$disabledSprite": null, + "_N$target": { + "__id__": 161 + }, + "_id": "" + }, + { + "__type__": "cc.ClickEvent", + "target": { + "__id__": 1 + }, + "component": "", + "_componentId": "18d78LkxoVIxZ6CvdHDQaL9", + "handler": "clickBtn", + "customEventData": "" + }, + { + "__type__": "6ee6czJ4eVNb4Feiqps5SIa", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 161 + }, + "_enabled": true, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "b0hBh601ZDCIcRnidSJzul", + "sync": false + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "2c+es+221Iu7opY8CBRgad", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "close", + "_objFlags": 0, + "_parent": { + "__id__": 7 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 181 + }, + { + "__id__": 182 + } + ], + "_prefab": { + "__id__": 184 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 103, + "height": 112 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 369.913, + 740.038, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 0 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 180 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "4eb76a13-bdd5-44cb-975d-32fd4900be79" + }, + "_type": 0, + "_sizeMode": 1, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.Button", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 180 + }, + "_enabled": true, + "_normalMaterial": null, + "_grayMaterial": null, + "duration": 0.1, + "zoomScale": 1.1, + "clickEvents": [ + { + "__id__": 183 + } + ], + "_N$interactable": true, + "_N$enableAutoGrayEffect": false, + "_N$transition": 3, + "transition": 3, + "_N$normalColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_N$pressedColor": { + "__type__": "cc.Color", + "r": 211, + "g": 211, + "b": 211, + "a": 255 + }, + "pressedColor": { + "__type__": "cc.Color", + "r": 211, + "g": 211, + "b": 211, + "a": 255 + }, + "_N$hoverColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "hoverColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_N$disabledColor": { + "__type__": "cc.Color", + "r": 124, + "g": 124, + "b": 124, + "a": 255 + }, + "_N$normalSprite": null, + "_N$pressedSprite": null, + "pressedSprite": null, + "_N$hoverSprite": null, + "hoverSprite": null, + "_N$disabledSprite": null, + "_N$target": { + "__id__": 180 }, "_id": "" }, diff --git a/assets/propWindow/texture/hourglass.png b/assets/propWindow/texture/hourglass.png new file mode 100644 index 00000000..dfe135ca Binary files /dev/null and b/assets/propWindow/texture/hourglass.png differ diff --git a/assets/propWindow/texture/hourglass.png.meta b/assets/propWindow/texture/hourglass.png.meta new file mode 100644 index 00000000..424efea8 --- /dev/null +++ b/assets/propWindow/texture/hourglass.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "f3d3081b-fcac-4345-b258-bc7dc426e166", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 228, + "height": 322, + "platformSettings": {}, + "subMetas": { + "hourglass": { + "ver": "1.0.6", + "uuid": "442be7de-cf03-4fc0-82f3-90d9d855408c", + "importer": "sprite-frame", + "rawTextureUuid": "f3d3081b-fcac-4345-b258-bc7dc426e166", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 228, + "height": 322, + "rawWidth": 228, + "rawHeight": 322, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/propWindow/texture/huojian.png b/assets/propWindow/texture/huojian.png new file mode 100644 index 00000000..a48ea47c Binary files /dev/null and b/assets/propWindow/texture/huojian.png differ diff --git a/assets/propWindow/texture/huojian.png.meta b/assets/propWindow/texture/huojian.png.meta new file mode 100644 index 00000000..a71b5d0b --- /dev/null +++ b/assets/propWindow/texture/huojian.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "00f36f74-87f4-4717-9dc0-5eef1e5902b7", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 165, + "height": 86, + "platformSettings": {}, + "subMetas": { + "huojian": { + "ver": "1.0.6", + "uuid": "bcd560e4-a084-4f6c-b58e-69de2c6bd37a", + "importer": "sprite-frame", + "rawTextureUuid": "00f36f74-87f4-4717-9dc0-5eef1e5902b7", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 165, + "height": 86, + "rawWidth": 165, + "rawHeight": 86, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/propWindow/texture/huojianTips.png b/assets/propWindow/texture/huojianTips.png new file mode 100644 index 00000000..be3ff904 Binary files /dev/null and b/assets/propWindow/texture/huojianTips.png differ diff --git a/assets/propWindow/texture/huojianTips.png.meta b/assets/propWindow/texture/huojianTips.png.meta new file mode 100644 index 00000000..1da6dc59 --- /dev/null +++ b/assets/propWindow/texture/huojianTips.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "2fde04d2-8e91-42b3-91f7-c1e632c70cf8", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 458, + "height": 53, + "platformSettings": {}, + "subMetas": { + "huojianTips": { + "ver": "1.0.6", + "uuid": "805f31ac-72cc-4815-905a-aa87253b86d9", + "importer": "sprite-frame", + "rawTextureUuid": "2fde04d2-8e91-42b3-91f7-c1e632c70cf8", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 458, + "height": 53, + "rawWidth": 458, + "rawHeight": 53, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/propWindow/texture/rocket.png b/assets/propWindow/texture/rocket.png new file mode 100644 index 00000000..9690fbc6 Binary files /dev/null and b/assets/propWindow/texture/rocket.png differ diff --git a/assets/propWindow/texture/rocket.png.meta b/assets/propWindow/texture/rocket.png.meta new file mode 100644 index 00000000..737915de --- /dev/null +++ b/assets/propWindow/texture/rocket.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "8cdcfd3d-48d9-42ec-b7b5-0c2d558a4e0d", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 212, + "height": 361, + "platformSettings": {}, + "subMetas": { + "rocket": { + "ver": "1.0.6", + "uuid": "bd966c86-17eb-4897-9642-3968a79988ea", + "importer": "sprite-frame", + "rawTextureUuid": "8cdcfd3d-48d9-42ec-b7b5-0c2d558a4e0d", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 212, + "height": 361, + "rawWidth": 212, + "rawHeight": 361, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/propWindow/texture/shalou.png b/assets/propWindow/texture/shalou.png new file mode 100644 index 00000000..9b681bbc Binary files /dev/null and b/assets/propWindow/texture/shalou.png differ diff --git a/assets/propWindow/texture/shalou.png.meta b/assets/propWindow/texture/shalou.png.meta new file mode 100644 index 00000000..59561fd9 --- /dev/null +++ b/assets/propWindow/texture/shalou.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "26eec234-5097-45d6-9eec-43205faf4b06", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 170, + "height": 87, + "platformSettings": {}, + "subMetas": { + "shalou": { + "ver": "1.0.6", + "uuid": "016d0c2d-5f7e-4859-a83c-600caa7d2448", + "importer": "sprite-frame", + "rawTextureUuid": "26eec234-5097-45d6-9eec-43205faf4b06", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 170, + "height": 87, + "rawWidth": 170, + "rawHeight": 87, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/propWindow/texture/shalouTips.png b/assets/propWindow/texture/shalouTips.png new file mode 100644 index 00000000..8d3770af Binary files /dev/null and b/assets/propWindow/texture/shalouTips.png differ diff --git a/assets/propWindow/texture/shalouTips.png.meta b/assets/propWindow/texture/shalouTips.png.meta new file mode 100644 index 00000000..1eca9e17 --- /dev/null +++ b/assets/propWindow/texture/shalouTips.png.meta @@ -0,0 +1,38 @@ +{ + "ver": "2.3.7", + "uuid": "0a54b5fb-aa92-4bd0-bf70-84a851f9e296", + "importer": "texture", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 438, + "height": 55, + "platformSettings": {}, + "subMetas": { + "shalouTips": { + "ver": "1.0.6", + "uuid": "a7e43ad5-c8df-46fe-8ae4-f536cf7a648a", + "importer": "sprite-frame", + "rawTextureUuid": "0a54b5fb-aa92-4bd0-bf70-84a851f9e296", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 0, + "trimY": 0, + "width": 438, + "height": 55, + "rawWidth": 438, + "rawHeight": 55, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/assets/seven_day_gift/prefab/sevenDayGift.prefab b/assets/seven_day_gift/prefab/sevenDayGift.prefab index 45ac76ae..0196e22f 100644 --- a/assets/seven_day_gift/prefab/sevenDayGift.prefab +++ b/assets/seven_day_gift/prefab/sevenDayGift.prefab @@ -27,14 +27,14 @@ "_active": true, "_components": [ { - "__id__": 246 + "__id__": 257 }, { - "__id__": 247 + "__id__": 258 } ], "_prefab": { - "__id__": 248 + "__id__": 259 }, "_opacity": 255, "_color": { @@ -251,11 +251,11 @@ "_active": true, "_components": [ { - "__id__": 244 + "__id__": 255 } ], "_prefab": { - "__id__": 245 + "__id__": 256 }, "_opacity": 255, "_color": { @@ -423,28 +423,28 @@ "__id__": 12 }, { - "__id__": 41 + "__id__": 43 }, { - "__id__": 67 + "__id__": 71 }, { - "__id__": 96 + "__id__": 102 }, { - "__id__": 133 + "__id__": 141 }, { - "__id__": 162 + "__id__": 172 }, { - "__id__": 199 + "__id__": 211 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 243 + "__id__": 254 }, "_opacity": 255, "_color": { @@ -505,23 +505,23 @@ "__id__": 13 }, { - "__id__": 17 + "__id__": 19 }, { - "__id__": 33 + "__id__": 35 }, { - "__id__": 36 + "__id__": 38 } ], "_active": true, "_components": [ { - "__id__": 39 + "__id__": 41 } ], "_prefab": { - "__id__": 40 + "__id__": 42 }, "_opacity": 255, "_color": { @@ -579,17 +579,17 @@ }, "_children": [ { - "__id__": 15 + "__id__": 14 } ], "_active": true, "_components": [ { - "__id__": 14 + "__id__": 17 } ], "_prefab": { - "__id__": 16 + "__id__": 18 }, "_opacity": 255, "_color": { @@ -638,38 +638,6 @@ "groupIndex": 0, "_id": "" }, - { - "__type__": "cc.Sprite", - "_name": "", - "_objFlags": 0, - "node": { - "__id__": 13 - }, - "_enabled": true, - "_materials": [ - { - "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" - } - ], - "_srcBlendFactor": 770, - "_dstBlendFactor": 771, - "_spriteFrame": { - "__uuid__": "f1d89e97-dcf0-4e71-8707-a9c4584fc170" - }, - "_type": 0, - "_sizeMode": 0, - "_fillType": 0, - "_fillCenter": { - "__type__": "cc.Vec2", - "x": 0, - "y": 0 - }, - "_fillStart": 0, - "_fillRange": 0, - "_isTrimmedMode": true, - "_atlas": null, - "_id": "" - }, { "__type__": "cc.Node", "_name": "dayNumber", @@ -681,11 +649,11 @@ "_active": true, "_components": [ { - "__id__": 44 + "__id__": 15 } ], "_prefab": { - "__id__": 70 + "__id__": 16 }, "_opacity": 255, "_color": { @@ -734,6 +702,81 @@ "groupIndex": 0, "_id": "" }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 14 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "2954f098-cc21-4648-b8e4-d645aca67861" + }, + "_type": 0, + "_sizeMode": 0, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "sevenDayNumber1", + "sync": false + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 13 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "f1d89e97-dcf0-4e71-8707-a9c4584fc170" + }, + "_type": 0, + "_sizeMode": 0, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, { "__type__": "cc.PrefabInfo", "root": { @@ -754,13 +797,13 @@ }, "_children": [ { - "__id__": 18 + "__id__": 20 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 32 + "__id__": 34 }, "_opacity": 255, "_color": { @@ -814,21 +857,21 @@ "_name": "rewardItem0", "_objFlags": 0, "_parent": { - "__id__": 17 + "__id__": 19 }, "_children": [ { - "__id__": 19 + "__id__": 21 } ], "_active": true, "_components": [ { - "__id__": 30 + "__id__": 32 } ], "_prefab": { - "__id__": 31 + "__id__": 33 }, "_opacity": 255, "_color": { @@ -882,23 +925,23 @@ "_name": "amount", "_objFlags": 0, "_parent": { - "__id__": 18 + "__id__": 20 }, "_children": [ { - "__id__": 20 + "__id__": 22 }, { - "__id__": 23 + "__id__": 25 }, { - "__id__": 26 + "__id__": 28 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 29 + "__id__": 31 }, "_opacity": 255, "_color": { @@ -952,17 +995,17 @@ "_name": "digit0", "_objFlags": 0, "_parent": { - "__id__": 19 + "__id__": 21 }, "_children": [], "_active": true, "_components": [ { - "__id__": 21 + "__id__": 23 } ], "_prefab": { - "__id__": 22 + "__id__": 24 }, "_opacity": 255, "_color": { @@ -1016,7 +1059,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 20 + "__id__": 22 }, "_enabled": true, "_materials": [ @@ -1059,17 +1102,17 @@ "_name": "digit1", "_objFlags": 0, "_parent": { - "__id__": 19 + "__id__": 21 }, "_children": [], "_active": true, "_components": [ { - "__id__": 24 + "__id__": 26 } ], "_prefab": { - "__id__": 25 + "__id__": 27 }, "_opacity": 255, "_color": { @@ -1123,7 +1166,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 23 + "__id__": 25 }, "_enabled": true, "_materials": [ @@ -1166,17 +1209,17 @@ "_name": "digit2", "_objFlags": 0, "_parent": { - "__id__": 19 + "__id__": 21 }, "_children": [], "_active": true, "_components": [ { - "__id__": 27 + "__id__": 29 } ], "_prefab": { - "__id__": 28 + "__id__": 30 }, "_opacity": 255, "_color": { @@ -1230,7 +1273,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 26 + "__id__": 28 }, "_enabled": true, "_materials": [ @@ -1284,7 +1327,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 18 + "__id__": 20 }, "_enabled": true, "_materials": [ @@ -1344,11 +1387,11 @@ "_active": false, "_components": [ { - "__id__": 34 + "__id__": 36 } ], "_prefab": { - "__id__": 35 + "__id__": 37 }, "_opacity": 255, "_color": { @@ -1402,7 +1445,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 33 + "__id__": 35 }, "_enabled": true, "_materials": [ @@ -1451,11 +1494,11 @@ "_active": false, "_components": [ { - "__id__": 37 + "__id__": 39 } ], "_prefab": { - "__id__": 38 + "__id__": 40 }, "_opacity": 255, "_color": { @@ -1509,7 +1552,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 36 + "__id__": 38 }, "_enabled": true, "_materials": [ @@ -1599,26 +1642,26 @@ }, "_children": [ { - "__id__": 42 + "__id__": 44 }, { - "__id__": 46 + "__id__": 50 }, { - "__id__": 59 + "__id__": 63 }, { - "__id__": 62 + "__id__": 66 } ], "_active": true, "_components": [ { - "__id__": 65 + "__id__": 69 } ], "_prefab": { - "__id__": 66 + "__id__": 70 }, "_opacity": 255, "_color": { @@ -1672,21 +1715,21 @@ "_name": "dayLabel", "_objFlags": 0, "_parent": { - "__id__": 41 + "__id__": 43 }, "_children": [ { - "__id__": 99 + "__id__": 45 } ], "_active": true, "_components": [ { - "__id__": 43 + "__id__": 48 } ], "_prefab": { - "__id__": 45 + "__id__": 49 }, "_opacity": 255, "_color": { @@ -1735,12 +1778,76 @@ "groupIndex": 0, "_id": "" }, + { + "__type__": "cc.Node", + "_name": "dayNumber", + "_objFlags": 0, + "_parent": { + "__id__": 44 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 46 + } + ], + "_prefab": { + "__id__": 47 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 30, + "height": 34 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, { "__type__": "cc.Sprite", "_name": "", "_objFlags": 0, "node": { - "__id__": 42 + "__id__": 45 }, "_enabled": true, "_materials": [ @@ -1751,7 +1858,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "5653ad5a-4cc2-462d-8cb4-11386db8b633" + "__uuid__": "57f492c7-0fa4-4af6-b552-9b4c10f2d3f3" }, "_type": 0, "_sizeMode": 0, @@ -1767,12 +1874,23 @@ "_atlas": null, "_id": "" }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "sevenDayNumber2", + "sync": false + }, { "__type__": "cc.Sprite", "_name": "", "_objFlags": 0, "node": { - "__id__": 15 + "__id__": 44 }, "_enabled": true, "_materials": [ @@ -1783,7 +1901,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "2954f098-cc21-4648-b8e4-d645aca67861" + "__uuid__": "5653ad5a-4cc2-462d-8cb4-11386db8b633" }, "_type": 0, "_sizeMode": 0, @@ -1815,17 +1933,17 @@ "_name": "rewardItems", "_objFlags": 0, "_parent": { - "__id__": 41 + "__id__": 43 }, "_children": [ { - "__id__": 47 + "__id__": 51 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 58 + "__id__": 62 }, "_opacity": 255, "_color": { @@ -1879,21 +1997,21 @@ "_name": "rewardItem0", "_objFlags": 0, "_parent": { - "__id__": 46 + "__id__": 50 }, "_children": [ { - "__id__": 48 + "__id__": 52 } ], "_active": true, "_components": [ { - "__id__": 56 + "__id__": 60 } ], "_prefab": { - "__id__": 57 + "__id__": 61 }, "_opacity": 255, "_color": { @@ -1947,20 +2065,20 @@ "_name": "amount", "_objFlags": 0, "_parent": { - "__id__": 47 + "__id__": 51 }, "_children": [ { - "__id__": 49 + "__id__": 53 }, { - "__id__": 52 + "__id__": 56 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 55 + "__id__": 59 }, "_opacity": 255, "_color": { @@ -2014,17 +2132,17 @@ "_name": "digit0", "_objFlags": 0, "_parent": { - "__id__": 48 + "__id__": 52 }, "_children": [], "_active": true, "_components": [ { - "__id__": 50 + "__id__": 54 } ], "_prefab": { - "__id__": 51 + "__id__": 55 }, "_opacity": 255, "_color": { @@ -2078,7 +2196,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 49 + "__id__": 53 }, "_enabled": true, "_materials": [ @@ -2121,17 +2239,17 @@ "_name": "digit1", "_objFlags": 0, "_parent": { - "__id__": 48 + "__id__": 52 }, "_children": [], "_active": true, "_components": [ { - "__id__": 53 + "__id__": 57 } ], "_prefab": { - "__id__": 54 + "__id__": 58 }, "_opacity": 255, "_color": { @@ -2185,7 +2303,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 52 + "__id__": 56 }, "_enabled": true, "_materials": [ @@ -2239,7 +2357,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 47 + "__id__": 51 }, "_enabled": true, "_materials": [ @@ -2293,17 +2411,17 @@ "_name": "claimedOverlay", "_objFlags": 0, "_parent": { - "__id__": 41 + "__id__": 43 }, "_children": [], "_active": false, "_components": [ { - "__id__": 60 + "__id__": 64 } ], "_prefab": { - "__id__": 61 + "__id__": 65 }, "_opacity": 255, "_color": { @@ -2357,7 +2475,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 59 + "__id__": 63 }, "_enabled": true, "_materials": [ @@ -2400,17 +2518,17 @@ "_name": "claimedBadge", "_objFlags": 0, "_parent": { - "__id__": 41 + "__id__": 43 }, "_children": [], "_active": false, "_components": [ { - "__id__": 63 + "__id__": 67 } ], "_prefab": { - "__id__": 64 + "__id__": 68 }, "_opacity": 255, "_color": { @@ -2464,7 +2582,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 62 + "__id__": 66 }, "_enabled": true, "_materials": [ @@ -2507,7 +2625,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 41 + "__id__": 43 }, "_enabled": true, "_materials": [ @@ -2553,27 +2671,27 @@ "__id__": 11 }, "_children": [ - { - "__id__": 68 - }, { "__id__": 72 }, { - "__id__": 88 + "__id__": 78 }, { - "__id__": 91 + "__id__": 94 + }, + { + "__id__": 97 } ], "_active": true, "_components": [ { - "__id__": 94 + "__id__": 100 } ], "_prefab": { - "__id__": 95 + "__id__": 101 }, "_opacity": 255, "_color": { @@ -2627,21 +2745,21 @@ "_name": "dayLabel", "_objFlags": 0, "_parent": { - "__id__": 67 + "__id__": 71 }, "_children": [ { - "__id__": 202 + "__id__": 73 } ], "_active": true, "_components": [ { - "__id__": 69 + "__id__": 76 } ], "_prefab": { - "__id__": 71 + "__id__": 77 }, "_opacity": 255, "_color": { @@ -2690,12 +2808,119 @@ "groupIndex": 0, "_id": "" }, + { + "__type__": "cc.Node", + "_name": "dayNumber", + "_objFlags": 0, + "_parent": { + "__id__": 72 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 74 + } + ], + "_prefab": { + "__id__": 75 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 28, + "height": 35 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, { "__type__": "cc.Sprite", "_name": "", "_objFlags": 0, "node": { - "__id__": 68 + "__id__": 73 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "871da141-e0d9-466e-8b91-522ef3ebeea6" + }, + "_type": 0, + "_sizeMode": 0, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "sevenDayNumber3", + "sync": false + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 72 }, "_enabled": true, "_materials": [ @@ -2722,17 +2947,6 @@ "_atlas": null, "_id": "" }, - { - "__type__": "cc.PrefabInfo", - "root": { - "__id__": 1 - }, - "asset": { - "__id__": 0 - }, - "fileId": "sevenDayNumber1", - "sync": false - }, { "__type__": "cc.PrefabInfo", "root": { @@ -2749,17 +2963,17 @@ "_name": "rewardItems", "_objFlags": 0, "_parent": { - "__id__": 67 + "__id__": 71 }, "_children": [ { - "__id__": 73 + "__id__": 79 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 87 + "__id__": 93 }, "_opacity": 255, "_color": { @@ -2813,21 +3027,21 @@ "_name": "rewardItem0", "_objFlags": 0, "_parent": { - "__id__": 72 + "__id__": 78 }, "_children": [ { - "__id__": 74 + "__id__": 80 } ], "_active": true, "_components": [ { - "__id__": 85 + "__id__": 91 } ], "_prefab": { - "__id__": 86 + "__id__": 92 }, "_opacity": 255, "_color": { @@ -2881,23 +3095,23 @@ "_name": "amount", "_objFlags": 0, "_parent": { - "__id__": 73 + "__id__": 79 }, "_children": [ - { - "__id__": 75 - }, - { - "__id__": 78 - }, { "__id__": 81 + }, + { + "__id__": 84 + }, + { + "__id__": 87 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 84 + "__id__": 90 }, "_opacity": 255, "_color": { @@ -2951,17 +3165,17 @@ "_name": "digit0", "_objFlags": 0, "_parent": { - "__id__": 74 + "__id__": 80 }, "_children": [], "_active": true, "_components": [ { - "__id__": 76 + "__id__": 82 } ], "_prefab": { - "__id__": 77 + "__id__": 83 }, "_opacity": 255, "_color": { @@ -3015,7 +3229,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 75 + "__id__": 81 }, "_enabled": true, "_materials": [ @@ -3058,17 +3272,17 @@ "_name": "digit1", "_objFlags": 0, "_parent": { - "__id__": 74 + "__id__": 80 }, "_children": [], "_active": true, "_components": [ { - "__id__": 79 + "__id__": 85 } ], "_prefab": { - "__id__": 80 + "__id__": 86 }, "_opacity": 255, "_color": { @@ -3122,7 +3336,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 78 + "__id__": 84 }, "_enabled": true, "_materials": [ @@ -3165,17 +3379,17 @@ "_name": "digit2", "_objFlags": 0, "_parent": { - "__id__": 74 + "__id__": 80 }, "_children": [], "_active": true, "_components": [ { - "__id__": 82 + "__id__": 88 } ], "_prefab": { - "__id__": 83 + "__id__": 89 }, "_opacity": 255, "_color": { @@ -3229,7 +3443,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 81 + "__id__": 87 }, "_enabled": true, "_materials": [ @@ -3283,7 +3497,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 73 + "__id__": 79 }, "_enabled": true, "_materials": [ @@ -3337,17 +3551,17 @@ "_name": "claimedOverlay", "_objFlags": 0, "_parent": { - "__id__": 67 + "__id__": 71 }, "_children": [], "_active": false, "_components": [ { - "__id__": 89 + "__id__": 95 } ], "_prefab": { - "__id__": 90 + "__id__": 96 }, "_opacity": 255, "_color": { @@ -3401,7 +3615,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 88 + "__id__": 94 }, "_enabled": true, "_materials": [ @@ -3444,17 +3658,17 @@ "_name": "claimedBadge", "_objFlags": 0, "_parent": { - "__id__": 67 + "__id__": 71 }, "_children": [], "_active": false, "_components": [ { - "__id__": 92 + "__id__": 98 } ], "_prefab": { - "__id__": 93 + "__id__": 99 }, "_opacity": 255, "_color": { @@ -3508,7 +3722,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 91 + "__id__": 97 }, "_enabled": true, "_materials": [ @@ -3551,7 +3765,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 67 + "__id__": 71 }, "_enabled": true, "_materials": [ @@ -3598,26 +3812,26 @@ }, "_children": [ { - "__id__": 97 + "__id__": 103 }, { - "__id__": 101 + "__id__": 109 }, { - "__id__": 125 + "__id__": 133 }, { - "__id__": 128 + "__id__": 136 } ], "_active": true, "_components": [ { - "__id__": 131 + "__id__": 139 } ], "_prefab": { - "__id__": 132 + "__id__": 140 }, "_opacity": 255, "_color": { @@ -3671,21 +3885,21 @@ "_name": "dayLabel", "_objFlags": 0, "_parent": { - "__id__": 96 + "__id__": 102 }, "_children": [ { - "__id__": 251 + "__id__": 104 } ], "_active": true, "_components": [ { - "__id__": 98 + "__id__": 107 } ], "_prefab": { - "__id__": 100 + "__id__": 108 }, "_opacity": 255, "_color": { @@ -3734,54 +3948,22 @@ "groupIndex": 0, "_id": "" }, - { - "__type__": "cc.Sprite", - "_name": "", - "_objFlags": 0, - "node": { - "__id__": 97 - }, - "_enabled": true, - "_materials": [ - { - "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" - } - ], - "_srcBlendFactor": 770, - "_dstBlendFactor": 771, - "_spriteFrame": { - "__uuid__": "5653ad5a-4cc2-462d-8cb4-11386db8b633" - }, - "_type": 0, - "_sizeMode": 0, - "_fillType": 0, - "_fillCenter": { - "__type__": "cc.Vec2", - "x": 0, - "y": 0 - }, - "_fillStart": 0, - "_fillRange": 0, - "_isTrimmedMode": true, - "_atlas": null, - "_id": "" - }, { "__type__": "cc.Node", "_name": "dayNumber", "_objFlags": 0, "_parent": { - "__id__": 42 + "__id__": 103 }, "_children": [], "_active": true, "_components": [ { - "__id__": 136 + "__id__": 105 } ], "_prefab": { - "__id__": 165 + "__id__": 106 }, "_opacity": 255, "_color": { @@ -3793,8 +3975,8 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 30, - "height": 34 + "width": 32, + "height": 35 }, "_anchorPoint": { "__type__": "cc.Vec2", @@ -3830,6 +4012,81 @@ "groupIndex": 0, "_id": "" }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 104 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "7dbbd3f0-3db8-4b35-80b3-9930baf2b3f5" + }, + "_type": 0, + "_sizeMode": 0, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "sevenDayNumber4", + "sync": false + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 103 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "5653ad5a-4cc2-462d-8cb4-11386db8b633" + }, + "_type": 0, + "_sizeMode": 0, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, { "__type__": "cc.PrefabInfo", "root": { @@ -3846,20 +4103,20 @@ "_name": "rewardItems", "_objFlags": 0, "_parent": { - "__id__": 96 + "__id__": 102 }, "_children": [ { - "__id__": 102 + "__id__": 110 }, { - "__id__": 113 + "__id__": 121 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 124 + "__id__": 132 }, "_opacity": 255, "_color": { @@ -3913,21 +4170,21 @@ "_name": "rewardItem0", "_objFlags": 0, "_parent": { - "__id__": 101 + "__id__": 109 }, "_children": [ { - "__id__": 103 + "__id__": 111 } ], "_active": true, "_components": [ { - "__id__": 111 + "__id__": 119 } ], "_prefab": { - "__id__": 112 + "__id__": 120 }, "_opacity": 255, "_color": { @@ -3981,20 +4238,20 @@ "_name": "amount", "_objFlags": 0, "_parent": { - "__id__": 102 + "__id__": 110 }, "_children": [ { - "__id__": 104 + "__id__": 112 }, { - "__id__": 107 + "__id__": 115 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 110 + "__id__": 118 }, "_opacity": 255, "_color": { @@ -4048,17 +4305,17 @@ "_name": "digit0", "_objFlags": 0, "_parent": { - "__id__": 103 + "__id__": 111 }, "_children": [], "_active": true, "_components": [ { - "__id__": 105 + "__id__": 113 } ], "_prefab": { - "__id__": 106 + "__id__": 114 }, "_opacity": 255, "_color": { @@ -4112,7 +4369,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 104 + "__id__": 112 }, "_enabled": true, "_materials": [ @@ -4155,17 +4412,17 @@ "_name": "digit1", "_objFlags": 0, "_parent": { - "__id__": 103 + "__id__": 111 }, "_children": [], "_active": true, "_components": [ { - "__id__": 108 + "__id__": 116 } ], "_prefab": { - "__id__": 109 + "__id__": 117 }, "_opacity": 255, "_color": { @@ -4219,7 +4476,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 107 + "__id__": 115 }, "_enabled": true, "_materials": [ @@ -4273,7 +4530,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 102 + "__id__": 110 }, "_enabled": true, "_materials": [ @@ -4316,21 +4573,21 @@ "_name": "rewardItem1", "_objFlags": 0, "_parent": { - "__id__": 101 + "__id__": 109 }, "_children": [ { - "__id__": 114 + "__id__": 122 } ], "_active": true, "_components": [ { - "__id__": 122 + "__id__": 130 } ], "_prefab": { - "__id__": 123 + "__id__": 131 }, "_opacity": 255, "_color": { @@ -4384,20 +4641,20 @@ "_name": "amount", "_objFlags": 0, "_parent": { - "__id__": 113 + "__id__": 121 }, "_children": [ { - "__id__": 115 + "__id__": 123 }, { - "__id__": 118 + "__id__": 126 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 121 + "__id__": 129 }, "_opacity": 255, "_color": { @@ -4451,17 +4708,17 @@ "_name": "digit0", "_objFlags": 0, "_parent": { - "__id__": 114 + "__id__": 122 }, "_children": [], "_active": true, "_components": [ { - "__id__": 116 + "__id__": 124 } ], "_prefab": { - "__id__": 117 + "__id__": 125 }, "_opacity": 255, "_color": { @@ -4515,7 +4772,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 115 + "__id__": 123 }, "_enabled": true, "_materials": [ @@ -4558,17 +4815,17 @@ "_name": "digit1", "_objFlags": 0, "_parent": { - "__id__": 114 + "__id__": 122 }, "_children": [], "_active": true, "_components": [ { - "__id__": 119 + "__id__": 127 } ], "_prefab": { - "__id__": 120 + "__id__": 128 }, "_opacity": 255, "_color": { @@ -4622,7 +4879,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 118 + "__id__": 126 }, "_enabled": true, "_materials": [ @@ -4676,7 +4933,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 113 + "__id__": 121 }, "_enabled": true, "_materials": [ @@ -4730,17 +4987,17 @@ "_name": "claimedOverlay", "_objFlags": 0, "_parent": { - "__id__": 96 + "__id__": 102 }, "_children": [], "_active": false, "_components": [ { - "__id__": 126 + "__id__": 134 } ], "_prefab": { - "__id__": 127 + "__id__": 135 }, "_opacity": 255, "_color": { @@ -4794,7 +5051,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 125 + "__id__": 133 }, "_enabled": true, "_materials": [ @@ -4837,17 +5094,17 @@ "_name": "claimedBadge", "_objFlags": 0, "_parent": { - "__id__": 96 + "__id__": 102 }, "_children": [], "_active": false, "_components": [ { - "__id__": 129 + "__id__": 137 } ], "_prefab": { - "__id__": 130 + "__id__": 138 }, "_opacity": 255, "_color": { @@ -4901,7 +5158,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 128 + "__id__": 136 }, "_enabled": true, "_materials": [ @@ -4944,7 +5201,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 96 + "__id__": 102 }, "_enabled": true, "_materials": [ @@ -4991,26 +5248,26 @@ }, "_children": [ { - "__id__": 134 + "__id__": 142 }, { - "__id__": 138 + "__id__": 148 }, { - "__id__": 154 + "__id__": 164 }, { - "__id__": 157 + "__id__": 167 } ], "_active": true, "_components": [ { - "__id__": 160 + "__id__": 170 } ], "_prefab": { - "__id__": 161 + "__id__": 171 }, "_opacity": 255, "_color": { @@ -5064,21 +5321,21 @@ "_name": "dayLabel", "_objFlags": 0, "_parent": { - "__id__": 133 + "__id__": 141 }, "_children": [ { - "__id__": 254 + "__id__": 143 } ], "_active": true, "_components": [ { - "__id__": 135 + "__id__": 146 } ], "_prefab": { - "__id__": 137 + "__id__": 147 }, "_opacity": 255, "_color": { @@ -5127,12 +5384,76 @@ "groupIndex": 0, "_id": "" }, + { + "__type__": "cc.Node", + "_name": "dayNumber", + "_objFlags": 0, + "_parent": { + "__id__": 142 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 144 + } + ], + "_prefab": { + "__id__": 145 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 29, + "height": 33 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, { "__type__": "cc.Sprite", "_name": "", "_objFlags": 0, "node": { - "__id__": 134 + "__id__": 143 }, "_enabled": true, "_materials": [ @@ -5143,7 +5464,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "5653ad5a-4cc2-462d-8cb4-11386db8b633" + "__uuid__": "5868750f-05eb-454a-80d2-38a123ff122e" }, "_type": 0, "_sizeMode": 0, @@ -5159,12 +5480,23 @@ "_atlas": null, "_id": "" }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "sevenDayNumber5", + "sync": false + }, { "__type__": "cc.Sprite", "_name": "", "_objFlags": 0, "node": { - "__id__": 99 + "__id__": 142 }, "_enabled": true, "_materials": [ @@ -5175,7 +5507,7 @@ "_srcBlendFactor": 770, "_dstBlendFactor": 771, "_spriteFrame": { - "__uuid__": "57f492c7-0fa4-4af6-b552-9b4c10f2d3f3" + "__uuid__": "5653ad5a-4cc2-462d-8cb4-11386db8b633" }, "_type": 0, "_sizeMode": 0, @@ -5207,17 +5539,17 @@ "_name": "rewardItems", "_objFlags": 0, "_parent": { - "__id__": 133 + "__id__": 141 }, "_children": [ { - "__id__": 139 + "__id__": 149 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 153 + "__id__": 163 }, "_opacity": 255, "_color": { @@ -5271,21 +5603,21 @@ "_name": "rewardItem0", "_objFlags": 0, "_parent": { - "__id__": 138 + "__id__": 148 }, "_children": [ { - "__id__": 140 + "__id__": 150 } ], "_active": true, "_components": [ { - "__id__": 151 + "__id__": 161 } ], "_prefab": { - "__id__": 152 + "__id__": 162 }, "_opacity": 255, "_color": { @@ -5339,23 +5671,23 @@ "_name": "amount", "_objFlags": 0, "_parent": { - "__id__": 139 + "__id__": 149 }, "_children": [ { - "__id__": 141 + "__id__": 151 }, { - "__id__": 144 + "__id__": 154 }, { - "__id__": 147 + "__id__": 157 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 150 + "__id__": 160 }, "_opacity": 255, "_color": { @@ -5409,17 +5741,17 @@ "_name": "digit0", "_objFlags": 0, "_parent": { - "__id__": 140 + "__id__": 150 }, "_children": [], "_active": true, "_components": [ { - "__id__": 142 + "__id__": 152 } ], "_prefab": { - "__id__": 143 + "__id__": 153 }, "_opacity": 255, "_color": { @@ -5473,7 +5805,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 141 + "__id__": 151 }, "_enabled": true, "_materials": [ @@ -5516,17 +5848,17 @@ "_name": "digit1", "_objFlags": 0, "_parent": { - "__id__": 140 + "__id__": 150 }, "_children": [], "_active": true, "_components": [ { - "__id__": 145 + "__id__": 155 } ], "_prefab": { - "__id__": 146 + "__id__": 156 }, "_opacity": 255, "_color": { @@ -5580,7 +5912,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 144 + "__id__": 154 }, "_enabled": true, "_materials": [ @@ -5623,17 +5955,17 @@ "_name": "digit2", "_objFlags": 0, "_parent": { - "__id__": 140 + "__id__": 150 }, "_children": [], "_active": true, "_components": [ { - "__id__": 148 + "__id__": 158 } ], "_prefab": { - "__id__": 149 + "__id__": 159 }, "_opacity": 255, "_color": { @@ -5687,7 +6019,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 147 + "__id__": 157 }, "_enabled": true, "_materials": [ @@ -5741,7 +6073,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 139 + "__id__": 149 }, "_enabled": true, "_materials": [ @@ -5795,17 +6127,17 @@ "_name": "claimedOverlay", "_objFlags": 0, "_parent": { - "__id__": 133 + "__id__": 141 }, "_children": [], "_active": false, "_components": [ { - "__id__": 155 + "__id__": 165 } ], "_prefab": { - "__id__": 156 + "__id__": 166 }, "_opacity": 255, "_color": { @@ -5859,7 +6191,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 154 + "__id__": 164 }, "_enabled": true, "_materials": [ @@ -5902,17 +6234,17 @@ "_name": "claimedBadge", "_objFlags": 0, "_parent": { - "__id__": 133 + "__id__": 141 }, "_children": [], "_active": false, "_components": [ { - "__id__": 158 + "__id__": 168 } ], "_prefab": { - "__id__": 159 + "__id__": 169 }, "_opacity": 255, "_color": { @@ -5966,7 +6298,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 157 + "__id__": 167 }, "_enabled": true, "_materials": [ @@ -6009,7 +6341,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 133 + "__id__": 141 }, "_enabled": true, "_materials": [ @@ -6056,26 +6388,26 @@ }, "_children": [ { - "__id__": 163 + "__id__": 173 }, { - "__id__": 167 + "__id__": 179 }, { - "__id__": 191 + "__id__": 203 }, { - "__id__": 194 + "__id__": 206 } ], "_active": true, "_components": [ { - "__id__": 197 + "__id__": 209 } ], "_prefab": { - "__id__": 198 + "__id__": 210 }, "_opacity": 255, "_color": { @@ -6129,21 +6461,21 @@ "_name": "dayLabel", "_objFlags": 0, "_parent": { - "__id__": 162 + "__id__": 172 }, "_children": [ { - "__id__": 257 + "__id__": 174 } ], "_active": true, "_components": [ { - "__id__": 164 + "__id__": 177 } ], "_prefab": { - "__id__": 166 + "__id__": 178 }, "_opacity": 255, "_color": { @@ -6192,12 +6524,119 @@ "groupIndex": 0, "_id": "" }, + { + "__type__": "cc.Node", + "_name": "dayNumber", + "_objFlags": 0, + "_parent": { + "__id__": 173 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 175 + } + ], + "_prefab": { + "__id__": 176 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 30, + "height": 35 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, { "__type__": "cc.Sprite", "_name": "", "_objFlags": 0, "node": { - "__id__": 163 + "__id__": 174 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "260713d9-9922-49fa-a307-c9c548ec6434" + }, + "_type": 0, + "_sizeMode": 0, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "sevenDayNumber6", + "sync": false + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 173 }, "_enabled": true, "_materials": [ @@ -6224,17 +6663,6 @@ "_atlas": null, "_id": "" }, - { - "__type__": "cc.PrefabInfo", - "root": { - "__id__": 1 - }, - "asset": { - "__id__": 0 - }, - "fileId": "sevenDayNumber2", - "sync": false - }, { "__type__": "cc.PrefabInfo", "root": { @@ -6251,20 +6679,20 @@ "_name": "rewardItems", "_objFlags": 0, "_parent": { - "__id__": 162 + "__id__": 172 }, "_children": [ { - "__id__": 168 + "__id__": 180 }, { - "__id__": 179 + "__id__": 191 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 190 + "__id__": 202 }, "_opacity": 255, "_color": { @@ -6318,21 +6746,21 @@ "_name": "rewardItem0", "_objFlags": 0, "_parent": { - "__id__": 167 + "__id__": 179 }, "_children": [ { - "__id__": 169 + "__id__": 181 } ], "_active": true, "_components": [ { - "__id__": 177 + "__id__": 189 } ], "_prefab": { - "__id__": 178 + "__id__": 190 }, "_opacity": 255, "_color": { @@ -6386,20 +6814,20 @@ "_name": "amount", "_objFlags": 0, "_parent": { - "__id__": 168 + "__id__": 180 }, "_children": [ { - "__id__": 170 + "__id__": 182 }, { - "__id__": 173 + "__id__": 185 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 176 + "__id__": 188 }, "_opacity": 255, "_color": { @@ -6453,17 +6881,17 @@ "_name": "digit0", "_objFlags": 0, "_parent": { - "__id__": 169 + "__id__": 181 }, "_children": [], "_active": true, "_components": [ { - "__id__": 171 + "__id__": 183 } ], "_prefab": { - "__id__": 172 + "__id__": 184 }, "_opacity": 255, "_color": { @@ -6517,7 +6945,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 170 + "__id__": 182 }, "_enabled": true, "_materials": [ @@ -6560,17 +6988,17 @@ "_name": "digit1", "_objFlags": 0, "_parent": { - "__id__": 169 + "__id__": 181 }, "_children": [], "_active": true, "_components": [ { - "__id__": 174 + "__id__": 186 } ], "_prefab": { - "__id__": 175 + "__id__": 187 }, "_opacity": 255, "_color": { @@ -6624,7 +7052,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 173 + "__id__": 185 }, "_enabled": true, "_materials": [ @@ -6678,7 +7106,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 168 + "__id__": 180 }, "_enabled": true, "_materials": [ @@ -6721,21 +7149,21 @@ "_name": "rewardItem1", "_objFlags": 0, "_parent": { - "__id__": 167 + "__id__": 179 }, "_children": [ { - "__id__": 180 + "__id__": 192 } ], "_active": true, "_components": [ { - "__id__": 188 + "__id__": 200 } ], "_prefab": { - "__id__": 189 + "__id__": 201 }, "_opacity": 255, "_color": { @@ -6789,20 +7217,20 @@ "_name": "amount", "_objFlags": 0, "_parent": { - "__id__": 179 + "__id__": 191 }, "_children": [ { - "__id__": 181 + "__id__": 193 }, { - "__id__": 184 + "__id__": 196 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 187 + "__id__": 199 }, "_opacity": 255, "_color": { @@ -6856,17 +7284,17 @@ "_name": "digit0", "_objFlags": 0, "_parent": { - "__id__": 180 + "__id__": 192 }, "_children": [], "_active": true, "_components": [ { - "__id__": 182 + "__id__": 194 } ], "_prefab": { - "__id__": 183 + "__id__": 195 }, "_opacity": 255, "_color": { @@ -6920,7 +7348,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 181 + "__id__": 193 }, "_enabled": true, "_materials": [ @@ -6963,17 +7391,17 @@ "_name": "digit1", "_objFlags": 0, "_parent": { - "__id__": 180 + "__id__": 192 }, "_children": [], "_active": true, "_components": [ { - "__id__": 185 + "__id__": 197 } ], "_prefab": { - "__id__": 186 + "__id__": 198 }, "_opacity": 255, "_color": { @@ -7027,7 +7455,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 184 + "__id__": 196 }, "_enabled": true, "_materials": [ @@ -7081,7 +7509,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 179 + "__id__": 191 }, "_enabled": true, "_materials": [ @@ -7135,17 +7563,17 @@ "_name": "claimedOverlay", "_objFlags": 0, "_parent": { - "__id__": 162 + "__id__": 172 }, "_children": [], "_active": false, "_components": [ { - "__id__": 192 + "__id__": 204 } ], "_prefab": { - "__id__": 193 + "__id__": 205 }, "_opacity": 255, "_color": { @@ -7199,7 +7627,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 191 + "__id__": 203 }, "_enabled": true, "_materials": [ @@ -7242,17 +7670,17 @@ "_name": "claimedBadge", "_objFlags": 0, "_parent": { - "__id__": 162 + "__id__": 172 }, "_children": [], "_active": false, "_components": [ { - "__id__": 195 + "__id__": 207 } ], "_prefab": { - "__id__": 196 + "__id__": 208 }, "_opacity": 255, "_color": { @@ -7306,7 +7734,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 194 + "__id__": 206 }, "_enabled": true, "_materials": [ @@ -7349,7 +7777,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 162 + "__id__": 172 }, "_enabled": true, "_materials": [ @@ -7396,29 +7824,29 @@ }, "_children": [ { - "__id__": 200 + "__id__": 212 }, { - "__id__": 204 + "__id__": 215 }, { - "__id__": 208 + "__id__": 219 }, { - "__id__": 235 + "__id__": 246 }, { - "__id__": 238 + "__id__": 249 } ], "_active": true, "_components": [ { - "__id__": 241 + "__id__": 252 } ], "_prefab": { - "__id__": 242 + "__id__": 253 }, "_opacity": 255, "_color": { @@ -7472,17 +7900,17 @@ "_name": "dayLabel", "_objFlags": 0, "_parent": { - "__id__": 199 + "__id__": 211 }, "_children": [], "_active": true, "_components": [ { - "__id__": 201 + "__id__": 213 } ], "_prefab": { - "__id__": 203 + "__id__": 214 }, "_opacity": 255, "_color": { @@ -7536,7 +7964,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 200 + "__id__": 212 }, "_enabled": true, "_materials": [ @@ -7563,70 +7991,6 @@ "_atlas": null, "_id": "" }, - { - "__type__": "cc.Node", - "_name": "dayNumber", - "_objFlags": 0, - "_parent": { - "__id__": 68 - }, - "_children": [], - "_active": true, - "_components": [ - { - "__id__": 249 - } - ], - "_prefab": { - "__id__": 250 - }, - "_opacity": 255, - "_color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - }, - "_contentSize": { - "__type__": "cc.Size", - "width": 28, - "height": 35 - }, - "_anchorPoint": { - "__type__": "cc.Vec2", - "x": 0.5, - "y": 0.5 - }, - "_trs": { - "__type__": "TypedArray", - "ctor": "Float64Array", - "array": [ - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - 1, - 1 - ] - }, - "_eulerAngles": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_skewX": 0, - "_skewY": 0, - "_is3DNode": false, - "_groupIndex": 0, - "groupIndex": 0, - "_id": "" - }, { "__type__": "cc.PrefabInfo", "root": { @@ -7643,20 +8007,20 @@ "_name": "catGlow", "_objFlags": 0, "_parent": { - "__id__": 199 + "__id__": 211 }, "_children": [], "_active": true, "_components": [ { - "__id__": 205 + "__id__": 216 }, { - "__id__": 206 + "__id__": 217 } ], "_prefab": { - "__id__": 207 + "__id__": 218 }, "_opacity": 170, "_color": { @@ -7710,7 +8074,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 204 + "__id__": 215 }, "_enabled": true, "_materials": [ @@ -7742,7 +8106,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 204 + "__id__": 215 }, "_enabled": true, "_defaultClip": { @@ -7772,20 +8136,20 @@ "_name": "rewardItems", "_objFlags": 0, "_parent": { - "__id__": 199 + "__id__": 211 }, "_children": [ { - "__id__": 209 + "__id__": 220 }, { - "__id__": 223 + "__id__": 234 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 234 + "__id__": 245 }, "_opacity": 255, "_color": { @@ -7839,21 +8203,21 @@ "_name": "rewardItem0", "_objFlags": 0, "_parent": { - "__id__": 208 + "__id__": 219 }, "_children": [ { - "__id__": 210 + "__id__": 221 } ], "_active": true, "_components": [ { - "__id__": 221 + "__id__": 232 } ], "_prefab": { - "__id__": 222 + "__id__": 233 }, "_opacity": 255, "_color": { @@ -7907,23 +8271,23 @@ "_name": "amount", "_objFlags": 0, "_parent": { - "__id__": 209 + "__id__": 220 }, "_children": [ { - "__id__": 211 + "__id__": 222 }, { - "__id__": 214 + "__id__": 225 }, { - "__id__": 217 + "__id__": 228 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 220 + "__id__": 231 }, "_opacity": 255, "_color": { @@ -7977,17 +8341,17 @@ "_name": "digit0", "_objFlags": 0, "_parent": { - "__id__": 210 + "__id__": 221 }, "_children": [], "_active": true, "_components": [ { - "__id__": 212 + "__id__": 223 } ], "_prefab": { - "__id__": 213 + "__id__": 224 }, "_opacity": 255, "_color": { @@ -8041,7 +8405,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 211 + "__id__": 222 }, "_enabled": true, "_materials": [ @@ -8084,17 +8448,17 @@ "_name": "digit1", "_objFlags": 0, "_parent": { - "__id__": 210 + "__id__": 221 }, "_children": [], "_active": true, "_components": [ { - "__id__": 215 + "__id__": 226 } ], "_prefab": { - "__id__": 216 + "__id__": 227 }, "_opacity": 255, "_color": { @@ -8148,7 +8512,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 214 + "__id__": 225 }, "_enabled": true, "_materials": [ @@ -8191,17 +8555,17 @@ "_name": "digit2", "_objFlags": 0, "_parent": { - "__id__": 210 + "__id__": 221 }, "_children": [], "_active": true, "_components": [ { - "__id__": 218 + "__id__": 229 } ], "_prefab": { - "__id__": 219 + "__id__": 230 }, "_opacity": 255, "_color": { @@ -8255,7 +8619,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 217 + "__id__": 228 }, "_enabled": true, "_materials": [ @@ -8309,7 +8673,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 209 + "__id__": 220 }, "_enabled": true, "_materials": [ @@ -8352,21 +8716,21 @@ "_name": "rewardItem1", "_objFlags": 0, "_parent": { - "__id__": 208 + "__id__": 219 }, "_children": [ { - "__id__": 224 + "__id__": 235 } ], "_active": true, "_components": [ { - "__id__": 232 + "__id__": 243 } ], "_prefab": { - "__id__": 233 + "__id__": 244 }, "_opacity": 255, "_color": { @@ -8420,20 +8784,20 @@ "_name": "amount", "_objFlags": 0, "_parent": { - "__id__": 223 + "__id__": 234 }, "_children": [ { - "__id__": 225 + "__id__": 236 }, { - "__id__": 228 + "__id__": 239 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 231 + "__id__": 242 }, "_opacity": 255, "_color": { @@ -8487,17 +8851,17 @@ "_name": "digit0", "_objFlags": 0, "_parent": { - "__id__": 224 + "__id__": 235 }, "_children": [], "_active": true, "_components": [ { - "__id__": 226 + "__id__": 237 } ], "_prefab": { - "__id__": 227 + "__id__": 238 }, "_opacity": 255, "_color": { @@ -8551,7 +8915,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 225 + "__id__": 236 }, "_enabled": true, "_materials": [ @@ -8594,17 +8958,17 @@ "_name": "digit1", "_objFlags": 0, "_parent": { - "__id__": 224 + "__id__": 235 }, "_children": [], "_active": true, "_components": [ { - "__id__": 229 + "__id__": 240 } ], "_prefab": { - "__id__": 230 + "__id__": 241 }, "_opacity": 255, "_color": { @@ -8658,7 +9022,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 228 + "__id__": 239 }, "_enabled": true, "_materials": [ @@ -8712,7 +9076,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 223 + "__id__": 234 }, "_enabled": true, "_materials": [ @@ -8766,17 +9130,17 @@ "_name": "claimedOverlay", "_objFlags": 0, "_parent": { - "__id__": 199 + "__id__": 211 }, "_children": [], "_active": false, "_components": [ { - "__id__": 236 + "__id__": 247 } ], "_prefab": { - "__id__": 237 + "__id__": 248 }, "_opacity": 255, "_color": { @@ -8830,7 +9194,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 235 + "__id__": 246 }, "_enabled": true, "_materials": [ @@ -8873,17 +9237,17 @@ "_name": "claimedBadge", "_objFlags": 0, "_parent": { - "__id__": 199 + "__id__": 211 }, "_children": [], "_active": false, "_components": [ { - "__id__": 239 + "__id__": 250 } ], "_prefab": { - "__id__": 240 + "__id__": 251 }, "_opacity": 255, "_color": { @@ -8937,7 +9301,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 238 + "__id__": 249 }, "_enabled": true, "_materials": [ @@ -8980,7 +9344,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 199 + "__id__": 211 }, "_enabled": true, "_materials": [ @@ -9116,6 +9480,52 @@ "cardSpecial": { "__uuid__": "7d090003-0203-4a00-8b00-000000000203" }, + "dayBlue": { + "__uuid__": "5653ad5a-4cc2-462d-8cb4-11386db8b633" + }, + "dayYellow": { + "__uuid__": "f1d89e97-dcf0-4e71-8707-a9c4584fc170" + }, + "dayNumberBlue": [ + { + "__uuid__": "95c90483-cb97-4eb9-8443-d861b09f97c0" + }, + { + "__uuid__": "57f492c7-0fa4-4af6-b552-9b4c10f2d3f3" + }, + { + "__uuid__": "871da141-e0d9-466e-8b91-522ef3ebeea6" + }, + { + "__uuid__": "7dbbd3f0-3db8-4b35-80b3-9930baf2b3f5" + }, + { + "__uuid__": "5868750f-05eb-454a-80d2-38a123ff122e" + }, + { + "__uuid__": "260713d9-9922-49fa-a307-c9c548ec6434" + } + ], + "dayNumberYellow": [ + { + "__uuid__": "2954f098-cc21-4648-b8e4-d645aca67861" + }, + { + "__uuid__": "79251c02-6295-4e8d-a33a-496c542dab8e" + }, + { + "__uuid__": "839576d3-839b-44da-aa94-344425afb65f" + }, + { + "__uuid__": "201fbfd2-494b-4f93-a6c0-16c310517ca0" + }, + { + "__uuid__": "c33b2f71-adb9-4cc1-8cf9-6a4e06a24761" + }, + { + "__uuid__": "26964b70-e1ad-4f5d-85a0-3b68a03fe866" + } + ], "claimedOverlay": { "__uuid__": "7d090003-0213-4a00-8b00-000000000213" }, @@ -9185,53 +9595,7 @@ } ], "popupAnimation": 1, - "_id": "", - "dayBlue": { - "__uuid__": "5653ad5a-4cc2-462d-8cb4-11386db8b633" - }, - "dayYellow": { - "__uuid__": "f1d89e97-dcf0-4e71-8707-a9c4584fc170" - }, - "dayNumberBlue": [ - { - "__uuid__": "95c90483-cb97-4eb9-8443-d861b09f97c0" - }, - { - "__uuid__": "57f492c7-0fa4-4af6-b552-9b4c10f2d3f3" - }, - { - "__uuid__": "871da141-e0d9-466e-8b91-522ef3ebeea6" - }, - { - "__uuid__": "7dbbd3f0-3db8-4b35-80b3-9930baf2b3f5" - }, - { - "__uuid__": "5868750f-05eb-454a-80d2-38a123ff122e" - }, - { - "__uuid__": "260713d9-9922-49fa-a307-c9c548ec6434" - } - ], - "dayNumberYellow": [ - { - "__uuid__": "2954f098-cc21-4648-b8e4-d645aca67861" - }, - { - "__uuid__": "79251c02-6295-4e8d-a33a-496c542dab8e" - }, - { - "__uuid__": "839576d3-839b-44da-aa94-344425afb65f" - }, - { - "__uuid__": "201fbfd2-494b-4f93-a6c0-16c310517ca0" - }, - { - "__uuid__": "c33b2f71-adb9-4cc1-8cf9-6a4e06a24761" - }, - { - "__uuid__": "26964b70-e1ad-4f5d-85a0-3b68a03fe866" - } - ] + "_id": "" }, { "__type__": "cc.PrefabInfo", @@ -9243,369 +9607,5 @@ }, "fileId": "", "sync": false - }, - { - "__type__": "cc.Sprite", - "_name": "", - "_objFlags": 0, - "node": { - "__id__": 202 - }, - "_enabled": true, - "_materials": [ - { - "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" - } - ], - "_srcBlendFactor": 770, - "_dstBlendFactor": 771, - "_spriteFrame": { - "__uuid__": "871da141-e0d9-466e-8b91-522ef3ebeea6" - }, - "_type": 0, - "_sizeMode": 0, - "_fillType": 0, - "_fillCenter": { - "__type__": "cc.Vec2", - "x": 0, - "y": 0 - }, - "_fillStart": 0, - "_fillRange": 0, - "_isTrimmedMode": true, - "_atlas": null, - "_id": "" - }, - { - "__type__": "cc.PrefabInfo", - "root": { - "__id__": 1 - }, - "asset": { - "__id__": 0 - }, - "fileId": "sevenDayNumber3", - "sync": false - }, - { - "__type__": "cc.Node", - "_name": "dayNumber", - "_objFlags": 0, - "_parent": { - "__id__": 97 - }, - "_children": [], - "_active": true, - "_components": [ - { - "__id__": 252 - } - ], - "_prefab": { - "__id__": 253 - }, - "_opacity": 255, - "_color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - }, - "_contentSize": { - "__type__": "cc.Size", - "width": 32, - "height": 35 - }, - "_anchorPoint": { - "__type__": "cc.Vec2", - "x": 0.5, - "y": 0.5 - }, - "_trs": { - "__type__": "TypedArray", - "ctor": "Float64Array", - "array": [ - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - 1, - 1 - ] - }, - "_eulerAngles": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_skewX": 0, - "_skewY": 0, - "_is3DNode": false, - "_groupIndex": 0, - "groupIndex": 0, - "_id": "" - }, - { - "__type__": "cc.Sprite", - "_name": "", - "_objFlags": 0, - "node": { - "__id__": 251 - }, - "_enabled": true, - "_materials": [ - { - "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" - } - ], - "_srcBlendFactor": 770, - "_dstBlendFactor": 771, - "_spriteFrame": { - "__uuid__": "7dbbd3f0-3db8-4b35-80b3-9930baf2b3f5" - }, - "_type": 0, - "_sizeMode": 0, - "_fillType": 0, - "_fillCenter": { - "__type__": "cc.Vec2", - "x": 0, - "y": 0 - }, - "_fillStart": 0, - "_fillRange": 0, - "_isTrimmedMode": true, - "_atlas": null, - "_id": "" - }, - { - "__type__": "cc.PrefabInfo", - "root": { - "__id__": 1 - }, - "asset": { - "__id__": 0 - }, - "fileId": "sevenDayNumber4", - "sync": false - }, - { - "__type__": "cc.Node", - "_name": "dayNumber", - "_objFlags": 0, - "_parent": { - "__id__": 134 - }, - "_children": [], - "_active": true, - "_components": [ - { - "__id__": 255 - } - ], - "_prefab": { - "__id__": 256 - }, - "_opacity": 255, - "_color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - }, - "_contentSize": { - "__type__": "cc.Size", - "width": 29, - "height": 33 - }, - "_anchorPoint": { - "__type__": "cc.Vec2", - "x": 0.5, - "y": 0.5 - }, - "_trs": { - "__type__": "TypedArray", - "ctor": "Float64Array", - "array": [ - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - 1, - 1 - ] - }, - "_eulerAngles": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_skewX": 0, - "_skewY": 0, - "_is3DNode": false, - "_groupIndex": 0, - "groupIndex": 0, - "_id": "" - }, - { - "__type__": "cc.Sprite", - "_name": "", - "_objFlags": 0, - "node": { - "__id__": 254 - }, - "_enabled": true, - "_materials": [ - { - "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" - } - ], - "_srcBlendFactor": 770, - "_dstBlendFactor": 771, - "_spriteFrame": { - "__uuid__": "5868750f-05eb-454a-80d2-38a123ff122e" - }, - "_type": 0, - "_sizeMode": 0, - "_fillType": 0, - "_fillCenter": { - "__type__": "cc.Vec2", - "x": 0, - "y": 0 - }, - "_fillStart": 0, - "_fillRange": 0, - "_isTrimmedMode": true, - "_atlas": null, - "_id": "" - }, - { - "__type__": "cc.PrefabInfo", - "root": { - "__id__": 1 - }, - "asset": { - "__id__": 0 - }, - "fileId": "sevenDayNumber5", - "sync": false - }, - { - "__type__": "cc.Node", - "_name": "dayNumber", - "_objFlags": 0, - "_parent": { - "__id__": 163 - }, - "_children": [], - "_active": true, - "_components": [ - { - "__id__": 258 - } - ], - "_prefab": { - "__id__": 259 - }, - "_opacity": 255, - "_color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - }, - "_contentSize": { - "__type__": "cc.Size", - "width": 30, - "height": 35 - }, - "_anchorPoint": { - "__type__": "cc.Vec2", - "x": 0.5, - "y": 0.5 - }, - "_trs": { - "__type__": "TypedArray", - "ctor": "Float64Array", - "array": [ - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - 1, - 1 - ] - }, - "_eulerAngles": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_skewX": 0, - "_skewY": 0, - "_is3DNode": false, - "_groupIndex": 0, - "groupIndex": 0, - "_id": "" - }, - { - "__type__": "cc.Sprite", - "_name": "", - "_objFlags": 0, - "node": { - "__id__": 257 - }, - "_enabled": true, - "_materials": [ - { - "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" - } - ], - "_srcBlendFactor": 770, - "_dstBlendFactor": 771, - "_spriteFrame": { - "__uuid__": "260713d9-9922-49fa-a307-c9c548ec6434" - }, - "_type": 0, - "_sizeMode": 0, - "_fillType": 0, - "_fillCenter": { - "__type__": "cc.Vec2", - "x": 0, - "y": 0 - }, - "_fillStart": 0, - "_fillRange": 0, - "_isTrimmedMode": true, - "_atlas": null, - "_id": "" - }, - { - "__type__": "cc.PrefabInfo", - "root": { - "__id__": 1 - }, - "asset": { - "__id__": 0 - }, - "fileId": "sevenDayNumber6", - "sync": false } -] +] \ No newline at end of file diff --git a/assets/win/compressed.meta b/assets/win/compressed.meta new file mode 100644 index 00000000..ae72a299 --- /dev/null +++ b/assets/win/compressed.meta @@ -0,0 +1,13 @@ +{ + "ver": "1.1.3", + "uuid": "8536fa82-6028-4b02-9d18-fd7d6f32ad81", + "importer": "folder", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/tools/test-finish-stage.cjs b/tools/test-finish-stage.cjs index d82692b7..b87861fa 100644 --- a/tools/test-finish-stage.cjs +++ b/tools/test-finish-stage.cjs @@ -42,6 +42,17 @@ function fixture(overrides = {}) { } const maxLevel = fixture().tool.MAX_NORMAL_LEVEL; +test('enter_stage forwards numeric pilot_drop tiers for normal, endless and shared stages', () => { + for (const scenario of [{ level: 24 }, { level: maxLevel }, { level: 24, otherLevel: 88 }]) { + for (const tier of [undefined, 0, 1, 2, 3]) { + const f = fixture(scenario); + f.tool.shushu_Track('enter_stage', { pilot_drop: tier }); + assert.equal(f.events[0].data.pilot_drop, tier || 0); + assert.equal(typeof f.events[0].data.pilot_drop, 'number'); + } + } +}); + for (const scenario of [ { name: 'first stage', level: 0, stage: 1 }, { name: 'ordinary stage', level: 41, stage: 42 }, diff --git a/tools/test-start-boosters.cjs b/tools/test-start-boosters.cjs new file mode 100644 index 00000000..97b20f90 --- /dev/null +++ b/tools/test-start-boosters.cjs @@ -0,0 +1,576 @@ +const test = require('node:test'); +const assert = require('node:assert/strict'); +const fs = require('node:fs'); +const path = require('node:path'); +const vm = require('node:vm'); + +// Reuse the real-prefab Cocos fixture without registering the older suite's tests. +const support = { exports: {} }; +vm.runInNewContext(fs.readFileSync(path.join(__dirname, 'test-rainbow-streak.cjs'), 'utf8') + + '\nmodule.exports = { load, method, rules, engine, block, geometry, cloneNode, cutFixture, controllerFixture };', { + require: name => name === 'node:test' ? () => {} : require(name), + module: support, __dirname, console, process, Set, Math, +}); +const { load, method, rules, engine, block, geometry, cloneNode, cutFixture, controllerFixture } = support.exports; +const rocket = load('assets/Script/RocketRules.ts', engine, { './RainbowRules': rules }); +const loadoutRules = load('assets/Script/StartBoostLoadout.ts', engine, {}); +const positions = cells => Array.from(cells, p => p.x + ',' + p.y).sort(); +const makeMap = blocks => ({ blocks: blocks.map(b => b.node), buttonBlock: [], wallArray: [] }); + +test('every cell in all 23 shapes can be cut; fragments retain every other cell exactly once', () => { + for (let shape = 0; shape < 23; shape++) { + const cells = rules.RAINBOW_SHAPES[shape], cuts = rocket.ROCKET_CUTS[shape]; + assert.equal(cuts.length, cells.length); + for (const cut of cuts) { + const remaining = cut.fragments.flatMap(f => rules.RAINBOW_SHAPES[f.shape].map(p => ({ x:p.x+f.offset.x,y:p.y+f.offset.y }))); + assert.deepEqual(positions([...remaining, cut.cell]), positions(cells)); + assert.equal(new Set(positions(remaining)).size, cells.length - 1); + } + assert.ok(rocket.rocketCuts(cells, true).every(cut => cut.fragments.length === 1)); + } + assert.ok(rocket.ROCKET_CUTS[18].some(cut => cut.fragments.length === 4)); + assert.equal(rocket.rocketCuts(rules.RAINBOW_SHAPES[0], true).length, 0); +}); + +test('ordinary, covered/mechanism and singleton tiers; edge protection also excludes special singletons', () => { + const plain = block(5), floor = block(5, 0, {floor:1}), question = block(5,16), single = block(0); + const map = makeMap([plain,floor,question,single]); + assert.deepEqual(Array.from(rocket.rocketCandidates(map), c => c.priority), [0,1,1,2]); + for (const type of [1,2,3,4,5,6,7,8,12,13,14,17,18,20,21]) { + const special = block(3,type); + const candidates = rocket.rocketCandidates(makeMap([special])); + assert.ok(candidates[0].cuts.every(c => c.fragments.length === 1)); + assert.equal(rocket.rocketCandidates(makeMap([block(0,type)])).length, 0); + } + const door = {special:2,color:2,colorStartArray:[]}; + map.wallArray = [{getChildByName:()=>({getComponent:()=>door})}]; + assert.equal(rocket.rocketCandidates(map).some(c=>c.block===single),false); + door.special=0; door.color=7; door.colorStartArray=[2,3]; + assert.equal(rocket.rocketCandidates(map).some(c=>c.block===single),false); + map.wallArray=[]; map.buttonBlock=[{getComponent:()=>({color:2})}]; + assert.equal(rocket.rocketCandidates(map).length,0); + const glue=block(5,9), partner=block(5); glue.block_Info.node=partner.node; + assert.equal(rocket.rocketCandidates(makeMap([glue,partner])).length,0); + const stack=block(5,1), upper=block(5,10); upper.color=7; stack.block_Info.node=upper.node; + const stacked=makeMap([stack,upper]); stacked.buttonBlock=[{getComponent:()=>({color:7})}]; + assert.equal(rocket.rocketCandidates(stacked).length,0); +}); + +test('pool recalculation precedes distinct-origin preference; repeated hits stay possible', () => { + const a=block(5), b=block(5), mech=block(5,2), single=block(0); + const map=makeMap([a,b,mech,single]), hit=new Set([a.node.uuid]); + assert.equal(rocket.chooseRocketTarget(rocket.rocketCandidates(map),hit,3,()=>0).target.block,b); + hit.add(b.node.uuid); + assert.equal(rocket.chooseRocketTarget(rocket.rocketCandidates(map),hit,3,()=>0).target.block,a); + map.blocks=[mech.node,single.node]; + assert.equal(rocket.chooseRocketTarget(rocket.rocketCandidates(map),hit,2,()=>0).target.block,mech); +}); + +function rocketFixture(shape,type=0) { + const f=cutFixture(shape,type); + const cc={...engine, instantiate(source) { + if(source.prefabShape===undefined) return cloneNode(source); + const extra=geometry(source.prefabShape); + extra.init=function(info) { + Object.assign(this,{block_Info:info,blockId:info.id,color:info.color,type:info.type}); + this.initBlocks(); this.posX=(this.node.x-65)/120;this.posY=(this.node.y+60)/120; + this.setMapBlock=place;place.call(this); + if(info.type===16)this.node.addChild(cover('question',info.questionTime)); + if(info.floor)for(const p of this.allBlocks){const floor=cover('floor',info.floorTime);floor.setPosition(-65+p.x*120,60+p.y*120);this.node.addChild(floor);} + }; + return extra.node; + }}; + function place(){this.allBlocks.forEach(p=>Object.assign(f.map.mapBlocksWall[this.posX+p.x][this.posY+p.y].components.MapBlock,{block_Id:this.node.uuid,nowColor:this.color}));} + f.apply=load('assets/Script/RocketCut.ts',cc,{'./RainbowCut':f.cut,'./RainbowRules':rules,'./RocketRules':rocket}).applyRocketCut; + return f; +} + +function cover(name,time){ + const node=new engine.Node(name), component=name==='floor'?'Floor':'Question'; + node.components[component]={time,init(value,x,y){this.time=value;this.posX=x;this.posY=y;}}; + const icon=new engine.Node('icon');icon.addComponent(engine.Sprite);node.addChild(icon);node.addChild(new engine.Node('time')); + return node; +} + +test('actual prefab cuts, including 2/3/4-way splits, leave correct independent colliders and occupancy without elimination events',()=>{ + for(let shape=0;shape<23;shape++)for(const cut of rocket.ROCKET_CUTS[shape]){ + const f=rocketFixture(shape), original=f.b.node.uuid; + const expected=positions(f.b.allBlocks.filter(p=>p.x!==cut.cell.x||p.y!==cut.cell.y).map(p=>({x:p.x+5,y:p.y+5}))); + f.apply(f.map,f.b,cut); + const actual=[]; + for(const node of f.map.blocks){ + const b=node.getComponent('Block'); + assert.equal(b.color,2); + assert.equal(b.rocketOrigin,original); + for(const p of b.allBlocks){ + const x=b.posX+p.x,y=b.posY+p.y;actual.push({x,y}); + assert.equal(f.map.mapBlocksWall[x][y].components.MapBlock.block_Id,node.uuid); + } + assert.deepEqual(positions(node.getComponent(engine.PolygonCollider).points),positions(geometry(b.block_Info.block).node.getComponent(engine.PolygonCollider).points)); + } + assert.deepEqual(positions(actual),expected); + assert.equal(f.map.mapBlocksWall[5+cut.cell.x][5+cut.cell.y].components.MapBlock.block_Id,''); + assert.equal(f.map.blocks.length,cut.fragments.length); + assert.equal(f.effects(),0); + } +}); + +test('1932 square can take three sequential edge hits and retains one ordinary cell',()=>{ + const f=rocketFixture(5),hit=new Set(); Object.assign(f.map,{buttonBlock:[],wallArray:[]}); + for(let left=3;left>0;left--){ + const choice=rocket.chooseRocketTarget(rocket.rocketCandidates(f.map),hit,left,()=>0.8); + assert.ok(choice);assert.equal(choice.cut.fragments.length,1); + f.apply(f.map,choice.target.block,choice.cut);hit.add(choice.target.origin); + } + assert.equal(f.map.blocks.length,1);assert.equal(f.b.allBlocks.length,1);assert.equal(f.effects(),0); +}); + +test('question and stationary floor shells follow all four remnants and preserve current counters',()=>{ + const f=rocketFixture(18,16); + Object.assign(f.b.block_Info,{floor:3,floorTime:99,questionTime:99}); + f.b.node.addChild(cover('question',4)); + for(const p of f.b.allBlocks){const floor=cover('floor',7);floor.setPosition(-65+p.x*120,60+p.y*120);f.b.node.addChild(floor);} + f.apply(f.map,f.b,rocket.ROCKET_CUTS[18].find(c=>c.fragments.length===4)); + assert.equal(f.map.blocks.length,4); + for(const node of f.map.blocks){ + const b=node.getComponent('Block'),q=node.getChildByName('question'); + assert.equal(q.getComponent('Question').time,4); + const floors=node.children.filter(n=>n.getComponent('Floor')); + assert.equal(floors.length,1);assert.equal(floors[0].getComponent('Floor').time,7); + assert.equal(floors[0].getComponent('Floor').posX,b.posX); + assert.equal(floors[0].getComponent('Floor').posY,b.posY); + } + assert.equal(f.effects(),0); +}); + +test('a stack keeps both layers aligned after the same edge cell is removed',()=>{ + const f=rocketFixture(5,1),upper=geometry(5);upper.type=10;upper.block_Info.type=10; + upper.block_Info.node=f.b.node;f.b.block_Info.node=upper.node;f.map.node.addChild(upper.node);f.map.blocks.push(upper.node); + const cut=rocket.ROCKET_CUTS[5][0];f.apply(f.map,f.b,cut); + assert.equal(f.b.allBlocks.length,3);assert.equal(upper.allBlocks.length,3); + assert.equal(upper.block_Info.node,f.b.node);assert.equal(f.b.block_Info.node,upper.node); + assert.equal(upper.block_Info.block,f.b.block_Info.block);assert.equal(upper.posX,f.b.posX);assert.equal(upper.posY,f.b.posY); + assert.equal(f.effects(),0); +}); + +test('simultaneous shot planning leaves the board untouched and all planned cuts remain legal after earlier impacts',()=>{ + for(let shape=0;shape<23;shape++)for(const value of [0,0.37,0.99]){ + const f=rocketFixture(shape);const before=positions(f.b.allBlocks); + const shots=rocket.planRocketShots(f.map,3,()=>value); + assert.deepEqual(positions(f.b.allBlocks),before);assert.equal(f.map.blocks.length,1); + assert.equal(new Set(shots.map(s=>s.x+','+s.y)).size,shots.length); + const hit=new Set(); + for(let i=0;in.uuid===id).getComponent('Block'); + const pool=rocket.rocketCandidates(f.map),candidate=pool.find(c=>c.block===target); + assert.ok(candidate);assert.equal(candidate.priority,Math.min(...pool.map(c=>c.priority))); + assert.equal(shot.origin,candidate.origin); + if(pool.some(c=>c.priority===candidate.priority&&!hit.has(c.origin)))assert.equal(hit.has(candidate.origin),false); + assert.ok(candidate.cuts.some(c=>JSON.stringify(c)===JSON.stringify(shot.cut))); + hit.add(candidate.origin);f.apply(f.map,target,shot.cut); + } + assert.equal(f.map.blocks.reduce((sum,n)=>sum+n.getComponent('Block').allBlocks.length,0),before.length-shots.length); + assert.equal(f.effects(),0); + } + // 强制先拆开 L 形,再命中其两格残块,最后转入单格池。 + const f=rocketFixture(6),others=[block(0),block(0)]; + others.forEach((b,i)=>{b.posX=1;b.posY=1+i;f.map.mapBlocksWall[1][1+i].components.MapBlock.block_Id=b.node.uuid;}); + f.map.blocks.push(...others.map(b=>b.node)); + const center=rocket.ROCKET_CUTS[6].findIndex(c=>c.fragments.length===2); + const randoms=[0,(center+0.1)/4,0,0,0,0]; + const shots=rocket.planRocketShots(f.map,3,()=>randoms.shift()); + assert.equal(shots[0].cut.fragments.length,2); + assert.equal(shots.length,3); + for(const shot of shots){ + const id=f.map.mapBlocksWall[shot.x][shot.y].components.MapBlock.block_Id; + const target=f.map.blocks.find(n=>n.uuid===id).getComponent('Block'); + assert.ok(rocket.rocketCandidates(f.map).find(c=>c.block===target).cuts.some(c=>JSON.stringify(c)===JSON.stringify(shot.cut))); + f.apply(f.map,target,shot.cut); + } + assert.equal(f.map.blocks.reduce((sum,n)=>sum+n.getComponent('Block').allBlocks.length,0),3); +}); + +function openingFixture(f=rocketFixture(5),random=()=>0.8,loadout={streak:3,hourglass:true,rocket:true}) { + engine.Node.prototype.setScale=function(x,y=x){this.scaleX=x;this.scaleY=y;}; + Object.defineProperty(engine.Node.prototype,'childrenCount',{get(){return this.children.length;},configurable:true}); + // zhandan.json 的真实 eff 长 1.4 秒,避免短 Mock 漏掉爆炸被提前截断的问题。 + class Label{};class LabelOutline{};class Skeleton{constructor(){this.track={animation:{duration:1.4},trackTime:0};this.setAnimation=()=>this.track;}} + class OpeningNode extends engine.Node { + convertToNodeSpaceAR(p){return engine.v2(p.x-this.x,p.y-this.y);} + } + const canvas=new engine.Node('Canvas'),events=[],displayed=[],impacts=[],usedCarried=[]; + Object.assign(f.map,{wallArray:[],buttonBlock:[],timeLabel:new engine.Node('time'),timeNumber:120, + addTime:method('assets/Script/Map.ts','addTime',{NumberToImage:{getTimeMargi3:n=>displayed.push(n)}}),Block_Prop:[]}); + const addTime=f.map.addTime; + f.map.addTime=function(n,refresh){events.push('time');addTime.call(this,n,refresh);}; + const top=new engine.Node('Top'),clock=new engine.Node('time_icon'); + canvas.addChild(top);top.addChild(f.map.timeLabel);top.addChild(clock);clock.setPosition(-120,620); + clock.convertToWorldSpaceAR=()=>engine.v2(-120,620); + f.map.timeLabel.setPosition(0,600); + for(const name of ['hourglass','rocket','rocketBox'])f.map[name+'Prefab']=new engine.Node(name); + f.map.hourglassPrefab.setContentSize(228,322); + f.map.rocketPrefab.setContentSize(212,361); + const boxFrames=[null,...[[336,329],[406,378],[483,436]].map(([width,height])=>({getRect:()=>({width,height})}))]; + f.map.rocketBoxPrefab.setContentSize(483,436); + f.map.rocketBoxPrefab.addComponent(engine.Sprite).spriteFrame=boxFrames[3]; + f.map.SceneManager={getStartBoostBoxFrame:streak=>boxFrames[streak]}; + const bomb=new engine.Node('boom'),effect=new engine.Node('zhandan');effect.addComponent(Skeleton);bomb.addChild(effect);f.map.Block_Prop[6]=bomb; + for(const column of f.map.mapBlocksWall)for(const cell of column) + cell.convertToWorldSpaceAR=p=>engine.v2(cell.x+p.x,cell.y+p.y); + const listeners={}; + const cc={...engine,Node:OpeningNode,macro:{...engine.macro,ONE:1},Label,LabelOutline,winSize:{width:750,height:1334},find:()=>canvas,instantiate(source){ + const node=cloneNode(source); + node.convertToWorldSpaceAR=p=>engine.v2(node.x+p.x*node.scaleX+(node.parent?.x||0), + node.y+p.y*node.scaleY+(node.parent?.y||0)); + return node; + }, + game:{EVENT_HIDE:'hide',EVENT_SHOW:'show',on:(event,fn)=>listeners[event]=fn,off:event=>delete listeners[event]}}; + const module={exports:{}}; + const ts=require('typescript'); + vm.runInNewContext(ts.transpileModule(fs.readFileSync(path.join(__dirname,'../assets/Script/StartBoostOpening.ts'),'utf8'), + {compilerOptions:{target:ts.ScriptTarget.ES2017,module:ts.ModuleKind.CommonJS}}).outputText, + {module,exports:module.exports,cc,sp:{Skeleton},require:name=>name==='./RocketRules'?{...rocket, + planRocketShots:(map,count)=>rocket.planRocketShots(map,count,random)}: + name==='./StartBoostLoadout'?loadoutRules: + name==='./NumberToImage'?{default:{getTimeMargi3:n=>displayed.push(n)}}: + {applyRocketCut(map,target,cut){ + const candidate=rocket.rocketCandidates(map).find(c=>c.block===target); + assert.ok(candidate&&candidate.cuts.some(c=>JSON.stringify(c)===JSON.stringify(cut)), + 'each impact must still be a legal cut of the current target'); + impacts.push({x:target.posX+cut.cell.x,y:target.posY+cut.cell.y,origin:candidate.origin}); + events.push('rocket');f.apply(map,target,cut); + }},Set,Math,Uint8Array}); + const opening=new module.exports.default(f.map,loadout,prop=>usedCarried.push(prop)); + return {f,opening,events,displayed,impacts,usedCarried,boxFrames,listeners,clock,Label,addTime,Opening:module.exports.default}; +} + +test('all seven props launch together with distinct trails, grant exactly 40 seconds and three cuts only on impact',()=>{ + const {f,opening,events,displayed,listeners,clock,Label,addTime,Opening}=openingFixture(); + const assertMatchingSize=()=>{ + const hourglass=opening.items[0]; + for(const rocket of opening.items.slice(opening.hourglassCount)){ + if(!rocket.active&&opening.launched)continue; + const referenceScale=opening.launched?hourglass.scaleY/0.7:hourglass.scaleY; + assert.ok(Math.abs(rocket.height*rocket.scaleY-hourglass.height*referenceScale)<1e-6); + assert.equal(rocket.scaleX,rocket.scaleY); + } + }; + assertMatchingSize(); + assert.equal(opening.update(30,true),false);assert.equal(events.length,0); + listeners.hide();assert.equal(opening.update(30,false),false);assert.equal(events.length,0);listeners.show(); + const boxScale=opening.box.scaleX,boxY=opening.box.y; + opening.update(0.25,false); + assert.equal(opening.box.x,0);assert.equal(opening.box.y,boxY);assert.notEqual(opening.box.scaleX,boxScale); + assert.ok(opening.carriedEntries.every(e=>e.node.active&&!e.arrived));assert.equal(events.length,0); + opening.update(0.3,false); + assert.equal(opening.carriedEntries.length,2); + assert.ok(opening.carriedEntries.every(e=>e.node.active&&e.trail&&!e.arrived)); + assert.ok(opening.carriedEntries[0].from.xe.from.y[e.node.x,e.node.y]); + listeners.hide();opening.update(30,false);listeners.show(); + assert.deepEqual(opening.carriedEntries.map(e=>[e.node.x,e.node.y]),entryPositions); + opening.update(0.1,false); + assert.ok(opening.carriedEntries.every(e=>e.arrived));assert.equal(opening.flights.length,0); + assert.equal(opening.box.scaleX,boxScale);assert.equal(opening.box.opacity,255); + const settledPositions=opening.carriedEntries.map(e=>[e.node.x,e.node.y]); + assert.equal(events.length,0);assert.equal(f.b.allBlocks.length,4); + opening.update(0.2,false); + assert.deepEqual(opening.carriedEntries.map(e=>[e.node.x,e.node.y]),settledPositions); + assert.ok(opening.box.active&&opening.launchCloud.active&&opening.launchCloud.opacity>0); + assert.equal(opening.flights.length,0);assert.equal(events.length,0); + opening.update(0.1,false); + assert.equal(opening.box.active,false);assert.ok(opening.launchCloud.active); + assert.equal(opening.box.x,0);assert.equal(opening.box.y,boxY); + assert.equal(opening.flights.length,7);assert.ok(opening.flights.every(f=>f.node.active&&!f.landed)); + assert.ok(opening.items.slice(0,opening.hourglassCount).every(n=>Math.abs(n.scaleY-0.65*0.7)<1e-6&&n.scaleX===n.scaleY)); + assert.ok(opening.launchCloud.children.every(n=>n.scaleX===n.scaleY),'smoke groups stay circular'); + assert.equal(events.length,0);assert.equal(f.b.allBlocks.length,4); + assert.equal(opening.flights.filter(f=>f.trail.node.name==='rocketSmoke').length,3); + assert.equal(opening.flights.filter(f=>f.trail.node.name==='hourglassGlow').length,4); + const clockTarget=opening.root.convertToNodeSpaceAR(clock.convertToWorldSpaceAR(engine.v2(0,0))); + for(const flight of opening.flights.slice(0,4))assert.deepEqual([flight.to.x,flight.to.y],[clockTarget.x,clockTarget.y]); + for(const flight of opening.flights.slice(0,4))assert.equal(flight.timeText.getComponent(Label).string,'+10'); + for(const flight of opening.flights){ + if(flight.shot){assert.ok(flight.trail.startSize>=36);assert.ok(flight.trail.endSize>=60);} + else { + assert.ok(flight.trail.startSize<36&&flight.trail.endSize!f.shot); + const bends=hourglasses.map(f=>f.control.x-(f.from.x+f.to.x)/2); + assert.ok(bends[0]<0&&bends[1]>0&&bends[2]<0&&bends[3]>0); + assert.equal(new Set(bends).size,4); + // Measure actual movement rather than trusting the precomputed length table. + const travelled=opening.flights.map(()=>0),arrivalTimes=opening.flights.map(()=>null),speeds=[]; + const rising=new Set(),falling=new Set(); + const step=1/240; + let done=false,checkedPause=false,sawStaggeredArrival=false,sawEffectsPending=false,sawDigitsPending=false; + for(let frame=1;frame<1200&&!done;frame++){ + const previous=opening.flights.map(f=>({x:f.node.x,y:f.node.y,landed:f.landed})); + const beforeTime=f.map.timeNumber; + done=opening.update(step,false); + assertMatchingSize(); + let newlyLanded=0; + opening.flights.forEach((flight,i)=>{ + if(previous[i].landed)return; + const distance=Math.hypot(flight.node.x-previous[i].x,flight.node.y-previous[i].y); + travelled[i]+=distance; + if(flight.shot&&flight.node.y>previous[i].y)rising.add(i); + if(flight.shot&&flight.node.y=1.4-track.trackTime,'the remaining real explosion must finish'); + } + assert.ok(flight.impactSeconds>=flight.trail.life+flight.trail.lifeVar,'the existing trail must finish'); + }else if(!flight.shot)speeds.push(distance/step); + }); + assert.equal(f.map.timeNumber,beforeTime+10*newlyLanded); + const landed=hourglasses.filter(f=>f.landed).length; + assert.equal(f.map.timeNumber,120+landed*10); + if(landed>0&&landed!f.landed); + const effectsPending=opening.flights.some(f=>f.landed&&f.impactElapsed=0.65)assert.equal(opening.launchCloud.active,false,'layered launch smoke finishes before opening completion'); + if(newlyLanded&&!checkedPause){ + const state=JSON.stringify([opening.elapsed,f.map.timeNumber,displayed, + opening.flights.map(f=>[f.node.x,f.node.y,f.landed,f.impactElapsed])]); + listeners.hide();assert.equal(opening.update(30,false),false);listeners.show(); + assert.equal(opening.update(30,true),false); + assert.equal(JSON.stringify([opening.elapsed,f.map.timeNumber,displayed, + opening.flights.map(f=>[f.node.x,f.node.y,f.landed,f.impactElapsed])]),state); + checkedPause=true; + } + } + assert.equal(done,true);assert.equal(checkedPause,true); + assert.ok(sawStaggeredArrival&&sawEffectsPending&&sawDigitsPending); + assert.equal(new Set(arrivalTimes.slice(0,hourglasses.length)).size,hourglasses.length); + assert.ok(Math.max(...speeds)/Math.min(...speeds)<1.02,'hourglasses keep the same speed along every curve'); + const averageSpeeds=travelled.map((distance,i)=>distance/arrivalTimes[i]); + for(const [first,last,expected] of [[0,hourglasses.length,1320],[hourglasses.length,opening.flights.length,950]]){ + const group=averageSpeeds.slice(first,last); + assert.ok(Math.max(...group)/Math.min(...group)<1.02,'each prop type keeps one travel speed'); + assert.ok(group.every(speed=>Math.abs(speed/expected-1)<0.02),'rocket timing must not change hourglass speed'); + } + assert.equal(rising.size,3);assert.equal(falling.size,3); + assert.equal(events.filter(event=>event==='time').length,4); + assert.equal(events.filter(event=>event==='rocket').length,3); + assert.equal(opening.launchCloud.active,false); + assert.equal(f.map.timeNumber,160);assert.equal(f.b.allBlocks.length,1); + assert.deepEqual(displayed,Array.from({length:40},(_,i)=>121+i)); + // 普通道具调用仍立即更新数字;只有开场演出显式延迟显示。 + addTime.call(f.map,10);assert.equal(displayed[displayed.length-1],170); + opening.dispose();assert.equal(Object.keys(listeners).length,0); + assert.equal(opening.update(10,false),true);assert.equal(events.length,7); + for(const carried of [{hourglass:true,rocket:false},{hourglass:false,rocket:true},{hourglass:false,rocket:false}]){ + const next=rocketFixture(5); + Object.assign(next.map,{timeLabel:f.map.timeLabel,Block_Prop:f.map.Block_Prop, + hourglassPrefab:f.map.hourglassPrefab,rocketPrefab:f.map.rocketPrefab,rocketBoxPrefab:f.map.rocketBoxPrefab, + SceneManager:f.map.SceneManager}); + const entry=new Opening(next.map,{streak:3,...carried},()=>{}); + entry.update(0.65,false); + assert.equal(entry.carriedEntries.length,Number(carried.hourglass)+Number(carried.rocket)); + assert.equal(entry.carriedEntries.some(e=>!e.rocket),carried.hourglass); + assert.equal(entry.carriedEntries.some(e=>e.rocket),carried.rocket); + entry.update(0.3,false); + assert.equal(entry.flights.filter(f=>!f.shot).length,3+Number(carried.hourglass)); + assert.equal(entry.flights.filter(f=>f.shot).length,2+Number(carried.rocket)); + entry.dispose();assert.equal(Object.keys(listeners).length,0); + } +}); + +test('real streak tiers and carried selections determine counts, box frame and actual-use callbacks',()=>{ + const rewards=[[0,0],[2,0],[2,1],[3,2]]; + for(let streak=0;streak<=3;streak++)for(const hourglass of [false,true])for(const rocket of [false,true]){ + const loadout={streak,hourglass,rocket}; + const {f,opening,usedCarried,boxFrames}=openingFixture(rocketFixture(5),()=>0.8,loadout); + const [freeHourglass,freeRocket]=rewards[streak]; + assert.equal(opening.hourglassCount,freeHourglass+Number(hourglass)); + assert.equal(opening.rocketCount,freeRocket+Number(rocket)); + assert.equal(opening.box.active,streak>0); + assert.equal(opening.carriedEntries.length,Number(hourglass)+Number(rocket)); + if(streak>0){ + assert.equal(opening.box.getComponent(engine.Sprite).spriteFrame,boxFrames[streak]); + const rect=boxFrames[streak].getRect(); + assert.equal(opening.box.height,436,'box height remains stable'); + assert.ok(Math.abs(opening.box.width/opening.box.height-rect.width/rect.height)<1e-8,'box aspect ratio is preserved'); + } + for(const entry of opening.carriedEntries){ + const expectedIndex=entry.rocket?opening.hourglassCount+freeRocket:freeHourglass; + assert.equal(entry.node,opening.items[expectedIndex]); + } + for(const node of opening.items.slice(opening.hourglassCount)){ + assert.ok(Math.abs(node.height*node.scaleY-322*0.65)<1e-6,'rocket-only loadouts keep the same initial size'); + assert.equal(node.scaleX,node.scaleY); + } + opening.update(0.85,false); + assert.deepEqual(usedCarried,[],'selection and entry do not consume inventory'); + assert.equal(opening.launchCloud.children.length,Number(streak>0)+Number(hourglass)+Number(rocket)); + opening.update(0.11,false); + assert.equal(opening.flights.filter(f=>!f.shot).length,freeHourglass+Number(hourglass)); + assert.equal(opening.flights.filter(f=>f.shot).length,freeRocket+Number(rocket)); + assert.deepEqual(usedCarried,[...(hourglass?['hourglass']:[]),...(rocket?['rocket']:[])]); + let done=false; + for(let frame=0;frame<1200&&!done;frame++)done=opening.update(1/120,false); + assert.equal(done,true,JSON.stringify(loadout)); + assert.equal(f.map.timeNumber,120+10*(freeHourglass+Number(hourglass))); + assert.deepEqual(usedCarried,[...(hourglass?['hourglass']:[]),...(rocket?['rocket']:[])],'each carried item is reported only once'); + opening.dispose(); + } +}); + +test('empty rocket pools finish without consuming carried rockets, including rocket-only openings',()=>{ + for(const loadout of [{streak:0,hourglass:false,rocket:true},{streak:1,hourglass:true,rocket:true},{streak:3,hourglass:false,rocket:true}]){ + const {f,opening,usedCarried,events}=openingFixture(rocketFixture(0,2),()=>0,loadout); + opening.update(1.21,false); + assert.equal(opening.flights.some(f=>f.shot),false); + assert.deepEqual(usedCarried,loadout.hourglass?['hourglass']:[]); + if(!opening.hourglassCount)assert.equal(opening.update(0.26,false),false,'finish waits for the existing entry trail to fade'); + let done=false; + for(let frame=0;frame<1200&&!done;frame++)done=opening.update(1/120,false); + assert.equal(done,true); + assert.equal(events.includes('rocket'),false); + assert.equal(f.map.blocks.length,1); + assert.equal(opening.launchCloud.active,false); + opening.dispose(); + } +}); + +test('longer arcs preserve repeated square and protected-edge impacts even when all shots land in one update',()=>{ + for(const [shape,type,count] of [[5,0,3],[3,2,2]])for(const step of [1/240,0.25,10]){ + const f=rocketFixture(shape,type),shots=rocket.planRocketShots(f.map,3,()=>0); + const {opening,impacts,usedCarried}=openingFixture(f,()=>0); + assert.equal(shots.length,count); + // The later targets are much closer, so their original arcs would overtake the first shot. + shots.forEach((shot,i)=>f.map.mapBlocksWall[shot.x][shot.y].convertToWorldSpaceAR= + ()=>engine.v2(500,i===0?-1000:600)); + opening.update(1.21,false); + const flights=opening.flights.filter(f=>f.shot); + assert.equal(usedCarried.includes('rocket'),count>2,'free rockets are used before consuming a carried rocket'); + assert.ok(flights.every(f=>!f.landed&&f.node.active)); + assert.equal(new Set(flights.map(f=>f.shot.origin)).size,1); + for(let i=1;i=previous+95-1e-6,'same-origin arrivals retain at least 0.1 seconds separation'); + assert.ok(flights[i].control.y>Math.max(flights[i].from.y,flights[i].to.y)+480, + 'only the otherwise-too-short later arc is extended'); + } + let done=false; + for(let frame=0;frame<3000&&!done;frame++){ + done=opening.update(step,false); + if(opening.flights.some(f=>!f.landed||f.impactElapsed[s.x,s.y,s.origin]),Array.from(shots,s=>[s.x,s.y,s.origin])); + assert.equal(f.map.blocks.length,1);assert.equal(f.b.allBlocks.length,1); + assert.equal(f.effects(),0);opening.dispose(); + } +}); + +test('different original blocks may land out of planning order and finish only after the last explosion',()=>{ + const f=rocketFixture(5); + for(const [x,y] of [[2,10],[10,10]]){ + const b=geometry(5);b.posX=x;b.posY=y;b.node.setPosition(x*120+65,y*120-60); + b.setMapBlock=f.b.setMapBlock;b.setMapBlock();f.map.node.addChild(b.node);f.map.blocks.push(b.node); + } + const shots=rocket.planRocketShots(f.map,3,()=>0),{opening,impacts}=openingFixture(f,()=>0); + assert.equal(new Set(shots.map(s=>s.origin)).size,3); + shots.forEach((shot,i)=>f.map.mapBlocksWall[shot.x][shot.y].convertToWorldSpaceAR= + ()=>engine.v2(500,[-1000,650,200][i])); + opening.update(1.21,false); + const flights=opening.flights.filter(f=>f.shot); + assert.ok(flights[1].distances.at(-1)f.impactElapsedsum+n.getComponent('Block').allBlocks.length,0),9); + assert.equal(f.effects(),0);opening.dispose(); +}); + +test('B opening casts before first touch without starting countdown, then preserves normal recharge behavior',()=>{ + const f=controllerFixture([block(5)]);f.map.gameStart=false;f.map.scheduleCallback=null; + f.controller.startOpening();assert.equal(f.controller.casting,true); + assert.equal(f.controller.updateOpening(1),true); + assert.equal(f.applied.length,1);assert.equal(f.map.gameStart,false);assert.equal(f.controller.energy.value,0); + f.controller.update(10);assert.equal(f.applied.length,1);assert.equal(f.controller.energy.value,0); + f.map.gameStart=true;f.map.scheduleCallback=()=>{}; + f.controller.update(1);assert.equal(f.controller.energy.value,1); +}); + +test('first touch/countdown is rejected while the booster opening is pending',()=>{ + const start=method('assets/Script/Map.ts','startUpdate'); + const map={startBoostPreparing:true,gameStart:false}; + start.call(map);assert.equal(map.gameStart,false); + const countdown=method('assets/Script/Map.ts','startTimeCutDown'); + countdown.call(map);assert.equal(map.scheduleCallback,undefined); + const touch=method('assets/Script/Block.ts','touchStart',{MapConroler:{default:{_instance:map},_instance:map}}); + touch.call({},{});assert.equal(map.gameStart,false); +}); + +test('all shipped levels retain legal targets for three sequential shots under the final priority/protection rules',()=>{ + const folder=path.join(__dirname,'../assets/custom/Json'); + const files=fs.readdirSync(folder).filter(name=>/^level\d+\.json$/.test(name)); + const sort=method('assets/Script/Map.ts','sortBlock'); + for(const file of files){ + const data=JSON.parse(fs.readFileSync(path.join(folder,file),'utf8').replace(/^\uFEFF/,'')); + for(const randomValue of [0,0.37,0.99]){ + const originals=data.BLOCK_INFO[0].map(info=>({...info})); + const sorted=sort.call({floorMove:originals.some(b=>b.floorMove===true)},originals); + const blocks=sorted.map(info=>{ + const b=block(info.block,info.type,info);b.color=info.color; + if(info.type!==16&&info.colorArray!=null)b.color=Number(String(info.colorArray)[0])+1; + b.flowerType=info.flowerSend?1:info.flowerReceive?2:0; + return b; + }); + for(let i=0;iinfo.unLockFall&&info.color>0&&!('vine'in info)) + .map(info=>({getComponent:()=>({color:info.color})})); + map.wallArray=data.WALL_INFO[0].map(info=>({getChildByName:()=>({getComponent:()=>({ + special:info.special,color:info.stickLength?30:info.color, + colorStartArray:info.colorArray!=null?String(info.colorArray).split('').map(c=>Number(c)+1):[] + })})})); + const hit=new Set(); + for(let left=3;left>0;left--){ + const choice=rocket.chooseRocketTarget(rocket.rocketCandidates(map),hit,left,()=>randomValue); + assert.ok(choice,file+' shot '+(4-left)); + const b=choice.target.block;hit.add(choice.target.origin); + map.blocks=map.blocks.filter(n=>n!==b.node); + for(const fragment of choice.cut.fragments){ + const child=block(fragment.shape,b.type,{...b.block_Info,block:fragment.shape}); + child.color=b.color;child.flowerType=b.flowerType;child.rocketOrigin=choice.target.origin; + map.blocks.push(child.node); + } + } + } + } + console.log('Rocket scan: '+files.length+' level files, 3 paths per level, 3 shots per path.'); +}); diff --git a/tools/test-three-win-streak.cjs b/tools/test-three-win-streak.cjs new file mode 100644 index 00000000..0e46baae --- /dev/null +++ b/tools/test-three-win-streak.cjs @@ -0,0 +1,177 @@ +const test = require('node:test'); +const assert = require('node:assert/strict'); +const fs = require('node:fs'); +const path = require('node:path'); +const vm = require('node:vm'); +const ts = require(process.env.TYPESCRIPT_PATH || 'typescript'); + +const read = file => fs.readFileSync(path.join(__dirname, '..', file), 'utf8'); +const compile = text => ts.transpileModule(text, { + compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2017 }, +}).outputText; + +function fixture(cache = {}, acknowledge = true) { + const storage = { ...cache }, saves = []; + const cc = { fx: { + GameConfig: { GM_INFO: { threeWinStreak: 0, winStreak: 10, uid: 'test-user' } }, + StorageMessage: { getStorage: key => storage[key], setStorage: (key, value) => storage[key] = value }, + } }; + const utils = { setWinStreak(callback, fields) { + saves.push({ fields, callback }); + if (acknowledge) callback({ code: 1 }); + } }; + const output = { exports: {} }; + vm.runInNewContext(compile(read('assets/Script/ThreeWinStreak.ts')), { + exports: output.exports, module: output, cc, + require: name => { assert.equal(name, './module/Pay/Utils'); return { default: utils }; }, + }); + return { Streak: output.exports.default, info: cc.fx.GameConfig.GM_INFO, storage, saves, cc }; +} + +test('existing accounts without the new field start at zero, independent of ten wins', () => { + const f = fixture({ threeWinStreak: 2 }); + f.Streak.restore(); + assert.equal(f.info.threeWinStreak, 2); + f.Streak.restore({}); + assert.equal(f.info.threeWinStreak, 0); + assert.equal(f.info.winStreak, 10); + assert.equal(f.saves.length, 0); +}); + +test('test mode holds three wins through login, losses, wins and relaunch without persisting the override', () => { + const cache = { threeWinStreak: 1, threeWinStreakPending: false, threeWinStreakUnsynced: null }; + const f = fixture(cache); + f.cc.fx.GameConfig.forceThreeWinStreak = true; + f.Streak.restore(); + assert.equal(f.info.threeWinStreak, 3); + f.Streak.restore({ threeWinStreak: 0 }, true); + assert.equal(f.info.threeWinStreak, 3); + new f.Streak(true).fail(); + for (const result of ['fail', 'win', 'fail']) { + const round = new f.Streak(true); + round.begin(); + round[result](); + assert.equal(f.info.threeWinStreak, 3); + assert.deepEqual(f.storage, cache); + } + assert.equal(f.info.winStreak, 10); + assert.equal(f.saves.length, 0); + const reloaded = fixture(f.storage); + reloaded.cc.fx.GameConfig.forceThreeWinStreak = true; + reloaded.Streak.restore(); + reloaded.Streak.restore({ threeWinStreak: 0 }); + assert.equal(reloaded.info.threeWinStreak, 3); + + f.cc.fx.GameConfig.forceThreeWinStreak = false; + f.Streak.restore(); + assert.equal(f.info.threeWinStreak, 1); + const round = new f.Streak(true); + round.begin(); + round.fail(); + assert.equal(f.info.threeWinStreak, 0); + assert.equal(f.saves.length, 1); +}); + +test('success grows through three tiers and stays capped; each round settles only once', () => { + const f = fixture(); + for (const expected of [1, 2, 3, 3, 3]) { + const round = new f.Streak(true); + round.begin(); + round.begin(); + round.win(); + round.win(); + round.fail(); + assert.equal(f.info.threeWinStreak, expected); + assert.equal(f.storage.threeWinStreakPending, false); + } + assert.equal(f.saves.length, 5); + assert.ok(f.saves.every(save => !('winStreak' in save.fields))); +}); + +test('giving up at one, two, or three wins clears the streak, but untouched restart does not', () => { + for (const count of [1, 2, 3]) { + const f = fixture(); + f.Streak.restore({ threeWinStreak: count }); + const round = new f.Streak(true); + round.fail(); + assert.equal(f.info.threeWinStreak, count); + assert.equal(f.saves.length, 0); + round.begin(); + round.fail(); + round.fail(); + round.win(); + assert.equal(f.info.threeWinStreak, 0); + assert.equal(f.saves.length, 1); + } +}); + +test('a pre-unlock round remains ineligible; opening boosters can finish an eligible round before a touch', () => { + const f = fixture(); + const beforeUnlock = new f.Streak(false); + beforeUnlock.begin(); + beforeUnlock.win(); + beforeUnlock.fail(); + assert.equal(f.info.threeWinStreak, 0); + assert.equal(f.saves.length, 0); + new f.Streak(true).win(); + assert.equal(f.info.threeWinStreak, 1); +}); + +test('revival leaves the same started round pending until it wins', () => { + const f = fixture(); + f.Streak.restore({ threeWinStreak: 1 }); + const round = new f.Streak(true); + round.begin(); + // A failure popup / revival does not finalize the round. + round.begin(); + assert.equal(f.info.threeWinStreak, 1); + assert.equal(f.storage.threeWinStreakPending, true); + round.win(); + assert.equal(f.info.threeWinStreak, 2); + assert.equal(f.storage.threeWinStreakPending, false); +}); + +test('an abandoned started round clears on relaunch and cannot be restored by a stale server value', () => { + const f = fixture({ threeWinStreak: 2, threeWinStreakPending: true }, false); + f.Streak.restore(); + assert.equal(f.info.threeWinStreak, 0); + assert.equal(f.storage.threeWinStreakUnsynced, 0); + f.Streak.restore({ threeWinStreak: 2 }); + assert.equal(f.info.threeWinStreak, 0); + assert.equal(f.saves[0].fields.threeWinStreak, 0); + const reloaded = fixture(f.storage); + reloaded.Streak.restore(); + reloaded.Streak.restore({ threeWinStreak: 2 }); + assert.equal(reloaded.info.threeWinStreak, 0); + assert.equal(reloaded.storage.threeWinStreakUnsynced, null); +}); + +test('an older save callback cannot clear a newer unsynced result; forced server refresh replaces local data', () => { + const f = fixture({}, false); + new f.Streak(true).win(); + const next = new f.Streak(true); + next.begin(); + next.fail(); + f.saves[0].callback({ code: 1 }); + assert.equal(f.storage.threeWinStreakUnsynced, 0); + f.Streak.restore({ threeWinStreak: 2 }, true); + assert.equal(f.info.threeWinStreak, 2); + assert.equal(f.storage.threeWinStreakUnsynced, null); + assert.equal(f.storage.threeWinStreakPending, false); +}); + +test('the shared save endpoint sends only the explicitly selected streak field', () => { + const f = fixture(); + const source = ts.createSourceFile('Utils.ts', read('assets/Script/module/Pay/Utils.ts'), ts.ScriptTarget.Latest, true); + const type = source.statements.find(node => ts.isClassDeclaration(node) && node.name.text === 'Utils'); + const member = type.members.find(node => node.name && node.name.getText(source) === 'setWinStreak'); + const Utils = vm.runInNewContext(compile('class Utils {' + member.getText(source) + '}\nUtils;'), { cc: f.cc, wx: {} }); + const payloads = []; + Utils.POST = (endpoint, payload) => { assert.equal(endpoint, 'setWinStreak'); payloads.push(payload); }; + Utils.setWinStreak(() => {}); + Utils.setWinStreak(() => {}, { threeWinStreak: 2 }); + assert.equal(payloads[0].winStreak, 10); + assert.equal('threeWinStreak' in payloads[0], false); + assert.equal(payloads[1].threeWinStreak, 2); + assert.equal('winStreak' in payloads[1], false); +}); diff --git a/tools/test-three-wins-flow.cjs b/tools/test-three-wins-flow.cjs new file mode 100644 index 00000000..bb54e411 --- /dev/null +++ b/tools/test-three-wins-flow.cjs @@ -0,0 +1,421 @@ +const test = require('node:test'); +const assert = require('node:assert/strict'); +const fs = require('node:fs'); +const path = require('node:path'); +const vm = require('node:vm'); +const ts = require(process.env.TYPESCRIPT_PATH || 'typescript'); +const read = file => fs.readFileSync(path.join(__dirname, '..', file), 'utf8'); +const compile = text => ts.transpileModule(text, { compilerOptions: { + module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2017, +} }).outputText; + +function method(file, name, globals = {}, objectName) { + const source = ts.createSourceFile(file, read(file), ts.ScriptTarget.Latest, true); + const type = objectName + ? source.statements.filter(ts.isVariableStatement).flatMap(node => Array.from(node.declarationList.declarations)) + .find(node => node.name.getText(source) === objectName).initializer + : source.statements.find(ts.isClassDeclaration); + const member = (type.members || type.properties).find(node => node.name && node.name.getText(source) === name); + assert.ok(member, name); + const Subject = vm.runInNewContext(compile('class Subject {' + member.getText(source) + '}\nSubject;'), { ...globals }); + return Subject.prototype[name] || Subject[name]; +} + +const output = { exports: {} }; +vm.runInNewContext(compile(read('assets/Script/StartBoostLoadout.ts')), { module: output, exports: output.exports, Date }); +const boosts = output.exports; + +test('remaining badges track each inventory, selection and live depletion without repainting unchanged values', () => { + const prefab = JSON.parse(read('assets/prefab/pop/threeWins.prefab')); + function build(index) { + const source = prefab[index]; + return { name: source._name, active: source._active, + children: (source._children || []).map(child => build(child.__id__)), + getChildByName(name) { return this.children.find(child => child.name === name); } }; + } + const panel = { node: build(1), data: null, selected: { hourglass: false, rocket: false }, playEntry() {}, + renderNumber(node, value) { node.value = value; node.renders = (node.renders || 0) + 1; }, + clearNumber(node) { node.value = null; }, addCountSymbol(node, text) { node.value = text; } }; + for (const name of ['renderProp', 'refreshInventory', 'setSelected']) { + panel[name] = method('assets/Script/ThreeWinsPanel.ts', name); + } + const inventory = { hourglassAmount: 3, rocketAmount: 0, infiniteHourglass: false, infiniteRocket: false }; + const manager = { threeWinsPanel: panel, threeWinsData: () => ({ ...inventory }), node: { getChildByName: () => null } }; + const update = method('assets/Script/SceneManager.ts', 'update'); + const state = (prop, visible, count) => { + const node = panel.node.getChildByName(prop); + for (const name of ['add', 'select', 'remaining']) assert.equal(node.getChildByName(name).active, name === visible); + assert.equal(node.getChildByName('remaining').getChildByName('number').value, count); + assert.equal(node.getChildByName('amount'), undefined); + }; + update.call(manager, 0); + state('hourglass', 'remaining', 3); state('rocket', 'add', 0); + const number = panel.node.getChildByName('hourglass').getChildByName('remaining').getChildByName('number'); + update.call(manager, 0); + assert.equal(number.renders, 1, 'unchanged stock does not rebuild the digits every frame'); + panel.setSelected('hourglass', true); state('hourglass', 'select', 3); + panel.setSelected('hourglass', false); state('hourglass', 'remaining', 3); + panel.setSelected('rocket', true); state('rocket', 'add', 0); + assert.equal(panel.selected.rocket, false); + inventory.rocketAmount = 2; + update.call(manager, 0); state('rocket', 'remaining', 2); + panel.setSelected('rocket', true); state('rocket', 'select', 2); + inventory.hourglassAmount = 12; + update.call(manager, 0); state('hourglass', 'remaining', 12); state('rocket', 'select', 2); + inventory.rocketAmount = -1; + update.call(manager, 0); state('rocket', 'add', -1); + assert.equal(panel.selected.rocket, false, 'depletion clears stale selection'); + inventory.rocketAmount = 0; inventory.infiniteRocket = true; + update.call(manager, 0); state('rocket', 'remaining', '∞'); + panel.setSelected('rocket', true); state('rocket', 'select', '∞'); + inventory.infiniteRocket = false; + update.call(manager, 0); state('rocket', 'add', 0); + assert.equal(panel.selected.rocket, false, 'expiry restores the unavailable state'); + manager.threeWinsPanel = null; + update.call(manager, 0); +}); + +test('GameScene references all opening prefabs so release builds include them', () => { + const scene = JSON.parse(read('assets/Scene/GameScene.fire')); + const map = scene.find(component => Object.hasOwn(component, 'hourglassPrefab')); + assert.ok(map); + for (const prop of ['hourglass', 'rocket', 'rocketBox']) { + const meta = JSON.parse(read(`assets/prefab/prop/${prop}.prefab.meta`)); + assert.equal(map[prop + 'Prefab']?.__uuid__, meta.uuid, `${prop} prefab must be bound to GameScene`); + } +}); + +test('carried boosters report one cost only when stock is consumed, excluding gifts, replays and infinite uses', () => { + const source = ts.createSourceFile('Map.ts', read('assets/Script/Map.ts'), ts.ScriptTarget.Latest, true); + let callback; + const visit = node => { + if (ts.isNewExpression(node) && node.expression.getText(source) === 'StartBoostOpening') callback = node.arguments[2]; + ts.forEachChild(node, visit); + }; + visit(source); + assert.ok(callback); + for (const streak of [0, 1, 2, 3]) { + for (const prop of ['hourglass', 'rocket']) { + for (const mode of ['selected', 'gift', 'infinite']) { + const info = { hourglassAmount: 2, rocketAmount: 2 }; + if (mode === 'infinite') info[prop === 'hourglass' ? 'infiniteHourglassTime' : 'infiniteRocketTime'] = Date.now() / 1000 + 60; + const map = { startBoostLoadout: { streak, hourglass: false, rocket: false, [prop]: mode !== 'gift' } }; + const events = [], saves = []; + const cc = { fx: { GameConfig: { GM_INFO: info }, GameTool: { + saveStartBoostInventory: prop => saves.push(prop), + shushu_Track: (name, data) => events.push({ name, ...data }), + } } }; + const use = vm.runInNewContext(compile('(function () { return ' + callback.getText(source) + '; })'), { cc, ...boosts }).call(map); + use(prop); + use(prop); // Untouched restart reuses the already-spent loadout. + assert.deepEqual(events, mode === 'selected' ? [{ name: 'resource_cost', change_reason: '使用道具', + id: prop === 'hourglass' ? '2006' : '2007', num: -1 }] : []); + assert.deepEqual(saves, mode === 'selected' ? [prop] : []); + assert.equal(info[prop + 'Amount'], mode === 'selected' ? 1 : 2); + } + } + } +}); + +test('enter_stage reports the opening streak once on first play, independently of extra props and later global state', () => { + for (const streak of [null, 0, 1, 2, 3]) { + const events = []; + const cc = { fx: { GameConfig: { GM_INFO: { level: 24, winStreak: 0, threeWinStreak: 3 }, isWinStreakUnlocked: () => true }, + GameTool: { getUserPowerTime: () => true, maxLevel: () => false, + shushu_Track: (name, data) => events.push({ name, data }) } } }; + const start = method('assets/Script/Map.ts', 'startUpdate', { cc, Date }); + const map = { gameStart: false, startBoostPreparing: true, is_frenzy: false, + startBoostLoadout: streak === null ? null : { streak, hourglass: true, rocket: true }, + onBlockClick() {}, iceTrue: () => false, threeWinStreak: { begin() {} }, + stopTimeCutDown() {}, startTimeCutDown() {} }; + start.call(map); + assert.equal(events.length, 0); + map.startBoostPreparing = false; + start.call(map); + start.call(map); + assert.equal(events.length, 1); + assert.equal(events[0].name, 'enter_stage'); + assert.equal(events[0].data.pilot_drop, streak || 0); + } +}); + +test('each reward tier and extra choice consumes only the selected inventory once across untouched replays', () => { + for (const [streak, hourglass, rocket] of [[0, 0, 0], [1, 2, 0], [2, 2, 1], [3, 3, 2]]) { + const reward = boosts.startBoostRewards(streak); + assert.equal(reward.hourglass, hourglass); + assert.equal(reward.rocket, rocket); + for (const selected of ['hourglass', 'rocket']) { + const info = { hourglassAmount: 2, rocketAmount: 2 }; + const loadout = { streak, hourglass: selected === 'hourglass', rocket: selected === 'rocket' }; + assert.equal(boosts.consumeCarriedStartBoost(loadout, selected, info), true); + assert.equal(info[selected + 'Amount'], 1); + assert.equal(boosts.consumeCarriedStartBoost(loadout, selected, info), false); + const other = selected === 'hourglass' ? 'rocket' : 'hourglass'; + assert.equal(boosts.consumeCarriedStartBoost(loadout, other, info), false); + assert.equal(info[other + 'Amount'], 2); + } + } +}); + +test('an infinite prop can be carried at zero stock; replay never charges after its timer expires', () => { + const info = { hourglassAmount: 0, rocketAmount: 0, infiniteHourglassTime: Date.now() / 1000 + 60 }; + const loadout = { streak: 0, hourglass: true, rocket: false }; + assert.equal(boosts.canCarryStartBoost(info, 'hourglass'), true); + assert.equal(boosts.canCarryStartBoost(info, 'rocket'), false); + assert.equal(boosts.consumeCarriedStartBoost(loadout, 'hourglass', info), false); + info.infiniteHourglassTime = 0; + assert.equal(boosts.consumeCarriedStartBoost(loadout, 'hourglass', info), false); + assert.equal(info.hourglassAmount, 0); +}); + +const updateOpening = method('assets/Script/Map.ts', 'updateStartBoostOpening', boosts); +function openingFixture(loadout) { + const transition = { active: false }; + let completed = 0; + const map = { node: { parent: { parent: { parent: { getChildByName: () => transition } } } }, + startBoostLoadout: loadout, startBoostPreparing: true, startBoostsApplied: false, + startBoostOpening: null, rainbowStreak: null, oldRainbowEntryReady: () => completed++ }; + return { map, transition, completed: () => completed }; +} + +test('zero boosters completes the preparation; missing player selection keeps it locked', () => { + const f = openingFixture(null); + updateOpening.call(f.map, 1); + assert.equal(f.map.startBoostPreparing, true); + assert.equal(f.completed(), 0); + f.map.startBoostLoadout = { streak: 0, hourglass: false, rocket: false }; + updateOpening.call(f.map, 1); + assert.equal(f.map.startBoostPreparing, false); + assert.equal(f.map.startBoostsApplied, true); + assert.equal(f.completed(), 1); +}); + +test('zero boosters still runs an independently eligible rainbow before releasing the opening lock', () => { + const f = openingFixture({ streak: 0, hourglass: false, rocket: false }); + let started = 0, rainbowDone = false; + f.map.rainbowStreak = { startOpening: () => started++, updateOpening: () => rainbowDone }; + updateOpening.call(f.map, 1); + updateOpening.call(f.map, 1); + assert.equal(started, 1); + assert.equal(f.map.startBoostPreparing, true); + rainbowDone = true; + updateOpening.call(f.map, 1); + assert.equal(f.map.startBoostPreparing, false); + assert.equal(f.completed(), 1); +}); + +test('scene transition and all booster effects finish before rainbow starts, then rainbow finishes before unlock', () => { + const f = openingFixture({ streak: 3, hourglass: true, rocket: true }); + const events = []; + let boostersDone = false; + f.map.startBoostOpening = { update: () => { events.push('boosters'); return boostersDone; }, dispose: () => events.push('dispose') }; + f.map.rainbowStreak = { startOpening: () => events.push('rainbow'), updateOpening: () => true }; + f.transition.active = true; + updateOpening.call(f.map, 1); + assert.deepEqual(events, []); + f.transition.active = false; + updateOpening.call(f.map, 1); + assert.deepEqual(events, ['boosters']); + boostersDone = true; + updateOpening.call(f.map, 1); + assert.deepEqual(events, ['boosters', 'boosters', 'dispose', 'rainbow']); + assert.equal(f.map.startBoostPreparing, true); + updateOpening.call(f.map, 1); + assert.equal(f.map.startBoostPreparing, false); + assert.equal(f.completed(), 1); +}); + +test('unlock starts on displayed level 25 and includes endless while excluding help levels', () => { + const unlocked = method('assets/Script/module/Config/GameConfig.ts', 'isStartBoostersUnlocked'); + const config = { GM_INFO: { level: 23, otherLevel: 0, GameplayType: 0 } }; + assert.equal(unlocked.call(config), false); + config.GM_INFO.level = 24; + assert.equal(unlocked.call(config), true); + config.GM_INFO.GameplayType = 1; + assert.equal(unlocked.call(config), true); + config.GM_INFO.otherLevel = 100; + assert.equal(unlocked.call(config), false); +}); + +test('confirmed untouched restart reuses the spent loadout, while a played restart settles loss and opens a fresh choice', async () => { + for (const played of [false, true]) { + const loadout = { streak: 3, hourglass: true, rocket: true, spentHourglass: true, spentRocket: true }; + let failures = 0, reloads = 0; + const transition = { active: false, getComponent: () => ({ setAnimation() {} }) }; + const map = { isMapRuntimeAlive: () => true, reviewState: false, againCanTouch: true, + settleCloudRiseLoss: async () => true, SceneManager: { releasePausePanel() {} }, + gameStart: played, gameWin: false, gameOver: false, startBoostLoadout: loadout, startBoostKey: '24:0:0', + threeWinStreak: { fail: () => failures++ }, + node: { parent: { parent: { parent: { getChildByName: () => transition } } } } }; + const MapConroler = { _instance: map, startBoostReplay: null }; + const cc = { fx: { + GameConfig: { GM_INFO: { hp: 1, GameplayType: 0 }, LEVEL_INFO_init: () => reloads++ }, + GameTool: { getUserPowerTime: () => false, maxLevel: () => false }, + AudioManager: { _instance: { playEffect() {} } }, + } }; + const again = method('assets/Script/Map.ts', 'againLevel', { cc, MapConroler, sp: { Skeleton: class {} }, + DailyTaskProgressTracker: { invalidateAttempt() {}, resetWinStreak() {} }, + setTimeout: callback => callback(), + }); + await again.call(map); + assert.equal(reloads, 1); + assert.equal(failures, played ? 1 : 0); + if (played) assert.equal(MapConroler.startBoostReplay, null); + else assert.equal(MapConroler.startBoostReplay.loadout, loadout); + assert.equal(loadout.spentHourglass, true); + assert.equal(loadout.spentRocket, true); + } +}); + +test('hourglass and rocket purchases cost 200/800 for three and save their independent prop id', () => { + for (const [prop, id, cost] of [['hourglass', 2006, 200], ['rocket', 2007, 800]]) { + const info = { coin: 1000, hourglassAmount: 1, rocketAmount: 2, freezeAmount: 3, magicAmount: 4, hammerAmount: 5 }; + const saved = [], storage = {}, events = []; + const gameTool = { changeCoin: delta => info.coin += delta, shushu_Track: (name, data) => events.push({ name, ...data }), + setUserProp: (id, amount) => saved.push([id, amount]), tryReactivateStarterPack() {} }; + const cc = { fx: { GameConfig: { GM_INFO: info }, GameTool: gameTool, + StorageMessage: { getStorage: key => storage[key], setStorage: (key, value) => storage[key] = value } } }; + const buy = method('assets/Script/module/Tool/GameTool.ts', 'buyProp', { cc, Date }, 'GameTool'); + let callbacks = 0; + const before = info[prop + 'Amount']; + buy.call(gameTool, id, () => callbacks++); + assert.equal(info.coin, 1000 - cost); + assert.equal(info[prop + 'Amount'], before + 3); + assert.deepEqual(saved, [[id, before + 3]]); + assert.equal(callbacks, 1); + assert.deepEqual(events.filter(event => event.name === 'resource_get'), [ + { name: 'resource_get', change_reason: 'game', id, num: 3, compensate: false }, + ]); + assert.deepEqual(events.filter(event => event.name === 'resource_cost'), [ + { name: 'resource_cost', change_reason: '商城购买道具消耗', id: '1001', num: -cost }, + ]); + const eventCount = events.length; + info.coin = cost - 1; + buy.call(gameTool, id, () => callbacks++); + assert.equal(info.coin, cost - 1); + assert.equal(info[prop + 'Amount'], before + 3); + assert.equal(callbacks, 1); + assert.equal(events.length, eventCount); + } +}); + +test('purchase-panel selection and consumed stock use unified server ids 2006/2007, including zero stock', () => { + for (const [prop, id] of [['hourglass', 2006], ['rocket', 2007]]) { + const requests = [], purchases = [], cached = { freezeAmount: 5 }; + const cc = { fx: { GameConfig: { GM_INFO: { coin: 1000, hourglassAmount: 0, rocketAmount: 0 } }, + GameTool: { buyProp: (id, done) => { purchases.push(id); done(); } }, + StorageMessage: { getStorage: () => cached, setStorage: () => {} } } }; + const globals = { cc, Date, wx: {}, Utils: { setUserProp: (id, amount) => requests.push([id, amount]) } }; + const save = method('assets/Script/module/Tool/GameTool.ts', 'saveStartBoostInventory', globals, 'GameTool'); + const setUserProp = method('assets/Script/module/Tool/GameTool.ts', 'setUserProp', globals, 'GameTool'); + save.call({ setUserProp }, prop); + assert.deepEqual(requests, [[id, 0]]); + assert.equal(cached[prop + 'Amount'], 0); + assert.equal(cached.freezeAmount, 5); + let selected; + const manager = { isPopupRuntimeAlive: () => true, updateCoin() {}, closePropBuy() {}, + threeWinsPanel: { setSelected: (prop, value) => selected = [prop, value] } }; + method('assets/Script/SceneManager.ts', 'buyStartBoost', globals).call(manager, prop); + assert.deepEqual(purchases, [id]); + assert.deepEqual(selected, [prop, true]); + } +}); + +test('authored new prop purchase buttons invoke the existing PropWindowPanel purchase handler', () => { + const prefab = JSON.parse(read('assets/propWindow/prefab/PropWindow.prefab')); + for (const name of ['hourglass', 'rocket']) { + const root = prefab.find(node => node.__type__ === 'cc.Node' && node._name === name); + const button = root._children.map(ref => prefab[ref.__id__]).find(node => node._name === 'buy_Btn'); + const control = button._components.map(ref => prefab[ref.__id__]).find(component => component.__type__ === 'cc.Button'); + assert.equal(prefab[control.clickEvents[0].__id__].handler, 'clickBtn'); + } +}); + +function shopRaceFixture() { + const popup = { active: true }, scheduled = [], requests = []; + const map = { pause: false, shopPause: false, stopBoom() {} }; + let created = 0; + const cc = { fx: { + GameConfig: { GM_INFO: { coin: 0, canIos: true }, getShopPrefabPath: () => 'prefab/shop', isShopB: () => false }, + GameTool: { tryReactivateStarterPack() {}, shushu_Track() {} }, + AudioManager: { _instance: { playEffect() {} } }, + }, instantiate() { + created++; + return { active: true, getComponent: () => ({ init() {} }), destroy() {} }; + } }; + const globals = { cc, MapConroler: { _instance: map }, console: { log() {} }, + SceneManager: { clearInvalidShopPrefabCaches() {}, cachedShopPrefab: {} }, + Utils: { getShopDouble: (callback, complete) => requests.push({ callback, complete }) }, + MiniGameSdk: { API: { showToast() {} } }, + }; + const manager = { isPopupRuntimeAlive: () => true, btnName: 'hourglass', resetBtn() {}, + getDynamicPopup: () => popup, scheduleOnce: callback => scheduled.push(callback), + pendingShopRequests: 0, node: { addChild() {} }, shopNode: null, + openShop: method('assets/Script/SceneManager.ts', 'openShop', globals), + }; + const buy = method('assets/Script/SceneManager.ts', 'buyStartBoost', globals); + const respond = () => { + const request = requests[requests.length - 1]; + request.callback({ code: 1, data: { shopDouble: false } }); + request.complete(); + }; + return { popup, scheduled, requests, map, manager, buy, respond, created: () => created }; +} + +test('closing the purchase popup cancels both its delayed shop open and a shop response already in flight', () => { + for (const afterRequest of [false, true]) { + const f = shopRaceFixture(); + f.buy.call(f.manager, 'hourglass'); + assert.equal(f.scheduled.length, 1); + if (!afterRequest) f.popup.active = false; + f.scheduled[0](); + if (afterRequest) { + assert.equal(f.requests.length, 1); + f.popup.active = false; + f.respond(); + } else assert.equal(f.requests.length, 0); + assert.equal(f.created(), 0); + assert.equal(f.map.shopPause, false); + assert.equal(f.manager.pendingShopRequests, 0); + } +}); + +test('ordinary shop entry still opens without an optional purchase-popup guard', () => { + const f = shopRaceFixture(); + f.popup.active = false; + f.manager.openShop(null); + assert.equal(f.requests.length, 1); + f.respond(); + assert.equal(f.created(), 1); + assert.equal(f.map.shopPause, true); + assert.equal(f.manager.pendingShopRequests, 0); +}); + +test('failed intermediate-panel initialization releases its modal and allows a fresh retry', () => { + const roots = []; + class Node { + constructor() { roots.push(this); } + setContentSize() {} + addComponent() {} + addChild() {} + destroy() { this.destroyed = true; } + } + let shouldFail = true, finished = 0; + const panel = { init() { if (shouldFail) throw new Error('missing prefab child'); } }; + const cc = { Node, BlockInputEvents: class {}, winSize: {}, + instantiate: () => ({ setPosition() {}, getChildByName: () => ({ setSiblingIndex() {} }), addComponent: () => panel }), + }; + const manager = { isPopupRuntimeAlive: () => true, threeWinsPrefab: {}, threeWinsFont: {}, + node: { addChild() {} }, threeWinsData: () => ({}), finishDynamicPopupLoad: () => finished++ }; + const open = method('assets/Script/SceneManager.ts', 'openThreeWins', { cc, ThreeWinsPanel: class {} }); + assert.throws(() => open.call(manager, () => {}), /missing prefab child/); + assert.equal(manager.threeWinsRoot, null); + assert.equal(manager.threeWinsPanel, null); + assert.equal(roots[0].destroyed, true); + assert.equal(finished, 0); + shouldFail = false; + open.call(manager, () => {}); + assert.equal(manager.threeWinsRoot, roots[1]); + assert.equal(manager.threeWinsPanel, panel); + assert.equal(finished, 1); +});