From 842c68ef558d8eed96492d2fecaaf1612ca00ee8 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Sun, 6 Sep 2026 13:46:57 +0800 Subject: [PATCH] feat: integrate login flow, lobby UI and bitmap font resources --- .../framework/adapters/native/lobby-links.ts | 10 + .../adapters/native/lobby-links.ts.meta | 9 + .../adapters/native/login-accounts.ts | 28 +- .../assets/framework/config/profiles.ts | 7 +- .../framework/config/remote-config-fetcher.ts | 6 +- .../assets/framework/net/cocos-transport.ts | 40 +- .../assets/framework/net/wire-client.ts | 6 + .../assets/framework/platform/runtime.ts | 18 +- .../assets/framework/platform/scene-port.ts | 2 + .../platform/stores/platform-store.ts | 4 + .../platform/stores/platform-types.ts | 5 + .../framework/presentation/lobby-model.ts | 64 + .../presentation/lobby-model.ts.meta | 9 + .../framework/presentation/login-policy.ts | 4 +- .../framework/protocol/first-slice-routes.ts | 12 +- .../framework/protocol/platform-handlers.ts | 19 +- .../assets/framework/protocol/router.ts | 5 +- .../framework/ui/atlas-common/00046.fnt | 15 + .../framework/ui/atlas-common/00046.fnt.meta | 143 ++ .../framework/ui/atlas-common/00046.png | Bin 0 -> 5054 bytes .../framework/ui/atlas-common/00046.png.meta | 134 + .../framework/ui/atlas-common/00183.fnt | 16 + .../framework/ui/atlas-common/00183.fnt.meta | 154 ++ .../framework/ui/atlas-common/00183.png | Bin 0 -> 27173 bytes .../framework/ui/atlas-common/00183.png.meta | 134 + .../framework/ui/atlas-common/00198.fnt | 16 + .../framework/ui/atlas-common/00198.fnt.meta | 154 ++ .../framework/ui/atlas-common/00198.png | Bin 0 -> 8653 bytes .../framework/ui/atlas-common/00198.png.meta | 134 + .../framework/ui/atlas-common/00242.fnt | 15 + .../framework/ui/atlas-common/00242.fnt.meta | 143 ++ .../framework/ui/atlas-common/00242.png | Bin 0 -> 22213 bytes .../framework/ui/atlas-common/00242.png.meta | 134 + .../assets/framework/ui/atlas-hall/00049.fnt | 15 + .../framework/ui/atlas-hall/00049.fnt.meta | 143 ++ .../assets/framework/ui/atlas-hall/00049.png | Bin 0 -> 3259 bytes .../framework/ui/atlas-hall/00049.png.meta | 134 + .../assets/framework/ui/atlas-hall/00172.fnt | 15 + .../framework/ui/atlas-hall/00172.fnt.meta | 143 ++ .../assets/framework/ui/atlas-hall/00172.png | Bin 0 -> 6671 bytes .../framework/ui/atlas-hall/00172.png.meta | 134 + .../assets/framework/ui/atlas-hall/00191.fnt | 16 + .../framework/ui/atlas-hall/00191.fnt.meta | 154 ++ .../assets/framework/ui/atlas-hall/00191.png | Bin 0 -> 10281 bytes .../framework/ui/atlas-hall/00191.png.meta | 134 + .../assets/framework/ui/atlas-hall/00192.fnt | 16 + .../framework/ui/atlas-hall/00192.fnt.meta | 154 ++ .../assets/framework/ui/atlas-hall/00192.png | Bin 0 -> 9597 bytes .../framework/ui/atlas-hall/00192.png.meta | 134 + .../assets/framework/ui/atlas-hall/00227.fnt | 15 + .../framework/ui/atlas-hall/00227.fnt.meta | 143 ++ .../assets/framework/ui/atlas-hall/00227.png | Bin 0 -> 3329 bytes .../framework/ui/atlas-hall/00227.png.meta | 134 + .../assets/framework/ui/atlas-hall/00228.fnt | 15 + .../framework/ui/atlas-hall/00228.fnt.meta | 143 ++ .../assets/framework/ui/atlas-hall/00228.png | Bin 0 -> 11257 bytes .../framework/ui/atlas-hall/00228.png.meta | 134 + .../assets/framework/ui/atlas-hall/00258.fnt | 15 + .../framework/ui/atlas-hall/00258.fnt.meta | 143 ++ .../assets/framework/ui/atlas-hall/00258.png | Bin 0 -> 2758 bytes .../framework/ui/atlas-hall/00258.png.meta | 134 + .../assets/framework/ui/atlas-hall/00329.fnt | 15 + .../framework/ui/atlas-hall/00329.fnt.meta | 143 ++ .../assets/framework/ui/atlas-hall/00329.png | Bin 0 -> 5815 bytes .../framework/ui/atlas-hall/00329.png.meta | 134 + .../assets/framework/ui/atlas-hall/00359.fnt | 15 + .../framework/ui/atlas-hall/00359.fnt.meta | 143 ++ .../assets/framework/ui/atlas-hall/00359.png | Bin 0 -> 8214 bytes .../framework/ui/atlas-hall/00359.png.meta | 134 + .../assets/framework/ui/atlas-hall/00417.fnt | 18 + .../framework/ui/atlas-hall/00417.fnt.meta | 176 ++ .../assets/framework/ui/atlas-hall/00417.png | Bin 0 -> 17926 bytes .../framework/ui/atlas-hall/00417.png.meta | 134 + .../assets/framework/ui/atlas-login/00433.fnt | 16 + .../framework/ui/atlas-login/00433.fnt.meta | 154 ++ .../assets/framework/ui/atlas-login/00433.png | Bin 0 -> 5710 bytes .../framework/ui/atlas-login/00433.png.meta | 134 + .../assets/framework/ui/atlas-room/00069.fnt | 15 + .../framework/ui/atlas-room/00069.fnt.meta | 143 ++ .../assets/framework/ui/atlas-room/00069.png | Bin 0 -> 2981 bytes .../framework/ui/atlas-room/00069.png.meta | 134 + .../assets/framework/ui/atlas-room/00398.fnt | 15 + .../framework/ui/atlas-room/00398.fnt.meta | 143 ++ .../assets/framework/ui/atlas-room/00398.png | Bin 0 -> 3668 bytes .../framework/ui/atlas-room/00398.png.meta | 134 + .../framework/ui/atlas-unassigned/00019.fnt | 18 + .../ui/atlas-unassigned/00019.fnt.meta | 176 ++ .../framework/ui/atlas-unassigned/00019.png | Bin 0 -> 6458 bytes .../ui/atlas-unassigned/00019.png.meta | 134 + .../framework/ui/atlas-unassigned/00174.fnt | 15 + .../ui/atlas-unassigned/00174.fnt.meta | 143 ++ .../framework/ui/atlas-unassigned/00174.png | Bin 0 -> 2981 bytes .../ui/atlas-unassigned/00174.png.meta | 134 + .../framework/ui/atlas-unassigned/00203.fnt | 18 + .../ui/atlas-unassigned/00203.fnt.meta | 176 ++ .../framework/ui/atlas-unassigned/00203.png | Bin 0 -> 8596 bytes .../ui/atlas-unassigned/00203.png.meta | 134 + .../framework/ui/atlas-unassigned/00331.fnt | 15 + .../ui/atlas-unassigned/00331.fnt.meta | 143 ++ .../framework/ui/atlas-unassigned/00331.png | Bin 0 -> 5874 bytes .../ui/atlas-unassigned/00331.png.meta | 134 + .../framework/ui/prefabs/Login_Layer.prefab | 14 +- .../prefabs/widgets/Layer29_PhoneInfo.prefab | 2282 +++++++++++++---- .../ui/prefabs/widgets/Layer4_MainMenu.prefab | 341 ++- .../ui/prefabs/widgets/Layer6.prefab | 1975 ++++++++------ .../ui/prefabs/widgets/Layer612_Tips.prefab | 79 +- .../prefabs/widgets/Layer615_Reconnect.prefab | 131 +- .../assets/scenes/PlatformLobby.scene | 416 +++ .../assets/scenes/PlatformLobby.scene.meta | 11 + .../assets/scenes/PlatformStartup.scene | 151 +- .../scripts/platform-login/LobbyAssets.ts | 16 + .../platform-login/LobbyAssets.ts.meta | 9 + .../scripts/platform-login/PlatformStartup.ts | 131 +- .../platform-login/ReconnectFrames.anim | 111 + .../platform-login/ReconnectFrames.anim.meta | 13 + .../scripts/platform-login/feedback-panels.ts | 66 + .../platform-login/feedback-panels.ts.meta | 9 + .../scripts/platform-login/lobby-panel.ts | 234 ++ .../platform-login/lobby-panel.ts.meta | 9 + .../platform-login/local-config-fetcher.ts | 6 +- .../scripts/platform-login/login-panel.ts | 59 +- .../scripts/platform-login/scene-flow.ts | 7 + .../legacy-migration/BackHall_Layer.prefab | 20 +- .../out/legacy-migration/Protol_Layer.prefab | 44 +- .../config/local-config-fetcher.test.ts | 17 +- .../framework-tests/config/profiles.test.ts | 4 +- .../net/cocos-transport-logging.test.ts | 55 + .../platform-login/loading-animation.test.ts | 5 + .../platform-login/lobby-links.test.ts | 9 + .../platform-login/login-accounts.test.ts | 73 +- .../platform-login/login-policy.test.ts | 8 +- .../platform-login/scene-flow.test.ts | 15 +- .../platform/platform-store.test.ts | 1 + .../framework-tests/platform/runtime.test.ts | 37 +- .../presentation/lobby-model.test.ts | 25 + .../presentation/lobby-policy.test.ts | 21 + .../protocol/first-slice-routes.test.ts | 2 + .../protocol/platform-handlers.test.ts | 2 +- .../framework-tests/protocol/router.test.ts | 2 +- docs/protocol/02-协议-agent路由.md | 1 + .../2026-09-06-post-login-lobby-acceptance.md | 37 + 141 files changed, 11279 insertions(+), 1717 deletions(-) create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/adapters/native/lobby-links.ts create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/adapters/native/lobby-links.ts.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/presentation/lobby-model.ts create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/presentation/lobby-model.ts.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00046.fnt create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00046.fnt.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00046.png create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00046.png.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00183.fnt create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00183.fnt.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00183.png create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00183.png.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00198.fnt create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00198.fnt.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00198.png create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00198.png.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00242.fnt create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00242.fnt.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00242.png create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00242.png.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00049.fnt create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00049.fnt.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00049.png create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00049.png.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00172.fnt create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00172.fnt.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00172.png create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00172.png.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00191.fnt create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00191.fnt.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00191.png create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00191.png.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00192.fnt create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00192.fnt.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00192.png create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00192.png.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00227.fnt create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00227.fnt.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00227.png create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00227.png.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00228.fnt create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00228.fnt.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00228.png create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00228.png.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00258.fnt create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00258.fnt.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00258.png create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00258.png.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00329.fnt create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00329.fnt.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00329.png create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00329.png.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00359.fnt create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00359.fnt.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00359.png create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00359.png.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00417.fnt create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00417.fnt.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00417.png create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00417.png.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-login/00433.fnt create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-login/00433.fnt.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-login/00433.png create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-login/00433.png.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-room/00069.fnt create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-room/00069.fnt.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-room/00069.png create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-room/00069.png.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-room/00398.fnt create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-room/00398.fnt.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-room/00398.png create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-room/00398.png.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-unassigned/00019.fnt create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-unassigned/00019.fnt.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-unassigned/00019.png create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-unassigned/00019.png.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-unassigned/00174.fnt create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-unassigned/00174.fnt.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-unassigned/00174.png create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-unassigned/00174.png.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-unassigned/00203.fnt create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-unassigned/00203.fnt.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-unassigned/00203.png create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-unassigned/00203.png.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-unassigned/00331.fnt create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-unassigned/00331.fnt.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-unassigned/00331.png create mode 100644 cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-unassigned/00331.png.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/scenes/PlatformLobby.scene create mode 100644 cocoscreator_projects/YouleNexus/assets/scenes/PlatformLobby.scene.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/scripts/platform-login/LobbyAssets.ts create mode 100644 cocoscreator_projects/YouleNexus/assets/scripts/platform-login/LobbyAssets.ts.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/scripts/platform-login/ReconnectFrames.anim create mode 100644 cocoscreator_projects/YouleNexus/assets/scripts/platform-login/ReconnectFrames.anim.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/scripts/platform-login/feedback-panels.ts create mode 100644 cocoscreator_projects/YouleNexus/assets/scripts/platform-login/feedback-panels.ts.meta create mode 100644 cocoscreator_projects/YouleNexus/assets/scripts/platform-login/lobby-panel.ts create mode 100644 cocoscreator_projects/YouleNexus/assets/scripts/platform-login/lobby-panel.ts.meta create mode 100644 cocoscreator_projects/framework-tests/net/cocos-transport-logging.test.ts create mode 100644 cocoscreator_projects/framework-tests/platform-login/lobby-links.test.ts create mode 100644 cocoscreator_projects/framework-tests/presentation/lobby-model.test.ts create mode 100644 cocoscreator_projects/framework-tests/presentation/lobby-policy.test.ts create mode 100644 docs/superpowers/reports/2026-09-06-post-login-lobby-acceptance.md diff --git a/cocoscreator_projects/YouleNexus/assets/framework/adapters/native/lobby-links.ts b/cocoscreator_projects/YouleNexus/assets/framework/adapters/native/lobby-links.ts new file mode 100644 index 0000000..58cb72d --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/framework/adapters/native/lobby-links.ts @@ -0,0 +1,10 @@ +type BrowserHost={kind:'settings';browser(url:string):void}|{kind:'bridge';call(name:'browser',data:string):void}|{kind:'h5';open(url:string):void}; +/** 05_Func.fixUrl + browser. The settings host alone appends timestamp. */ +export function openLobbyUrl(url:string,host:BrowserHost,now:()=>number):void { + if(!url)return; + const index=url.indexOf('?'); + const fixed=index<0?url:url.slice(0,index+1)+url.slice(index+1).replace(/\?/g,'&'); + if(host.kind==='settings')host.browser(`${fixed}×tamp=${now()}`); + else if(host.kind==='bridge')host.call('browser',fixed); + else host.open(fixed); +} diff --git a/cocoscreator_projects/YouleNexus/assets/framework/adapters/native/lobby-links.ts.meta b/cocoscreator_projects/YouleNexus/assets/framework/adapters/native/lobby-links.ts.meta new file mode 100644 index 0000000..7329a79 --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/framework/adapters/native/lobby-links.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.24", + "importer": "typescript", + "imported": true, + "uuid": "5953d513-a238-4d0f-a3e4-d8c7dbb1e4cb", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/cocoscreator_projects/YouleNexus/assets/framework/adapters/native/login-accounts.ts b/cocoscreator_projects/YouleNexus/assets/framework/adapters/native/login-accounts.ts index 22deb2b..ce3d0f8 100644 --- a/cocoscreator_projects/YouleNexus/assets/framework/adapters/native/login-accounts.ts +++ b/cocoscreator_projects/YouleNexus/assets/framework/adapters/native/login-accounts.ts @@ -8,7 +8,7 @@ export interface LoginNativeSettings { getcompareCode(): number | string; } interface Options { - storage: {getItem(key:string):string|null;setItem(key:string,value:string):void}; + storage: {getItem(key:string):string|null;setItem(key:string,value:string):void;removeItem(key:string):void}; settings?:LoginNativeSettings; random():number; now():number; gameid:string|number;agentid:string|number;policy:LoginPolicy; submit(account:LoginAccountIdentity,device:DeviceLoginMode):void;tip(message:string):void; @@ -106,6 +106,16 @@ export class LoginAccounts { this.options.submit(account,{enabled:true,telphone:data.telphone}); }else this.options.submit(account,{enabled:false}); } + /** Invalidate all auto-login paths, including visitor precedence, before returning to login. */ + logout():void { + // GameUI case 58 deletes wxinfo/devicePlayer. Keep credential cleanup here + // so every caller invalidates the same automatic-login sources. + this.options.storage.setItem('tsgame_validtime','0'); + this.options.storage.removeItem('tsgame_wxinfo'); + this.options.storage.removeItem('tsgame_devicePlayer'); + this.options.storage.setItem(`tsgame_playerid_${this.options.gameid}${this.options.agentid}`,''); + this.options.storage.setItem('tsgame_dLogin','0'); + } authorize(provider:'wechat'|'qq'):void { if(!this.requireAgreement())return; if(!this.options.settings){this.options.tip('当前宿主未提供原生登录授权接口');return;} @@ -118,16 +128,17 @@ export class LoginAccounts { this.save(account,channel==='global'&&this.options.policy.showVisitor?'tsgame_visitorinfo':'tsgame_wxinfo'); this.options.submit(account,{enabled:false}); } - /** 仅本次手机登录要求 tel,不能依据按钮显示配置要求游客响应携带手机号。 */ + /** Desk.login saves the server identity whenever sysConfig.deviceLogin is enabled. */ loginSucceeded(value:unknown,mode:DeviceLoginMode):void { const data=record(value); if(data.state!==0)throw Error('Cannot cache an unsuccessful login'); if(typeof data.playerid!=='string'&&(typeof data.playerid!=='number'||!Number.isFinite(data.playerid)))throw Error('Invalid login playerid'); - // Button availability is not the authentication mode of this request. - if(mode.enabled){ - if(typeof data.tel!=='string')throw Error('Device login response missing tel'); + if(this.options.policy.deviceLogin){ + if((mode.enabled||data.tel!==undefined)&&typeof data.tel!=='string')throw Error('Device login response missing tel'); const account=accountFrom({...data,headimgurl:data.avatar,Province:data.province}); - this.save(account,'tsgame_devicePlayer',data.tel); + // Desk.login copies the server sex verbatim; sharelogin normalizes it only on use. + if(typeof data.sex!=='number'||!Number.isFinite(data.sex))throw Error('Invalid login sex'); + this.save({...account,sex:data.sex},'tsgame_devicePlayer',data.tel as string|undefined); this.options.storage.setItem('tsgame_dLogin','1'); } this.options.storage.setItem(`tsgame_playerid_${this.options.gameid}${this.options.agentid}`,String(data.playerid)); @@ -164,6 +175,9 @@ export class LoginAccounts { phone(phone:string,code:string):void { if(!this.requireAgreement())return; if(!phone||!code){this.options.tip('手机号与验证码均不能为空!');return;} - this.options.submit(this.deviceAccount(phone),{enabled:true,telphone:phone,smmcode:code}); + const account=this.deviceAccount(phone); + // Func.phoneLogin -> sharelogin saves visitorinfo before Net.Send_login when showVisitor is enabled. + if(this.options.policy.showVisitor)this.save(account,'tsgame_visitorinfo',phone); + this.options.submit(account,{enabled:true,telphone:phone,smmcode:code}); } } diff --git a/cocoscreator_projects/YouleNexus/assets/framework/config/profiles.ts b/cocoscreator_projects/YouleNexus/assets/framework/config/profiles.ts index 8b72a41..68a62d6 100644 --- a/cocoscreator_projects/YouleNexus/assets/framework/config/profiles.ts +++ b/cocoscreator_projects/YouleNexus/assets/framework/config/profiles.ts @@ -1,5 +1,6 @@ import { resolveRuntimeMode, type RuntimeMode } from './runtime-mode.ts'; + /** 调试用登录玩家档案;值只能由测试或本地启动配置显式注入。 */ export interface DebugAccount { openid: string; @@ -12,6 +13,8 @@ export interface DebugAccount { } export interface StartupConfig { + /** 输出全部收发包、配置文件内容及连接状态/重连原因。 */ + readonly debugIO: boolean; readonly mode: RuntimeMode; /** 配置内容来源;local 仅允许 debug,独立于 WebSocket 服务器选择。 */ readonly configSource: 'remote' | 'local'; @@ -24,6 +27,7 @@ export interface StartupConfig { /** 唯一发布配置入口;mode 与服务器选择互相独立。 */ export const STARTUP_CONFIG: Readonly = Object.freeze({ + debugIO: true, mode: 'debug', // 开发时改为 local,编辑 assets/resources/dev-config/update_jsonv2.txt 后重新预览。 configSource: 'local', @@ -53,6 +57,7 @@ export function validateLocalServer(value: string, field = 'localServers'): void export function validateStartupConfig(source: Readonly): Readonly { if (!source || typeof source !== 'object') invalid('source', 'must be an object'); const mode = resolveRuntimeMode(source.mode); + if (typeof source.debugIO !== 'boolean') invalid('debugIO', 'must be boolean'); if (source.configSource !== 'remote' && source.configSource !== 'local') invalid('configSource', 'must be remote or local'); if (source.configSource === 'local' && mode !== 'debug') invalid('configSource', 'local is only allowed in debug mode'); if (typeof source.localConfigResource !== 'string' || !/^[a-zA-Z0-9_-]+(?:\/[a-zA-Z0-9_-]+)*$/.test(source.localConfigResource)) { @@ -65,7 +70,7 @@ export function validateStartupConfig(source: Readonly): Readonly if (url.protocol !== 'http:' && url.protocol !== 'https:') invalid('gameserver', 'must be http(s) URL'); if (!Array.isArray(source.localServers) || source.localServers.length === 0) invalid('localServers', 'must be a nonempty array'); for (let index = 0; index < source.localServers.length; index++) validateLocalServer(source.localServers[index], 'localServers[' + index + ']'); - return Object.freeze({mode, configSource:source.configSource, localConfigResource:source.localConfigResource, gameserver:source.gameserver, useLocalServer:source.useLocalServer, localServers:Object.freeze([...source.localServers])}); + return Object.freeze({mode, debugIO:source.debugIO, configSource:source.configSource, localConfigResource:source.localConfigResource, gameserver:source.gameserver, useLocalServer:source.useLocalServer, localServers:Object.freeze([...source.localServers])}); } /** 忠实旧 min_replaceAll 链:- → /,# → :,再包成 http://...txt。 */ diff --git a/cocoscreator_projects/YouleNexus/assets/framework/config/remote-config-fetcher.ts b/cocoscreator_projects/YouleNexus/assets/framework/config/remote-config-fetcher.ts index e7b5f4b..045c41a 100644 --- a/cocoscreator_projects/YouleNexus/assets/framework/config/remote-config-fetcher.ts +++ b/cocoscreator_projects/YouleNexus/assets/framework/config/remote-config-fetcher.ts @@ -1,4 +1,5 @@ import type { ConfigFetcher } from './remote-config.ts'; +import { STARTUP_CONFIG } from './profiles.ts'; import { ConfigFetchError, ConfigParseError } from './remote-config.ts'; type FetchImplementation = (input: RequestInfo | URL, init?: RequestInit) => Promise; @@ -15,8 +16,11 @@ export class HttpConfigFetcher implements ConfigFetcher { } const text = await response.text(); try { - return JSON.parse(text) as unknown; + const data: unknown = JSON.parse(text); + if (STARTUP_CONFIG.debugIO) console.log('[Config REMOTE]', url, data); + return data; } catch { + if (STARTUP_CONFIG.debugIO) console.log('[Config REMOTE]', url, { parseError: 'Invalid JSON', raw: text }); throw new ConfigParseError(`远程配置 JSON 解析失败: ${url}`); } } diff --git a/cocoscreator_projects/YouleNexus/assets/framework/net/cocos-transport.ts b/cocoscreator_projects/YouleNexus/assets/framework/net/cocos-transport.ts index ee4c3b0..c5c279e 100644 --- a/cocoscreator_projects/YouleNexus/assets/framework/net/cocos-transport.ts +++ b/cocoscreator_projects/YouleNexus/assets/framework/net/cocos-transport.ts @@ -1,4 +1,24 @@ import type { Transport } from './transport.ts'; +import { STARTUP_CONFIG } from '../config/profiles.ts'; + +function logConnection(state:string,ws:WebSocket,detail:Record={}):void{ + if(STARTUP_CONFIG.debugIO)console.log(`[WebSocket] ${state}`,{state,url:ws.url,readyState:ws.readyState,time:new Date().toISOString(),...detail}); +} + +/** 日志解析不改变传输内容;非法 JSON 保留原始帧供协议层报错。 */ +function logFrame(tag: string, url: string, frame: unknown): void { + if (!STARTUP_CONFIG.debugIO) return; + let data = frame; + if (typeof frame === 'string') { + try { data = JSON.parse(frame); } + catch { data = { parseError: 'Invalid JSON', raw: frame }; } + } + const packet = data !== null && typeof data === 'object' ? data as Record : null; + const route = packet && typeof packet.route === 'string' ? packet.route : ''; + const rpc = packet && typeof packet.rpc === 'string' ? packet.rpc : ''; + const com = packet && typeof packet.com === 'string' ? packet.com : ''; + console.log(`${tag}${route || rpc ? ` ${route}/${rpc}` : com ? ` ${com}` : ''}`, url, data); +} /** 生产用 Transport:包装运行时全局 WebSocket(Cocos 原生/浏览器)。docs/protocol/01 §2。 */ export class CocosWebSocketTransport implements Transport { @@ -10,13 +30,21 @@ export class CocosWebSocketTransport implements Transport { connect(url: string): void { const ws = new WebSocket(url); // url 形如 ws://ip:port this.ws = ws; - ws.onopen = () => this.openCb?.(); - ws.onmessage = (ev: MessageEvent) => this.msgCb?.(typeof ev.data === 'string' ? ev.data : String(ev.data)); - ws.onclose = () => this.closeCb?.(); - ws.onerror = () => { try { ws.close(); } catch { /* ignore */ } }; + logConnection('连接中',ws); + ws.onopen = () => {logConnection('已连接',ws);this.openCb?.();}; + ws.onmessage = (ev: MessageEvent) => { + logFrame('[收包 S→C]', url, ev.data); + this.msgCb?.(typeof ev.data === 'string' ? ev.data : String(ev.data)); + }; + ws.onclose = (event:CloseEvent) => {logConnection('已断开',ws,{code:event.code,reason:event.reason,wasClean:event.wasClean});this.closeCb?.();}; + ws.onerror = (event:Event) => {logConnection('连接错误',ws,{eventType:event.type});try { ws.close(); } catch { /* ignore */ } }; } - send(frame: string): void { this.ws?.send(frame); } - close(): void { try { this.ws?.close(); } catch { /* ignore */ } } + send(frame: string): void { + if (!this.ws) return; + this.ws.send(frame); + logFrame('[发包 C→S]', this.ws.url, frame); + } + close(): void { if(this.ws)logConnection('客户端请求关闭',this.ws);try { this.ws?.close(); } catch { /* ignore */ } } onOpen(cb: () => void): void { this.openCb = cb; } onMessage(cb: (frame: string) => void): void { this.msgCb = cb; } onClose(cb: () => void): void { this.closeCb = cb; } diff --git a/cocoscreator_projects/YouleNexus/assets/framework/net/wire-client.ts b/cocoscreator_projects/YouleNexus/assets/framework/net/wire-client.ts index 97d0978..c367f40 100644 --- a/cocoscreator_projects/YouleNexus/assets/framework/net/wire-client.ts +++ b/cocoscreator_projects/YouleNexus/assets/framework/net/wire-client.ts @@ -9,6 +9,7 @@ import { decodeFrame } from './envelope-codec.ts'; import { HeartbeatWatchdog, realClock, type Clock } from './heartbeat.ts'; import { ReconnectPolicy } from './reconnect.ts'; import type { Transport } from './transport.ts'; +import { STARTUP_CONFIG } from '../config/profiles.ts'; export type WireEvent = | { readonly type: 'open'; readonly server: string } @@ -398,6 +399,11 @@ export class WireClient { } private emit(event: WireEvent): void { + if(STARTUP_CONFIG.debugIO&&event.type!=='message'){ + const states={open:'已连接',close:'已断开',slow:'收包超时',reconnecting:'正在重连'}; + console.log(`[连接状态] ${states[event.type]}`,{event:event.type,server:this.policy.current(),connected:this.open,stopped:this.stopped, + time:new Date().toISOString(),...(event.type==='slow'?{timeoutMs:RECV_TIMEOUT_MS}:{}),...(event.type==='reconnecting'?{retryAfterMs:RECONNECT_INTERVAL_MS}:{})}); + } for (const listener of [...this.listeners]) { try { listener(event); diff --git a/cocoscreator_projects/YouleNexus/assets/framework/platform/runtime.ts b/cocoscreator_projects/YouleNexus/assets/framework/platform/runtime.ts index a73995c..7a4794c 100644 --- a/cocoscreator_projects/YouleNexus/assets/framework/platform/runtime.ts +++ b/cocoscreator_projects/YouleNexus/assets/framework/platform/runtime.ts @@ -1,5 +1,6 @@ import type { RuntimeConfig } from '../config/runtime-config.ts'; import { LOGIN_GUARD_MS } from '../core/constants.ts'; +import { STARTUP_CONFIG } from '../config/profiles.ts'; import type { OutboundEnvelope } from '../core/types/envelope.ts'; import { realClock, type Clock } from '../net/heartbeat.ts'; import type { WireClient, WireEvent } from '../net/wire-client.ts'; @@ -10,6 +11,7 @@ import { } from '../protocol/contracts/index.ts'; import { PlatformHandlers } from '../protocol/platform-handlers.ts'; import { Router } from '../protocol/router.ts'; +import { isLoginResponse } from '../protocol/first-slice-routes.ts'; import type { GameEntry, GameHost } from '../sdk/contracts/index.ts'; import { GameSessionHost } from '../sdk/runtime/game-session-host.ts'; import { PlatformCommands, type JoinRoomCommand } from './commands.ts'; @@ -234,7 +236,14 @@ export class PlatformRuntime { store: this.store, gameSession, createGameHostLease: () => this.createGameHostLease(commands, send), - onServerDenial: outcome => { this.options.scene.showServerDenial(outcome); }, + onServerDenial: outcome => { + // Legacy onopen retries only an authenticated session. A rejected first login + // must wait for another user submission, including after a socket reconnect. + if(outcome.rpc==='player_login'&&this.store.getState().players.selfPlayerId===null){ + this.connectionIntent={type:'none'};this.loginEnvelope=null; + } + this.options.scene.showServerDenial(outcome); + }, }); const handlers = new PlatformHandlers({ store: this.store, @@ -244,6 +253,10 @@ export class PlatformRuntime { switchServer: (target, resend) => { this.beginServerSwitch(target, resend); }, stopForKick: (data) => { this.stopForKick(data); }, }, + showMessage:(message,time)=>{ + if(!this.options.scene.showTips)throw Error('show_message requires ScenePort.showTips'); + this.options.scene.showTips(message,time); + }, }); const router = new Router({ session, platform: handlers, gameSession }); this.requireActiveStartup(generation); @@ -391,7 +404,7 @@ export class PlatformRuntime { } break; case 'message': - if (event.message.route === 'agent' && event.message.rpc === 'player_login') { + if (isLoginResponse(event.message)) { this.clearLoginGuard(); } const stateBeforeDispatch = this.store.getState(); @@ -606,6 +619,7 @@ export class PlatformRuntime { if (this.loginGuard !== handle) return; this.loginGuard = null; try { + if(STARTUP_CONFIG.debugIO)console.log('[连接状态] 登录回包超时,请求重连',{reason:'login-response-timeout',timeoutMs:LOGIN_GUARD_MS,time:new Date().toISOString()}); this.requireWire().reconnectCurrent(); } catch (error) { this.showFatalOnce(error); diff --git a/cocoscreator_projects/YouleNexus/assets/framework/platform/scene-port.ts b/cocoscreator_projects/YouleNexus/assets/framework/platform/scene-port.ts index 8da4e07..7763823 100644 --- a/cocoscreator_projects/YouleNexus/assets/framework/platform/scene-port.ts +++ b/cocoscreator_projects/YouleNexus/assets/framework/platform/scene-port.ts @@ -8,6 +8,8 @@ export interface ScenePort { showRoom(): void; showReconnect(): void; showKicked(data: unknown): void; + /** Required when the host supports the server's generic message UI. */ + showTips?(message: string, time: number): void; /** Recoverable server result; the consumer interprets the original failure payload. */ showServerDenial(outcome: ServerDenial): void; showFatal(error: Error): void; diff --git a/cocoscreator_projects/YouleNexus/assets/framework/platform/stores/platform-store.ts b/cocoscreator_projects/YouleNexus/assets/framework/platform/stores/platform-store.ts index ae5deaa..1020f68 100644 --- a/cocoscreator_projects/YouleNexus/assets/framework/platform/stores/platform-store.ts +++ b/cocoscreator_projects/YouleNexus/assets/framework/platform/stores/platform-store.ts @@ -487,6 +487,10 @@ export class PlatformStore { sex: requireInteger(raw.sex, '$.login.raw.sex'), bean: requireNumber(raw.bean, '$.login.raw.bean'), ip: requireString(raw.ip, '$.login.raw.ip'), + ...(hasOwn(raw, 'roomcard') ? {roomcard: requireNumber(raw.roomcard, '$.login.raw.roomcard')} : {}), + ...(hasOwn(raw, 'taskstate') ? {taskstate: requireInteger(raw.taskstate, '$.login.raw.taskstate')} : {}), + ...(hasOwn(raw, 'score') ? {score: requireNumber(raw.score, '$.login.raw.score')} : {}), + ...(hasOwn(raw, 'sign') ? {sign: raw.sign === null ? null : requireString(raw.sign, '$.login.raw.sign')} : {}), }); const roomResult = input.room === null ? { diff --git a/cocoscreator_projects/YouleNexus/assets/framework/platform/stores/platform-types.ts b/cocoscreator_projects/YouleNexus/assets/framework/platform/stores/platform-types.ts index e726ecf..9b6ed29 100644 --- a/cocoscreator_projects/YouleNexus/assets/framework/platform/stores/platform-types.ts +++ b/cocoscreator_projects/YouleNexus/assets/framework/platform/stores/platform-types.ts @@ -15,6 +15,11 @@ export interface PlatformPlayer { readonly avatar: string; readonly sex: number; readonly bean: number; + /** Account-only fields are absent on other room players; never default them in views. */ + readonly roomcard?: number; + readonly taskstate?: number; + readonly score?: number; + readonly sign?: string | null; readonly ip?: string; readonly isprepare?: number; readonly onstate?: number; diff --git a/cocoscreator_projects/YouleNexus/assets/framework/presentation/lobby-model.ts b/cocoscreator_projects/YouleNexus/assets/framework/presentation/lobby-model.ts new file mode 100644 index 0000000..dcb8ca9 --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/framework/presentation/lobby-model.ts @@ -0,0 +1,64 @@ +import type { RemoteConfig } from '../config/remote-config.ts'; +import type { PlatformState } from '../platform/stores/platform-types.ts'; +import { selectSelfPlayer } from '../platform/stores/selectors.ts'; +// Presentation checks required view inputs without depending on the protocol layer. +function requireNumber(value:unknown,path:string):number {if(typeof value!=='number'||!Number.isFinite(value))throw Error(`${path}: expected number`);return value;} +function requireInteger(value:unknown,path:string):number {const result=requireNumber(value,path);if(!Number.isInteger(result))throw Error(`${path}: expected integer`);return result;} +function requireString(value:unknown,path:string):string {if(typeof value!=='string')throw Error(`${path}: expected string`);return value;} +function requireRecord(value:unknown,path:string):Record {if(!value||typeof value!=='object'||Array.isArray(value))throw Error(`${path}: expected object`);return value as Record;} + +export function selectLobbyModel(state:PlatformState) { + const self=selectSelfPlayer(state); + if(!self)throw Error('lobby requires authenticated player'); + return Object.freeze({...self, + roomcard:requireNumber(self.roomcard,'players.self.roomcard'), + taskstate:requireInteger(self.taskstate,'players.self.taskstate'), + score:requireNumber(self.score,'players.self.score'), + sign:self.sign===null?'这个家伙很懒~~':requireString(self.sign,'players.self.sign') || '这个家伙很懒~~', + canAct:state.app.phase==='logged-in'&&state.room.kind==='outside', + }); +} +export type LobbyModel=ReturnType; +export interface Notice {type:0|1; text:string; image:string; url:string; height:number;} +export interface LobbyPolicy {noticeHours:number; notices:readonly Notice[]; scroll:string; hideTask:boolean; hideShare:boolean; + starName:string; contacts:readonly {label:string;value:string}[];} + +/** Source defaults: 04_Data.sysConfig and advertInfo_0/1/2; 12_Logic.get_paravalue. */ +export function resolveLobbyPolicy(remote:RemoteConfig):LobbyPolicy { + const interval=remote.getValue('gameNoticeShow'); + const noticeHours=interval==null?0:Number(interval); + if(!Number.isFinite(noticeHours)||noticeHours< -1)throw Error('Invalid gameNoticeShow'); + const menuValue=remote.getValue('menunotice'); + const menu=menuValue==null?{}:requireRecord(menuValue,'menunotice'); + const notices:Notice[]=[]; + for(let index=0;index<3;index++){ + const value=menu[`advert${index}`]; + if(value==null){ + const message=index===0?remote.getValue('noticemsg'):null; + notices.push({type:0,text:message==null?'':requireString(message,'noticemsg').replace(/#/g,'\n'),image:'',url:'',height:1}); + continue; + } + const data=requireRecord(value,`menunotice.advert${index}`); + const type=requireInteger(data.type,`menunotice.advert${index}.type`); + if(type!==0&&type!==1)throw Error(`menunotice.advert${index}.type must be 0 or 1`); + // Empty text and URL explicitly mean no content/action in the source. + const field=(key:string)=>data[key]==null?'':requireString(data[key],`menunotice.advert${index}.${key}`); + notices.push({type,text:type===0?field('msg').replace(/#/g,'\n'):'',image:type===1?field('imgUrl'):'', + url:field(type===0?'url':'imgAdUrl'),height:type===1?requireNumber(data.height,`menunotice.advert${index}.height`):1}); + } + const scroll=remote.getValue('scrollmsg'); + const star=remote.getValue('starName'); + const contacts:Array<{label:string;value:string}>=[]; + for(const [key,title] of [['service_wechat','客服微信:'],['service_qq','投诉建议:'],['service_tel','客服手机:']]){ + const value=remote.getValue(key); + if(value!=null&&value!=='')contacts.push({label:title,value:requireString(value,key)}); + } + return Object.freeze({noticeHours,notices:Object.freeze(notices),scroll:scroll==null?'':requireString(scroll,'scrollmsg'), + starName:star==null?'星星':requireString(star,'starName'),contacts:Object.freeze(contacts), + hideTask:Boolean(remote.getValue('hideTaskBtn')),hideShare:Boolean(remote.getValue('hideWxShare'))}); +} +/** Exact JudgeShow expiry: equality is not expired; reconnect never auto-opens. */ +export function shouldShowNotice(hours:number,previous:number|null,now:number,reconnect:boolean):boolean { + if(reconnect||hours===-1)return false; + return hours===0||!previous||previous+hours*3600000; export function routeForFirstSlice( diff --git a/cocoscreator_projects/YouleNexus/assets/framework/protocol/platform-handlers.ts b/cocoscreator_projects/YouleNexus/assets/framework/protocol/platform-handlers.ts index 17de2b1..f94fd61 100644 --- a/cocoscreator_projects/YouleNexus/assets/framework/protocol/platform-handlers.ts +++ b/cocoscreator_projects/YouleNexus/assets/framework/protocol/platform-handlers.ts @@ -3,6 +3,7 @@ import type { GameSessionHost } from '../sdk/runtime/game-session-host.ts'; import type { ConnectionControlPort } from '../platform/connection-intent.ts'; import type { RuntimeSession } from '../platform/runtime-session.ts'; import type { PlatformStore } from '../platform/stores/platform-store.ts'; +import { requireRecord, requireString } from './contracts/validation.ts'; import { parseConnectAgentserverPayload, parseConnectRoomserverPayload, @@ -16,6 +17,7 @@ import { } from './contracts/index.ts'; import { buildFirstSliceEnvelope, + isLoginResponse, FIRST_SLICE_RPC_ROUTE, routeForFirstSlice, type FirstSliceRpc, @@ -26,6 +28,7 @@ export interface PlatformHandlersOptions { readonly gameSession: GameSessionHost; readonly session: RuntimeSession; readonly connection: ConnectionControlPort; + readonly showMessage?: (message:string,time:number)=>void; } export type PlatformDispatchResult = 'handled-platform'; @@ -47,7 +50,7 @@ export class PlatformHandlers { } const rpc = message.rpc as FirstSliceRpc; const expectedRoute = routeForFirstSlice(rpc); - if (message.route !== expectedRoute) { + if (message.route !== expectedRoute && !isLoginResponse(message)) { throw new Error( `Platform rpc route mismatch: rpc=${rpc} expected=${expectedRoute} received=${message.route}`, ); @@ -118,6 +121,20 @@ export class PlatformHandlers { ); break; } + case 'show_message': { + const data=requireRecord(message.data,'$.data'); + const text=requireString(data.msg,'$.data.msg'); + // Desk.show_message converts the original time with Number; only >0 auto-closes. + const time=Number(data.time); + if(!this.options.showMessage)throw Error('show_message requires a message UI'); + this.options.showMessage(text,time); + break; + } + case 'kick_offline': { + const data=requireRecord(message.data,'$.data'); + this.options.session.handleKick(data,()=>this.options.connection.stopForKick(data)); + break; + } case 'kick_server': { const parsed = parseKickServerPayload(message.data); this.options.session.handleKick( diff --git a/cocoscreator_projects/YouleNexus/assets/framework/protocol/router.ts b/cocoscreator_projects/YouleNexus/assets/framework/protocol/router.ts index 553abcf..363251f 100644 --- a/cocoscreator_projects/YouleNexus/assets/framework/protocol/router.ts +++ b/cocoscreator_projects/YouleNexus/assets/framework/protocol/router.ts @@ -1,4 +1,5 @@ import type { InboundMessage } from '../core/types/envelope.ts'; +import { isLoginResponse } from './first-slice-routes.ts'; import type { GameSessionHost } from '../sdk/runtime/game-session-host.ts'; import type { RuntimeSession } from '../platform/runtime-session.ts'; import type { PlatformDispatchResult, PlatformHandlers } from './platform-handlers.ts'; @@ -77,6 +78,6 @@ function isPlatformRoute(route: string): route is 'platform' | 'agent' | 'room' } function isLoginGateControl(message: InboundMessage): boolean { - return message.route === 'agent' - && (message.rpc === 'player_login' || message.rpc === 'kick_server'); + return isLoginResponse(message)||(message.route === 'agent' + && (message.rpc === 'kick_server' || message.rpc === 'kick_offline')); } diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00046.fnt b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00046.fnt new file mode 100644 index 0000000..acc3f40 --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00046.fnt @@ -0,0 +1,15 @@ +info face="sans-serif" size=72 bold=0 italic=0 charset="32,48-57" unicode=1 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=1,1 outline=0 +common lineHeight=72 base=63 scaleW=86 scaleH=97 pages=1 packed=0 alphaChnl=0 redChnl=4 greenChnl=4 blueChnl=4 +page id=0 file="00046.png" +chars count=11 +char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=0 xadvance=17 page=0 chnl=15 +char id=48 x=0 y=0 width=21 height=32 xoffset=5 yoffset=-1 xadvance=30 page=0 chnl=15 +char id=49 x=0 y=66 width=19 height=31 xoffset=6 yoffset=-1 xadvance=30 page=0 chnl=15 +char id=50 x=20 y=66 width=21 height=31 xoffset=5 yoffset=-1 xadvance=30 page=0 chnl=15 +char id=51 x=22 y=0 width=20 height=32 xoffset=5 yoffset=-1 xadvance=30 page=0 chnl=15 +char id=52 x=43 y=0 width=22 height=32 xoffset=3 yoffset=-1 xadvance=30 page=0 chnl=15 +char id=53 x=66 y=0 width=20 height=32 xoffset=5 yoffset=-1 xadvance=30 page=0 chnl=15 +char id=54 x=0 y=33 width=21 height=32 xoffset=5 yoffset=-1 xadvance=30 page=0 chnl=15 +char id=55 x=42 y=66 width=22 height=31 xoffset=4 yoffset=0 xadvance=30 page=0 chnl=15 +char id=56 x=22 y=33 width=21 height=32 xoffset=5 yoffset=-1 xadvance=30 page=0 chnl=15 +char id=57 x=44 y=33 width=22 height=32 xoffset=4 yoffset=-1 xadvance=30 page=0 chnl=15 diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00046.fnt.meta b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00046.fnt.meta new file mode 100644 index 0000000..9800153 --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00046.fnt.meta @@ -0,0 +1,143 @@ +{ + "ver": "1.0.6", + "importer": "bitmap-font", + "imported": true, + "uuid": "46c72f1b-4348-46ce-8e86-c0a8a6f8385a", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": { + "_fntConfig": { + "commonHeight": 72, + "fontSize": 72, + "atlasName": "00046.png", + "fontDefDictionary": { + "32": { + "rect": { + "x": 0, + "y": 0, + "width": 0, + "height": 0 + }, + "xOffset": 0, + "yOffset": 0, + "xAdvance": 17 + }, + "48": { + "rect": { + "x": 0, + "y": 0, + "width": 21, + "height": 32 + }, + "xOffset": 5, + "yOffset": -1, + "xAdvance": 30 + }, + "49": { + "rect": { + "x": 0, + "y": 66, + "width": 19, + "height": 31 + }, + "xOffset": 6, + "yOffset": -1, + "xAdvance": 30 + }, + "50": { + "rect": { + "x": 20, + "y": 66, + "width": 21, + "height": 31 + }, + "xOffset": 5, + "yOffset": -1, + "xAdvance": 30 + }, + "51": { + "rect": { + "x": 22, + "y": 0, + "width": 20, + "height": 32 + }, + "xOffset": 5, + "yOffset": -1, + "xAdvance": 30 + }, + "52": { + "rect": { + "x": 43, + "y": 0, + "width": 22, + "height": 32 + }, + "xOffset": 3, + "yOffset": -1, + "xAdvance": 30 + }, + "53": { + "rect": { + "x": 66, + "y": 0, + "width": 20, + "height": 32 + }, + "xOffset": 5, + "yOffset": -1, + "xAdvance": 30 + }, + "54": { + "rect": { + "x": 0, + "y": 33, + "width": 21, + "height": 32 + }, + "xOffset": 5, + "yOffset": -1, + "xAdvance": 30 + }, + "55": { + "rect": { + "x": 42, + "y": 66, + "width": 22, + "height": 31 + }, + "xOffset": 4, + "yOffset": 0, + "xAdvance": 30 + }, + "56": { + "rect": { + "x": 22, + "y": 33, + "width": 21, + "height": 32 + }, + "xOffset": 5, + "yOffset": -1, + "xAdvance": 30 + }, + "57": { + "rect": { + "x": 44, + "y": 33, + "width": 22, + "height": 32 + }, + "xOffset": 4, + "yOffset": -1, + "xAdvance": 30 + } + }, + "kerningDict": {} + }, + "fontSize": 72, + "textureUuid": "602d12d2-23c7-48a5-9edb-e39fa467bad8" + } +} diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00046.png b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00046.png new file mode 100644 index 0000000000000000000000000000000000000000..213188310821419f604c2eea44818b101a8ec2b9 GIT binary patch literal 5054 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 UN?9ssi~s-t07*qoM6N<$f;Q>Et^fc4 literal 0 HcmV?d00001 diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00046.png.meta b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00046.png.meta new file mode 100644 index 0000000..4e42db2 --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00046.png.meta @@ -0,0 +1,134 @@ +{ + "ver": "1.0.27", + "importer": "image", + "imported": true, + "uuid": "602d12d2-23c7-48a5-9edb-e39fa467bad8", + "files": [ + ".json", + ".png" + ], + "subMetas": { + "6c48a": { + "importer": "texture", + "uuid": "602d12d2-23c7-48a5-9edb-e39fa467bad8@6c48a", + "displayName": "00046", + "id": "6c48a", + "name": "texture", + "userData": { + "wrapModeS": "clamp-to-edge", + "wrapModeT": "clamp-to-edge", + "imageUuidOrDatabaseUri": "602d12d2-23c7-48a5-9edb-e39fa467bad8", + "isUuid": true, + "visible": false, + "minfilter": "linear", + "magfilter": "linear", + "mipfilter": "none", + "anisotropy": 0 + }, + "ver": "1.0.22", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {} + }, + "f9941": { + "importer": "sprite-frame", + "uuid": "602d12d2-23c7-48a5-9edb-e39fa467bad8@f9941", + "displayName": "00046", + "id": "f9941", + "name": "spriteFrame", + "userData": { + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 1, + "trimY": 1, + "width": 84, + "height": 95, + "rawWidth": 86, + "rawHeight": 97, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "packable": true, + "pixelsToUnit": 100, + "pivotX": 0.5, + "pivotY": 0.5, + "meshType": 0, + "vertices": { + "rawPosition": [ + -42, + -47.5, + 0, + 42, + -47.5, + 0, + -42, + 47.5, + 0, + 42, + 47.5, + 0 + ], + "indexes": [ + 0, + 1, + 2, + 2, + 1, + 3 + ], + "uv": [ + 1, + 96, + 85, + 96, + 1, + 1, + 85, + 1 + ], + "nuv": [ + 0.011627906976744186, + 0.010309278350515464, + 0.9883720930232558, + 0.010309278350515464, + 0.011627906976744186, + 0.9896907216494846, + 0.9883720930232558, + 0.9896907216494846 + ], + "minPos": [ + -42, + -47.5, + 0 + ], + "maxPos": [ + 42, + 47.5, + 0 + ] + }, + "isUuid": true, + "imageUuidOrDatabaseUri": "602d12d2-23c7-48a5-9edb-e39fa467bad8@6c48a", + "atlasUuid": "", + "trimType": "auto" + }, + "ver": "1.0.12", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {} + } + }, + "userData": { + "type": "sprite-frame", + "fixAlphaTransparencyArtifacts": false, + "hasAlpha": true, + "redirect": "602d12d2-23c7-48a5-9edb-e39fa467bad8@6c48a" + } +} diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00183.fnt b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00183.fnt new file mode 100644 index 0000000..456afec --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00183.fnt @@ -0,0 +1,16 @@ +info face="sans-serif" size=72 bold=0 italic=0 charset="32,46,48-57" unicode=1 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=1,1 outline=0 +common lineHeight=72 base=63 scaleW=130 scaleH=137 pages=1 packed=0 alphaChnl=0 redChnl=4 greenChnl=4 blueChnl=4 +page id=0 file="00183.png" +chars count=12 +char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=0 xadvance=17 page=0 chnl=15 +char id=46 x=106 y=46 width=18 height=17 xoffset=9 yoffset=27 xadvance=36 page=0 chnl=15 +char id=48 x=0 y=0 width=35 height=45 xoffset=1 yoffset=1 xadvance=36 page=0 chnl=15 +char id=49 x=36 y=0 width=24 height=45 xoffset=4 yoffset=1 xadvance=36 page=0 chnl=15 +char id=50 x=61 y=0 width=34 height=45 xoffset=0 yoffset=1 xadvance=36 page=0 chnl=15 +char id=51 x=96 y=0 width=34 height=45 xoffset=1 yoffset=1 xadvance=36 page=0 chnl=15 +char id=52 x=0 y=46 width=37 height=45 xoffset=-1 yoffset=1 xadvance=36 page=0 chnl=15 +char id=53 x=0 y=92 width=33 height=45 xoffset=0 yoffset=1 xadvance=36 page=0 chnl=15 +char id=54 x=38 y=46 width=33 height=45 xoffset=1 yoffset=1 xadvance=36 page=0 chnl=15 +char id=55 x=34 y=92 width=33 height=45 xoffset=1 yoffset=1 xadvance=36 page=0 chnl=15 +char id=56 x=72 y=46 width=33 height=45 xoffset=1 yoffset=1 xadvance=36 page=0 chnl=15 +char id=57 x=68 y=92 width=34 height=45 xoffset=1 yoffset=1 xadvance=36 page=0 chnl=15 diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00183.fnt.meta b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00183.fnt.meta new file mode 100644 index 0000000..b4ff34a --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00183.fnt.meta @@ -0,0 +1,154 @@ +{ + "ver": "1.0.6", + "importer": "bitmap-font", + "imported": true, + "uuid": "a1a4d609-bc0b-4b42-9534-c9162508d8d0", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": { + "_fntConfig": { + "commonHeight": 72, + "fontSize": 72, + "atlasName": "00183.png", + "fontDefDictionary": { + "32": { + "rect": { + "x": 0, + "y": 0, + "width": 0, + "height": 0 + }, + "xOffset": 0, + "yOffset": 0, + "xAdvance": 17 + }, + "46": { + "rect": { + "x": 106, + "y": 46, + "width": 18, + "height": 17 + }, + "xOffset": 9, + "yOffset": 27, + "xAdvance": 36 + }, + "48": { + "rect": { + "x": 0, + "y": 0, + "width": 35, + "height": 45 + }, + "xOffset": 1, + "yOffset": 1, + "xAdvance": 36 + }, + "49": { + "rect": { + "x": 36, + "y": 0, + "width": 24, + "height": 45 + }, + "xOffset": 4, + "yOffset": 1, + "xAdvance": 36 + }, + "50": { + "rect": { + "x": 61, + "y": 0, + "width": 34, + "height": 45 + }, + "xOffset": 0, + "yOffset": 1, + "xAdvance": 36 + }, + "51": { + "rect": { + "x": 96, + "y": 0, + "width": 34, + "height": 45 + }, + "xOffset": 1, + "yOffset": 1, + "xAdvance": 36 + }, + "52": { + "rect": { + "x": 0, + "y": 46, + "width": 37, + "height": 45 + }, + "xOffset": -1, + "yOffset": 1, + "xAdvance": 36 + }, + "53": { + "rect": { + "x": 0, + "y": 92, + "width": 33, + "height": 45 + }, + "xOffset": 0, + "yOffset": 1, + "xAdvance": 36 + }, + "54": { + "rect": { + "x": 38, + "y": 46, + "width": 33, + "height": 45 + }, + "xOffset": 1, + "yOffset": 1, + "xAdvance": 36 + }, + "55": { + "rect": { + "x": 34, + "y": 92, + "width": 33, + "height": 45 + }, + "xOffset": 1, + "yOffset": 1, + "xAdvance": 36 + }, + "56": { + "rect": { + "x": 72, + "y": 46, + "width": 33, + "height": 45 + }, + "xOffset": 1, + "yOffset": 1, + "xAdvance": 36 + }, + "57": { + "rect": { + "x": 68, + "y": 92, + "width": 34, + "height": 45 + }, + "xOffset": 1, + "yOffset": 1, + "xAdvance": 36 + } + }, + "kerningDict": {} + }, + "fontSize": 72, + "textureUuid": "6e395781-40d9-4fe5-bb26-f2fe77693939" + } +} diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00183.png b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00183.png new file mode 100644 index 0000000000000000000000000000000000000000..d94200eeaeddd76dd1e6cc4dd66597f76e7ce6b6 GIT binary patch literal 27173 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 literal 0 HcmV?d00001 diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00183.png.meta b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00183.png.meta new file mode 100644 index 0000000..0b05a15 --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00183.png.meta @@ -0,0 +1,134 @@ +{ + "ver": "1.0.27", + "importer": "image", + "imported": true, + "uuid": "6e395781-40d9-4fe5-bb26-f2fe77693939", + "files": [ + ".json", + ".png" + ], + "subMetas": { + "6c48a": { + "importer": "texture", + "uuid": "6e395781-40d9-4fe5-bb26-f2fe77693939@6c48a", + "displayName": "00183", + "id": "6c48a", + "name": "texture", + "userData": { + "wrapModeS": "clamp-to-edge", + "wrapModeT": "clamp-to-edge", + "imageUuidOrDatabaseUri": "6e395781-40d9-4fe5-bb26-f2fe77693939", + "isUuid": true, + "visible": false, + "minfilter": "linear", + "magfilter": "linear", + "mipfilter": "none", + "anisotropy": 0 + }, + "ver": "1.0.22", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {} + }, + "f9941": { + "importer": "sprite-frame", + "uuid": "6e395781-40d9-4fe5-bb26-f2fe77693939@f9941", + "displayName": "00183", + "id": "f9941", + "name": "spriteFrame", + "userData": { + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 1, + "trimY": 1, + "width": 128, + "height": 135, + "rawWidth": 130, + "rawHeight": 137, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "packable": true, + "pixelsToUnit": 100, + "pivotX": 0.5, + "pivotY": 0.5, + "meshType": 0, + "vertices": { + "rawPosition": [ + -64, + -67.5, + 0, + 64, + -67.5, + 0, + -64, + 67.5, + 0, + 64, + 67.5, + 0 + ], + "indexes": [ + 0, + 1, + 2, + 2, + 1, + 3 + ], + "uv": [ + 1, + 136, + 129, + 136, + 1, + 1, + 129, + 1 + ], + "nuv": [ + 0.007692307692307693, + 0.0072992700729927005, + 0.9923076923076923, + 0.0072992700729927005, + 0.007692307692307693, + 0.9927007299270073, + 0.9923076923076923, + 0.9927007299270073 + ], + "minPos": [ + -64, + -67.5, + 0 + ], + "maxPos": [ + 64, + 67.5, + 0 + ] + }, + "isUuid": true, + "imageUuidOrDatabaseUri": "6e395781-40d9-4fe5-bb26-f2fe77693939@6c48a", + "atlasUuid": "", + "trimType": "auto" + }, + "ver": "1.0.12", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {} + } + }, + "userData": { + "type": "sprite-frame", + "fixAlphaTransparencyArtifacts": false, + "hasAlpha": true, + "redirect": "6e395781-40d9-4fe5-bb26-f2fe77693939@6c48a" + } +} diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00198.fnt b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00198.fnt new file mode 100644 index 0000000..0748464 --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00198.fnt @@ -0,0 +1,16 @@ +info face="sans-serif" size=72 bold=0 italic=0 charset="32,46,48-57" unicode=1 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=1,1 outline=0 +common lineHeight=72 base=63 scaleW=100 scaleH=107 pages=1 packed=0 alphaChnl=0 redChnl=4 greenChnl=4 blueChnl=4 +page id=0 file="00198.png" +chars count=12 +char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=0 xadvance=17 page=0 chnl=15 +char id=46 x=83 y=36 width=14 height=13 xoffset=7 yoffset=23 xadvance=28 page=0 chnl=15 +char id=48 x=0 y=0 width=27 height=35 xoffset=1 yoffset=1 xadvance=28 page=0 chnl=15 +char id=49 x=28 y=0 width=18 height=35 xoffset=4 yoffset=1 xadvance=28 page=0 chnl=15 +char id=50 x=47 y=0 width=26 height=35 xoffset=1 yoffset=1 xadvance=28 page=0 chnl=15 +char id=51 x=74 y=0 width=26 height=35 xoffset=1 yoffset=1 xadvance=28 page=0 chnl=15 +char id=52 x=0 y=36 width=28 height=35 xoffset=0 yoffset=1 xadvance=28 page=0 chnl=15 +char id=53 x=0 y=72 width=26 height=35 xoffset=0 yoffset=1 xadvance=28 page=0 chnl=15 +char id=54 x=29 y=36 width=26 height=35 xoffset=1 yoffset=1 xadvance=28 page=0 chnl=15 +char id=55 x=27 y=72 width=25 height=35 xoffset=2 yoffset=1 xadvance=28 page=0 chnl=15 +char id=56 x=56 y=36 width=26 height=35 xoffset=1 yoffset=1 xadvance=28 page=0 chnl=15 +char id=57 x=53 y=72 width=26 height=35 xoffset=1 yoffset=1 xadvance=28 page=0 chnl=15 diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00198.fnt.meta b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00198.fnt.meta new file mode 100644 index 0000000..1319141 --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00198.fnt.meta @@ -0,0 +1,154 @@ +{ + "ver": "1.0.6", + "importer": "bitmap-font", + "imported": true, + "uuid": "eaef6e02-102f-4131-be27-eb53dbba44b7", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": { + "_fntConfig": { + "commonHeight": 72, + "fontSize": 72, + "atlasName": "00198.png", + "fontDefDictionary": { + "32": { + "rect": { + "x": 0, + "y": 0, + "width": 0, + "height": 0 + }, + "xOffset": 0, + "yOffset": 0, + "xAdvance": 17 + }, + "46": { + "rect": { + "x": 83, + "y": 36, + "width": 14, + "height": 13 + }, + "xOffset": 7, + "yOffset": 23, + "xAdvance": 28 + }, + "48": { + "rect": { + "x": 0, + "y": 0, + "width": 27, + "height": 35 + }, + "xOffset": 1, + "yOffset": 1, + "xAdvance": 28 + }, + "49": { + "rect": { + "x": 28, + "y": 0, + "width": 18, + "height": 35 + }, + "xOffset": 4, + "yOffset": 1, + "xAdvance": 28 + }, + "50": { + "rect": { + "x": 47, + "y": 0, + "width": 26, + "height": 35 + }, + "xOffset": 1, + "yOffset": 1, + "xAdvance": 28 + }, + "51": { + "rect": { + "x": 74, + "y": 0, + "width": 26, + "height": 35 + }, + "xOffset": 1, + "yOffset": 1, + "xAdvance": 28 + }, + "52": { + "rect": { + "x": 0, + "y": 36, + "width": 28, + "height": 35 + }, + "xOffset": 0, + "yOffset": 1, + "xAdvance": 28 + }, + "53": { + "rect": { + "x": 0, + "y": 72, + "width": 26, + "height": 35 + }, + "xOffset": 0, + "yOffset": 1, + "xAdvance": 28 + }, + "54": { + "rect": { + "x": 29, + "y": 36, + "width": 26, + "height": 35 + }, + "xOffset": 1, + "yOffset": 1, + "xAdvance": 28 + }, + "55": { + "rect": { + "x": 27, + "y": 72, + "width": 25, + "height": 35 + }, + "xOffset": 2, + "yOffset": 1, + "xAdvance": 28 + }, + "56": { + "rect": { + "x": 56, + "y": 36, + "width": 26, + "height": 35 + }, + "xOffset": 1, + "yOffset": 1, + "xAdvance": 28 + }, + "57": { + "rect": { + "x": 53, + "y": 72, + "width": 26, + "height": 35 + }, + "xOffset": 1, + "yOffset": 1, + "xAdvance": 28 + } + }, + "kerningDict": {} + }, + "fontSize": 72, + "textureUuid": "0040b683-3afc-4b7f-bf44-45198e65bcbd" + } +} diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00198.png b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00198.png new file mode 100644 index 0000000000000000000000000000000000000000..a6a68fffc6f273fabc3cedc16f06979be28f8689 GIT binary patch literal 8653 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
j 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 literal 0 HcmV?d00001 diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00192.png.meta b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00192.png.meta new file mode 100644 index 0000000..9ef2744 --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00192.png.meta @@ -0,0 +1,134 @@ +{ + "ver": "1.0.27", + "importer": "image", + "imported": true, + "uuid": "345000e1-0623-4ddb-b5c3-eba360b31129", + "files": [ + ".json", + ".png" + ], + "subMetas": { + "6c48a": { + "importer": "texture", + "uuid": "345000e1-0623-4ddb-b5c3-eba360b31129@6c48a", + "displayName": "00192", + "id": "6c48a", + "name": "texture", + "userData": { + "wrapModeS": "clamp-to-edge", + "wrapModeT": "clamp-to-edge", + "imageUuidOrDatabaseUri": "345000e1-0623-4ddb-b5c3-eba360b31129", + "isUuid": true, + "visible": false, + "minfilter": "linear", + "magfilter": "linear", + "mipfilter": "none", + "anisotropy": 0 + }, + "ver": "1.0.22", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {} + }, + "f9941": { + "importer": "sprite-frame", + "uuid": "345000e1-0623-4ddb-b5c3-eba360b31129@f9941", + "displayName": "00192", + "id": "f9941", + "name": "spriteFrame", + "userData": { + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 1, + "trimY": 1, + "width": 212, + "height": 210, + "rawWidth": 214, + "rawHeight": 212, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "packable": true, + "pixelsToUnit": 100, + "pivotX": 0.5, + "pivotY": 0.5, + "meshType": 0, + "vertices": { + "rawPosition": [ + -106, + -105, + 0, + 106, + -105, + 0, + -106, + 105, + 0, + 106, + 105, + 0 + ], + "indexes": [ + 0, + 1, + 2, + 2, + 1, + 3 + ], + "uv": [ + 1, + 211, + 213, + 211, + 1, + 1, + 213, + 1 + ], + "nuv": [ + 0.004672897196261682, + 0.0047169811320754715, + 0.9953271028037384, + 0.0047169811320754715, + 0.004672897196261682, + 0.9952830188679245, + 0.9953271028037384, + 0.9952830188679245 + ], + "minPos": [ + -106, + -105, + 0 + ], + "maxPos": [ + 106, + 105, + 0 + ] + }, + "isUuid": true, + "imageUuidOrDatabaseUri": "345000e1-0623-4ddb-b5c3-eba360b31129@6c48a", + "atlasUuid": "", + "trimType": "auto" + }, + "ver": "1.0.12", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {} + } + }, + "userData": { + "type": "sprite-frame", + "fixAlphaTransparencyArtifacts": false, + "hasAlpha": true, + "redirect": "345000e1-0623-4ddb-b5c3-eba360b31129@6c48a" + } +} diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00227.fnt b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00227.fnt new file mode 100644 index 0000000..a03ec9a --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00227.fnt @@ -0,0 +1,15 @@ +info face="sans-serif" size=72 bold=0 italic=0 charset="32,48-57" unicode=1 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=1,1 outline=0 +common lineHeight=72 base=63 scaleW=68 scaleH=74 pages=1 packed=0 alphaChnl=0 redChnl=4 greenChnl=4 blueChnl=4 +page id=0 file="00227.png" +chars count=11 +char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=0 xadvance=17 page=0 chnl=15 +char id=48 x=0 y=0 width=19 height=24 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=15 +char id=49 x=20 y=0 width=11 height=24 xoffset=3 yoffset=-1 xadvance=18 page=0 chnl=15 +char id=50 x=32 y=0 width=17 height=24 xoffset=1 yoffset=-1 xadvance=18 page=0 chnl=15 +char id=51 x=50 y=0 width=18 height=24 xoffset=0 yoffset=-1 xadvance=18 page=0 chnl=15 +char id=52 x=0 y=25 width=19 height=24 xoffset=-1 yoffset=-1 xadvance=18 page=0 chnl=15 +char id=53 x=0 y=50 width=17 height=24 xoffset=1 yoffset=-1 xadvance=18 page=0 chnl=15 +char id=54 x=20 y=25 width=18 height=24 xoffset=1 yoffset=-1 xadvance=18 page=0 chnl=15 +char id=55 x=18 y=50 width=18 height=24 xoffset=0 yoffset=-1 xadvance=18 page=0 chnl=15 +char id=56 x=39 y=25 width=17 height=24 xoffset=1 yoffset=-1 xadvance=18 page=0 chnl=15 +char id=57 x=37 y=50 width=18 height=24 xoffset=0 yoffset=-1 xadvance=18 page=0 chnl=15 diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00227.fnt.meta b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00227.fnt.meta new file mode 100644 index 0000000..45220e2 --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00227.fnt.meta @@ -0,0 +1,143 @@ +{ + "ver": "1.0.6", + "importer": "bitmap-font", + "imported": true, + "uuid": "c6ae89b9-7788-4ac3-af39-16fa8dbebd8c", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": { + "_fntConfig": { + "commonHeight": 72, + "fontSize": 72, + "atlasName": "00227.png", + "fontDefDictionary": { + "32": { + "rect": { + "x": 0, + "y": 0, + "width": 0, + "height": 0 + }, + "xOffset": 0, + "yOffset": 0, + "xAdvance": 17 + }, + "48": { + "rect": { + "x": 0, + "y": 0, + "width": 19, + "height": 24 + }, + "xOffset": -1, + "yOffset": -1, + "xAdvance": 18 + }, + "49": { + "rect": { + "x": 20, + "y": 0, + "width": 11, + "height": 24 + }, + "xOffset": 3, + "yOffset": -1, + "xAdvance": 18 + }, + "50": { + "rect": { + "x": 32, + "y": 0, + "width": 17, + "height": 24 + }, + "xOffset": 1, + "yOffset": -1, + "xAdvance": 18 + }, + "51": { + "rect": { + "x": 50, + "y": 0, + "width": 18, + "height": 24 + }, + "xOffset": 0, + "yOffset": -1, + "xAdvance": 18 + }, + "52": { + "rect": { + "x": 0, + "y": 25, + "width": 19, + "height": 24 + }, + "xOffset": -1, + "yOffset": -1, + "xAdvance": 18 + }, + "53": { + "rect": { + "x": 0, + "y": 50, + "width": 17, + "height": 24 + }, + "xOffset": 1, + "yOffset": -1, + "xAdvance": 18 + }, + "54": { + "rect": { + "x": 20, + "y": 25, + "width": 18, + "height": 24 + }, + "xOffset": 1, + "yOffset": -1, + "xAdvance": 18 + }, + "55": { + "rect": { + "x": 18, + "y": 50, + "width": 18, + "height": 24 + }, + "xOffset": 0, + "yOffset": -1, + "xAdvance": 18 + }, + "56": { + "rect": { + "x": 39, + "y": 25, + "width": 17, + "height": 24 + }, + "xOffset": 1, + "yOffset": -1, + "xAdvance": 18 + }, + "57": { + "rect": { + "x": 37, + "y": 50, + "width": 18, + "height": 24 + }, + "xOffset": 0, + "yOffset": -1, + "xAdvance": 18 + } + }, + "kerningDict": {} + }, + "fontSize": 72, + "textureUuid": "a420ccba-8470-46b2-9d93-60b70918b801" + } +} diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00227.png b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00227.png new file mode 100644 index 0000000000000000000000000000000000000000..06e7a3e7892233aae8b517e1b660a11eb0fbd465 GIT binary patch literal 3329 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
;vMUCgg#!6Bi1 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%0A%Wza5 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 A*Z=?k literal 0 HcmV?d00001 diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-login/00433.png.meta b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-login/00433.png.meta new file mode 100644 index 0000000..b667ea8 --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-login/00433.png.meta @@ -0,0 +1,134 @@ +{ + "ver": "1.0.27", + "importer": "image", + "imported": true, + "uuid": "90ba5aa4-b0ce-4de3-bf07-5dc1b3f51597", + "files": [ + ".json", + ".png" + ], + "subMetas": { + "6c48a": { + "importer": "texture", + "uuid": "90ba5aa4-b0ce-4de3-bf07-5dc1b3f51597@6c48a", + "displayName": "00433", + "id": "6c48a", + "name": "texture", + "userData": { + "wrapModeS": "clamp-to-edge", + "wrapModeT": "clamp-to-edge", + "imageUuidOrDatabaseUri": "90ba5aa4-b0ce-4de3-bf07-5dc1b3f51597", + "isUuid": true, + "visible": false, + "minfilter": "linear", + "magfilter": "linear", + "mipfilter": "none", + "anisotropy": 0 + }, + "ver": "1.0.22", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {} + }, + "f9941": { + "importer": "sprite-frame", + "uuid": "90ba5aa4-b0ce-4de3-bf07-5dc1b3f51597@f9941", + "displayName": "00433", + "id": "f9941", + "name": "spriteFrame", + "userData": { + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 1, + "trimY": 1, + "width": 81, + "height": 90, + "rawWidth": 83, + "rawHeight": 92, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "packable": true, + "pixelsToUnit": 100, + "pivotX": 0.5, + "pivotY": 0.5, + "meshType": 0, + "vertices": { + "rawPosition": [ + -40.5, + -45, + 0, + 40.5, + -45, + 0, + -40.5, + 45, + 0, + 40.5, + 45, + 0 + ], + "indexes": [ + 0, + 1, + 2, + 2, + 1, + 3 + ], + "uv": [ + 1, + 91, + 82, + 91, + 1, + 1, + 82, + 1 + ], + "nuv": [ + 0.012048192771084338, + 0.010869565217391304, + 0.9879518072289156, + 0.010869565217391304, + 0.012048192771084338, + 0.9891304347826086, + 0.9879518072289156, + 0.9891304347826086 + ], + "minPos": [ + -40.5, + -45, + 0 + ], + "maxPos": [ + 40.5, + 45, + 0 + ] + }, + "isUuid": true, + "imageUuidOrDatabaseUri": "90ba5aa4-b0ce-4de3-bf07-5dc1b3f51597@6c48a", + "atlasUuid": "", + "trimType": "auto" + }, + "ver": "1.0.12", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {} + } + }, + "userData": { + "type": "sprite-frame", + "fixAlphaTransparencyArtifacts": false, + "hasAlpha": true, + "redirect": "90ba5aa4-b0ce-4de3-bf07-5dc1b3f51597@6c48a" + } +} diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-room/00069.fnt b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-room/00069.fnt new file mode 100644 index 0000000..7f767be --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-room/00069.fnt @@ -0,0 +1,15 @@ +info face="sans-serif" size=72 bold=0 italic=0 charset="32,48-57" unicode=1 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=1,1 outline=0 +common lineHeight=72 base=63 scaleW=62 scaleH=68 pages=1 packed=0 alphaChnl=0 redChnl=4 greenChnl=4 blueChnl=4 +page id=0 file="00069.png" +chars count=11 +char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=0 xadvance=17 page=0 chnl=15 +char id=48 x=0 y=0 width=17 height=22 xoffset=-1 yoffset=-1 xadvance=15 page=0 chnl=15 +char id=49 x=18 y=0 width=10 height=22 xoffset=2 yoffset=-1 xadvance=15 page=0 chnl=15 +char id=50 x=29 y=0 width=16 height=22 xoffset=0 yoffset=-1 xadvance=15 page=0 chnl=15 +char id=51 x=46 y=0 width=16 height=22 xoffset=0 yoffset=-1 xadvance=15 page=0 chnl=15 +char id=52 x=0 y=23 width=17 height=22 xoffset=-1 yoffset=-1 xadvance=15 page=0 chnl=15 +char id=53 x=0 y=46 width=16 height=22 xoffset=-1 yoffset=-1 xadvance=15 page=0 chnl=15 +char id=54 x=18 y=23 width=16 height=22 xoffset=0 yoffset=-1 xadvance=15 page=0 chnl=15 +char id=55 x=17 y=46 width=17 height=22 xoffset=-1 yoffset=-1 xadvance=15 page=0 chnl=15 +char id=56 x=35 y=46 width=16 height=22 xoffset=-1 yoffset=-1 xadvance=15 page=0 chnl=15 +char id=57 x=35 y=23 width=17 height=22 xoffset=-1 yoffset=-1 xadvance=15 page=0 chnl=15 diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-room/00069.fnt.meta b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-room/00069.fnt.meta new file mode 100644 index 0000000..bbb183c --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-room/00069.fnt.meta @@ -0,0 +1,143 @@ +{ + "ver": "1.0.6", + "importer": "bitmap-font", + "imported": true, + "uuid": "5a15a10a-be5d-4657-b10f-a3f055a42da5", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": { + "_fntConfig": { + "commonHeight": 72, + "fontSize": 72, + "atlasName": "00069.png", + "fontDefDictionary": { + "32": { + "rect": { + "x": 0, + "y": 0, + "width": 0, + "height": 0 + }, + "xOffset": 0, + "yOffset": 0, + "xAdvance": 17 + }, + "48": { + "rect": { + "x": 0, + "y": 0, + "width": 17, + "height": 22 + }, + "xOffset": -1, + "yOffset": -1, + "xAdvance": 15 + }, + "49": { + "rect": { + "x": 18, + "y": 0, + "width": 10, + "height": 22 + }, + "xOffset": 2, + "yOffset": -1, + "xAdvance": 15 + }, + "50": { + "rect": { + "x": 29, + "y": 0, + "width": 16, + "height": 22 + }, + "xOffset": 0, + "yOffset": -1, + "xAdvance": 15 + }, + "51": { + "rect": { + "x": 46, + "y": 0, + "width": 16, + "height": 22 + }, + "xOffset": 0, + "yOffset": -1, + "xAdvance": 15 + }, + "52": { + "rect": { + "x": 0, + "y": 23, + "width": 17, + "height": 22 + }, + "xOffset": -1, + "yOffset": -1, + "xAdvance": 15 + }, + "53": { + "rect": { + "x": 0, + "y": 46, + "width": 16, + "height": 22 + }, + "xOffset": -1, + "yOffset": -1, + "xAdvance": 15 + }, + "54": { + "rect": { + "x": 18, + "y": 23, + "width": 16, + "height": 22 + }, + "xOffset": 0, + "yOffset": -1, + "xAdvance": 15 + }, + "55": { + "rect": { + "x": 17, + "y": 46, + "width": 17, + "height": 22 + }, + "xOffset": -1, + "yOffset": -1, + "xAdvance": 15 + }, + "56": { + "rect": { + "x": 35, + "y": 46, + "width": 16, + "height": 22 + }, + "xOffset": -1, + "yOffset": -1, + "xAdvance": 15 + }, + "57": { + "rect": { + "x": 35, + "y": 23, + "width": 17, + "height": 22 + }, + "xOffset": -1, + "yOffset": -1, + "xAdvance": 15 + } + }, + "kerningDict": {} + }, + "fontSize": 72, + "textureUuid": "8a8ff67a-f47c-4a98-a2b1-e82af8994b8c" + } +} diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-room/00069.png b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-room/00069.png new file mode 100644 index 0000000000000000000000000000000000000000..1462d9a4db9c3e0336b6812c0c9f599bb05e1399 GIT binary patch literal 2981 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 IM6N<$g5LU6s{jB1 literal 0 HcmV?d00001 diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-unassigned/00331.png.meta b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-unassigned/00331.png.meta new file mode 100644 index 0000000..2b6664e --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-unassigned/00331.png.meta @@ -0,0 +1,134 @@ +{ + "ver": "1.0.27", + "importer": "image", + "imported": true, + "uuid": "e3356e41-44d7-40fd-9970-b899c2e19b23", + "files": [ + ".json", + ".png" + ], + "subMetas": { + "6c48a": { + "importer": "texture", + "uuid": "e3356e41-44d7-40fd-9970-b899c2e19b23@6c48a", + "displayName": "00331", + "id": "6c48a", + "name": "texture", + "userData": { + "wrapModeS": "clamp-to-edge", + "wrapModeT": "clamp-to-edge", + "imageUuidOrDatabaseUri": "e3356e41-44d7-40fd-9970-b899c2e19b23", + "isUuid": true, + "visible": false, + "minfilter": "linear", + "magfilter": "linear", + "mipfilter": "none", + "anisotropy": 0 + }, + "ver": "1.0.22", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {} + }, + "f9941": { + "importer": "sprite-frame", + "uuid": "e3356e41-44d7-40fd-9970-b899c2e19b23@f9941", + "displayName": "00331", + "id": "f9941", + "name": "spriteFrame", + "userData": { + "trimThreshold": 1, + "rotated": false, + "offsetX": 0, + "offsetY": 0, + "trimX": 1, + "trimY": 1, + "width": 75, + "height": 75, + "rawWidth": 77, + "rawHeight": 77, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "packable": true, + "pixelsToUnit": 100, + "pivotX": 0.5, + "pivotY": 0.5, + "meshType": 0, + "vertices": { + "rawPosition": [ + -37.5, + -37.5, + 0, + 37.5, + -37.5, + 0, + -37.5, + 37.5, + 0, + 37.5, + 37.5, + 0 + ], + "indexes": [ + 0, + 1, + 2, + 2, + 1, + 3 + ], + "uv": [ + 1, + 76, + 76, + 76, + 1, + 1, + 76, + 1 + ], + "nuv": [ + 0.012987012987012988, + 0.012987012987012988, + 0.987012987012987, + 0.012987012987012988, + 0.012987012987012988, + 0.987012987012987, + 0.987012987012987, + 0.987012987012987 + ], + "minPos": [ + -37.5, + -37.5, + 0 + ], + "maxPos": [ + 37.5, + 37.5, + 0 + ] + }, + "isUuid": true, + "imageUuidOrDatabaseUri": "e3356e41-44d7-40fd-9970-b899c2e19b23@6c48a", + "atlasUuid": "", + "trimType": "auto" + }, + "ver": "1.0.12", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {} + } + }, + "userData": { + "type": "sprite-frame", + "fixAlphaTransparencyArtifacts": false, + "hasAlpha": true, + "redirect": "e3356e41-44d7-40fd-9970-b899c2e19b23@6c48a" + } +} diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/Login_Layer.prefab b/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/Login_Layer.prefab index 4def164..ced8f1d 100644 --- a/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/Login_Layer.prefab +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/Login_Layer.prefab @@ -731,7 +731,7 @@ }, "_lpos": { "__type__": "cc.Vec3", - "x": -76.807, + "x": -111.446, "y": -207.5, "z": 0 }, @@ -985,7 +985,7 @@ "_right": 0, "_top": 0, "_bottom": 0, - "_horizontalCenter": -76.807, + "_horizontalCenter": -111.446, "_verticalCenter": 0, "_isAbsLeft": true, "_isAbsRight": true, @@ -1012,6 +1012,8 @@ "__id__": 0 }, "fileId": "7bOUfugfZGRJARCABMOobI", + "instance": null, + "targetOverrides": null, "nestedPrefabInstanceRoots": null }, { @@ -1040,7 +1042,7 @@ }, "_lpos": { "__type__": "cc.Vec3", - "x": 82.11, + "x": 47.471, "y": -210.5, "z": 0 }, @@ -1158,7 +1160,7 @@ "_right": 0, "_top": 0, "_bottom": 0, - "_horizontalCenter": 82.11, + "_horizontalCenter": 47.471, "_verticalCenter": 0, "_isAbsLeft": true, "_isAbsRight": true, @@ -1185,6 +1187,8 @@ "__id__": 0 }, "fileId": "aa6JBxpmNMqbBB+2K20Gpm", + "instance": null, + "targetOverrides": null, "nestedPrefabInstanceRoots": null }, { @@ -3736,6 +3740,8 @@ "__id__": 0 }, "fileId": "d4P87gqa5AIJltQ5D4Vthy", + "instance": null, + "targetOverrides": null, "nestedPrefabInstanceRoots": null }, { diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer29_PhoneInfo.prefab b/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer29_PhoneInfo.prefab index 80f1cb3..ce37481 100644 --- a/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer29_PhoneInfo.prefab +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer29_PhoneInfo.prefab @@ -22,23 +22,23 @@ "__id__": 2 }, { - "__id__": 128 + "__id__": 180 } ], "_active": true, "_components": [ { - "__id__": 318 + "__id__": 370 }, { - "__id__": 320 + "__id__": 372 }, { - "__id__": 322 + "__id__": 374 } ], "_prefab": { - "__id__": 324 + "__id__": 376 }, "_lpos": { "__type__": "cc.Vec3", @@ -87,27 +87,9 @@ { "__id__": 19 }, - { - "__id__": 27 - }, - { - "__id__": 35 - }, - { - "__id__": 43 - }, { "__id__": 51 }, - { - "__id__": 59 - }, - { - "__id__": 67 - }, - { - "__id__": 75 - }, { "__id__": 83 }, @@ -115,26 +97,44 @@ "__id__": 91 }, { - "__id__": 99 + "__id__": 103 }, { - "__id__": 107 + "__id__": 111 }, { - "__id__": 115 + "__id__": 119 + }, + { + "__id__": 127 + }, + { + "__id__": 135 + }, + { + "__id__": 143 + }, + { + "__id__": 151 + }, + { + "__id__": 159 + }, + { + "__id__": 167 } ], "_active": true, "_components": [ { - "__id__": 123 + "__id__": 175 }, { - "__id__": 125 + "__id__": 177 } ], "_prefab": { - "__id__": 127 + "__id__": 179 }, "_lpos": { "__type__": "cc.Vec3", @@ -523,21 +523,25 @@ "_parent": { "__id__": 2 }, - "_children": [], + "_children": [ + { + "__id__": 20 + } + ], "_active": true, "_components": [ { - "__id__": 20 + "__id__": 44 }, { - "__id__": 22 + "__id__": 46 }, { - "__id__": 24 + "__id__": 48 } ], "_prefab": { - "__id__": 26 + "__id__": 50 }, "_lpos": { "__type__": "cc.Vec3", @@ -568,6 +572,584 @@ }, "_id": "" }, + { + "__type__": "cc.Node", + "_name": "InputEditBox", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 19 + }, + "_children": [ + { + "__id__": 21 + }, + { + "__id__": 29 + } + ], + "_active": true, + "_components": [ + { + "__id__": 35 + }, + { + "__id__": 37 + }, + { + "__id__": 39 + }, + { + "__id__": 41 + } + ], + "_prefab": { + "__id__": 43 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 22.5, + "y": 0, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 33554432, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "InputText", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 20 + }, + "_children": [], + "_active": false, + "_components": [ + { + "__id__": 22 + }, + { + "__id__": 24 + }, + { + "__id__": 26 + } + ], + "_prefab": { + "__id__": 28 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": -167.5, + "y": 30.5, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 33554432, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 21 + }, + "_enabled": true, + "__prefab": { + "__id__": 23 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 337, + "height": 61 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0, + "y": 1 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "10eqSvcYdMX54vxAHLy8gw" + }, + { + "__type__": "cc.Label", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 21 + }, + "_enabled": true, + "__prefab": { + "__id__": 25 + }, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 36, + "g": 11, + "b": 11, + "a": 255 + }, + "_string": "", + "_horizontalAlign": 0, + "_verticalAlign": 1, + "_actualFontSize": 29.516666666666666, + "_fontSize": 28, + "_fontFamily": "Arial", + "_lineHeight": 40, + "_overflow": 1, + "_enableWrapText": false, + "_font": null, + "_isSystemFontUsed": true, + "_spacingX": 0, + "_isItalic": false, + "_isBold": true, + "_isUnderline": false, + "_underlineHeight": 2, + "_cacheMode": 0, + "_enableOutline": false, + "_outlineColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_outlineWidth": 2, + "_enableShadow": false, + "_shadowColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_shadowOffset": { + "__type__": "cc.Vec2", + "x": 2, + "y": 2 + }, + "_shadowBlur": 2, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "5djbXRaSNJFLr08twyDHpd" + }, + { + "__type__": "cc.Widget", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 21 + }, + "_enabled": true, + "__prefab": { + "__id__": 27 + }, + "_alignFlags": 45, + "_target": { + "__id__": 20 + }, + "_left": 0, + "_right": 0, + "_top": 0, + "_bottom": 0, + "_horizontalCenter": 0, + "_verticalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 100, + "_originalHeight": 100, + "_alignMode": 1, + "_lockFlags": 0, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "d6WMSswXBB145SqaHmEcpB" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "92nwI3qcRJeJFuCAGZtulR", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, + { + "__type__": "cc.Node", + "_name": "Placeholder", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 20 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 30 + }, + { + "__id__": 32 + } + ], + "_prefab": { + "__id__": 34 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": -167.5, + "y": 30.5, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 33554432, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 29 + }, + "_enabled": true, + "__prefab": { + "__id__": 31 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 0, + "height": 50.39999999999999 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "bc8u91krlKuKgnkBgeAVhx" + }, + { + "__type__": "cc.Label", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 29 + }, + "_enabled": true, + "__prefab": { + "__id__": 33 + }, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_string": "", + "_horizontalAlign": 0, + "_verticalAlign": 1, + "_actualFontSize": 29.516666666666666, + "_fontSize": 28, + "_fontFamily": "Arial", + "_lineHeight": 40, + "_overflow": 0, + "_enableWrapText": false, + "_font": null, + "_isSystemFontUsed": true, + "_spacingX": 0, + "_isItalic": false, + "_isBold": false, + "_isUnderline": false, + "_underlineHeight": 2, + "_cacheMode": 0, + "_enableOutline": false, + "_outlineColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_outlineWidth": 2, + "_enableShadow": false, + "_shadowColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_shadowOffset": { + "__type__": "cc.Vec2", + "x": 2, + "y": 2 + }, + "_shadowBlur": 2, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "19Nd6DCn9CwITEmW5TL5LI" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "9eMIx6vNVGBKiZjxcGrVSd", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 20 + }, + "_enabled": true, + "__prefab": { + "__id__": 36 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 339, + "height": 61 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "74XBTyHrFJgbU3YDdVLIie" + }, + { + "__type__": "cc.Widget", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 20 + }, + "_enabled": true, + "__prefab": { + "__id__": 38 + }, + "_alignFlags": 45, + "_target": { + "__id__": 19 + }, + "_left": 65, + "_right": 20, + "_top": 0, + "_bottom": 0, + "_horizontalCenter": 0, + "_verticalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 424, + "_originalHeight": 61, + "_alignMode": 1, + "_lockFlags": 0, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "e7hXYUM+RLHafCwfg7IoVl" + }, + { + "__type__": "cc.EditBox", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 20 + }, + "_enabled": true, + "__prefab": { + "__id__": 40 + }, + "editingDidBegan": [], + "textChanged": [], + "editingDidEnded": [], + "editingReturn": [], + "_textLabel": { + "__id__": 24 + }, + "_placeholderLabel": { + "__id__": 32 + }, + "_returnType": 0, + "_string": "", + "_tabIndex": 0, + "_backgroundImage": null, + "_inputFlag": 5, + "_inputMode": 2, + "_maxLength": 18, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "0cYJqnBztLr4lFQ5s2rgxK" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 20 + }, + "_enabled": true, + "__prefab": { + "__id__": 42 + }, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_spriteFrame": null, + "_type": 1, + "_fillType": 0, + "_sizeMode": 1, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_useGrayscale": false, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "3c6kcouK1MsaZD3ag+TIEe" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "b0JX2b3+5GWJhkd6FJ7fTb", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, { "__type__": "cc.UITransform", "_name": "", @@ -578,7 +1160,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 21 + "__id__": 45 }, "_contentSize": { "__type__": "cc.Size", @@ -606,7 +1188,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 23 + "__id__": 47 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -651,7 +1233,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 25 + "__id__": 49 }, "_alignFlags": 16, "_target": null, @@ -698,25 +1280,29 @@ "_parent": { "__id__": 2 }, - "_children": [], + "_children": [ + { + "__id__": 52 + } + ], "_active": true, "_components": [ { - "__id__": 28 + "__id__": 76 }, { - "__id__": 30 + "__id__": 78 }, { - "__id__": 32 + "__id__": 80 } ], "_prefab": { - "__id__": 34 + "__id__": 82 }, "_lpos": { "__type__": "cc.Vec3", - "x": -58.5, + "x": -68.003, "y": -44.5, "z": 0 }, @@ -743,17 +1329,595 @@ }, "_id": "" }, + { + "__type__": "cc.Node", + "_name": "InputEditBox", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 51 + }, + "_children": [ + { + "__id__": 53 + }, + { + "__id__": 61 + } + ], + "_active": true, + "_components": [ + { + "__id__": 67 + }, + { + "__id__": 69 + }, + { + "__id__": 71 + }, + { + "__id__": 73 + } + ], + "_prefab": { + "__id__": 75 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 22.5, + "y": 0, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 33554432, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "InputText", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 52 + }, + "_children": [], + "_active": false, + "_components": [ + { + "__id__": 54 + }, + { + "__id__": 56 + }, + { + "__id__": 58 + } + ], + "_prefab": { + "__id__": 60 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": -97, + "y": 30.5, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 33554432, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, { "__type__": "cc.UITransform", "_name": "", "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 27 + "__id__": 53 }, "_enabled": true, "__prefab": { - "__id__": 29 + "__id__": 55 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 194, + "height": 61 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0, + "y": 1 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "b4/RCuQKlA453Clrhgy0Pi" + }, + { + "__type__": "cc.Label", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 53 + }, + "_enabled": true, + "__prefab": { + "__id__": 57 + }, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 36, + "g": 11, + "b": 11, + "a": 255 + }, + "_string": "", + "_horizontalAlign": 0, + "_verticalAlign": 1, + "_actualFontSize": 29.516666666666666, + "_fontSize": 28, + "_fontFamily": "Arial", + "_lineHeight": 40, + "_overflow": 1, + "_enableWrapText": false, + "_font": null, + "_isSystemFontUsed": true, + "_spacingX": 0, + "_isItalic": false, + "_isBold": true, + "_isUnderline": false, + "_underlineHeight": 2, + "_cacheMode": 0, + "_enableOutline": false, + "_outlineColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_outlineWidth": 2, + "_enableShadow": false, + "_shadowColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_shadowOffset": { + "__type__": "cc.Vec2", + "x": 2, + "y": 2 + }, + "_shadowBlur": 2, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "6crBKnRm9LnIRn+Oz9wY/p" + }, + { + "__type__": "cc.Widget", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 53 + }, + "_enabled": true, + "__prefab": { + "__id__": 59 + }, + "_alignFlags": 45, + "_target": { + "__id__": 52 + }, + "_left": 0, + "_right": 0, + "_top": 0, + "_bottom": 0, + "_horizontalCenter": 0, + "_verticalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 100, + "_originalHeight": 100, + "_alignMode": 1, + "_lockFlags": 0, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "2cEWZq+2dO7KmepsfvJ0/h" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "33eW9x3ylMFKw5ClZSlZc8", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, + { + "__type__": "cc.Node", + "_name": "Placeholder", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 52 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 62 + }, + { + "__id__": 64 + } + ], + "_prefab": { + "__id__": 66 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": -95, + "y": 30.5, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 33554432, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 61 + }, + "_enabled": true, + "__prefab": { + "__id__": 63 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 0, + "height": 50.39999999999999 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "8fRWctci5OxoNOjAvInoqN" + }, + { + "__type__": "cc.Label", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 61 + }, + "_enabled": true, + "__prefab": { + "__id__": 65 + }, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_string": "", + "_horizontalAlign": 0, + "_verticalAlign": 1, + "_actualFontSize": 29.516666666666666, + "_fontSize": 28, + "_fontFamily": "Arial", + "_lineHeight": 40, + "_overflow": 0, + "_enableWrapText": false, + "_font": null, + "_isSystemFontUsed": true, + "_spacingX": 0, + "_isItalic": false, + "_isBold": false, + "_isUnderline": false, + "_underlineHeight": 2, + "_cacheMode": 0, + "_enableOutline": false, + "_outlineColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_outlineWidth": 2, + "_enableShadow": false, + "_shadowColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_shadowOffset": { + "__type__": "cc.Vec2", + "x": 2, + "y": 2 + }, + "_shadowBlur": 2, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "39Yjb/B7RG6rp+CxuNnWga" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "89X4LJWoZDJIHIcqiN5XgC", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 52 + }, + "_enabled": true, + "__prefab": { + "__id__": 68 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 194, + "height": 61 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "2cHYuN1y5KcZ8jF3kKleDR" + }, + { + "__type__": "cc.Widget", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 52 + }, + "_enabled": true, + "__prefab": { + "__id__": 70 + }, + "_alignFlags": 45, + "_target": { + "__id__": 51 + }, + "_left": 65, + "_right": 20, + "_top": 0, + "_bottom": 0, + "_horizontalCenter": 0, + "_verticalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 279, + "_originalHeight": 61, + "_alignMode": 1, + "_lockFlags": 0, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "88Udb2DGxJuJkwWnYMpVdm" + }, + { + "__type__": "cc.EditBox", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 52 + }, + "_enabled": true, + "__prefab": { + "__id__": 72 + }, + "editingDidBegan": [], + "textChanged": [], + "editingDidEnded": [], + "editingReturn": [], + "_textLabel": { + "__id__": 56 + }, + "_placeholderLabel": { + "__id__": 64 + }, + "_returnType": 0, + "_string": "", + "_tabIndex": 0, + "_backgroundImage": null, + "_inputFlag": 5, + "_inputMode": 2, + "_maxLength": 18, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "4blvqN+lNMs6X7++O/uHcY" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 52 + }, + "_enabled": true, + "__prefab": { + "__id__": 74 + }, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_spriteFrame": null, + "_type": 1, + "_fillType": 0, + "_sizeMode": 1, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_useGrayscale": false, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "1cMMw3+kpB/7PutMt06Q3f" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "26ngMMsUlAQ5XC+xop9Ewq", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 51 + }, + "_enabled": true, + "__prefab": { + "__id__": 77 }, "_contentSize": { "__type__": "cc.Size", @@ -777,11 +1941,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 27 + "__id__": 51 }, "_enabled": true, "__prefab": { - "__id__": 31 + "__id__": 79 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -822,11 +1986,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 27 + "__id__": 51 }, "_enabled": true, "__prefab": { - "__id__": 33 + "__id__": 81 }, "_alignFlags": 16, "_target": null, @@ -834,7 +1998,7 @@ "_right": 0, "_top": 0, "_bottom": 0, - "_horizontalCenter": -58.5, + "_horizontalCenter": -68.003, "_verticalCenter": 0, "_isAbsLeft": true, "_isAbsRight": true, @@ -877,17 +2041,17 @@ "_active": true, "_components": [ { - "__id__": 36 + "__id__": 84 }, { - "__id__": 38 + "__id__": 86 }, { - "__id__": 40 + "__id__": 88 } ], "_prefab": { - "__id__": 42 + "__id__": 90 }, "_lpos": { "__type__": "cc.Vec3", @@ -924,11 +2088,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 35 + "__id__": 83 }, "_enabled": true, "__prefab": { - "__id__": 37 + "__id__": 85 }, "_contentSize": { "__type__": "cc.Size", @@ -952,11 +2116,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 35 + "__id__": 83 }, "_enabled": true, "__prefab": { - "__id__": 39 + "__id__": 87 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -997,11 +2161,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 35 + "__id__": 83 }, "_enabled": true, "__prefab": { - "__id__": 41 + "__id__": 89 }, "_alignFlags": 16, "_target": null, @@ -1048,26 +2212,77 @@ "_parent": { "__id__": 2 }, + "_children": [ + { + "__id__": 92 + } + ], + "_active": true, + "_components": [ + { + "__id__": 98 + }, + { + "__id__": 100 + } + ], + "_prefab": { + "__id__": 102 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 144, + "y": -44.5, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 33554432, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "CountdownText", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 91 + }, "_children": [], "_active": true, "_components": [ { - "__id__": 44 + "__id__": 93 }, { - "__id__": 46 - }, - { - "__id__": 48 + "__id__": 95 } ], "_prefab": { - "__id__": 50 + "__id__": 97 }, "_lpos": { "__type__": "cc.Vec3", - "x": 101, - "y": -44, + "x": 0, + "y": -22, "z": 0 }, "_lrot": { @@ -1099,11 +2314,123 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 43 + "__id__": 92 }, "_enabled": true, "__prefab": { - "__id__": 45 + "__id__": 94 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 62, + "height": 30 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "b3MFL0YFRLTZtRk8aOn8Dl" + }, + { + "__type__": "cc.Label", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 92 + }, + "_enabled": true, + "__prefab": { + "__id__": 96 + }, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_string": "60s", + "_horizontalAlign": 1, + "_verticalAlign": 1, + "_actualFontSize": 72, + "_fontSize": 72, + "_fontFamily": "Arial", + "_lineHeight": 30, + "_overflow": 0, + "_enableWrapText": false, + "_font": { + "__uuid__": "cc980df4-42c7-40ac-aff0-8779f3613933", + "__expectedType__": "cc.BitmapFont" + }, + "_isSystemFontUsed": false, + "_spacingX": 0, + "_isItalic": false, + "_isBold": false, + "_isUnderline": false, + "_underlineHeight": 2, + "_cacheMode": 0, + "_enableOutline": false, + "_outlineColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_outlineWidth": 2, + "_enableShadow": false, + "_shadowColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_shadowOffset": { + "__type__": "cc.Vec2", + "x": 2, + "y": 2 + }, + "_shadowBlur": 2, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "acfD8O7VhL05wRazwH2KtB" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "5asTZyQuVMxoG+BXt0ReDB", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 91 + }, + "_enabled": true, + "__prefab": { + "__id__": 99 }, "_contentSize": { "__type__": "cc.Size", @@ -1121,62 +2448,17 @@ "__type__": "cc.CompPrefabInfo", "fileId": "ON6ss6lbN4pUZsY80Kle8g" }, - { - "__type__": "cc.Sprite", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 43 - }, - "_enabled": true, - "__prefab": { - "__id__": 47 - }, - "_customMaterial": null, - "_srcBlendFactor": 2, - "_dstBlendFactor": 4, - "_color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - }, - "_spriteFrame": { - "__uuid__": "62b9af40-6efd-4790-b049-416c4ed1c861@f9941", - "__expectedType__": "cc.SpriteFrame" - }, - "_type": 0, - "_fillType": 0, - "_sizeMode": 0, - "_fillCenter": { - "__type__": "cc.Vec2", - "x": 0, - "y": 0 - }, - "_fillStart": 0, - "_fillRange": 0, - "_isTrimmedMode": true, - "_useGrayscale": false, - "_atlas": null, - "_id": "" - }, - { - "__type__": "cc.CompPrefabInfo", - "fileId": "U5L0xxxSf6PhtOj3rCH1pg" - }, { "__type__": "cc.Widget", "_name": "", "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 43 + "__id__": 91 }, - "_enabled": true, + "_enabled": false, "__prefab": { - "__id__": 49 + "__id__": 101 }, "_alignFlags": 16, "_target": null, @@ -1227,17 +2509,17 @@ "_active": true, "_components": [ { - "__id__": 52 + "__id__": 104 }, { - "__id__": 54 + "__id__": 106 }, { - "__id__": 56 + "__id__": 108 } ], "_prefab": { - "__id__": 58 + "__id__": 110 }, "_lpos": { "__type__": "cc.Vec3", @@ -1274,11 +2556,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 51 + "__id__": 103 }, "_enabled": true, "__prefab": { - "__id__": 53 + "__id__": 105 }, "_contentSize": { "__type__": "cc.Size", @@ -1302,11 +2584,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 51 + "__id__": 103 }, "_enabled": true, "__prefab": { - "__id__": 55 + "__id__": 107 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -1347,11 +2629,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 51 + "__id__": 103 }, "_enabled": true, "__prefab": { - "__id__": 57 + "__id__": 109 }, "_alignFlags": 16, "_target": null, @@ -1402,17 +2684,17 @@ "_active": true, "_components": [ { - "__id__": 60 + "__id__": 112 }, { - "__id__": 62 + "__id__": 114 }, { - "__id__": 64 + "__id__": 116 } ], "_prefab": { - "__id__": 66 + "__id__": 118 }, "_lpos": { "__type__": "cc.Vec3", @@ -1449,11 +2731,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 59 + "__id__": 111 }, "_enabled": true, "__prefab": { - "__id__": 61 + "__id__": 113 }, "_contentSize": { "__type__": "cc.Size", @@ -1477,11 +2759,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 59 + "__id__": 111 }, "_enabled": true, "__prefab": { - "__id__": 63 + "__id__": 115 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -1522,11 +2804,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 59 + "__id__": 111 }, "_enabled": true, "__prefab": { - "__id__": 65 + "__id__": 117 }, "_alignFlags": 16, "_target": null, @@ -1577,17 +2859,17 @@ "_active": true, "_components": [ { - "__id__": 68 + "__id__": 120 }, { - "__id__": 70 + "__id__": 122 }, { - "__id__": 72 + "__id__": 124 } ], "_prefab": { - "__id__": 74 + "__id__": 126 }, "_lpos": { "__type__": "cc.Vec3", @@ -1624,11 +2906,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 67 + "__id__": 119 }, "_enabled": true, "__prefab": { - "__id__": 69 + "__id__": 121 }, "_contentSize": { "__type__": "cc.Size", @@ -1652,11 +2934,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 67 + "__id__": 119 }, "_enabled": true, "__prefab": { - "__id__": 71 + "__id__": 123 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -1669,7 +2951,7 @@ "a": 255 }, "_spriteFrame": { - "__uuid__": "c0541eab-a8d2-4669-968a-d6bd2892fc02@f9941", + "__uuid__": "2896a7a8-b0d7-43a2-a6fb-a98624d63ea7@f9941", "__expectedType__": "cc.SpriteFrame" }, "_type": 0, @@ -1697,11 +2979,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 67 + "__id__": 119 }, "_enabled": true, "__prefab": { - "__id__": 73 + "__id__": 125 }, "_alignFlags": 16, "_target": null, @@ -1752,17 +3034,17 @@ "_active": true, "_components": [ { - "__id__": 76 + "__id__": 128 }, { - "__id__": 78 + "__id__": 130 }, { - "__id__": 80 + "__id__": 132 } ], "_prefab": { - "__id__": 82 + "__id__": 134 }, "_lpos": { "__type__": "cc.Vec3", @@ -1799,11 +3081,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 75 + "__id__": 127 }, "_enabled": true, "__prefab": { - "__id__": 77 + "__id__": 129 }, "_contentSize": { "__type__": "cc.Size", @@ -1827,11 +3109,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 75 + "__id__": 127 }, "_enabled": true, "__prefab": { - "__id__": 79 + "__id__": 131 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -1872,11 +3154,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 75 + "__id__": 127 }, "_enabled": true, "__prefab": { - "__id__": 81 + "__id__": 133 }, "_alignFlags": 16, "_target": null, @@ -1927,17 +3209,17 @@ "_active": true, "_components": [ { - "__id__": 84 + "__id__": 136 }, { - "__id__": 86 + "__id__": 138 }, { - "__id__": 88 + "__id__": 140 } ], "_prefab": { - "__id__": 90 + "__id__": 142 }, "_lpos": { "__type__": "cc.Vec3", @@ -1974,11 +3256,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 83 + "__id__": 135 }, "_enabled": true, "__prefab": { - "__id__": 85 + "__id__": 137 }, "_contentSize": { "__type__": "cc.Size", @@ -2002,11 +3284,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 83 + "__id__": 135 }, "_enabled": true, "__prefab": { - "__id__": 87 + "__id__": 139 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -2047,11 +3329,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 83 + "__id__": 135 }, "_enabled": true, "__prefab": { - "__id__": 89 + "__id__": 141 }, "_alignFlags": 16, "_target": null, @@ -2099,20 +3381,20 @@ "__id__": 2 }, "_children": [], - "_active": true, + "_active": false, "_components": [ { - "__id__": 92 + "__id__": 144 }, { - "__id__": 94 + "__id__": 146 }, { - "__id__": 96 + "__id__": 148 } ], "_prefab": { - "__id__": 98 + "__id__": 150 }, "_lpos": { "__type__": "cc.Vec3", @@ -2149,11 +3431,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 91 + "__id__": 143 }, "_enabled": true, "__prefab": { - "__id__": 93 + "__id__": 145 }, "_contentSize": { "__type__": "cc.Size", @@ -2177,11 +3459,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 91 + "__id__": 143 }, "_enabled": true, "__prefab": { - "__id__": 95 + "__id__": 147 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -2222,11 +3504,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 91 + "__id__": 143 }, "_enabled": true, "__prefab": { - "__id__": 97 + "__id__": 149 }, "_alignFlags": 16, "_target": null, @@ -2274,20 +3556,20 @@ "__id__": 2 }, "_children": [], - "_active": true, + "_active": false, "_components": [ { - "__id__": 100 + "__id__": 152 }, { - "__id__": 102 + "__id__": 154 }, { - "__id__": 104 + "__id__": 156 } ], "_prefab": { - "__id__": 106 + "__id__": 158 }, "_lpos": { "__type__": "cc.Vec3", @@ -2324,11 +3606,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 99 + "__id__": 151 }, "_enabled": true, "__prefab": { - "__id__": 101 + "__id__": 153 }, "_contentSize": { "__type__": "cc.Size", @@ -2352,11 +3634,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 99 + "__id__": 151 }, "_enabled": true, "__prefab": { - "__id__": 103 + "__id__": 155 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -2397,11 +3679,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 99 + "__id__": 151 }, "_enabled": true, "__prefab": { - "__id__": 105 + "__id__": 157 }, "_alignFlags": 16, "_target": null, @@ -2452,17 +3734,17 @@ "_active": true, "_components": [ { - "__id__": 108 + "__id__": 160 }, { - "__id__": 110 + "__id__": 162 }, { - "__id__": 112 + "__id__": 164 } ], "_prefab": { - "__id__": 114 + "__id__": 166 }, "_lpos": { "__type__": "cc.Vec3", @@ -2499,11 +3781,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 107 + "__id__": 159 }, "_enabled": true, "__prefab": { - "__id__": 109 + "__id__": 161 }, "_contentSize": { "__type__": "cc.Size", @@ -2527,11 +3809,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 107 + "__id__": 159 }, "_enabled": true, "__prefab": { - "__id__": 111 + "__id__": 163 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -2572,11 +3854,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 107 + "__id__": 159 }, "_enabled": true, "__prefab": { - "__id__": 113 + "__id__": 165 }, "_alignFlags": 16, "_target": null, @@ -2627,17 +3909,17 @@ "_active": true, "_components": [ { - "__id__": 116 + "__id__": 168 }, { - "__id__": 118 + "__id__": 170 }, { - "__id__": 120 + "__id__": 172 } ], "_prefab": { - "__id__": 122 + "__id__": 174 }, "_lpos": { "__type__": "cc.Vec3", @@ -2674,11 +3956,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 115 + "__id__": 167 }, "_enabled": true, "__prefab": { - "__id__": 117 + "__id__": 169 }, "_contentSize": { "__type__": "cc.Size", @@ -2702,11 +3984,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 115 + "__id__": 167 }, "_enabled": true, "__prefab": { - "__id__": 119 + "__id__": 171 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -2747,11 +4029,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 115 + "__id__": 167 }, "_enabled": true, "__prefab": { - "__id__": 121 + "__id__": 173 }, "_alignFlags": 16, "_target": null, @@ -2800,7 +4082,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 124 + "__id__": 176 }, "_contentSize": { "__type__": "cc.Size", @@ -2828,7 +4110,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 126 + "__id__": 178 }, "_alignFlags": 18, "_target": null, @@ -2877,86 +4159,86 @@ }, "_children": [ { - "__id__": 129 + "__id__": 181 }, { - "__id__": 137 + "__id__": 189 }, { - "__id__": 145 + "__id__": 197 }, { - "__id__": 153 + "__id__": 205 }, { - "__id__": 161 + "__id__": 213 }, { - "__id__": 169 + "__id__": 221 }, { - "__id__": 177 + "__id__": 229 }, { - "__id__": 185 + "__id__": 237 }, { - "__id__": 193 + "__id__": 245 }, { - "__id__": 201 + "__id__": 253 }, { - "__id__": 209 + "__id__": 261 }, { - "__id__": 217 + "__id__": 269 }, { - "__id__": 225 + "__id__": 277 }, { - "__id__": 233 + "__id__": 285 }, { - "__id__": 241 + "__id__": 293 }, { - "__id__": 249 + "__id__": 301 }, { - "__id__": 257 + "__id__": 309 }, { - "__id__": 265 + "__id__": 317 }, { - "__id__": 273 + "__id__": 325 }, { - "__id__": 281 + "__id__": 333 }, { - "__id__": 289 + "__id__": 341 }, { - "__id__": 297 + "__id__": 349 }, { - "__id__": 305 + "__id__": 357 } ], - "_active": true, + "_active": false, "_components": [ { - "__id__": 313 + "__id__": 365 }, { - "__id__": 315 + "__id__": 367 } ], "_prefab": { - "__id__": 317 + "__id__": 369 }, "_lpos": { "__type__": "cc.Vec3", @@ -2993,23 +4275,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 130 + "__id__": 182 }, { - "__id__": 132 + "__id__": 184 }, { - "__id__": 134 + "__id__": 186 } ], "_prefab": { - "__id__": 136 + "__id__": 188 }, "_lpos": { "__type__": "cc.Vec3", @@ -3046,11 +4328,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 129 + "__id__": 181 }, "_enabled": true, "__prefab": { - "__id__": 131 + "__id__": 183 }, "_contentSize": { "__type__": "cc.Size", @@ -3074,11 +4356,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 129 + "__id__": 181 }, "_enabled": true, "__prefab": { - "__id__": 133 + "__id__": 185 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -3119,11 +4401,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 129 + "__id__": 181 }, "_enabled": true, "__prefab": { - "__id__": 135 + "__id__": 187 }, "_alignFlags": 45, "_target": null, @@ -3168,23 +4450,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 138 + "__id__": 190 }, { - "__id__": 140 + "__id__": 192 }, { - "__id__": 142 + "__id__": 194 } ], "_prefab": { - "__id__": 144 + "__id__": 196 }, "_lpos": { "__type__": "cc.Vec3", @@ -3221,11 +4503,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 137 + "__id__": 189 }, "_enabled": true, "__prefab": { - "__id__": 139 + "__id__": 191 }, "_contentSize": { "__type__": "cc.Size", @@ -3249,11 +4531,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 137 + "__id__": 189 }, "_enabled": true, "__prefab": { - "__id__": 141 + "__id__": 193 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -3294,11 +4576,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 137 + "__id__": 189 }, "_enabled": true, "__prefab": { - "__id__": 143 + "__id__": 195 }, "_alignFlags": 16, "_target": null, @@ -3343,23 +4625,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 146 + "__id__": 198 }, { - "__id__": 148 + "__id__": 200 }, { - "__id__": 150 + "__id__": 202 } ], "_prefab": { - "__id__": 152 + "__id__": 204 }, "_lpos": { "__type__": "cc.Vec3", @@ -3396,11 +4678,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 145 + "__id__": 197 }, "_enabled": true, "__prefab": { - "__id__": 147 + "__id__": 199 }, "_contentSize": { "__type__": "cc.Size", @@ -3424,11 +4706,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 145 + "__id__": 197 }, "_enabled": true, "__prefab": { - "__id__": 149 + "__id__": 201 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -3469,11 +4751,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 145 + "__id__": 197 }, "_enabled": true, "__prefab": { - "__id__": 151 + "__id__": 203 }, "_alignFlags": 16, "_target": null, @@ -3518,23 +4800,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": false, "_components": [ { - "__id__": 154 + "__id__": 206 }, { - "__id__": 156 + "__id__": 208 }, { - "__id__": 158 + "__id__": 210 } ], "_prefab": { - "__id__": 160 + "__id__": 212 }, "_lpos": { "__type__": "cc.Vec3", @@ -3571,11 +4853,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 153 + "__id__": 205 }, "_enabled": true, "__prefab": { - "__id__": 155 + "__id__": 207 }, "_contentSize": { "__type__": "cc.Size", @@ -3599,11 +4881,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 153 + "__id__": 205 }, "_enabled": true, "__prefab": { - "__id__": 157 + "__id__": 209 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -3644,11 +4926,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 153 + "__id__": 205 }, "_enabled": true, "__prefab": { - "__id__": 159 + "__id__": 211 }, "_alignFlags": 16, "_target": null, @@ -3693,23 +4975,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 162 + "__id__": 214 }, { - "__id__": 164 + "__id__": 216 }, { - "__id__": 166 + "__id__": 218 } ], "_prefab": { - "__id__": 168 + "__id__": 220 }, "_lpos": { "__type__": "cc.Vec3", @@ -3746,11 +5028,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 161 + "__id__": 213 }, "_enabled": true, "__prefab": { - "__id__": 163 + "__id__": 215 }, "_contentSize": { "__type__": "cc.Size", @@ -3774,11 +5056,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 161 + "__id__": 213 }, "_enabled": true, "__prefab": { - "__id__": 165 + "__id__": 217 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -3819,11 +5101,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 161 + "__id__": 213 }, "_enabled": true, "__prefab": { - "__id__": 167 + "__id__": 219 }, "_alignFlags": 16, "_target": null, @@ -3868,23 +5150,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 170 + "__id__": 222 }, { - "__id__": 172 + "__id__": 224 }, { - "__id__": 174 + "__id__": 226 } ], "_prefab": { - "__id__": 176 + "__id__": 228 }, "_lpos": { "__type__": "cc.Vec3", @@ -3921,11 +5203,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 169 + "__id__": 221 }, "_enabled": true, "__prefab": { - "__id__": 171 + "__id__": 223 }, "_contentSize": { "__type__": "cc.Size", @@ -3949,11 +5231,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 169 + "__id__": 221 }, "_enabled": true, "__prefab": { - "__id__": 173 + "__id__": 225 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -3994,11 +5276,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 169 + "__id__": 221 }, "_enabled": true, "__prefab": { - "__id__": 175 + "__id__": 227 }, "_alignFlags": 16, "_target": null, @@ -4043,23 +5325,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 178 + "__id__": 230 }, { - "__id__": 180 + "__id__": 232 }, { - "__id__": 182 + "__id__": 234 } ], "_prefab": { - "__id__": 184 + "__id__": 236 }, "_lpos": { "__type__": "cc.Vec3", @@ -4096,11 +5378,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 177 + "__id__": 229 }, "_enabled": true, "__prefab": { - "__id__": 179 + "__id__": 231 }, "_contentSize": { "__type__": "cc.Size", @@ -4124,11 +5406,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 177 + "__id__": 229 }, "_enabled": true, "__prefab": { - "__id__": 181 + "__id__": 233 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -4169,11 +5451,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 177 + "__id__": 229 }, "_enabled": true, "__prefab": { - "__id__": 183 + "__id__": 235 }, "_alignFlags": 16, "_target": null, @@ -4218,23 +5500,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 186 + "__id__": 238 }, { - "__id__": 188 + "__id__": 240 }, { - "__id__": 190 + "__id__": 242 } ], "_prefab": { - "__id__": 192 + "__id__": 244 }, "_lpos": { "__type__": "cc.Vec3", @@ -4271,11 +5553,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 185 + "__id__": 237 }, "_enabled": true, "__prefab": { - "__id__": 187 + "__id__": 239 }, "_contentSize": { "__type__": "cc.Size", @@ -4299,11 +5581,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 185 + "__id__": 237 }, "_enabled": true, "__prefab": { - "__id__": 189 + "__id__": 241 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -4344,11 +5626,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 185 + "__id__": 237 }, "_enabled": true, "__prefab": { - "__id__": 191 + "__id__": 243 }, "_alignFlags": 16, "_target": null, @@ -4393,23 +5675,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 194 + "__id__": 246 }, { - "__id__": 196 + "__id__": 248 }, { - "__id__": 198 + "__id__": 250 } ], "_prefab": { - "__id__": 200 + "__id__": 252 }, "_lpos": { "__type__": "cc.Vec3", @@ -4446,11 +5728,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 193 + "__id__": 245 }, "_enabled": true, "__prefab": { - "__id__": 195 + "__id__": 247 }, "_contentSize": { "__type__": "cc.Size", @@ -4474,11 +5756,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 193 + "__id__": 245 }, "_enabled": true, "__prefab": { - "__id__": 197 + "__id__": 249 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -4519,11 +5801,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 193 + "__id__": 245 }, "_enabled": true, "__prefab": { - "__id__": 199 + "__id__": 251 }, "_alignFlags": 16, "_target": null, @@ -4568,23 +5850,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 202 + "__id__": 254 }, { - "__id__": 204 + "__id__": 256 }, { - "__id__": 206 + "__id__": 258 } ], "_prefab": { - "__id__": 208 + "__id__": 260 }, "_lpos": { "__type__": "cc.Vec3", @@ -4621,11 +5903,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 201 + "__id__": 253 }, "_enabled": true, "__prefab": { - "__id__": 203 + "__id__": 255 }, "_contentSize": { "__type__": "cc.Size", @@ -4649,11 +5931,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 201 + "__id__": 253 }, "_enabled": true, "__prefab": { - "__id__": 205 + "__id__": 257 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -4717,11 +5999,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 201 + "__id__": 253 }, "_enabled": true, "__prefab": { - "__id__": 207 + "__id__": 259 }, "_alignFlags": 16, "_target": null, @@ -4766,23 +6048,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 210 + "__id__": 262 }, { - "__id__": 212 + "__id__": 264 }, { - "__id__": 214 + "__id__": 266 } ], "_prefab": { - "__id__": 216 + "__id__": 268 }, "_lpos": { "__type__": "cc.Vec3", @@ -4819,11 +6101,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 209 + "__id__": 261 }, "_enabled": true, "__prefab": { - "__id__": 211 + "__id__": 263 }, "_contentSize": { "__type__": "cc.Size", @@ -4847,11 +6129,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 209 + "__id__": 261 }, "_enabled": true, "__prefab": { - "__id__": 213 + "__id__": 265 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -4915,11 +6197,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 209 + "__id__": 261 }, "_enabled": true, "__prefab": { - "__id__": 215 + "__id__": 267 }, "_alignFlags": 16, "_target": null, @@ -4964,23 +6246,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 218 + "__id__": 270 }, { - "__id__": 220 + "__id__": 272 }, { - "__id__": 222 + "__id__": 274 } ], "_prefab": { - "__id__": 224 + "__id__": 276 }, "_lpos": { "__type__": "cc.Vec3", @@ -5017,11 +6299,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 217 + "__id__": 269 }, "_enabled": true, "__prefab": { - "__id__": 219 + "__id__": 271 }, "_contentSize": { "__type__": "cc.Size", @@ -5045,11 +6327,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 217 + "__id__": 269 }, "_enabled": true, "__prefab": { - "__id__": 221 + "__id__": 273 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -5090,11 +6372,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 217 + "__id__": 269 }, "_enabled": true, "__prefab": { - "__id__": 223 + "__id__": 275 }, "_alignFlags": 16, "_target": null, @@ -5139,23 +6421,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 226 + "__id__": 278 }, { - "__id__": 228 + "__id__": 280 }, { - "__id__": 230 + "__id__": 282 } ], "_prefab": { - "__id__": 232 + "__id__": 284 }, "_lpos": { "__type__": "cc.Vec3", @@ -5192,11 +6474,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 225 + "__id__": 277 }, "_enabled": true, "__prefab": { - "__id__": 227 + "__id__": 279 }, "_contentSize": { "__type__": "cc.Size", @@ -5220,11 +6502,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 225 + "__id__": 277 }, "_enabled": true, "__prefab": { - "__id__": 229 + "__id__": 281 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -5265,11 +6547,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 225 + "__id__": 277 }, "_enabled": true, "__prefab": { - "__id__": 231 + "__id__": 283 }, "_alignFlags": 16, "_target": null, @@ -5314,23 +6596,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 234 + "__id__": 286 }, { - "__id__": 236 + "__id__": 288 }, { - "__id__": 238 + "__id__": 290 } ], "_prefab": { - "__id__": 240 + "__id__": 292 }, "_lpos": { "__type__": "cc.Vec3", @@ -5367,11 +6649,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 233 + "__id__": 285 }, "_enabled": true, "__prefab": { - "__id__": 235 + "__id__": 287 }, "_contentSize": { "__type__": "cc.Size", @@ -5395,11 +6677,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 233 + "__id__": 285 }, "_enabled": true, "__prefab": { - "__id__": 237 + "__id__": 289 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -5463,11 +6745,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 233 + "__id__": 285 }, "_enabled": true, "__prefab": { - "__id__": 239 + "__id__": 291 }, "_alignFlags": 16, "_target": null, @@ -5512,23 +6794,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 242 + "__id__": 294 }, { - "__id__": 244 + "__id__": 296 }, { - "__id__": 246 + "__id__": 298 } ], "_prefab": { - "__id__": 248 + "__id__": 300 }, "_lpos": { "__type__": "cc.Vec3", @@ -5565,11 +6847,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 241 + "__id__": 293 }, "_enabled": true, "__prefab": { - "__id__": 243 + "__id__": 295 }, "_contentSize": { "__type__": "cc.Size", @@ -5593,11 +6875,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 241 + "__id__": 293 }, "_enabled": true, "__prefab": { - "__id__": 245 + "__id__": 297 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -5661,11 +6943,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 241 + "__id__": 293 }, "_enabled": true, "__prefab": { - "__id__": 247 + "__id__": 299 }, "_alignFlags": 16, "_target": null, @@ -5710,23 +6992,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 250 + "__id__": 302 }, { - "__id__": 252 + "__id__": 304 }, { - "__id__": 254 + "__id__": 306 } ], "_prefab": { - "__id__": 256 + "__id__": 308 }, "_lpos": { "__type__": "cc.Vec3", @@ -5763,11 +7045,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 249 + "__id__": 301 }, "_enabled": true, "__prefab": { - "__id__": 251 + "__id__": 303 }, "_contentSize": { "__type__": "cc.Size", @@ -5791,11 +7073,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 249 + "__id__": 301 }, "_enabled": true, "__prefab": { - "__id__": 253 + "__id__": 305 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -5859,11 +7141,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 249 + "__id__": 301 }, "_enabled": true, "__prefab": { - "__id__": 255 + "__id__": 307 }, "_alignFlags": 16, "_target": null, @@ -5908,23 +7190,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 258 + "__id__": 310 }, { - "__id__": 260 + "__id__": 312 }, { - "__id__": 262 + "__id__": 314 } ], "_prefab": { - "__id__": 264 + "__id__": 316 }, "_lpos": { "__type__": "cc.Vec3", @@ -5961,11 +7243,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 257 + "__id__": 309 }, "_enabled": true, "__prefab": { - "__id__": 259 + "__id__": 311 }, "_contentSize": { "__type__": "cc.Size", @@ -5989,11 +7271,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 257 + "__id__": 309 }, "_enabled": true, "__prefab": { - "__id__": 261 + "__id__": 313 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -6057,11 +7339,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 257 + "__id__": 309 }, "_enabled": true, "__prefab": { - "__id__": 263 + "__id__": 315 }, "_alignFlags": 16, "_target": null, @@ -6106,23 +7388,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 266 + "__id__": 318 }, { - "__id__": 268 + "__id__": 320 }, { - "__id__": 270 + "__id__": 322 } ], "_prefab": { - "__id__": 272 + "__id__": 324 }, "_lpos": { "__type__": "cc.Vec3", @@ -6159,11 +7441,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 265 + "__id__": 317 }, "_enabled": true, "__prefab": { - "__id__": 267 + "__id__": 319 }, "_contentSize": { "__type__": "cc.Size", @@ -6187,11 +7469,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 265 + "__id__": 317 }, "_enabled": true, "__prefab": { - "__id__": 269 + "__id__": 321 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -6232,11 +7514,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 265 + "__id__": 317 }, "_enabled": true, "__prefab": { - "__id__": 271 + "__id__": 323 }, "_alignFlags": 16, "_target": null, @@ -6281,23 +7563,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 274 + "__id__": 326 }, { - "__id__": 276 + "__id__": 328 }, { - "__id__": 278 + "__id__": 330 } ], "_prefab": { - "__id__": 280 + "__id__": 332 }, "_lpos": { "__type__": "cc.Vec3", @@ -6334,11 +7616,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 273 + "__id__": 325 }, "_enabled": true, "__prefab": { - "__id__": 275 + "__id__": 327 }, "_contentSize": { "__type__": "cc.Size", @@ -6362,11 +7644,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 273 + "__id__": 325 }, "_enabled": true, "__prefab": { - "__id__": 277 + "__id__": 329 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -6430,11 +7712,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 273 + "__id__": 325 }, "_enabled": true, "__prefab": { - "__id__": 279 + "__id__": 331 }, "_alignFlags": 16, "_target": null, @@ -6479,23 +7761,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 282 + "__id__": 334 }, { - "__id__": 284 + "__id__": 336 }, { - "__id__": 286 + "__id__": 338 } ], "_prefab": { - "__id__": 288 + "__id__": 340 }, "_lpos": { "__type__": "cc.Vec3", @@ -6532,11 +7814,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 281 + "__id__": 333 }, "_enabled": true, "__prefab": { - "__id__": 283 + "__id__": 335 }, "_contentSize": { "__type__": "cc.Size", @@ -6560,11 +7842,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 281 + "__id__": 333 }, "_enabled": true, "__prefab": { - "__id__": 285 + "__id__": 337 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -6605,11 +7887,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 281 + "__id__": 333 }, "_enabled": true, "__prefab": { - "__id__": 287 + "__id__": 339 }, "_alignFlags": 16, "_target": null, @@ -6654,23 +7936,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 290 + "__id__": 342 }, { - "__id__": 292 + "__id__": 344 }, { - "__id__": 294 + "__id__": 346 } ], "_prefab": { - "__id__": 296 + "__id__": 348 }, "_lpos": { "__type__": "cc.Vec3", @@ -6707,11 +7989,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 289 + "__id__": 341 }, "_enabled": true, "__prefab": { - "__id__": 291 + "__id__": 343 }, "_contentSize": { "__type__": "cc.Size", @@ -6735,11 +8017,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 289 + "__id__": 341 }, "_enabled": true, "__prefab": { - "__id__": 293 + "__id__": 345 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -6803,11 +8085,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 289 + "__id__": 341 }, "_enabled": true, "__prefab": { - "__id__": 295 + "__id__": 347 }, "_alignFlags": 16, "_target": null, @@ -6852,23 +8134,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 298 + "__id__": 350 }, { - "__id__": 300 + "__id__": 352 }, { - "__id__": 302 + "__id__": 354 } ], "_prefab": { - "__id__": 304 + "__id__": 356 }, "_lpos": { "__type__": "cc.Vec3", @@ -6905,11 +8187,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 297 + "__id__": 349 }, "_enabled": true, "__prefab": { - "__id__": 299 + "__id__": 351 }, "_contentSize": { "__type__": "cc.Size", @@ -6933,11 +8215,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 297 + "__id__": 349 }, "_enabled": true, "__prefab": { - "__id__": 301 + "__id__": 353 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -7001,11 +8283,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 297 + "__id__": 349 }, "_enabled": true, "__prefab": { - "__id__": 303 + "__id__": 355 }, "_alignFlags": 16, "_target": null, @@ -7050,23 +8332,23 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 128 + "__id__": 180 }, "_children": [], "_active": true, "_components": [ { - "__id__": 306 + "__id__": 358 }, { - "__id__": 308 + "__id__": 360 }, { - "__id__": 310 + "__id__": 362 } ], "_prefab": { - "__id__": 312 + "__id__": 364 }, "_lpos": { "__type__": "cc.Vec3", @@ -7103,11 +8385,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 305 + "__id__": 357 }, "_enabled": true, "__prefab": { - "__id__": 307 + "__id__": 359 }, "_contentSize": { "__type__": "cc.Size", @@ -7131,11 +8413,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 305 + "__id__": 357 }, "_enabled": true, "__prefab": { - "__id__": 309 + "__id__": 361 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -7199,11 +8481,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 305 + "__id__": 357 }, "_enabled": true, "__prefab": { - "__id__": 311 + "__id__": 363 }, "_alignFlags": 16, "_target": null, @@ -7248,11 +8530,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 128 + "__id__": 180 }, "_enabled": true, "__prefab": { - "__id__": 314 + "__id__": 366 }, "_contentSize": { "__type__": "cc.Size", @@ -7276,11 +8558,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 128 + "__id__": 180 }, "_enabled": true, "__prefab": { - "__id__": 316 + "__id__": 368 }, "_alignFlags": 45, "_target": null, @@ -7329,7 +8611,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 319 + "__id__": 371 }, "_contentSize": { "__type__": "cc.Size", @@ -7357,7 +8639,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 321 + "__id__": 373 }, "_alignFlags": 45, "_target": null, @@ -7393,7 +8675,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 323 + "__id__": 375 }, "loginTitle": { "__uuid__": "2896a7a8-b0d7-43a2-a6fb-a98624d63ea7@f9941", diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer4_MainMenu.prefab b/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer4_MainMenu.prefab index e5951d3..a4f407f 100644 --- a/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer4_MainMenu.prefab +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer4_MainMenu.prefab @@ -61,7 +61,7 @@ "y": 0, "z": 0 }, - "_id": "28YpT2RBFHNqmUVRAPV5m3" + "_id": "" }, { "__type__": "cc.Node", @@ -208,7 +208,7 @@ "y": 0, "z": 0 }, - "_id": "10rqG8+IFJAKB7l3lDKH/i" + "_id": "" }, { "__type__": "cc.Node", @@ -261,7 +261,7 @@ "y": 0, "z": 0 }, - "_id": "3dCjYMP3ZD1LHf9AlYIj1T" + "_id": "" }, { "__type__": "cc.UITransform", @@ -285,7 +285,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "43pCw1FKpGpZcCDNKvkIKU" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -330,7 +330,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "cacBf8gttMO6TGftjLpt3t" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -366,7 +366,7 @@ "_originalHeight": 720, "_alignMode": 2, "_lockFlags": 0, - "_id": "5aiXARsKtATIwxAaVj/Adq" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -436,7 +436,7 @@ "y": 0, "z": 0 }, - "_id": "d1FusQnC9CKIbAVRQO9Pu7" + "_id": "" }, { "__type__": "cc.UITransform", @@ -460,7 +460,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "6fPwM7nFxAUZQ2OuFtXek7" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -505,7 +505,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "c0MQFK1idDGKgVwA1MqIcw" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -541,7 +541,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "932goS8F1EAJW0MzduC/P0" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -611,7 +611,7 @@ "y": 0, "z": 0 }, - "_id": "070AWj5a1AW4O//eNuUQul" + "_id": "" }, { "__type__": "cc.UITransform", @@ -635,7 +635,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "b4+9J/ewtDA6b61jpYenld" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -680,7 +680,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "21hOzcH9NOf4V6ReAtSCTK" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -716,7 +716,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "6efj7DRxdKCLIB2+XFkCcR" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -786,7 +786,7 @@ "y": 0, "z": 0 }, - "_id": "7ephPdFbpME7nrUFgrar1k" + "_id": "" }, { "__type__": "cc.UITransform", @@ -802,7 +802,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 56, + "width": 55.96837944664031, "height": 17.64 }, "_anchorPoint": { @@ -810,7 +810,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "b0K/WjTRRC9oQ5JM1pDA0O" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -841,7 +841,7 @@ "_string": "房卡数量", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 14, + "_actualFontSize": 14.758333333333333, "_fontSize": 14, "_fontFamily": "Arial", "_lineHeight": 14, @@ -878,7 +878,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "98nVEl3GBCNLleyGHqNy52" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -914,7 +914,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "6243hbo7NNLZ59xWOZdGQq" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -984,7 +984,7 @@ "y": 0, "z": 0 }, - "_id": "c79TaEuFNMuJmqZLjGVvjG" + "_id": "" }, { "__type__": "cc.UITransform", @@ -1008,7 +1008,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "c6RChhC4lC9IC4xVxhrBzT" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1053,7 +1053,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "4fmSMfRwtPPrc67Nyp9Fa0" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1089,7 +1089,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "e5zc2KTJhCkK74eN3VYzOR" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1159,7 +1159,7 @@ "y": 0, "z": 0 }, - "_id": "5b2Z755aBMmqU7kOEgfuO9" + "_id": "" }, { "__type__": "cc.UITransform", @@ -1183,7 +1183,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "37w5s7MOlNra40RKA1xpov" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1228,7 +1228,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "e2WDYsNQxGFaFw5FsJ6ThP" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1264,7 +1264,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "3dLbAKhdFG+J4R1dgkwJZy" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1334,7 +1334,7 @@ "y": 0, "z": 0 }, - "_id": "39n688CH9Ms6RIQXoiCCxo" + "_id": "" }, { "__type__": "cc.UITransform", @@ -1358,7 +1358,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "9dKQvUK2NOuYojo4+Qu6R/" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1403,7 +1403,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "84M7owYPRMEJTHmiGKMaSy" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1439,7 +1439,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "9fr6ZEvGpL8b4TjRscuNcI" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1509,7 +1509,7 @@ "y": 0, "z": 0 }, - "_id": "d1+WTybyZBCqHexZlFOqV0" + "_id": "" }, { "__type__": "cc.UITransform", @@ -1533,7 +1533,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "028asLcd5NkpVAbt0kniuy" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1578,7 +1578,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "8biY20U25L8pTaeWsTD0ns" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1614,7 +1614,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "60J9k4//ZAAY975/iOUIv7" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1684,7 +1684,7 @@ "y": 0, "z": 0 }, - "_id": "89UlSSSkVJGqR92bJ65bEH" + "_id": "" }, { "__type__": "cc.UITransform", @@ -1708,7 +1708,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "3bszg1dCRDJoulN0sswmLs" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1753,7 +1753,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "772dIvldRD4qf11s7W2UN3" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1789,7 +1789,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "ce3uQIk/xI7KAEEZ1hPyiH" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1859,7 +1859,7 @@ "y": 0, "z": 0 }, - "_id": "c6GwNQWkNCR7gi0vMj6G5O" + "_id": "" }, { "__type__": "cc.UITransform", @@ -1883,7 +1883,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "1dc6SPy+lJcIp+4AXGRMuD" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1928,7 +1928,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "e4KODbmhpJMI+Ss0aGUKkq" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1964,7 +1964,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "65SCHD8HpN+bCHSRWnEIjQ" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2034,7 +2034,7 @@ "y": 0, "z": 0 }, - "_id": "37hbCOP31HopyZ4kE40GTP" + "_id": "" }, { "__type__": "cc.UITransform", @@ -2050,7 +2050,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 64, + "width": 63.97470587327075, "height": 20.16 }, "_anchorPoint": { @@ -2058,7 +2058,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "c33a/D6ClMfpQ3Z3lTvN5m" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2089,7 +2089,7 @@ "_string": "公告文字", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 16, + "_actualFontSize": 16.866666666666667, "_fontSize": 16, "_fontFamily": "Arial", "_lineHeight": 16, @@ -2126,7 +2126,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "4axlEdF2hDqKeXcyXkN859" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2162,7 +2162,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "14HQLe3E5GDYVwG6pbknRm" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2232,7 +2232,7 @@ "y": 0, "z": 0 }, - "_id": "dbrTWnlydO7ZnR8TKeqLbn" + "_id": "" }, { "__type__": "cc.UITransform", @@ -2256,7 +2256,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "d6cWKX7flMQZOxX0y0kQCJ" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2301,7 +2301,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "64zNVndSNGALXY9wKLOlXk" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2337,7 +2337,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "99tDo38GROuqiOLZr6g2X2" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2407,7 +2407,7 @@ "y": 0, "z": 0 }, - "_id": "19S3aFtVdNIodGsh+DEG9w" + "_id": "" }, { "__type__": "cc.UITransform", @@ -2423,7 +2423,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 98, + "width": 97.94466403162055, "height": 17.64 }, "_anchorPoint": { @@ -2431,7 +2431,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "6fsMD8aIhIopbisfPCinbP" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2462,7 +2462,7 @@ "_string": "微信公众号内容", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 14, + "_actualFontSize": 14.758333333333333, "_fontSize": 14, "_fontFamily": "Arial", "_lineHeight": 14, @@ -2499,7 +2499,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "c4T8g8tvlKc5YRDrm+YZ4v" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2535,7 +2535,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "fdfJ8GoFZHJrOD8dj6YwLI" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2605,7 +2605,7 @@ "y": 0, "z": 0 }, - "_id": "31ucaHJDVPSZYC+XuC7YgX" + "_id": "" }, { "__type__": "cc.UITransform", @@ -2621,7 +2621,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 77.779296875, + "width": 77.73537858201581, "height": 17.64 }, "_anchorPoint": { @@ -2629,7 +2629,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "b6uHKaXhJIyp/YzsGWd1tY" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2660,7 +2660,7 @@ "_string": "客服QQ说明", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 14, + "_actualFontSize": 14.758333333333333, "_fontSize": 14, "_fontFamily": "Arial", "_lineHeight": 14, @@ -2697,7 +2697,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "88m68YW61HoJMDSJrCZcW2" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2733,7 +2733,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "64xgA6paVIwp0U5ldpwU65" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2803,7 +2803,7 @@ "y": 0, "z": 0 }, - "_id": "5dLYqFy9lOyr2WkO/63fw6" + "_id": "" }, { "__type__": "cc.UITransform", @@ -2827,7 +2827,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "470qGwVxdBpLGK19yGuMqE" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2872,7 +2872,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "3bqNr1gcdKEIPshSaBLHNA" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2908,7 +2908,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "44VKjh3qpOMLhO6rIXkmEb" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2978,7 +2978,7 @@ "y": 0, "z": 0 }, - "_id": "38wCCRisVHPZhUKkRZw5Th" + "_id": "" }, { "__type__": "cc.UITransform", @@ -3002,7 +3002,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "74gc8wgThCS4Q7HwvV+dWw" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3047,7 +3047,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "f6p3klv1pHA5xmQJkiyfqE" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3083,7 +3083,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "der2Rhl5ZLPLrwd3JJrGFv" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3153,7 +3153,7 @@ "y": 0, "z": 0 }, - "_id": "356OwpaH9M9oQIWpF27SrK" + "_id": "" }, { "__type__": "cc.UITransform", @@ -3169,7 +3169,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 31.14453125, + "width": 31.12694540513834, "height": 17.64 }, "_anchorPoint": { @@ -3177,7 +3177,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "bckDiILlpAX5rh5vdeih09" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3208,7 +3208,7 @@ "_string": "1000", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 14, + "_actualFontSize": 14.758333333333333, "_fontSize": 14, "_fontFamily": "Arial", "_lineHeight": 14, @@ -3245,7 +3245,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "00ToSuJqpEAoi4bFjQZGXd" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3281,7 +3281,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "fdXGik5pJKqbwpMxdBc8lS" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3351,7 +3351,7 @@ "y": 0, "z": 0 }, - "_id": "18pZtJV4FM15XUGqUQJCxW" + "_id": "" }, { "__type__": "cc.UITransform", @@ -3375,7 +3375,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "6cRnQuv/9GkYbNRcmY2MJx" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3420,7 +3420,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "3ct8M+eD1NY7PbXIdFJOAZ" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3456,7 +3456,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "bf5kDbjoJODLMVHe8GN2YR" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3501,7 +3501,7 @@ }, "_lpos": { "__type__": "cc.Vec3", - "x": -541, + "x": -700, "y": -301, "z": 0 }, @@ -3526,7 +3526,7 @@ "y": 0, "z": 0 }, - "_id": "0bhwv5t7JB1puJiECG207V" + "_id": "" }, { "__type__": "cc.UITransform", @@ -3550,7 +3550,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "feISEPwCpBKqoW4LejwvQs" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3595,7 +3595,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "11YyyxR9xFzo5Amhdgd7iy" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3613,13 +3613,13 @@ "__prefab": { "__id__": 153 }, - "_alignFlags": 16, + "_alignFlags": 8, "_target": null, - "_left": 0, + "_left": 20, "_right": 0, "_top": 0, "_bottom": 0, - "_horizontalCenter": -541, + "_horizontalCenter": -698.466, "_verticalCenter": 0, "_isAbsLeft": true, "_isAbsRight": true, @@ -3631,7 +3631,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "66jHN3uPxM3bAL7Y/gIt4O" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3701,7 +3701,7 @@ "y": 0, "z": 0 }, - "_id": "5aJ5iJ4lxMfILdkdfJbiA7" + "_id": "" }, { "__type__": "cc.UITransform", @@ -3725,7 +3725,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "ba5kX+ecBHhrk/kb0srkYc" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3770,7 +3770,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "87TQBz3/JEpqImK/l6I4BD" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3806,7 +3806,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "bbFtZYV3JHk40pHEgkm6bh" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3851,7 +3851,7 @@ }, "_lpos": { "__type__": "cc.Vec3", - "x": 548.5, + "x": 707.5, "y": -298, "z": 0 }, @@ -3876,7 +3876,7 @@ "y": 0, "z": 0 }, - "_id": "75k5ZvvudKhJpM7HJ7WHOR" + "_id": "" }, { "__type__": "cc.UITransform", @@ -3900,7 +3900,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "5cfpk/cuRJNrvQQTNXUknq" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3945,7 +3945,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "ebHKNI6YhDVKSPfqb9I3v9" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3963,13 +3963,13 @@ "__prefab": { "__id__": 169 }, - "_alignFlags": 16, + "_alignFlags": 32, "_target": null, "_left": 0, - "_right": 0, + "_right": 5, "_top": 0, "_bottom": 0, - "_horizontalCenter": 548.5, + "_horizontalCenter": 710.146, "_verticalCenter": 0, "_isAbsLeft": true, "_isAbsRight": true, @@ -3981,7 +3981,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "71MNy8wMBJcYtALWeUvA4k" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4026,7 +4026,7 @@ }, "_lpos": { "__type__": "cc.Vec3", - "x": 560, + "x": 723.04, "y": 122.5, "z": 0 }, @@ -4051,7 +4051,7 @@ "y": 0, "z": 0 }, - "_id": "1dJSDn4nRKN7OlNM5TM8zN" + "_id": "" }, { "__type__": "cc.UITransform", @@ -4075,7 +4075,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "30RTGjIG5JX6Hm2ApXuG3H" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4120,7 +4120,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "caciXc8fZEH5nUtfg2s3E6" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4144,7 +4144,7 @@ "_right": 0, "_top": 0, "_bottom": 0, - "_horizontalCenter": 560, + "_horizontalCenter": 723.04, "_verticalCenter": 0, "_isAbsLeft": true, "_isAbsRight": true, @@ -4156,7 +4156,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "c7UFVm1S5O/adM7kOkxsmj" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4226,7 +4226,7 @@ "y": 0, "z": 0 }, - "_id": "37ltZTJUdOeaDDaJ3DYRDm" + "_id": "" }, { "__type__": "cc.UITransform", @@ -4250,7 +4250,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "14Fco3NuNHYaobD8F8cHjc" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4295,7 +4295,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "d1vl+1yPNLKpORPn5AZCNu" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4331,7 +4331,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "a9NTlLem5NwIFGMD79dTpd" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4401,7 +4401,7 @@ "y": 0, "z": 0 }, - "_id": "29CZyZaG9MipSsTlnjUJ9u" + "_id": "" }, { "__type__": "cc.UITransform", @@ -4425,7 +4425,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "f9GlmTL7BBfI556BECPzvS" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4470,7 +4470,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "cdOWjXHd5FNpQcK+YDUblT" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4506,7 +4506,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "b5gSEBUENJuKEn7fhWZmSc" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4576,7 +4576,7 @@ "y": 0, "z": 0 }, - "_id": "95nQTgpIdFP4PWDoC2uxP5" + "_id": "" }, { "__type__": "cc.UITransform", @@ -4592,7 +4592,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 50.1123046875, + "width": 50.08706073987154, "height": 13.86 }, "_anchorPoint": { @@ -4600,7 +4600,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "75iMQ1ZrJEpLykWBhkZksf" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4631,7 +4631,7 @@ "_string": "客服QQ:", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 11, + "_actualFontSize": 11.595833333333333, "_fontSize": 11, "_fontFamily": "Arial", "_lineHeight": 11, @@ -4668,7 +4668,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "8dcatqhRhMP7hwx9h2n4HM" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4704,7 +4704,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "11Xe1qz21AdYTTJ2OKXwFt" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4774,7 +4774,7 @@ "y": 0, "z": 0 }, - "_id": "b7/s55V/xLPqafu9mCoxgf" + "_id": "" }, { "__type__": "cc.UITransform", @@ -4790,7 +4790,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 50.1123046875, + "width": 50.08706073987154, "height": 13.86 }, "_anchorPoint": { @@ -4798,7 +4798,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "0cjLf9HNpBA5e7MCnWxchF" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4829,7 +4829,7 @@ "_string": "客服QQ:", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 11, + "_actualFontSize": 11.595833333333333, "_fontSize": 11, "_fontFamily": "Arial", "_lineHeight": 11, @@ -4866,7 +4866,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "3en8Sy4FpOtaFQCbuJRZLJ" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4902,7 +4902,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "a0AoWYq6dGB4LKAq1Vmw7D" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4972,7 +4972,7 @@ "y": 0, "z": 0 }, - "_id": "afxL9zUvND8ZXx7m0ovXYu" + "_id": "" }, { "__type__": "cc.UITransform", @@ -4988,7 +4988,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 25.05615234375, + "width": 25.04353036993577, "height": 13.86 }, "_anchorPoint": { @@ -4996,7 +4996,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "b06lOpPClB55Tfg3naBbTs" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5027,7 +5027,7 @@ "_string": "手机:", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 11, + "_actualFontSize": 11.595833333333333, "_fontSize": 11, "_fontFamily": "Arial", "_lineHeight": 11, @@ -5064,7 +5064,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "65wE8Io7xOiprlkZzdG5rV" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5100,7 +5100,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "969FDYxCVFrZ8cKQbt/dJc" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5170,7 +5170,7 @@ "y": 0, "z": 0 }, - "_id": "c2A5FrN5lNMJK+wZokO6Ru" + "_id": "" }, { "__type__": "cc.UITransform", @@ -5186,7 +5186,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 25.05615234375, + "width": 25.04353036993577, "height": 13.86 }, "_anchorPoint": { @@ -5194,7 +5194,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "03r6elbKNBr7/AXWoKcOcS" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5225,7 +5225,7 @@ "_string": "微信:", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 11, + "_actualFontSize": 11.595833333333333, "_fontSize": 11, "_fontFamily": "Arial", "_lineHeight": 11, @@ -5262,7 +5262,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "99E0sWz2lF/IQuBDaRRF46" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5298,7 +5298,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "5avDn2BmdJUK/1gOzaX0n/" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5368,7 +5368,7 @@ "y": 0, "z": 0 }, - "_id": "c3Uq7BmgxCCLVHx5QJZxNi" + "_id": "" }, { "__type__": "cc.UITransform", @@ -5384,7 +5384,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 20.16845703125, + "width": 20.15827646368577, "height": 13.86 }, "_anchorPoint": { @@ -5392,7 +5392,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "6atoer72RGD5h9eSztHkfH" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5423,7 +5423,7 @@ "_string": "QQ:", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 11, + "_actualFontSize": 11.595833333333333, "_fontSize": 11, "_fontFamily": "Arial", "_lineHeight": 11, @@ -5460,7 +5460,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "01kvT/i5NHv5G6lEVzn2dS" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5496,7 +5496,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "78/DWXOaZFTLhymFQfREfI" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5566,7 +5566,7 @@ "y": 0, "z": 0 }, - "_id": "a4EOsffPxK5bQFiy0VJv3q" + "_id": "" }, { "__type__": "cc.UITransform", @@ -5582,7 +5582,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 6.11767578125, + "width": 6.114593626482213, "height": 13.86 }, "_anchorPoint": { @@ -5590,7 +5590,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "06tfBMUeVBC43C+7eTih65" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5621,7 +5621,7 @@ "_string": "a", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 11, + "_actualFontSize": 11.595833333333333, "_fontSize": 11, "_fontFamily": "Arial", "_lineHeight": 11, @@ -5658,7 +5658,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "6bojFyPPlIBYiK2psCesfc" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5694,7 +5694,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "f7gYBPRNlPAYF/VrgNlO9O" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5764,7 +5764,7 @@ "y": 0, "z": 0 }, - "_id": "16zW2QynVAaZ0kSeo4c2Ko" + "_id": "" }, { "__type__": "cc.UITransform", @@ -5788,7 +5788,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "23iQQ3qm5C2Y8PUUjC+9BZ" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5833,7 +5833,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "6dmOZLx9BLYZivekkLH/rV" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5869,7 +5869,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "50SlR1rNBBRIs1PEvnaqan" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5914,7 +5914,7 @@ }, "_lpos": { "__type__": "cc.Vec3", - "x": -585, + "x": -749.433, "y": 316, "z": 0 }, @@ -5939,7 +5939,7 @@ "y": 0, "z": 0 }, - "_id": "9dw9aZ1dtAG4OFTijuctwz" + "_id": "" }, { "__type__": "cc.UITransform", @@ -5963,7 +5963,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "f833MKw7JJTIk3lWdGje/L" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -6008,7 +6008,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "591o5HCb5KaLCQVVkicZhF" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -6032,7 +6032,7 @@ "_right": 0, "_top": 0, "_bottom": 0, - "_horizontalCenter": -585, + "_horizontalCenter": -749.433, "_verticalCenter": 0, "_isAbsLeft": true, "_isAbsRight": true, @@ -6044,7 +6044,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "18UzLYw5dHXIpWLXS1JpZ3" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -6085,7 +6085,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "5aYZuHfBZD0ZeTe6VG7d9X" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -6121,7 +6121,7 @@ "_originalHeight": 720, "_alignMode": 2, "_lockFlags": 0, - "_id": "752e3oc0pB56SeNq8LGW9w" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -6162,7 +6162,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "14aK0WQJVNrIua5j7xqo9Y" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -6198,7 +6198,7 @@ "_originalHeight": 720, "_alignMode": 2, "_lockFlags": 0, - "_id": "90Er20sSlO4pQEEOmdfn8o" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -6214,7 +6214,6 @@ }, "fileId": "7jUKcK7VW+9kPygBBDS+LQ", "instance": null, - "targetOverrides": null, - "nestedPrefabInstanceRoots": null + "targetOverrides": null } -] +] \ No newline at end of file diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer6.prefab b/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer6.prefab index 1781d03..7605f66 100644 --- a/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer6.prefab +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer6.prefab @@ -28,14 +28,14 @@ "_active": true, "_components": [ { - "__id__": 438 + "__id__": 452 }, { - "__id__": 440 + "__id__": 454 } ], "_prefab": { - "__id__": 442 + "__id__": 456 }, "_lpos": { "__type__": "cc.Vec3", @@ -64,7 +64,7 @@ "y": 0, "z": 0 }, - "_id": "fcVIf95vtOFJpf08AharoC" + "_id": "" }, { "__type__": "cc.Node", @@ -223,7 +223,7 @@ "y": 0, "z": 0 }, - "_id": "45QWdjkMtLhqIZwF5HaAv9" + "_id": "" }, { "__type__": "cc.Node", @@ -276,7 +276,7 @@ "y": 0, "z": 0 }, - "_id": "bbEEyBKv9JY5cFbEgk+A3J" + "_id": "" }, { "__type__": "cc.UITransform", @@ -300,7 +300,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "7c+b4bArhICqC6X+Mecfv8" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -345,7 +345,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "d0tDedpUpGcKyzEYCQNgpw" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -381,7 +381,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "fbJxA/KQhF3oKLV0PKjxmQ" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -451,7 +451,7 @@ "y": 0, "z": 0 }, - "_id": "4doC4nErVCF79Jp3UsTGUQ" + "_id": "" }, { "__type__": "cc.UITransform", @@ -475,7 +475,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "d304DzPm9Mhbrf/2EuAfpq" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -520,7 +520,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "a0n4UVaBJA2rlSIDgKJ+gL" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -556,7 +556,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "d6swq5K89HeZyXcVeOcP9Z" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -626,7 +626,7 @@ "y": 0, "z": 0 }, - "_id": "06Q8H6xr9HwJ9c54xgNMCC" + "_id": "" }, { "__type__": "cc.UITransform", @@ -650,7 +650,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "bb+6CMqG1AdrNpw/pVlqKj" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -695,7 +695,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "24Wpm260dD6pGDrgI8ivpm" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -731,7 +731,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "adg8lSH3dK6aBatboe4WwD" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -801,7 +801,7 @@ "y": 0, "z": 0 }, - "_id": "03XNItj0JGFLFNsfVbPsU3" + "_id": "" }, { "__type__": "cc.UITransform", @@ -825,7 +825,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "b4X0bw+pRGj70WAeM6rjnX" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -859,7 +859,7 @@ }, "_type": 0, "_fillType": 0, - "_sizeMode": 1, + "_sizeMode": 0, "_fillCenter": { "__type__": "cc.Vec2", "x": 0, @@ -870,7 +870,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "5c4nFuOLNH8r21tIrt4/ws" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -906,7 +906,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "44r3Id/3xM4p7gg7qttGvH" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -976,7 +976,7 @@ "y": 0, "z": 0 }, - "_id": "00fk5o8TlBs6HjntyAH44X" + "_id": "" }, { "__type__": "cc.UITransform", @@ -1000,7 +1000,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "d5BJ2lUEJCHqlrKga0l/KV" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1045,7 +1045,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "ffujQCF4NLsqn7Y48jPPPp" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1081,7 +1081,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "56WrAaAIFEJrgvdqnC9Stk" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1151,7 +1151,7 @@ "y": 0, "z": 0 }, - "_id": "b0wh4DgJdH2JrMhYMKEC2H" + "_id": "" }, { "__type__": "cc.UITransform", @@ -1175,7 +1175,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "60wGtqoBxFXbJ4mInnGNqc" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1209,7 +1209,7 @@ }, "_type": 0, "_fillType": 0, - "_sizeMode": 1, + "_sizeMode": 0, "_fillCenter": { "__type__": "cc.Vec2", "x": 0, @@ -1220,7 +1220,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "3e5EFwUBdBrJwPGKMbxeAo" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1256,7 +1256,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "1ftJory/xOKqXTtf2VtvSg" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1326,7 +1326,7 @@ "y": 0, "z": 0 }, - "_id": "752Rp918RGxLO2y0NLBUf+" + "_id": "" }, { "__type__": "cc.UITransform", @@ -1350,7 +1350,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "c87Kxb/wlAR5KtwHgC6q2W" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1395,7 +1395,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "c4CzmQfclH54/A9B7hT8WU" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1431,7 +1431,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "c2yTTOtVFEKZ8MKSj9aRMs" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1501,7 +1501,7 @@ "y": 0, "z": 0 }, - "_id": "e6FBoDwI1DI6wGng+IOHhz" + "_id": "" }, { "__type__": "cc.UITransform", @@ -1525,7 +1525,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "0cspf7+uJO9qt257q8WTjP" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1570,7 +1570,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "7btvgxY59JJKMAg1Dqd6wI" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1606,7 +1606,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "d3Pkkz8CtHnaI0YaKUKPb6" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1676,7 +1676,7 @@ "y": 0, "z": 0 }, - "_id": "14rST5DV1K3pCZgIV6u1N7" + "_id": "" }, { "__type__": "cc.UITransform", @@ -1700,7 +1700,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "daD7hNFeFOhq7KCUIOK5dQ" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1745,7 +1745,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "46djB5HK1MYY8FH+yT4AfD" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1781,7 +1781,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "9csasZCCpHTYiSmy3M9iob" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1851,7 +1851,7 @@ "y": 0, "z": 0 }, - "_id": "26pnCbQ5xHpIqYAqdStI4x" + "_id": "" }, { "__type__": "cc.UITransform", @@ -1875,7 +1875,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "d7yQHNQC1NuKD7gwCKRFhi" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1920,7 +1920,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "26fSouVU9LhK9KT6I1kg2F" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1956,7 +1956,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "10pDZGmOBOjaclz338Xc2W" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2026,7 +2026,7 @@ "y": 0, "z": 0 }, - "_id": "e0BBfZ5uhGdI1n9k+lFiAn" + "_id": "" }, { "__type__": "cc.UITransform", @@ -2050,7 +2050,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "c6bNtluwlO6byqPXenhrw+" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2084,7 +2084,7 @@ }, "_type": 0, "_fillType": 0, - "_sizeMode": 1, + "_sizeMode": 0, "_fillCenter": { "__type__": "cc.Vec2", "x": 0, @@ -2095,7 +2095,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "c71Ezk6chFEqvOtAYssvTz" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2131,7 +2131,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "daNWKZt/tDYqc8tgnaUS0S" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2201,7 +2201,7 @@ "y": 0, "z": 0 }, - "_id": "9dvWulpqVNP4i7KKRRXrEl" + "_id": "" }, { "__type__": "cc.UITransform", @@ -2225,7 +2225,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "40IQnxTcZCVYuTnpC23z7O" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2270,7 +2270,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "b298io2vRHmYqDg49//yP4" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2306,7 +2306,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "c1WGY92HJNfovM2NtY2vlB" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2376,7 +2376,7 @@ "y": 0, "z": 0 }, - "_id": "991XCH3EBGWLrnrPesKSqa" + "_id": "" }, { "__type__": "cc.UITransform", @@ -2400,7 +2400,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "35Y4/48fVDJ4mp80a+59vY" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2434,7 +2434,7 @@ }, "_type": 0, "_fillType": 0, - "_sizeMode": 1, + "_sizeMode": 0, "_fillCenter": { "__type__": "cc.Vec2", "x": 0, @@ -2445,7 +2445,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "a8/5FiCrNA9oImsbvTfg9P" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2481,7 +2481,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "9bYDHLpi1H+b4hlXBhUZww" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2551,7 +2551,7 @@ "y": 0, "z": 0 }, - "_id": "65CUjmtcZCPajUTt7GA3tP" + "_id": "" }, { "__type__": "cc.UITransform", @@ -2575,7 +2575,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "2aD8zh1c5Jr6CDaKoCpJwE" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2620,7 +2620,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "82FweSjzFN3a9CkKifpDM8" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2656,7 +2656,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "3eV2zJynlJEJOemtoadKO2" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2726,7 +2726,7 @@ "y": 0, "z": 0 }, - "_id": "1epcz5RTZEvay87wCohSVO" + "_id": "" }, { "__type__": "cc.UITransform", @@ -2750,7 +2750,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "fb/HVjL3hFt5Ih3XWdOQ5A" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2795,7 +2795,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "95/YUgv1tGOI3eAB/zW2od" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2831,7 +2831,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "e5NtvwFEFCtqrdI8wE6ydy" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2901,7 +2901,7 @@ "y": 0, "z": 0 }, - "_id": "1cClhRtdhNX5bxjfKfRGt+" + "_id": "" }, { "__type__": "cc.UITransform", @@ -2925,7 +2925,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "54LP/V3JdMpqaVgxrTDHdk" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -2970,7 +2970,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "3fj8XoIgVP3ofgORa87JQD" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3006,7 +3006,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "b9iAlZ4WdPQqjSX4dyH6Zr" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3076,7 +3076,7 @@ "y": 0, "z": 0 }, - "_id": "4dL4CIMTFBuLTx1HjQ15gF" + "_id": "" }, { "__type__": "cc.UITransform", @@ -3100,7 +3100,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "f1GnaSKllGeLszAX0SWbcR" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3145,7 +3145,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "d3Jc0+0WpIu5JuQSH4bety" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3181,7 +3181,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "e6ybyO3NJJC59BNw3i1D4U" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3251,7 +3251,7 @@ "y": 0, "z": 0 }, - "_id": "afjETO1NtDTK7+0N5voakT" + "_id": "" }, { "__type__": "cc.UITransform", @@ -3275,7 +3275,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "c2tq7+RchHHLl1V64bBU2B" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3320,7 +3320,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "5cG7PMJ7RLt6zSQD70rml6" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3356,7 +3356,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "c9wshDfyVP2a03jddroCtT" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3426,7 +3426,7 @@ "y": 0, "z": 0 }, - "_id": "a5NLsUzhJKur7SC+sdc3B9" + "_id": "" }, { "__type__": "cc.UITransform", @@ -3450,7 +3450,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "84SzBuezVMNKVe5lKLTz9D" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3495,7 +3495,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "5461CWNtRCKY+UsnlQkPi8" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3531,7 +3531,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "f61RzSpnNGDKVwhe9n0fg9" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3601,7 +3601,7 @@ "y": 0, "z": 0 }, - "_id": "4bq3Edn05EqLiRYcYfv7eF" + "_id": "" }, { "__type__": "cc.UITransform", @@ -3625,7 +3625,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "f4pGjecLdMJbRUSBnmPp1l" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3670,7 +3670,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "4ee2RgRdRPQ5vOZ+unWNWv" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3706,7 +3706,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "eb591WofdEYby9s1lZjTpa" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3776,7 +3776,7 @@ "y": 0, "z": 0 }, - "_id": "0aCsvvHehBdbfBWXCaQknd" + "_id": "" }, { "__type__": "cc.UITransform", @@ -3800,7 +3800,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "66W5W8tRpGIp+f9sTgvVIf" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3845,7 +3845,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "140nyDIlxLZYAdHupdPmuo" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3881,7 +3881,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "e9XwC2ElNIG6NJXRY0ZqD6" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -3951,7 +3951,7 @@ "y": 0, "z": 0 }, - "_id": "2cE8V0h09I9rw1EcUE1g1i" + "_id": "" }, { "__type__": "cc.UITransform", @@ -3975,7 +3975,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "22Yp3vv5FHTImMkuzByN0m" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4020,7 +4020,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "cdhEf/5GZLOY2whXcu1iYb" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4056,7 +4056,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "faie1xB95Pko8BdSiHDAKX" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4126,7 +4126,7 @@ "y": 0, "z": 0 }, - "_id": "7e1EEZYCVHCLO+c6j3IAtX" + "_id": "" }, { "__type__": "cc.UITransform", @@ -4150,7 +4150,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "86QiPYELxOubS/k1sD6ThL" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4195,7 +4195,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "36NJIpkEBGyaSdTydnpu+e" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4231,7 +4231,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "cfJaWGR39C+oGa9Bn5qpax" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4276,7 +4276,7 @@ }, "_lpos": { "__type__": "cc.Vec3", - "x": -589.5, + "x": -754.83, "y": 315.5, "z": 0 }, @@ -4301,7 +4301,7 @@ "y": 0, "z": 0 }, - "_id": "8eBDQuDstO57J0mqhKBXpJ" + "_id": "" }, { "__type__": "cc.UITransform", @@ -4325,7 +4325,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "cc18XK9NxDrI9vNl6+QeMK" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4370,7 +4370,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "3eTWGVOOtCKZUFs4reHkMV" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4394,7 +4394,7 @@ "_right": 0, "_top": 0, "_bottom": 0, - "_horizontalCenter": -589.5, + "_horizontalCenter": -754.83, "_verticalCenter": 0, "_isAbsLeft": true, "_isAbsRight": true, @@ -4406,7 +4406,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "85vn0N0Y1NcKiSOVOAkDoQ" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4476,7 +4476,7 @@ "y": 0, "z": 0 }, - "_id": "fbbdqEK+JEFIs7d5r5IUjA" + "_id": "" }, { "__type__": "cc.UITransform", @@ -4500,7 +4500,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "85/Sju3AJFSb+kvKFOoI0v" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4534,7 +4534,7 @@ }, "_type": 0, "_fillType": 0, - "_sizeMode": 1, + "_sizeMode": 0, "_fillCenter": { "__type__": "cc.Vec2", "x": 0, @@ -4545,7 +4545,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "52iL7uXLNGTbVp90RM94Rx" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4581,7 +4581,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "86+Us4SW9BeZ19RyPGI3MD" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4651,7 +4651,7 @@ "y": 0, "z": 0 }, - "_id": "baq8PZ+GtOMqs65jfHeJpg" + "_id": "" }, { "__type__": "cc.UITransform", @@ -4675,7 +4675,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "012MvMpK1B+ryOMgZnx8dM" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4720,7 +4720,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "acNzF+taBGeYd3u2Nn9AvI" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4756,7 +4756,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "34HrpZTCpPrYk9Uooce73a" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4826,7 +4826,7 @@ "y": 0, "z": 0 }, - "_id": "d5Y49VlfRBdLLvHwGyPBmo" + "_id": "" }, { "__type__": "cc.UITransform", @@ -4850,7 +4850,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "07UiCpxIRASrECgcn9hnr7" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4895,7 +4895,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "0dbdysKYhJu5sfk83D80Zh" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -4931,7 +4931,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "cfuFJu+zBKlLavlGix7Mu6" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5001,7 +5001,7 @@ "y": 0, "z": 0 }, - "_id": "2fVq2iD89LQ6/IMQ45P2+2" + "_id": "" }, { "__type__": "cc.UITransform", @@ -5017,7 +5017,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 14, + "width": 13.992094861660078, "height": 17.64 }, "_anchorPoint": { @@ -5025,7 +5025,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "06kOcg9EFEC4DyGEtA0m+v" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5056,7 +5056,7 @@ "_string": "ID", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 14, + "_actualFontSize": 14.758333333333333, "_fontSize": 14, "_fontFamily": "Arial", "_lineHeight": 14, @@ -5093,7 +5093,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "c6eb0onN9B0bAwbGbWi7gf" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5129,7 +5129,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "38SH9ZvltN2bD3QQU0cVCK" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5199,7 +5199,7 @@ "y": 0, "z": 0 }, - "_id": "46COEtsdtH7oQH05hNkhNV" + "_id": "" }, { "__type__": "cc.UITransform", @@ -5215,7 +5215,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 3.8896484375, + "width": 3.8874521368577075, "height": 17.64 }, "_anchorPoint": { @@ -5223,7 +5223,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "f83kn7aXRGZYecQgeYdiEE" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5254,7 +5254,7 @@ "_string": ".", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 14, + "_actualFontSize": 14.758333333333333, "_fontSize": 14, "_fontFamily": "Arial", "_lineHeight": 14, @@ -5291,7 +5291,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "fbc6KTk2hDCpAlLSfWtKsN" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5327,7 +5327,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "f9GJ8zGGZMF4Cg0HP8MXGQ" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5397,7 +5397,7 @@ "y": 0, "z": 0 }, - "_id": "1bqYrSqA1DJp2BEg7vFLhY" + "_id": "" }, { "__type__": "cc.UITransform", @@ -5413,7 +5413,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 3.8896484375, + "width": 3.8874521368577075, "height": 17.64 }, "_anchorPoint": { @@ -5421,7 +5421,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "4eY6XR8UJEPJISdPX7D1sz" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5452,7 +5452,7 @@ "_string": ".", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 14, + "_actualFontSize": 14.758333333333333, "_fontSize": 14, "_fontFamily": "Arial", "_lineHeight": 14, @@ -5489,7 +5489,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "71pljEDHVEHbsThOmHBFDp" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5525,7 +5525,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "35LUsflvRNtoL3YL7tWjiR" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5595,7 +5595,7 @@ "y": 0, "z": 0 }, - "_id": "f2HKIajsBKx4Vq4KL2Qtig" + "_id": "" }, { "__type__": "cc.UITransform", @@ -5611,7 +5611,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 3.8896484375, + "width": 3.8874521368577075, "height": 17.64 }, "_anchorPoint": { @@ -5619,7 +5619,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "d9f3POWq5EAoId8HsMbOhz" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5650,7 +5650,7 @@ "_string": ".", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 14, + "_actualFontSize": 14.758333333333333, "_fontSize": 14, "_fontFamily": "Arial", "_lineHeight": 14, @@ -5687,7 +5687,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "7aC9na4gBE7YNhjxudEAR5" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5723,7 +5723,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "17yh491DVFxKMc6q3zEk1f" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5793,7 +5793,7 @@ "y": 0, "z": 0 }, - "_id": "e8ZqhCNN9MW6dbpMY69VmU" + "_id": "" }, { "__type__": "cc.UITransform", @@ -5809,7 +5809,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 3.8896484375, + "width": 3.8874521368577075, "height": 17.64 }, "_anchorPoint": { @@ -5817,7 +5817,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "8cQ1RzYT5I27JG738Uj643" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5848,7 +5848,7 @@ "_string": ".", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 14, + "_actualFontSize": 14.758333333333333, "_fontSize": 14, "_fontFamily": "Arial", "_lineHeight": 14, @@ -5885,7 +5885,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "9bn9tAAlpBhYuFNnAALN4+" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5921,7 +5921,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "77h1Qsc8pGt6x/gf3DWSyV" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -5991,7 +5991,7 @@ "y": 0, "z": 0 }, - "_id": "1ezxMRT+dC8ry0iOEcZLvX" + "_id": "" }, { "__type__": "cc.UITransform", @@ -6007,7 +6007,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 3.8896484375, + "width": 3.8874521368577075, "height": 17.64 }, "_anchorPoint": { @@ -6015,7 +6015,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "324E1kn7pFDYbCmylngb9B" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -6046,7 +6046,7 @@ "_string": ".", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 14, + "_actualFontSize": 14.758333333333333, "_fontSize": 14, "_fontFamily": "Arial", "_lineHeight": 14, @@ -6083,7 +6083,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "5e+Hdzp75PoL4Oj3d6iiXs" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -6119,7 +6119,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "23AMCmohJBzJQnAzwrGzB+" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -6189,7 +6189,7 @@ "y": 0, "z": 0 }, - "_id": "21hp3isjlLxrx8ucEwcNHw" + "_id": "" }, { "__type__": "cc.UITransform", @@ -6205,7 +6205,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 3.8896484375, + "width": 3.8874521368577075, "height": 17.64 }, "_anchorPoint": { @@ -6213,7 +6213,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "63KIJs5LhD841yxf1SkOO5" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -6244,7 +6244,7 @@ "_string": ".", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 14, + "_actualFontSize": 14.758333333333333, "_fontSize": 14, "_fontFamily": "Arial", "_lineHeight": 14, @@ -6281,7 +6281,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "9cCHl3mVdBfYViv4npSThy" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -6317,7 +6317,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "cfWIpBinRDS6jOCjxACTPK" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -6387,7 +6387,7 @@ "y": 0, "z": 0 }, - "_id": "b8dj3mEjdB/KqKesDSGmsS" + "_id": "" }, { "__type__": "cc.UITransform", @@ -6403,7 +6403,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 14, + "width": 13.992094861660078, "height": 17.64 }, "_anchorPoint": { @@ -6411,7 +6411,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "3crrOtqdFP7JtX/2pMM1sY" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -6442,7 +6442,7 @@ "_string": "ID", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 14, + "_actualFontSize": 14.758333333333333, "_fontSize": 14, "_fontFamily": "Arial", "_lineHeight": 14, @@ -6479,7 +6479,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "91Bke5Cm1DXJyzeqEd+1RW" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -6515,7 +6515,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "c3cp5cT7RLDYZxMO2SR11Z" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -6585,7 +6585,7 @@ "y": 0, "z": 0 }, - "_id": "f6SwzRbkZFHaLK28FlFd78" + "_id": "" }, { "__type__": "cc.UITransform", @@ -6601,7 +6601,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 63.041015625, + "width": 63.005419342885375, "height": 17.64 }, "_anchorPoint": { @@ -6609,7 +6609,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "6476br58JBdJ3Id/N3TQ9U" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -6640,7 +6640,7 @@ "_string": "Spirit3259", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 14, + "_actualFontSize": 14.758333333333333, "_fontSize": 14, "_fontFamily": "Arial", "_lineHeight": 14, @@ -6677,7 +6677,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "6960wikG1Nho9LgyY3XVZ2" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -6713,7 +6713,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "e580lruEpEurR4ZQ5U3VjM" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -6754,7 +6754,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "42aDNUJDlCT4ORELyOzZxy" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -6790,7 +6790,7 @@ "_originalHeight": 720, "_alignMode": 2, "_lockFlags": 0, - "_id": "c2bLJiYe1PuJxrDMXC+COh" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -6849,38 +6849,29 @@ "__id__": 369 }, { - "__id__": 377 + "__id__": 381 }, { - "__id__": 385 - }, - { - "__id__": 393 + "__id__": 389 }, { "__id__": 401 }, { "__id__": 409 - }, - { - "__id__": 417 - }, - { - "__id__": 425 } ], "_active": true, "_components": [ { - "__id__": 433 + "__id__": 447 }, { - "__id__": 435 + "__id__": 449 } ], "_prefab": { - "__id__": 437 + "__id__": 451 }, "_lpos": { "__type__": "cc.Vec3", @@ -6909,7 +6900,7 @@ "y": 0, "z": 0 }, - "_id": "48WgUrMkVC076rrgBkR4zK" + "_id": "" }, { "__type__": "cc.Node", @@ -6937,7 +6928,7 @@ }, "_lpos": { "__type__": "cc.Vec3", - "x": 560, + "x": 725.33, "y": -86, "z": 0 }, @@ -6962,7 +6953,7 @@ "y": 0, "z": 0 }, - "_id": "54k590ooxEpaRxY3a51mnS" + "_id": "" }, { "__type__": "cc.UITransform", @@ -6986,7 +6977,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "75SShBindAGqjhB2X52S0L" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -7031,7 +7022,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "2bXbbkNXlP3rjgcVl984L9" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -7055,7 +7046,7 @@ "_right": 0, "_top": 0, "_bottom": 0, - "_horizontalCenter": 560, + "_horizontalCenter": 725.33, "_verticalCenter": 0, "_isAbsLeft": true, "_isAbsRight": true, @@ -7067,7 +7058,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "576GUS1XJG4KA6NrAGEIB+" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -7112,7 +7103,7 @@ }, "_lpos": { "__type__": "cc.Vec3", - "x": 560.5, + "x": 725.83, "y": -180.5, "z": 0 }, @@ -7137,7 +7128,7 @@ "y": 0, "z": 0 }, - "_id": "599l9Q/9xLWZ2xiMqv6kD8" + "_id": "" }, { "__type__": "cc.UITransform", @@ -7161,7 +7152,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "6eTLl8oOFBVIjKUfYm0XLD" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -7206,7 +7197,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "55IxGJ2rhKPLjpOA/H330I" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -7230,7 +7221,7 @@ "_right": 0, "_top": 0, "_bottom": 0, - "_horizontalCenter": 560.5, + "_horizontalCenter": 725.83, "_verticalCenter": 0, "_isAbsLeft": true, "_isAbsRight": true, @@ -7242,7 +7233,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "46jtC5zXNJ2q1duxPIEg1h" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -7287,7 +7278,7 @@ }, "_lpos": { "__type__": "cc.Vec3", - "x": 560.5, + "x": 725.83, "y": 10, "z": 0 }, @@ -7312,7 +7303,7 @@ "y": 0, "z": 0 }, - "_id": "017GI1g5pK5pzrusIBBsEs" + "_id": "" }, { "__type__": "cc.UITransform", @@ -7336,7 +7327,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "fdyre8qqBKQ4bKWJao2Xwm" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -7381,7 +7372,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "6eQOS73WxGwq5wmTkdoqyh" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -7405,7 +7396,7 @@ "_right": 0, "_top": 0, "_bottom": 0, - "_horizontalCenter": 560.5, + "_horizontalCenter": 725.83, "_verticalCenter": 0, "_isAbsLeft": true, "_isAbsRight": true, @@ -7417,7 +7408,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "00SXPwX3dBc7AuGAeUEcEi" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -7462,7 +7453,7 @@ }, "_lpos": { "__type__": "cc.Vec3", - "x": -547, + "x": -708.162, "y": 234, "z": 0 }, @@ -7487,7 +7478,7 @@ "y": 0, "z": 0 }, - "_id": "cfzFNKarVELKsAqsQf11+u" + "_id": "" }, { "__type__": "cc.UITransform", @@ -7511,7 +7502,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "95X/eMWbVBMJ103OfsoR9P" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -7556,7 +7547,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "81FQJ+RetO2IOvOpcvcpzQ" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -7580,7 +7571,7 @@ "_right": 0, "_top": 0, "_bottom": 0, - "_horizontalCenter": -547, + "_horizontalCenter": -708.162, "_verticalCenter": 0, "_isAbsLeft": true, "_isAbsRight": true, @@ -7592,7 +7583,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "90/tJLctlD4a/UnQ3eFNgR" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -7613,7 +7604,7 @@ }, { "__type__": "cc.Node", - "_name": "头像框", + "_name": "Spirit478", "_objFlags": 0, "__editorExtras__": {}, "_parent": { @@ -7637,357 +7628,7 @@ }, "_lpos": { "__type__": "cc.Vec3", - "x": -501, - "y": 322, - "z": 0 - }, - "_lrot": { - "__type__": "cc.Quat", - "x": 0, - "y": 0, - "z": 0, - "w": 1 - }, - "_lscale": { - "__type__": "cc.Vec3", - "x": 1, - "y": 1, - "z": 1 - }, - "_mobility": 0, - "_layer": 33554432, - "_euler": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_id": "1fKI/JtqRFqYm8eQS41VqA" - }, - { - "__type__": "cc.UITransform", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 329 - }, - "_enabled": true, - "__prefab": { - "__id__": 331 - }, - "_contentSize": { - "__type__": "cc.Size", - "width": 70, - "height": 72 - }, - "_anchorPoint": { - "__type__": "cc.Vec2", - "x": 0.5, - "y": 0.5 - }, - "_id": "d3hD3GSyFNo4kU8Tx0GTZ7" - }, - { - "__type__": "cc.CompPrefabInfo", - "fileId": "WVsc0ZDAkkSpMsucbmqlDQ" - }, - { - "__type__": "cc.Sprite", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 329 - }, - "_enabled": true, - "__prefab": { - "__id__": 333 - }, - "_customMaterial": null, - "_srcBlendFactor": 2, - "_dstBlendFactor": 4, - "_color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - }, - "_spriteFrame": { - "__uuid__": "7863c037-341e-47a9-a00f-133597728429@f9941", - "__expectedType__": "cc.SpriteFrame" - }, - "_type": 0, - "_fillType": 0, - "_sizeMode": 1, - "_fillCenter": { - "__type__": "cc.Vec2", - "x": 0, - "y": 0 - }, - "_fillStart": 0, - "_fillRange": 0, - "_isTrimmedMode": true, - "_useGrayscale": false, - "_atlas": null, - "_id": "8emehTl7dAz5B8xxPr33oE" - }, - { - "__type__": "cc.CompPrefabInfo", - "fileId": "OB0HwWBZRxgCev1ipObeYw" - }, - { - "__type__": "cc.Widget", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 329 - }, - "_enabled": true, - "__prefab": { - "__id__": 335 - }, - "_alignFlags": 16, - "_target": null, - "_left": 0, - "_right": 0, - "_top": 0, - "_bottom": 0, - "_horizontalCenter": -501, - "_verticalCenter": 0, - "_isAbsLeft": true, - "_isAbsRight": true, - "_isAbsTop": true, - "_isAbsBottom": true, - "_isAbsHorizontalCenter": true, - "_isAbsVerticalCenter": true, - "_originalWidth": 0, - "_originalHeight": 0, - "_alignMode": 2, - "_lockFlags": 0, - "_id": "batyhPaW9FeaJ63D2qanbq" - }, - { - "__type__": "cc.CompPrefabInfo", - "fileId": "8fpoHjPZUMXiz4OXONA0ag" - }, - { - "__type__": "cc.PrefabInfo", - "root": { - "__id__": 1 - }, - "asset": { - "__id__": 0 - }, - "fileId": "r1ht1FD6Hkm9phdEQRjiMw", - "instance": null, - "targetOverrides": null, - "nestedPrefabInstanceRoots": null - }, - { - "__type__": "cc.Node", - "_name": "头像", - "_objFlags": 0, - "__editorExtras__": {}, - "_parent": { - "__id__": 296 - }, - "_children": [], - "_active": true, - "_components": [ - { - "__id__": 338 - }, - { - "__id__": 340 - }, - { - "__id__": 342 - } - ], - "_prefab": { - "__id__": 344 - }, - "_lpos": { - "__type__": "cc.Vec3", - "x": -501.5, - "y": 322.5, - "z": 0 - }, - "_lrot": { - "__type__": "cc.Quat", - "x": 0, - "y": 0, - "z": 0, - "w": 1 - }, - "_lscale": { - "__type__": "cc.Vec3", - "x": 1, - "y": 1, - "z": 1 - }, - "_mobility": 0, - "_layer": 33554432, - "_euler": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_id": "82RfbkCLpFQJ9NvwuoQiW0" - }, - { - "__type__": "cc.UITransform", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 337 - }, - "_enabled": true, - "__prefab": { - "__id__": 339 - }, - "_contentSize": { - "__type__": "cc.Size", - "width": 63, - "height": 65 - }, - "_anchorPoint": { - "__type__": "cc.Vec2", - "x": 0.5, - "y": 0.5 - }, - "_id": "15Ujn1sLdL06fUtaHfyNPg" - }, - { - "__type__": "cc.CompPrefabInfo", - "fileId": "Cv+Iuu4SEhWLZSHqHlk63Q" - }, - { - "__type__": "cc.Sprite", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 337 - }, - "_enabled": true, - "__prefab": { - "__id__": 341 - }, - "_customMaterial": null, - "_srcBlendFactor": 2, - "_dstBlendFactor": 4, - "_color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - }, - "_spriteFrame": { - "__uuid__": "60da43f5-f3c2-4b9f-9123-fad81f8f8af5@f9941", - "__expectedType__": "cc.SpriteFrame" - }, - "_type": 0, - "_fillType": 0, - "_sizeMode": 1, - "_fillCenter": { - "__type__": "cc.Vec2", - "x": 0, - "y": 0 - }, - "_fillStart": 0, - "_fillRange": 0, - "_isTrimmedMode": true, - "_useGrayscale": false, - "_atlas": null, - "_id": "83FUAD1HdGUqvXgOQ4ulWz" - }, - { - "__type__": "cc.CompPrefabInfo", - "fileId": "6GVW053fubncVKgx1B7u0g" - }, - { - "__type__": "cc.Widget", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 337 - }, - "_enabled": true, - "__prefab": { - "__id__": 343 - }, - "_alignFlags": 16, - "_target": null, - "_left": 0, - "_right": 0, - "_top": 0, - "_bottom": 0, - "_horizontalCenter": -501.5, - "_verticalCenter": 0, - "_isAbsLeft": true, - "_isAbsRight": true, - "_isAbsTop": true, - "_isAbsBottom": true, - "_isAbsHorizontalCenter": true, - "_isAbsVerticalCenter": true, - "_originalWidth": 0, - "_originalHeight": 0, - "_alignMode": 2, - "_lockFlags": 0, - "_id": "77zQptyzxA1aXNEsU/WBur" - }, - { - "__type__": "cc.CompPrefabInfo", - "fileId": "tKLh+EiBTMiCLT7bzv9i0g" - }, - { - "__type__": "cc.PrefabInfo", - "root": { - "__id__": 1 - }, - "asset": { - "__id__": 0 - }, - "fileId": "ozO4tPJU0zzGkHj9VVek7A", - "instance": null, - "targetOverrides": null, - "nestedPrefabInstanceRoots": null - }, - { - "__type__": "cc.Node", - "_name": "Spirit478", - "_objFlags": 0, - "__editorExtras__": {}, - "_parent": { - "__id__": 296 - }, - "_children": [], - "_active": true, - "_components": [ - { - "__id__": 346 - }, - { - "__id__": 348 - }, - { - "__id__": 350 - } - ], - "_prefab": { - "__id__": 352 - }, - "_lpos": { - "__type__": "cc.Vec3", - "x": 490, + "x": 656.685, "y": 319, "z": 0 }, @@ -8012,7 +7653,7 @@ "y": 0, "z": 0 }, - "_id": "a6QdoMBupB+ZzHf9NcLCFp" + "_id": "" }, { "__type__": "cc.UITransform", @@ -8020,11 +7661,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 345 + "__id__": 329 }, "_enabled": true, "__prefab": { - "__id__": 347 + "__id__": 331 }, "_contentSize": { "__type__": "cc.Size", @@ -8036,7 +7677,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "c6MJbOI6pLqJPvDpQaW6/4" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -8048,11 +7689,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 345 + "__id__": 329 }, "_enabled": true, "__prefab": { - "__id__": 349 + "__id__": 333 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -8081,7 +7722,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "0e0OGFxaNId4OPRSVdC6YW" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -8093,11 +7734,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 345 + "__id__": 329 }, "_enabled": true, "__prefab": { - "__id__": 351 + "__id__": 335 }, "_alignFlags": 16, "_target": null, @@ -8105,7 +7746,7 @@ "_right": 0, "_top": 0, "_bottom": 0, - "_horizontalCenter": 490, + "_horizontalCenter": 656.685, "_verticalCenter": 0, "_isAbsLeft": true, "_isAbsRight": true, @@ -8117,7 +7758,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "8aUmuHSvpCJru1Yy0TdWVw" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -8148,17 +7789,17 @@ "_active": true, "_components": [ { - "__id__": 354 + "__id__": 338 }, { - "__id__": 356 + "__id__": 340 }, { - "__id__": 358 + "__id__": 342 } ], "_prefab": { - "__id__": 360 + "__id__": 344 }, "_lpos": { "__type__": "cc.Vec3", @@ -8187,7 +7828,7 @@ "y": 0, "z": 0 }, - "_id": "a1HSnJK81EDLUjWKqQ8ZyY" + "_id": "" }, { "__type__": "cc.UITransform", @@ -8195,11 +7836,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 353 + "__id__": 337 }, "_enabled": true, "__prefab": { - "__id__": 355 + "__id__": 339 }, "_contentSize": { "__type__": "cc.Size", @@ -8211,7 +7852,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "e4tJhXIJFK8LEYQLR6grW/" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -8223,11 +7864,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 353 + "__id__": 337 }, "_enabled": true, "__prefab": { - "__id__": 357 + "__id__": 341 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -8256,7 +7897,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "00dJYfGDJOl6KKleMah5ly" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -8268,11 +7909,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 353 + "__id__": 337 }, "_enabled": true, "__prefab": { - "__id__": 359 + "__id__": 343 }, "_alignFlags": 16, "_target": null, @@ -8292,7 +7933,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "baSMQEwhtBn43rdTCpq4Y+" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -8323,17 +7964,17 @@ "_active": true, "_components": [ { - "__id__": 362 + "__id__": 346 }, { - "__id__": 364 + "__id__": 348 }, { - "__id__": 366 + "__id__": 350 } ], "_prefab": { - "__id__": 368 + "__id__": 352 }, "_lpos": { "__type__": "cc.Vec3", @@ -8362,7 +8003,7 @@ "y": 0, "z": 0 }, - "_id": "bfPimYtRxCsIhNpS7yPSIi" + "_id": "" }, { "__type__": "cc.UITransform", @@ -8370,11 +8011,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 361 + "__id__": 345 }, "_enabled": true, "__prefab": { - "__id__": 363 + "__id__": 347 }, "_contentSize": { "__type__": "cc.Size", @@ -8386,7 +8027,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "bd7CA02lhPl6BUxtbbkONt" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -8398,11 +8039,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 361 + "__id__": 345 }, "_enabled": true, "__prefab": { - "__id__": 365 + "__id__": 349 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -8431,7 +8072,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "7bVluQoGVKA7b4RSQu2OE5" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -8443,11 +8084,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 361 + "__id__": 345 }, "_enabled": true, "__prefab": { - "__id__": 367 + "__id__": 351 }, "_alignFlags": 16, "_target": null, @@ -8467,7 +8108,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "3bUY+3XuVHRbjb50ssEno+" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -8498,17 +8139,17 @@ "_active": true, "_components": [ { - "__id__": 370 + "__id__": 354 }, { - "__id__": 372 + "__id__": 356 }, { - "__id__": 374 + "__id__": 358 } ], "_prefab": { - "__id__": 376 + "__id__": 360 }, "_lpos": { "__type__": "cc.Vec3", @@ -8537,7 +8178,7 @@ "y": 0, "z": 0 }, - "_id": "feyEpt1EZHvIxTm8SbHVFX" + "_id": "" }, { "__type__": "cc.UITransform", @@ -8545,11 +8186,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 369 + "__id__": 353 }, "_enabled": true, "__prefab": { - "__id__": 371 + "__id__": 355 }, "_contentSize": { "__type__": "cc.Size", @@ -8561,7 +8202,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "a3t+Aw/Z9KhLL7YLVL0yrK" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -8573,11 +8214,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 369 + "__id__": 353 }, "_enabled": true, "__prefab": { - "__id__": 373 + "__id__": 357 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -8606,7 +8247,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "93oGH33EhFoIBG7CwMIvEO" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -8618,11 +8259,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 369 + "__id__": 353 }, "_enabled": true, "__prefab": { - "__id__": 375 + "__id__": 359 }, "_alignFlags": 16, "_target": null, @@ -8642,7 +8283,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "c9W8aOwFxA55ghqJR88KG7" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -8673,17 +8314,17 @@ "_active": true, "_components": [ { - "__id__": 378 + "__id__": 362 }, { - "__id__": 380 + "__id__": 364 }, { - "__id__": 382 + "__id__": 366 } ], "_prefab": { - "__id__": 384 + "__id__": 368 }, "_lpos": { "__type__": "cc.Vec3", @@ -8712,7 +8353,7 @@ "y": 0, "z": 0 }, - "_id": "4clepgK+tLTJuL+WPnBW8q" + "_id": "" }, { "__type__": "cc.UITransform", @@ -8720,11 +8361,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 377 + "__id__": 361 }, "_enabled": true, "__prefab": { - "__id__": 379 + "__id__": 363 }, "_contentSize": { "__type__": "cc.Size", @@ -8736,7 +8377,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "46xgQrghZKXYmth1j/ueRx" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -8748,11 +8389,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 377 + "__id__": 361 }, "_enabled": true, "__prefab": { - "__id__": 381 + "__id__": 365 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -8781,7 +8422,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "9c1O69PyBL9Lyelfhh/yhd" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -8793,11 +8434,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 377 + "__id__": 361 }, "_enabled": true, "__prefab": { - "__id__": 383 + "__id__": 367 }, "_alignFlags": 16, "_target": null, @@ -8817,7 +8458,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "1f6OMfdn1Mz58+pfN8HWUP" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -8844,25 +8485,26 @@ "_parent": { "__id__": 296 }, - "_children": [], + "_children": [ + { + "__id__": 370 + } + ], "_active": true, "_components": [ { - "__id__": 386 + "__id__": 376 }, { - "__id__": 388 - }, - { - "__id__": 390 + "__id__": 378 } ], "_prefab": { - "__id__": 392 + "__id__": 380 }, "_lpos": { "__type__": "cc.Vec3", - "x": -134.5, + "x": -80.5, "y": 319, "z": 0 }, @@ -8887,7 +8529,57 @@ "y": 0, "z": 0 }, - "_id": "c6OCOJuopMVLejrYbgCmU8" + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "NumberLabel", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 369 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 371 + }, + { + "__id__": 373 + } + ], + "_prefab": { + "__id__": 375 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0.5, + "y": -23, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 33554432, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" }, { "__type__": "cc.UITransform", @@ -8895,15 +8587,15 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 385 + "__id__": 370 }, "_enabled": true, "__prefab": { - "__id__": 387 + "__id__": 372 }, "_contentSize": { "__type__": "cc.Size", - "width": 17, + "width": 51, "height": 28 }, "_anchorPoint": { @@ -8911,23 +8603,23 @@ "x": 0.5, "y": 0.5 }, - "_id": "34xfjhyQ5BxbG9DT43405d" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", - "fileId": "y03+EvxvYko4pFTsNzUw7Q" + "fileId": "24A3sSldRLj5ks1aFryhxB" }, { - "__type__": "cc.Sprite", + "__type__": "cc.Label", "_name": "", "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 385 + "__id__": 370 }, "_enabled": true, "__prefab": { - "__id__": 389 + "__id__": 374 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -8939,28 +8631,95 @@ "b": 255, "a": 255 }, - "_spriteFrame": { - "__uuid__": "fc6e9a8e-0a6d-4555-bc3e-88fd427b9f3a@f9941", - "__expectedType__": "cc.SpriteFrame" + "_string": "300", + "_horizontalAlign": 1, + "_verticalAlign": 1, + "_actualFontSize": 72, + "_fontSize": 72, + "_fontFamily": "Arial", + "_lineHeight": 28, + "_overflow": 0, + "_enableWrapText": false, + "_font": { + "__uuid__": "028a1ef2-e4f4-42bf-b6bd-3f021d98e334", + "__expectedType__": "cc.BitmapFont" }, - "_type": 0, - "_fillType": 0, - "_sizeMode": 1, - "_fillCenter": { + "_isSystemFontUsed": false, + "_spacingX": 0, + "_isItalic": false, + "_isBold": false, + "_isUnderline": false, + "_underlineHeight": 2, + "_cacheMode": 0, + "_enableOutline": false, + "_outlineColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_outlineWidth": 2, + "_enableShadow": false, + "_shadowColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_shadowOffset": { "__type__": "cc.Vec2", - "x": 0, - "y": 0 + "x": 2, + "y": 2 }, - "_fillStart": 0, - "_fillRange": 0, - "_isTrimmedMode": true, - "_useGrayscale": false, - "_atlas": null, - "_id": "2831c0vh1E04VdU6zZHy2F" + "_shadowBlur": 2, + "_id": "" }, { "__type__": "cc.CompPrefabInfo", - "fileId": "D7eLnf/+0+gThQR+d3ZFfw" + "fileId": "d2Zy4p9VBA5akjY9QuJ99u" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "42lk5B4BVLybcv7LK2rzls", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 369 + }, + "_enabled": true, + "__prefab": { + "__id__": 377 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 51, + "height": 28 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "y03+EvxvYko4pFTsNzUw7Q" }, { "__type__": "cc.Widget", @@ -8968,11 +8727,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 385 + "__id__": 369 }, - "_enabled": true, + "_enabled": false, "__prefab": { - "__id__": 391 + "__id__": 379 }, "_alignFlags": 16, "_target": null, @@ -8992,7 +8751,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "02LrzcrjlJ85XwB/QBZLBY" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -9023,17 +8782,17 @@ "_active": true, "_components": [ { - "__id__": 394 + "__id__": 382 }, { - "__id__": 396 + "__id__": 384 }, { - "__id__": 398 + "__id__": 386 } ], "_prefab": { - "__id__": 400 + "__id__": 388 }, "_lpos": { "__type__": "cc.Vec3", @@ -9062,7 +8821,7 @@ "y": 0, "z": 0 }, - "_id": "661nUAhYZJc6rhbi9lu6Wp" + "_id": "" }, { "__type__": "cc.UITransform", @@ -9070,11 +8829,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 393 + "__id__": 381 }, "_enabled": true, "__prefab": { - "__id__": 395 + "__id__": 383 }, "_contentSize": { "__type__": "cc.Size", @@ -9086,7 +8845,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "a7qwqYg7lCn5/FJMJ46xQe" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -9098,11 +8857,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 393 + "__id__": 381 }, "_enabled": true, "__prefab": { - "__id__": 397 + "__id__": 385 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -9131,7 +8890,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "56QGCh421OmqV6RRJkuTMp" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -9143,11 +8902,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 393 + "__id__": 381 }, "_enabled": true, "__prefab": { - "__id__": 399 + "__id__": 387 }, "_alignFlags": 16, "_target": null, @@ -9167,7 +8926,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "18WGYRN7tOG6+dLz3IgaBq" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -9194,25 +8953,26 @@ "_parent": { "__id__": 296 }, - "_children": [], + "_children": [ + { + "__id__": 390 + } + ], "_active": true, "_components": [ { - "__id__": 402 + "__id__": 396 }, { - "__id__": 404 - }, - { - "__id__": 406 + "__id__": 398 } ], "_prefab": { - "__id__": 408 + "__id__": 400 }, "_lpos": { "__type__": "cc.Vec3", - "x": 150.5, + "x": 149.5, "y": 319, "z": 0 }, @@ -9237,7 +8997,57 @@ "y": 0, "z": 0 }, - "_id": "29mGFZ3vpOu5qDs1TY39jT" + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "NumberLabel", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 389 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 391 + }, + { + "__id__": 393 + } + ], + "_prefab": { + "__id__": 395 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0.5, + "y": -23, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 33554432, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" }, { "__type__": "cc.UITransform", @@ -9245,15 +9055,15 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 401 + "__id__": 390 }, "_enabled": true, "__prefab": { - "__id__": 403 + "__id__": 392 }, "_contentSize": { "__type__": "cc.Size", - "width": 119, + "width": 17, "height": 28 }, "_anchorPoint": { @@ -9261,23 +9071,23 @@ "x": 0.5, "y": 0.5 }, - "_id": "96tcQNVElOCpjgJZq3kaiC" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", - "fileId": "ZAe3x2HmGfPXcOtwD0x17g" + "fileId": "fa/H4cJnBPyqKKJW6yQ5/R" }, { - "__type__": "cc.Sprite", + "__type__": "cc.Label", "_name": "", "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 401 + "__id__": 390 }, "_enabled": true, "__prefab": { - "__id__": 405 + "__id__": 394 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -9289,28 +9099,95 @@ "b": 255, "a": 255 }, - "_spriteFrame": { - "__uuid__": "fc6e9a8e-0a6d-4555-bc3e-88fd427b9f3a@f9941", - "__expectedType__": "cc.SpriteFrame" + "_string": "0", + "_horizontalAlign": 1, + "_verticalAlign": 1, + "_actualFontSize": 72, + "_fontSize": 72, + "_fontFamily": "Arial", + "_lineHeight": 28, + "_overflow": 0, + "_enableWrapText": false, + "_font": { + "__uuid__": "028a1ef2-e4f4-42bf-b6bd-3f021d98e334", + "__expectedType__": "cc.BitmapFont" }, - "_type": 0, - "_fillType": 0, - "_sizeMode": 1, - "_fillCenter": { + "_isSystemFontUsed": false, + "_spacingX": 0, + "_isItalic": false, + "_isBold": false, + "_isUnderline": false, + "_underlineHeight": 2, + "_cacheMode": 0, + "_enableOutline": false, + "_outlineColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_outlineWidth": 2, + "_enableShadow": false, + "_shadowColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_shadowOffset": { "__type__": "cc.Vec2", - "x": 0, - "y": 0 + "x": 2, + "y": 2 }, - "_fillStart": 0, - "_fillRange": 0, - "_isTrimmedMode": true, - "_useGrayscale": false, - "_atlas": null, - "_id": "c6mMn88pNCT7OWRlkpmjWc" + "_shadowBlur": 2, + "_id": "" }, { "__type__": "cc.CompPrefabInfo", - "fileId": "9cU8pyS7P5n9DapknLxOow" + "fileId": "38kSo0CiJPGa2mCf0qEtTo" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "edvd/GqCdCGLJuI/Pkct3r", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 389 + }, + "_enabled": true, + "__prefab": { + "__id__": 397 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 17, + "height": 28 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "ZAe3x2HmGfPXcOtwD0x17g" }, { "__type__": "cc.Widget", @@ -9318,11 +9195,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 401 + "__id__": 389 }, - "_enabled": true, + "_enabled": false, "__prefab": { - "__id__": 407 + "__id__": 399 }, "_alignFlags": 16, "_target": null, @@ -9342,7 +9219,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "e5dqmGFIVAapwVG1a2Wu7W" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -9373,17 +9250,17 @@ "_active": true, "_components": [ { - "__id__": 410 + "__id__": 402 }, { - "__id__": 412 + "__id__": 404 }, { - "__id__": 414 + "__id__": 406 } ], "_prefab": { - "__id__": 416 + "__id__": 408 }, "_lpos": { "__type__": "cc.Vec3", @@ -9412,7 +9289,7 @@ "y": 0, "z": 0 }, - "_id": "f3v4QsB0lGrKj4XKExbIen" + "_id": "" }, { "__type__": "cc.UITransform", @@ -9420,11 +9297,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 409 + "__id__": 401 }, "_enabled": true, "__prefab": { - "__id__": 411 + "__id__": 403 }, "_contentSize": { "__type__": "cc.Size", @@ -9436,7 +9313,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "2arAsws+JM+5K8WwNxv3kr" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -9448,11 +9325,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 409 + "__id__": 401 }, "_enabled": true, "__prefab": { - "__id__": 413 + "__id__": 405 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -9481,7 +9358,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "27kGfWrQVC+I7d69wcmtq5" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -9493,11 +9370,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 409 + "__id__": 401 }, "_enabled": true, "__prefab": { - "__id__": 415 + "__id__": 407 }, "_alignFlags": 16, "_target": null, @@ -9517,7 +9394,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "61rpKnjUhHyoshA8lV8NCQ" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -9538,32 +9415,39 @@ }, { "__type__": "cc.Node", - "_name": "ID", + "_name": "PlayerInfo", "_objFlags": 0, "__editorExtras__": {}, "_parent": { "__id__": 296 }, - "_children": [], + "_children": [ + { + "__id__": 410 + }, + { + "__id__": 426 + }, + { + "__id__": 434 + } + ], "_active": true, "_components": [ { - "__id__": 418 + "__id__": 442 }, { - "__id__": 420 - }, - { - "__id__": 422 + "__id__": 444 } ], "_prefab": { - "__id__": 424 + "__id__": 446 }, "_lpos": { "__type__": "cc.Vec3", - "x": -430.5, - "y": 305.5, + "x": -523.9465, + "y": 297, "z": 0 }, "_lrot": { @@ -9587,7 +9471,117 @@ "y": 0, "z": 0 }, - "_id": "81XrVKE8FBw59W0uJt2rQ3" + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "头像框", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 409 + }, + "_children": [ + { + "__id__": 411 + } + ], + "_active": true, + "_components": [ + { + "__id__": 419 + }, + { + "__id__": 421 + }, + { + "__id__": 423 + } + ], + "_prefab": { + "__id__": 425 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": -79.89699999999999, + "y": 17.918, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 33554432, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "头像", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 410 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 412 + }, + { + "__id__": 414 + }, + { + "__id__": 416 + } + ], + "_prefab": { + "__id__": 418 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 33554432, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" }, { "__type__": "cc.UITransform", @@ -9595,23 +9589,320 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 417 + "__id__": 411 }, "_enabled": true, "__prefab": { - "__id__": 419 + "__id__": 413 }, "_contentSize": { "__type__": "cc.Size", - "width": 14, - "height": 17.64 + "width": 63, + "height": 65 }, "_anchorPoint": { "__type__": "cc.Vec2", "x": 0.5, "y": 0.5 }, - "_id": "4doexmjIhLW4KnXu0+nuV8" + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "Cv+Iuu4SEhWLZSHqHlk63Q" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 411 + }, + "_enabled": true, + "__prefab": { + "__id__": 415 + }, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_spriteFrame": { + "__uuid__": "60da43f5-f3c2-4b9f-9123-fad81f8f8af5@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + "_type": 0, + "_fillType": 0, + "_sizeMode": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_useGrayscale": false, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "6GVW053fubncVKgx1B7u0g" + }, + { + "__type__": "cc.Widget", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 411 + }, + "_enabled": true, + "__prefab": { + "__id__": 417 + }, + "_alignFlags": 18, + "_target": null, + "_left": 204.27949999999998, + "_right": 0, + "_top": 0, + "_bottom": 0, + "_horizontalCenter": 0, + "_verticalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 0, + "_originalHeight": 0, + "_alignMode": 2, + "_lockFlags": 0, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "tKLh+EiBTMiCLT7bzv9i0g" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "ozO4tPJU0zzGkHj9VVek7A", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 410 + }, + "_enabled": true, + "__prefab": { + "__id__": 420 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 70, + "height": 72 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "WVsc0ZDAkkSpMsucbmqlDQ" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 410 + }, + "_enabled": true, + "__prefab": { + "__id__": 422 + }, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_spriteFrame": { + "__uuid__": "7863c037-341e-47a9-a00f-133597728429@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + "_type": 0, + "_fillType": 0, + "_sizeMode": 1, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_useGrayscale": false, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "OB0HwWBZRxgCev1ipObeYw" + }, + { + "__type__": "cc.Widget", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 410 + }, + "_enabled": true, + "__prefab": { + "__id__": 424 + }, + "_alignFlags": 8, + "_target": null, + "_left": 161.1565, + "_right": 0, + "_top": 0, + "_bottom": 0, + "_horizontalCenter": -610.768, + "_verticalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 0, + "_originalHeight": 0, + "_alignMode": 2, + "_lockFlags": 0, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "8fpoHjPZUMXiz4OXONA0ag" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "r1ht1FD6Hkm9phdEQRjiMw", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, + { + "__type__": "cc.Node", + "_name": "ID", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 409 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 427 + }, + { + "__id__": 429 + }, + { + "__id__": 431 + } + ], + "_prefab": { + "__id__": 433 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 22.082999999999974, + "y": 0.566, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 33554432, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 426 + }, + "_enabled": true, + "__prefab": { + "__id__": 428 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 23.999988420207508, + "height": 30.24 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -9623,11 +9914,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 417 + "__id__": 426 }, "_enabled": true, "__prefab": { - "__id__": 421 + "__id__": 430 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -9640,14 +9931,14 @@ "a": 255 }, "_string": "ID", - "_horizontalAlign": 1, + "_horizontalAlign": 0, "_verticalAlign": 1, - "_actualFontSize": 14, - "_fontSize": 14, + "_actualFontSize": 25.3, + "_fontSize": 24, "_fontFamily": "Arial", - "_lineHeight": 14, + "_lineHeight": 24, "_overflow": 0, - "_enableWrapText": true, + "_enableWrapText": false, "_font": null, "_isSystemFontUsed": true, "_spacingX": 0, @@ -9679,7 +9970,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "b5ZYc3M1NN66ZxVadZZaCm" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -9691,19 +9982,19 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 417 + "__id__": 426 }, "_enabled": true, "__prefab": { - "__id__": 423 + "__id__": 432 }, - "_alignFlags": 16, + "_alignFlags": 8, "_target": null, - "_left": 0, + "_left": 286.1365057898962, "_right": 0, "_top": 0, "_bottom": 0, - "_horizontalCenter": -430.5, + "_horizontalCenter": -540.268, "_verticalCenter": 0, "_isAbsLeft": true, "_isAbsRight": true, @@ -9715,7 +10006,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "d8mLXlKE9C4KhWjVMVEDV8" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -9740,28 +10031,28 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 296 + "__id__": 409 }, "_children": [], "_active": true, "_components": [ { - "__id__": 426 + "__id__": 435 }, { - "__id__": 428 + "__id__": 437 }, { - "__id__": 430 + "__id__": 439 } ], "_prefab": { - "__id__": 432 + "__id__": 441 }, "_lpos": { "__type__": "cc.Vec3", - "x": -423, - "y": 337.5, + "x": 32.839000000000006, + "y": 37.45, "z": 0 }, "_lrot": { @@ -9785,7 +10076,7 @@ "y": 0, "z": 0 }, - "_id": "70o3/4FFFEcI101ZSLTshj" + "_id": "" }, { "__type__": "cc.UITransform", @@ -9793,23 +10084,23 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 425 + "__id__": 434 }, "_enabled": true, "__prefab": { - "__id__": 427 + "__id__": 436 }, "_contentSize": { "__type__": "cc.Size", - "width": 28, - "height": 17.64 + "width": 47.999976840415016, + "height": 30.24 }, "_anchorPoint": { "__type__": "cc.Vec2", "x": 0.5, "y": 0.5 }, - "_id": "58cJqHeN5MQKRhRORAwKh8" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -9821,11 +10112,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 425 + "__id__": 434 }, "_enabled": true, "__prefab": { - "__id__": 429 + "__id__": 438 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -9838,14 +10129,14 @@ "a": 255 }, "_string": "昵称", - "_horizontalAlign": 1, + "_horizontalAlign": 0, "_verticalAlign": 1, - "_actualFontSize": 14, - "_fontSize": 14, + "_actualFontSize": 25.3, + "_fontSize": 24, "_fontFamily": "Arial", - "_lineHeight": 14, + "_lineHeight": 24, "_overflow": 0, - "_enableWrapText": true, + "_enableWrapText": false, "_font": null, "_isSystemFontUsed": true, "_spacingX": 0, @@ -9877,7 +10168,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "7e8JQ0npVC/Zv4pC7MvAKU" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -9889,19 +10180,19 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 425 + "__id__": 434 }, "_enabled": true, "__prefab": { - "__id__": 431 + "__id__": 440 }, - "_alignFlags": 16, + "_alignFlags": 8, "_target": null, - "_left": 0, + "_left": 284.8925115797925, "_right": 0, "_top": 0, "_bottom": 0, - "_horizontalCenter": -423, + "_horizontalCenter": -532.768, "_verticalCenter": 0, "_isAbsLeft": true, "_isAbsRight": true, @@ -9913,7 +10204,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "78DttOfgtA07NjrzqgZh0s" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -9932,6 +10223,83 @@ "targetOverrides": null, "nestedPrefabInstanceRoots": null }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 409 + }, + "_enabled": true, + "__prefab": { + "__id__": 443 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 552.107, + "height": 126 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "685TQJXGlHSqUWDHGAGleI" + }, + { + "__type__": "cc.Widget", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 409 + }, + "_enabled": true, + "__prefab": { + "__id__": 445 + }, + "_alignFlags": 9, + "_target": null, + "_left": 0, + "_right": 0, + "_top": 0, + "_bottom": 0, + "_horizontalCenter": 0, + "_verticalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 0, + "_originalHeight": 0, + "_alignMode": 2, + "_lockFlags": 0, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "c3IsZaEzRPkrDwVIxI6CK6" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "6fdS+OyKREzLq0krgvAMG1", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, { "__type__": "cc.UITransform", "_name": "", @@ -9942,7 +10310,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 434 + "__id__": 448 }, "_contentSize": { "__type__": "cc.Size", @@ -9954,7 +10322,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "21hamfsS1MNos0SSVY1Tvq" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -9970,7 +10338,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 436 + "__id__": 450 }, "_alignFlags": 45, "_target": null, @@ -9990,7 +10358,7 @@ "_originalHeight": 720, "_alignMode": 2, "_lockFlags": 0, - "_id": "e5NBGAemhCJaiBYWuTXywU" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -10019,7 +10387,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 439 + "__id__": 453 }, "_contentSize": { "__type__": "cc.Size", @@ -10031,7 +10399,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "bbnXmMZ9ZKPpLUl8y2h7jb" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -10047,7 +10415,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 441 + "__id__": 455 }, "_alignFlags": 45, "_target": null, @@ -10067,7 +10435,7 @@ "_originalHeight": 720, "_alignMode": 2, "_lockFlags": 0, - "_id": "97j0Vp2ytBVbae6TcQutPs" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -10083,7 +10451,6 @@ }, "fileId": "yYkCFfhpMklztUHjqUeDCg", "instance": null, - "targetOverrides": null, - "nestedPrefabInstanceRoots": null + "targetOverrides": null } -] +] \ No newline at end of file diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer612_Tips.prefab b/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer612_Tips.prefab index bb46284..7aa0c6b 100644 --- a/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer612_Tips.prefab +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer612_Tips.prefab @@ -64,7 +64,7 @@ "y": 0, "z": 0 }, - "_id": "daWt/WI75AD5W2VH49+2DG" + "_id": "" }, { "__type__": "cc.Node", @@ -124,7 +124,7 @@ "y": 0, "z": 0 }, - "_id": "8dnjloLV5IS6RKNlVCBF19" + "_id": "" }, { "__type__": "cc.Node", @@ -177,7 +177,7 @@ "y": 0, "z": 0 }, - "_id": "73tjh1NUtHHJ/wUn5Wh0Y4" + "_id": "" }, { "__type__": "cc.UITransform", @@ -201,7 +201,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "1dregP3rlGc5dJyiSJygHf" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -246,7 +246,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "2eGmPeZO1OLIphxGJuH60Q" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -282,7 +282,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "98QS4BGgVJDpDkOxhSstl1" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -352,7 +352,7 @@ "y": 0, "z": 0 }, - "_id": "7fADiYC6BFAp9cvJleMjpW" + "_id": "" }, { "__type__": "cc.UITransform", @@ -376,7 +376,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "d7l0TJ91BMKYHzHPLVU1dy" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -421,7 +421,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "d9JSir1lVPh6Mc4qBQOYbz" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -457,7 +457,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "20hQgrTTZEt4zzGV+5omC6" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -527,7 +527,7 @@ "y": 0, "z": 0 }, - "_id": "c8n4NRS+pFGqOpYqB0yA7K" + "_id": "" }, { "__type__": "cc.UITransform", @@ -543,15 +543,15 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 84, - "height": 28 + "width": 139.97786329668972, + "height": 44.1 }, "_anchorPoint": { "__type__": "cc.Vec2", "x": 0.5, "y": 0.5 }, - "_id": "f2YFLwlgBDmo9VG3hA5/4X" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -582,10 +582,10 @@ "_string": "提示文字", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 16, - "_fontSize": 16, + "_actualFontSize": 36.895833333333336, + "_fontSize": 35, "_fontFamily": "Arial", - "_lineHeight": 16, + "_lineHeight": 35, "_overflow": 0, "_enableWrapText": true, "_font": null, @@ -619,7 +619,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "e6r8cM0XVJE5RR2z1kGImm" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -655,7 +655,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "68jUlmT89LNomwNSI6cror" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -696,7 +696,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "f3/zXFYQ9F0JDRk/9AKX8/" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -732,7 +732,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "ceB18LZt5GRI2IuFLtXR/m" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -806,7 +806,7 @@ "y": 0, "z": 0 }, - "_id": "aag56w+jtIxbwKHiJ5sVbl" + "_id": "" }, { "__type__": "cc.Node", @@ -859,7 +859,7 @@ "y": 0, "z": 0 }, - "_id": "752aUy1W5KpLuzpVRI3Y2K" + "_id": "" }, { "__type__": "cc.UITransform", @@ -883,7 +883,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "5c+zNmPKFPAYjQeCWIc4A7" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -928,7 +928,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "14aNqecndLwKLtB+C7Xq0y" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -964,7 +964,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "1bktR8nddIzLx2C6NDZ7vx" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1034,7 +1034,7 @@ "y": 0, "z": 0 }, - "_id": "42lzhDFP5NIYZLba+AzPKb" + "_id": "" }, { "__type__": "cc.UITransform", @@ -1050,15 +1050,15 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 84, - "height": 28 + "width": 63.97470587327075, + "height": 20.16 }, "_anchorPoint": { "__type__": "cc.Vec2", "x": 0.5, "y": 0.5 }, - "_id": "56eTqvI9VOJJ0FO7RztHkU" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1089,7 +1089,7 @@ "_string": "提示文字", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 16, + "_actualFontSize": 16.866666666666667, "_fontSize": 16, "_fontFamily": "Arial", "_lineHeight": 16, @@ -1126,7 +1126,7 @@ "y": 2 }, "_shadowBlur": 2, - "_id": "54rJ5X2mlKQL3TSc7s1NRg" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1162,7 +1162,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "c3KyGctLhFI4fnwnPoa5q9" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1203,7 +1203,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "a2PVkorKxAfbspQXSjpdwz" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1239,7 +1239,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "b5dnbXOK5Jb5qmE08G1wBR" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1280,7 +1280,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "e0J/0S/slKR4DksxlmW2cu" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1316,7 +1316,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "08iJHnyElCkZYhjjvBkhiA" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -1332,7 +1332,6 @@ }, "fileId": "QPpEGbsUwNMeHFDhsxI+bA", "instance": null, - "targetOverrides": null, - "nestedPrefabInstanceRoots": null + "targetOverrides": null } -] +] \ No newline at end of file diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer615_Reconnect.prefab b/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer615_Reconnect.prefab index 219761d..ecd211c 100644 --- a/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer615_Reconnect.prefab +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer615_Reconnect.prefab @@ -25,14 +25,14 @@ "_active": true, "_components": [ { - "__id__": 40 + "__id__": 42 }, { - "__id__": 42 + "__id__": 44 } ], "_prefab": { - "__id__": 44 + "__id__": 46 }, "_lpos": { "__type__": "cc.Vec3", @@ -61,7 +61,7 @@ "y": 0, "z": 0 }, - "_id": "3dsQzYaItHZ4LV4bSKEvNn" + "_id": "" }, { "__type__": "cc.Node", @@ -82,20 +82,20 @@ "__id__": 19 }, { - "__id__": 27 + "__id__": 29 } ], "_active": true, "_components": [ { - "__id__": 35 + "__id__": 37 }, { - "__id__": 37 + "__id__": 39 } ], "_prefab": { - "__id__": 39 + "__id__": 41 }, "_lpos": { "__type__": "cc.Vec3", @@ -124,7 +124,7 @@ "y": 0, "z": 0 }, - "_id": "e3TyilsfZMo4YbsFB64yp6" + "_id": "" }, { "__type__": "cc.Node", @@ -177,7 +177,7 @@ "y": 0, "z": 0 }, - "_id": "d6N4OrnVpEjpK5Y1HvIwZR" + "_id": "" }, { "__type__": "cc.UITransform", @@ -192,6 +192,7 @@ "__id__": 5 }, "_contentSize": { + "__type__": "cc.Size", "width": 1600, "height": 720 }, @@ -200,7 +201,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "160mYR1UNLd7c7EllnE/+J" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -245,7 +246,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "c7odYMto5Jwp5HTCqAhcnf" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -281,7 +282,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "01E5QluV1JBbpI0/0lIVJk" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -351,7 +352,7 @@ "y": 0, "z": 0 }, - "_id": "acHdJxc8xM25YXUhzpn/VR" + "_id": "" }, { "__type__": "cc.UITransform", @@ -366,6 +367,7 @@ "__id__": 13 }, "_contentSize": { + "__type__": "cc.Size", "width": 454, "height": 207 }, @@ -374,7 +376,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "89dcDFJr1N9JabfvLHlLvU" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -419,7 +421,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "aaHF+gFLRJs7UoXHRN8mm+" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -455,7 +457,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "18AJu94h9O64699D1lKJo4" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -493,10 +495,13 @@ }, { "__id__": 24 + }, + { + "__id__": 26 } ], "_prefab": { - "__id__": 26 + "__id__": 28 }, "_lpos": { "__type__": "cc.Vec3", @@ -525,7 +530,7 @@ "y": 0, "z": 0 }, - "_id": "d30QVcOGZN8rfGyK3WyTkR" + "_id": "" }, { "__type__": "cc.UITransform", @@ -540,6 +545,7 @@ "__id__": 21 }, "_contentSize": { + "__type__": "cc.Size", "width": 64, "height": 64 }, @@ -548,7 +554,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "7aTjkIi3lAO4bMw91tMbK6" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -593,7 +599,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "26NIFbnw1OCKHdJGBPLGpx" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -629,12 +635,41 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "67AYo/wtFBSb3KW/w98BtQ" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", "fileId": "pqUJS6Cce64eKSeiCdYe6w" }, + { + "__type__": "cc.Animation", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 19 + }, + "_enabled": true, + "__prefab": { + "__id__": 27 + }, + "playOnLoad": false, + "_clips": [ + { + "__uuid__": "6df11aed-a35b-4009-8bb9-a3f42fb20cf7", + "__expectedType__": "cc.AnimationClip" + } + ], + "_defaultClip": { + "__uuid__": "6df11aed-a35b-4009-8bb9-a3f42fb20cf7", + "__expectedType__": "cc.AnimationClip" + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "ffcKC6ZdRIk42z/0zG5fKE" + }, { "__type__": "cc.PrefabInfo", "root": { @@ -659,18 +694,18 @@ "_children": [], "_active": true, "_components": [ - { - "__id__": 28 - }, { "__id__": 30 }, { "__id__": 32 + }, + { + "__id__": 34 } ], "_prefab": { - "__id__": 34 + "__id__": 36 }, "_lpos": { "__type__": "cc.Vec3", @@ -699,7 +734,7 @@ "y": 0, "z": 0 }, - "_id": "dbdgcDPpBKXboZTGL3kN1X" + "_id": "" }, { "__type__": "cc.UITransform", @@ -707,13 +742,14 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 27 + "__id__": 29 }, "_enabled": true, "__prefab": { - "__id__": 29 + "__id__": 31 }, "_contentSize": { + "__type__": "cc.Size", "width": 171, "height": 28 }, @@ -722,7 +758,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "96w8+KJVpCfpw8U1NUMrB6" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -734,11 +770,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 27 + "__id__": 29 }, "_enabled": true, "__prefab": { - "__id__": 31 + "__id__": 33 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -767,7 +803,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "47mLQFd2JPZquFxldIVr8I" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -779,11 +815,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 27 + "__id__": 29 }, "_enabled": true, "__prefab": { - "__id__": 33 + "__id__": 35 }, "_alignFlags": 16, "_target": null, @@ -803,7 +839,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "9anf+Y2a1B94mP5Z+Jwxmf" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -832,9 +868,10 @@ }, "_enabled": true, "__prefab": { - "__id__": 36 + "__id__": 38 }, "_contentSize": { + "__type__": "cc.Size", "width": 1600, "height": 720 }, @@ -843,7 +880,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "91MFOq7rNLb4erlNhISNmE" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -859,7 +896,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 38 + "__id__": 40 }, "_alignFlags": 45, "_target": null, @@ -879,7 +916,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "faGQFvQcxFoJHUyIz72S6K" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -908,9 +945,10 @@ }, "_enabled": true, "__prefab": { - "__id__": 41 + "__id__": 43 }, "_contentSize": { + "__type__": "cc.Size", "width": 1600, "height": 720 }, @@ -919,7 +957,7 @@ "x": 0.5, "y": 0.5 }, - "_id": "94G//aWOtGVoEjk5s1l3ZQ" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -935,7 +973,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 43 + "__id__": 45 }, "_alignFlags": 45, "_target": null, @@ -955,7 +993,7 @@ "_originalHeight": 0, "_alignMode": 2, "_lockFlags": 0, - "_id": "c4/GDbaIBKbbLHpfQurMwR" + "_id": "" }, { "__type__": "cc.CompPrefabInfo", @@ -971,7 +1009,6 @@ }, "fileId": "zR6dbWbv7woStTyZnGv0LQ", "instance": null, - "targetOverrides": null, - "nestedPrefabInstanceRoots": null + "targetOverrides": null } -] +] \ No newline at end of file diff --git a/cocoscreator_projects/YouleNexus/assets/scenes/PlatformLobby.scene b/cocoscreator_projects/YouleNexus/assets/scenes/PlatformLobby.scene new file mode 100644 index 0000000..480e113 --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/scenes/PlatformLobby.scene @@ -0,0 +1,416 @@ +[ + { + "__type__": "cc.SceneAsset", + "_name": "PlatformLobby", + "_objFlags": 0, + "__editorExtras__": {}, + "_native": "", + "scene": { + "__id__": 1 + } + }, + { + "__type__": "cc.Scene", + "_name": "PlatformLobby", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": null, + "_children": [ + { + "__id__": 2 + } + ], + "_active": true, + "_components": [], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "autoReleaseAssets": false, + "_globals": { + "__id__": 7 + }, + "_id": "ff13acf8-12df-425e-aff7-61a39478f238" + }, + { + "__type__": "cc.Node", + "_name": "Canvas", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 1 + }, + "_children": [ + { + "__id__": 3 + } + ], + "_active": true, + "_components": [ + { + "__id__": 5 + }, + { + "__id__": 6 + } + ], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": 800, + "y": 360, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 33554432, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "faTOCTLXRFdpZeZi7lNLQq" + }, + { + "__type__": "cc.Node", + "_name": "Camera", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 2 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 4 + } + ], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 1000 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "6ayrdwHr9GLKXUxRdk2hH5" + }, + { + "__type__": "cc.Camera", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 3 + }, + "_enabled": true, + "__prefab": null, + "_projection": 0, + "_priority": 0, + "_fov": 45, + "_fovAxis": 0, + "_orthoHeight": 360, + "_near": 1, + "_far": 2000, + "_color": { + "__type__": "cc.Color", + "r": 51, + "g": 51, + "b": 51, + "a": 255 + }, + "_depth": 1, + "_stencil": 0, + "_clearFlags": 7, + "_rect": { + "__type__": "cc.Rect", + "x": 0, + "y": 0, + "width": 1, + "height": 1 + }, + "_aperture": 19, + "_shutter": 7, + "_iso": 0, + "_screenScale": 1, + "_visibility": 1107296256, + "_targetTexture": null, + "_postProcess": null, + "_usePostProcess": false, + "_cameraType": -1, + "_trackingType": 0, + "_id": "51tpdCan1JboRRHZOyhxuv" + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 2 + }, + "_enabled": true, + "__prefab": null, + "_contentSize": { + "__type__": "cc.Size", + "width": 1600, + "height": 720 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "8ej3BZPwhAD6WQVYXaPCUB" + }, + { + "__type__": "cc.Canvas", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 2 + }, + "_enabled": true, + "__prefab": null, + "_cameraComponent": { + "__id__": 4 + }, + "_alignCanvasWithScreen": true, + "_id": "cduZE+wFRG1q4NzbTvVx8E" + }, + { + "__type__": "cc.SceneGlobals", + "ambient": { + "__id__": 8 + }, + "shadows": { + "__id__": 9 + }, + "_skybox": { + "__id__": 10 + }, + "fog": { + "__id__": 11 + }, + "octree": { + "__id__": 12 + }, + "skin": { + "__id__": 13 + }, + "lightProbeInfo": { + "__id__": 14 + }, + "postSettings": { + "__id__": 15 + }, + "bakedWithStationaryMainLight": false, + "bakedWithHighpLightmap": false + }, + { + "__type__": "cc.AmbientInfo", + "_skyColorHDR": { + "__type__": "cc.Vec4", + "x": 0.2, + "y": 0.5, + "z": 0.8, + "w": 0.520833125 + }, + "_skyColor": { + "__type__": "cc.Vec4", + "x": 0.2, + "y": 0.5, + "z": 0.8, + "w": 0.520833125 + }, + "_skyIllumHDR": 20000, + "_skyIllum": 20000, + "_groundAlbedoHDR": { + "__type__": "cc.Vec4", + "x": 0.2, + "y": 0.2, + "z": 0.2, + "w": 1 + }, + "_groundAlbedo": { + "__type__": "cc.Vec4", + "x": 0.2, + "y": 0.2, + "z": 0.2, + "w": 1 + }, + "_skyColorLDR": { + "__type__": "cc.Vec4", + "x": 0.2, + "y": 0.5, + "z": 0.8, + "w": 1 + }, + "_skyIllumLDR": 20000, + "_groundAlbedoLDR": { + "__type__": "cc.Vec4", + "x": 0.2, + "y": 0.2, + "z": 0.2, + "w": 1 + } + }, + { + "__type__": "cc.ShadowsInfo", + "_enabled": false, + "_type": 0, + "_normal": { + "__type__": "cc.Vec3", + "x": 0, + "y": 1, + "z": 0 + }, + "_distance": 0, + "_planeBias": 1, + "_shadowColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 76 + }, + "_maxReceived": 4, + "_size": { + "__type__": "cc.Vec2", + "x": 1024, + "y": 1024 + } + }, + { + "__type__": "cc.SkyboxInfo", + "_envLightingType": 0, + "_envmapHDR": null, + "_envmap": null, + "_envmapLDR": null, + "_diffuseMapHDR": null, + "_diffuseMapLDR": null, + "_enabled": false, + "_useHDR": true, + "_editableMaterial": null, + "_reflectionHDR": null, + "_reflectionLDR": null, + "_rotationAngle": 0 + }, + { + "__type__": "cc.FogInfo", + "_type": 0, + "_fogColor": { + "__type__": "cc.Color", + "r": 200, + "g": 200, + "b": 200, + "a": 255 + }, + "_enabled": false, + "_fogDensity": 0.3, + "_fogStart": 0.5, + "_fogEnd": 300, + "_fogAtten": 5, + "_fogTop": 1.5, + "_fogRange": 1.2, + "_accurate": false + }, + { + "__type__": "cc.OctreeInfo", + "_enabled": false, + "_minPos": { + "__type__": "cc.Vec3", + "x": -1024, + "y": -1024, + "z": -1024 + }, + "_maxPos": { + "__type__": "cc.Vec3", + "x": 1024, + "y": 1024, + "z": 1024 + }, + "_depth": 8 + }, + { + "__type__": "cc.SkinInfo", + "_enabled": true, + "_blurRadius": 0.01, + "_sssIntensity": 3 + }, + { + "__type__": "cc.LightProbeInfo", + "_giScale": 1, + "_giSamples": 1024, + "_bounces": 2, + "_reduceRinging": 0, + "_showProbe": true, + "_showWireframe": true, + "_showConvex": false, + "_data": null, + "_lightProbeSphereVolume": 1 + }, + { + "__type__": "cc.PostSettingsInfo", + "_toneMappingType": 0 + } +] \ No newline at end of file diff --git a/cocoscreator_projects/YouleNexus/assets/scenes/PlatformLobby.scene.meta b/cocoscreator_projects/YouleNexus/assets/scenes/PlatformLobby.scene.meta new file mode 100644 index 0000000..d50d906 --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/scenes/PlatformLobby.scene.meta @@ -0,0 +1,11 @@ +{ + "ver": "1.1.50", + "importer": "scene", + "imported": true, + "uuid": "ff13acf8-12df-425e-aff7-61a39478f238", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": {} +} diff --git a/cocoscreator_projects/YouleNexus/assets/scenes/PlatformStartup.scene b/cocoscreator_projects/YouleNexus/assets/scenes/PlatformStartup.scene index 46e785b..74bbebb 100644 --- a/cocoscreator_projects/YouleNexus/assets/scenes/PlatformStartup.scene +++ b/cocoscreator_projects/YouleNexus/assets/scenes/PlatformStartup.scene @@ -52,7 +52,7 @@ }, "autoReleaseAssets": false, "_globals": { - "__id__": 4 + "__id__": 5 }, "_id": "1c10c2ee-adc2-496f-9005-d3e0e6ebbb56" }, @@ -69,6 +69,9 @@ "_components": [ { "__id__": 3 + }, + { + "__id__": 4 } ], "_prefab": null, @@ -119,6 +122,10 @@ "__uuid__": "c6bf90e9-2e5e-4b7b-bfc0-ed8a4e243e4d", "__expectedType__": "cc.SceneAsset" }, + "lobbyScene": { + "__uuid__": "ff13acf8-12df-425e-aff7-61a39478f238", + "__expectedType__": "cc.SceneAsset" + }, "loadingPrefab": { "__uuid__": "3e5a41f3-b043-45a5-94f6-e299ea9acc61", "__expectedType__": "cc.Prefab" @@ -135,34 +142,158 @@ "__uuid__": "b9ec1622-fe6d-4a07-8958-3a0732040e91", "__expectedType__": "cc.Prefab" }, + "tipsPrefab": { + "__uuid__": "f3364bcb-c999-4e2d-9de0-b07229c7ec0c", + "__expectedType__": "cc.Prefab" + }, + "waitPrefab": { + "__uuid__": "4db0114a-f751-4931-bfaf-4fef31430583", + "__expectedType__": "cc.Prefab" + }, + "reconnectPrefab": { + "__uuid__": "fc4d5170-d484-4241-8232-ab8b5be6189b", + "__expectedType__": "cc.Prefab" + }, + "kickPrefab": { + "__uuid__": "32feb2c7-47bc-4522-90b7-c325db4f476a", + "__expectedType__": "cc.Prefab" + }, "_id": "09m0ERGqxLWKsJIBthaeXP" }, + { + "__type__": "37208rG/ldOMZmTaKYpmWbN", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 2 + }, + "_enabled": true, + "__prefab": null, + "menu": { + "__uuid__": "a3b88bab-b064-4cfe-b1b6-f7400270f489", + "__expectedType__": "cc.Prefab" + }, + "header": { + "__uuid__": "ddf22b83-c329-4cb2-ac80-7b4999472522", + "__expectedType__": "cc.Prefab" + }, + "noticeMenu": { + "__uuid__": "e1b53f04-3e2f-4127-9a3f-f629bed6905e", + "__expectedType__": "cc.Prefab" + }, + "notices": { + "__uuid__": "b13f487a-451e-41ce-a810-1fab0d52248f", + "__expectedType__": "cc.Prefab" + }, + "profile": { + "__uuid__": "b0d84e07-5fb3-4546-bc6e-5a94bbaa37ec", + "__expectedType__": "cc.Prefab" + }, + "settings": { + "__uuid__": "8586be39-6cc9-4fa5-a48f-020683a841ef", + "__expectedType__": "cc.Prefab" + }, + "join": { + "__uuid__": "98e42432-0731-4b9e-a158-72032b2c157d", + "__expectedType__": "cc.Prefab" + }, + "digits": [ + { + "__uuid__": "fc6e9a8e-0a6d-4555-bc3e-88fd427b9f3a@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + { + "__uuid__": "955a5132-edb4-4faf-adca-923dbca45217@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + { + "__uuid__": "ab6d54c7-7d1f-4f98-ac4e-12f2de932b2f@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + { + "__uuid__": "594b92fc-daa3-4693-987d-84957944c444@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + { + "__uuid__": "1c253722-7120-4860-8de0-02344e8db0aa@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + { + "__uuid__": "0ddec2cf-c7f9-4a19-a8e6-6cea32ba89de@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + { + "__uuid__": "9462e71e-aff7-4304-bafe-ab83f1744d13@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + { + "__uuid__": "cd5f146f-85cd-4e2e-87bf-df56aa8224ad@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + { + "__uuid__": "71cec5f0-b05e-4806-af66-42ea0fa74533@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + { + "__uuid__": "c94bef54-44c2-4538-8f4d-370b931f1297@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + { + "__uuid__": "c5fc3601-1ae3-4e81-85ea-ad0aacd3e642@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + { + "__uuid__": "23c44db3-13a3-4ed6-ac40-f24b17967169@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + { + "__uuid__": "015c992c-7586-4eeb-831f-18b09f071749@f9941", + "__expectedType__": "cc.SpriteFrame" + } + ], + "switches": [ + { + "__uuid__": "0660c388-fd83-4994-a5a7-e97a7580491a@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + { + "__uuid__": "6849776f-5e58-4074-9911-92007d51823f@f9941", + "__expectedType__": "cc.SpriteFrame" + } + ], + "taskTip": { + "__uuid__": "974bf7e8-69fd-49ff-95fa-ed7ddb8d6a14@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + "_id": "abZXhqPblEq57+36N2j8xH" + }, { "__type__": "cc.SceneGlobals", "ambient": { - "__id__": 5 - }, - "shadows": { "__id__": 6 }, - "_skybox": { + "shadows": { "__id__": 7 }, - "fog": { + "_skybox": { "__id__": 8 }, - "octree": { + "fog": { "__id__": 9 }, - "skin": { + "octree": { "__id__": 10 }, - "lightProbeInfo": { + "skin": { "__id__": 11 }, - "postSettings": { + "lightProbeInfo": { "__id__": 12 }, + "postSettings": { + "__id__": 13 + }, "bakedWithStationaryMainLight": false, "bakedWithHighpLightmap": false }, diff --git a/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/LobbyAssets.ts b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/LobbyAssets.ts new file mode 100644 index 0000000..17dbafc --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/LobbyAssets.ts @@ -0,0 +1,16 @@ +import { _decorator, Component, Prefab, SpriteFrame } from 'cc'; +const {ccclass,property}=_decorator; +/** Editor-owned asset references; no runtime UUID/path guessing. */ +@ccclass('LobbyAssets') +export class LobbyAssets extends Component { + @property(Prefab) menu:Prefab|null=null; + @property(Prefab) header:Prefab|null=null; + @property(Prefab) noticeMenu:Prefab|null=null; + @property(Prefab) notices:Prefab|null=null; + @property(Prefab) profile:Prefab|null=null; + @property(Prefab) settings:Prefab|null=null; + @property(Prefab) join:Prefab|null=null; + @property([SpriteFrame]) digits:SpriteFrame[]=[]; + @property([SpriteFrame]) switches:SpriteFrame[]=[]; + @property(SpriteFrame) taskTip:SpriteFrame|null=null; +} diff --git a/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/LobbyAssets.ts.meta b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/LobbyAssets.ts.meta new file mode 100644 index 0000000..507de02 --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/LobbyAssets.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.24", + "importer": "typescript", + "imported": true, + "uuid": "37208ac6-fe57-4e31-9993-68a6299966cd", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/PlatformStartup.ts b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/PlatformStartup.ts index 0d6a78d..94f6cc3 100644 --- a/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/PlatformStartup.ts +++ b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/PlatformStartup.ts @@ -16,6 +16,12 @@ import { CocosLogoCountdownView, createLogoCountdown } from './logo-countdown.ts import { requireNode } from './node-bindings.ts'; import { SceneFlow } from './scene-flow.ts'; import { LoginPanel } from './login-panel.ts'; +import { LobbyAssets } from './LobbyAssets.ts'; +import { LobbyPanel } from './lobby-panel.ts'; +import { resolveLobbyPolicy } from '../../framework/presentation/lobby-model.ts'; +import { openLobbyUrl } from '../../framework/adapters/native/lobby-links.ts'; +import { FeedbackPanels } from './feedback-panels.ts'; +import { isLoginResponse } from '../../framework/protocol/first-slice-routes.ts'; const {ccclass,property}=_decorator; function required(value:T|null|undefined,name:string):T{if(value==null)throw Error(`PlatformStartup missing ${name}`);return value;} @@ -25,15 +31,25 @@ function required(value:T|null|undefined,name:string):T{if(value==null)throw export class PlatformStartup extends Component { @property(SceneAsset) loadingScene:SceneAsset|null=null; @property(SceneAsset) loginScene:SceneAsset|null=null; + @property(SceneAsset) lobbyScene:SceneAsset|null=null; @property(Prefab) loadingPrefab:Prefab|null=null; @property(Prefab) loginPrefab:Prefab|null=null; @property(Prefab) protocolPrefab:Prefab|null=null; @property(Prefab) phonePrefab:Prefab|null=null; + @property(Prefab) tipsPrefab:Prefab|null=null; + @property(Prefab) waitPrefab:Prefab|null=null; + @property(Prefab) reconnectPrefab:Prefab|null=null; + @property(Prefab) kickPrefab:Prefab|null=null; + private feedback:FeedbackPanels|null=null; + private waitingReply=false; + private reconnecting=false; private runtime:PlatformRuntime|null=null; private config:RuntimeConfig|null=null; private policy:LoginPolicy|null=null; private accounts:LoginAccounts|null=null; private panel:LoginPanel|null=null; + private lobby:LobbyPanel|null=null; + private openExternal:((url:string)=>void)|null=null; private bridge:WebViewJavascriptBridgeAdapter|null=null; private restoreShareLogin:(()=>void)|null=null; private restoreLocation:(()=>void)|null=null; @@ -48,6 +64,7 @@ export class PlatformStartup extends Component { private device:LoginDeviceSnapshot|null=null; private busy=false; private terminal=false; + private returningToLogin=false; private readonly events:Array<{kind:string;data:unknown}>=[]; private readonly flow=new SceneFlow(name=>new Promise((resolve,reject)=>{ if(!director.loadScene(name,error=>error?reject(error):resolve()))reject(Error(`Cannot load scene ${name}`)); @@ -57,6 +74,7 @@ export class PlatformStartup extends Component { async start():Promise{ try{ required(this.loadingScene,'loadingScene');required(this.loginScene,'loginScene'); + required(this.lobbyScene,'lobbyScene');required(this.getComponent(LobbyAssets),'LobbyAssets'); required(this.loadingPrefab,'loadingPrefab');required(this.loginPrefab,'loginPrefab'); required(this.protocolPrefab,'protocolPrefab');required(this.phonePrefab,'phonePrefab'); director.addPersistRootNode(this.node); @@ -73,6 +91,9 @@ export class PlatformStartup extends Component { search:window.location.search,fetcher:new HttpConfigFetcher(),localFetcher:new CocosLocalConfigFetcher()}); if(this.terminal)return; this.policy=resolveLoginPolicy(this.config.remoteConfig); + this.openExternal=url=>openLobbyUrl(url,bridgeHost?{kind:'bridge',call:(name,data)=>required(this.bridge,'native bridge').call(name,data,()=>{})}: + injected.settings?{kind:'settings',browser:target=>(injected.settings as unknown as {browser(url:string):void}).browser(target)}: + {kind:'h5',open:target=>{window.open(target,'_blank','noopener');}},Date.now); const loginConfig={source:this.config.source,gameserver:this.config.gameserver,identity:this.config.identity, showVisitor:this.policy.showVisitor,deviceLogin:this.policy.deviceLogin,qqLogin:this.policy.qqLogin}; this.events.push({kind:'login-config',data:loginConfig}); @@ -105,35 +126,68 @@ export class PlatformStartup extends Component { else required(injected.settings,'settings').startlocation(2);}; } required(this.countdown,'countdown').start(resolveLaunchWaitTime(this.config.remoteConfig)); - this.runtime=new PlatformRuntime({gameEntry:createLoginStageGameEntry(this.config.identity.gameid,event=>this.events.push(event)), + await this.startSession(true); + }catch(error){this.fail(error);} + } + /** 退出只重建账号会话;配置、原生桥和已加载资源由常驻组件保留。 */ + private async startSession(firstStart:boolean):Promise{ + this.runtime=new PlatformRuntime({gameEntry:createLoginStageGameEntry(required(this.config,'config').identity.gameid,event=>this.events.push(event)), resolveRuntimeConfig:async()=>required(this.config,'config'), createWireClient:config=>{ const wire=new WireClient({servers:config.servers,transportFactory:()=>new CocosWebSocketTransport()}); wire.subscribe(event=>{this.events.push({kind:'wire',data:event.type}); - if(event.type==='message'&&event.message.route==='agent'&&event.message.rpc==='player_login')this.loginResponse=event.message.data; + if(event.type==='open'&&this.reconnecting){ + this.reconnecting=false;this.feedback?.reconnect(false); + this.waitingReply=this.busy||this.runtime!.state.players.selfPlayerId!==null; + this.feedback?.loading(this.waitingReply); + } + if(event.type==='message'&&isLoginResponse(event.message)){ + this.loginResponse=event.message.data; + this.waitingReply=false;this.reconnecting=false; + this.feedback?.loading(false);this.feedback?.reconnect(false); + } });return wire; }, scene:{showLoading:()=>{},showLogin:()=>{void this.showLogin().catch(error=>this.fail(error));}, - showLobby:()=>{try{required(this.accounts,'accounts').loginSucceeded(required(this.loginResponse,'login response'),required(this.device,'prepared login device').deviceLogin); - this.busy=false;this.panel?.setBusy(false);this.panel?.close();this.tip('登录成功');}catch(error){this.fail(error);}}, - showRoom:()=>this.fail(Error('当前入口尚未接入子游戏场景')), - showReconnect:()=>this.tip('连接中断,正在重连…'), - showKicked:data=>this.fail(Error(`账号退出:${JSON.stringify(data)}`)), - showServerDenial:outcome=>{this.busy=false;this.panel?.setBusy(false);this.tip(JSON.stringify(outcome.data));}, + showLobby:()=>{void this.showLobby().catch(error=>this.fail(error));}, + showRoom:()=>{this.saveAcceptedLogin();this.fail(Error('当前入口尚未接入子游戏场景'));}, + showReconnect:()=>{this.waitingReply=false;this.feedback?.loading(false);this.reconnecting=true;this.feedback?.reconnect(true);}, + showTips:(message,time)=>this.tip(message,time), + showKicked:data=>{ + const packet=data as {msg?:string;fromOther?:unknown;gameid?:unknown}; + const text=packet.msg||`网络出现异常!${packet.fromOther?(packet.gameid==='G2hw0ubng0zcoI0r4mx3H2yr4GejidwO'?2:1):0}#(请重启游戏)`; + this.fail(Error(text)); + }, + showServerDenial:outcome=>{ + this.busy=false;this.panel?.setBusy(false); + // Desk.login explicitly defines an empty/missing msg as 登录失败. + if(outcome.rpc==='player_login'){ + this.loginResponse=null; + const message=outcome.data.msg; + if(message!=null&&typeof message!=='string')throw Error('player_login.msg must be a string'); + this.tip(message||'登录失败'); + }else this.tip(JSON.stringify(outcome.data)); + }, showFatal:error=>this.fail(error)}, - loadResources:()=>this.loadLoginResources(), - waitForMinimumDisplay:()=>required(this.countdown,'countdown').promise, + loadResources:()=>firstStart?this.loadLoginResources():Promise.resolve(), + waitForMinimumDisplay:()=>firstStart?required(this.countdown,'countdown').promise:Promise.resolve(), getLoginDeviceSnapshot:()=>required(this.device,'prepared login device'), }); - this.unsubscribe=this.runtime.subscribeState(state=>this.countdown?.socketReady(state.app.phase==='connected'||state.app.phase==='logged-in'),error=>this.fail(error)); + this.unsubscribe=this.runtime.subscribeState(state=>{ + if(firstStart)this.countdown?.socketReady(state.app.phase==='connected'||state.app.phase==='logged-in'); + this.lobby?.render(state); + },error=>this.fail(error)); await this.runtime.start(); - }catch(error){this.fail(error);} } private canvas():Node{return required(director.getScene(),'scene').getChildByName('Canvas') ?? (()=>{throw Error('Scene requires Canvas');})();} private createStatus():void{ const canvas=this.canvas();const node=new Node('Status');node.parent=canvas;node.layer=canvas.layer; node.setPosition(0,315,0);node.addComponent(UITransform).setContentSize(1200,60); this.status=node.addComponent(Label);this.status.string='';this.status.fontSize=24;this.status.lineHeight=28; + this.feedback?.dispose(); + this.feedback=new FeedbackPanels(canvas,{tips:required(this.tipsPrefab,'tipsPrefab'),loading:required(this.waitPrefab,'waitPrefab'), + reconnect:required(this.reconnectPrefab,'reconnectPrefab'),kick:required(this.kickPrefab,'kickPrefab')}); + this.feedback.loading(this.waitingReply);this.feedback.reconnect(this.reconnecting); } private async bindLoading():Promise{ const logo=instantiate(required(this.loadingPrefab,'loadingPrefab'));logo.parent=this.canvas();logo.setPosition(0,0,0); @@ -184,6 +238,42 @@ export class PlatformStartup extends Component { if(this.terminal)return; try{required(this.accounts,'accounts').acceptNative(data,channel);}catch(error){this.tip(error instanceof Error?error.message:String(error));} } + private saveAcceptedLogin():void{ + if(this.loginResponse!==null){ + required(this.accounts,'accounts').loginSucceeded(required(this.loginResponse,'login response'),required(this.device,'prepared login device').deviceLogin); + this.loginResponse=null; + this.busy=false; + } + } + private async showLobby():Promise{ + if(this.terminal)return; + this.saveAcceptedLogin(); + this.panel?.dispose();this.panel=null; + await this.flow.enterOnce(required(this.lobbyScene,'lobbyScene').name,()=>{ + this.createStatus(); + const popup=new Node('PopupRoot');popup.parent=this.canvas();popup.layer=this.canvas().layer; + popup.addComponent(UITransform).setContentSize(1600,720); + this.lobby=new LobbyPanel(this.canvas(),popup,required(this.getComponent(LobbyAssets),'LobbyAssets'), + required(this.config,'config'),resolveLobbyPolicy(required(this.config,'config').remoteConfig), + required(this.runtime,'runtime').state,message=>this.tip(message),()=>this.logout(),()=>this.location,url=>required(this.openExternal,'browser host')(url)); + popup.setSiblingIndex(this.canvas().children.length-1); + required(this.status,'status').node.setSiblingIndex(this.canvas().children.length-1); + this.events.push({kind:'scene',data:'Lobby'}); + }); + this.tip(''); + } + private logout():void{ + if(this.returningToLogin||this.terminal)return; + this.returningToLogin=true; + required(this.accounts,'accounts').logout(); + this.unsubscribe?.();this.unsubscribe=null; + this.lobby?.dispose();this.lobby=null; + this.panel?.dispose();this.panel=null; + this.runtime?.stop();this.runtime=null; + this.waitingReply=false;this.reconnecting=false;this.feedback?.loading(false);this.feedback?.reconnect(false);this.feedback?.closeTips(); + this.busy=false;this.device=null;this.loginResponse=null; + void this.startSession(false).catch(error=>this.fail(error)).finally(()=>{this.returningToLogin=false;}); + } /** 所有登录最终收口:再次校验协议与就绪状态,保存本次模式供登录响应使用。 */ private login(account:LoginAccountIdentity,mode:DeviceLoginMode):void{ const runtime=required(this.runtime,'runtime'); @@ -198,20 +288,25 @@ export class PlatformStartup extends Component { if(city!==undefined&&(!city||typeof city.ip!=='string'||typeof city.province!=='string'||typeof city.city!=='string'))throw Error('Invalid returnCitySN'); this.device={location:this.location,machineid,machineroom:'',deviceLogin:mode,loginPlayerId:{enabled:false},...(city?{ip:city.ip}:{})}; this.busy=true;this.panel?.setBusy(true); + this.waitingReply=true;this.feedback?.loading(true); try{runtime.login(city?{...account,province:city.province,city:city.city}:account);} - catch(error){this.busy=false;this.panel?.setBusy(false);throw error;} + catch(error){this.busy=false;this.waitingReply=false;this.feedback?.loading(false);this.panel?.setBusy(false);throw error;} + } + private tip(text:string,time=3000):void{ + if(text)this.feedback?.showTips(text,time); + if(this.status&&isValid(this.status))this.status.string=''; } - private tip(text:string):void{if(this.status&&isValid(this.status))this.status.string=text;} private fail(error:unknown):void{ - this.tip(error instanceof Error?error.message:String(error));console.error('[PlatformStartup]',error); - this.release(); + console.error('[PlatformStartup]',error); + try{this.feedback?.kick(error instanceof Error?error.message:String(error));} + finally{this.release();} } /** 幂等释放计时器、订阅和宿主回调,阻止销毁后的迟到消息重新激活流程。 */ private release():void{ - if(this.terminal)return;this.terminal=true;this.flow.dispose();this.panel?.dispose(); + if(this.terminal)return;this.terminal=true;this.flow.dispose();this.panel?.dispose();this.lobby?.dispose(); this.countdown?.cancel();this.countdownView?.dispose();this.unsubscribe?.();this.bridge?.dispose(); this.restoreShareLogin?.();this.restoreLocation?.();this.runtime?.stop(); } - onDestroy():void{this.release();} + onDestroy():void{this.release();this.feedback?.dispose();} getDiagnostics(){return {events:[...this.events],ready:this.runtime?.ready,busy:this.busy,terminal:this.terminal};} } diff --git a/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/ReconnectFrames.anim b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/ReconnectFrames.anim new file mode 100644 index 0000000..8d1b12a --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/ReconnectFrames.anim @@ -0,0 +1,111 @@ +[ + { + "__type__": "cc.AnimationClip", + "_name": "ReconnectFrames", + "_objFlags": 0, + "__editorExtras__": {}, + "_native": "", + "sample": 10, + "speed": 1, + "wrapMode": 2, + "enableTrsBlending": false, + "_duration": 0.8, + "_hash": 0, + "_tracks": [ + { + "__id__": 1 + } + ], + "_exoticAnimation": null, + "_events": [], + "_embeddedPlayers": [], + "_additiveSettings": { + "__id__": 6 + }, + "_auxiliaryCurveEntries": [] + }, + { + "__type__": "cc.animation.ObjectTrack", + "_binding": { + "__type__": "cc.animation.TrackBinding", + "path": { + "__id__": 2 + }, + "proxy": null + }, + "_channel": { + "__id__": 4 + } + }, + { + "__type__": "cc.animation.TrackPath", + "_paths": [ + { + "__id__": 3 + }, + "spriteFrame" + ] + }, + { + "__type__": "cc.animation.ComponentPath", + "component": "cc.Sprite" + }, + { + "__type__": "cc.animation.Channel", + "_curve": { + "__id__": 5 + } + }, + { + "__type__": "cc.ObjectCurve", + "_times": [ + 0, + 0.1, + 0.2, + 0.30000000000000004, + 0.4, + 0.5, + 0.6000000000000001, + 0.7000000000000001 + ], + "_values": [ + { + "__uuid__": "5690de47-2417-4e4c-b948-b772697cd010@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + { + "__uuid__": "64f9e5ff-6381-4051-9be8-0e678a056519@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + { + "__uuid__": "1fa00bd2-79b8-49e9-bdf3-c0f48dd0ff0e@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + { + "__uuid__": "fdf821b1-90eb-433d-ac8d-7826a943d482@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + { + "__uuid__": "d8abacb4-7e61-4cd1-87fa-68de231eb7cd@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + { + "__uuid__": "13972a6c-5bca-44f4-b8c7-52f7f2e1ab58@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + { + "__uuid__": "fc639c96-4683-4f02-8769-df540f1ee86c@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + { + "__uuid__": "133c04b5-5ec3-4bab-b362-2049efe926fe@f9941", + "__expectedType__": "cc.SpriteFrame" + } + ] + }, + { + "__type__": "cc.AnimationClipAdditiveSettings", + "enabled": false, + "refClip": null + } +] \ No newline at end of file diff --git a/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/ReconnectFrames.anim.meta b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/ReconnectFrames.anim.meta new file mode 100644 index 0000000..4cd0a77 --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/ReconnectFrames.anim.meta @@ -0,0 +1,13 @@ +{ + "ver": "2.0.4", + "importer": "animation-clip", + "imported": true, + "uuid": "6df11aed-a35b-4009-8bb9-a3f42fb20cf7", + "files": [ + ".bin" + ], + "subMetas": {}, + "userData": { + "name": "ReconnectFrames" + } +} diff --git a/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/feedback-panels.ts b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/feedback-panels.ts new file mode 100644 index 0000000..7ef9465 --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/feedback-panels.ts @@ -0,0 +1,66 @@ +import {Animation, BlockInputEvents, Label, Node, Prefab, Tween, UITransform, Widget, instantiate, isValid, tween} from 'cc'; +import {requireNode} from './node-bindings.ts'; + +/** Original layers 612/614/615/616. Scene-independent state is owned by PlatformStartup. */ +export class FeedbackPanels { + private timer:ReturnType|null=null; + private nodes:Node[]=[]; + private tipNode:Node; + private loadingNode:Node; + private reconnectNode:Node; + private kickNode:Node; + private locked=false; + constructor(canvas:Node,assets:{tips:Prefab;loading:Prefab;reconnect:Prefab;kick:Prefab}){ + const mount=(asset:Prefab)=>{ + const n=instantiate(asset);n.parent=canvas;n.setPosition(0,0,0); + const w=n.getComponent(Widget);if(w){w.target=canvas;w.isAlignLeft=w.isAlignRight=w.isAlignTop=w.isAlignBottom=true;w.left=w.right=w.top=w.bottom=0;w.updateAlignment();} + if(!n.getComponent(BlockInputEvents))n.addComponent(BlockInputEvents); + n.active=false;this.nodes.push(n);return n; + }; + this.loadingNode=mount(assets.loading);this.reconnectNode=mount(assets.reconnect); + this.tipNode=mount(assets.tips);this.kickNode=mount(assets.kick); + requireNode(this.tipNode,'group-89').active=false; + this.tipNode.on(Node.EventType.TOUCH_END,()=>this.closeTips()); + } + private front(n:Node):void{n.setSiblingIndex(n.parent!.children.length-1);if(this.locked)this.kickNode.setSiblingIndex(this.kickNode.parent!.children.length-1);} + private text(root:Node,path:string,bgPath:string,message:string):void{ + const n=requireNode(root,path),label=n.getComponent(Label);if(!label)throw Error(`${path} requires Label`); + n.getComponent(Widget)!.enabled=false; + label.string=message.replace(/#/g,'\n');label.enableWrapText=false;label.overflow=Label.Overflow.NONE; + label.horizontalAlign=Label.HorizontalAlign.CENTER;label.verticalAlign=Label.VerticalAlign.CENTER; + label.updateRenderData(true); + const size=n.getComponent(UITransform)!; + if(size.width>1000){label.enableWrapText=true;label.overflow=Label.Overflow.RESIZE_HEIGHT;size.width=1000;label.updateRenderData(true);} + const bg=requireNode(root,bgPath);const w=bg.getComponent(Widget);if(w)w.enabled=false; + const height=Math.max(105,size.height+60); + bg.getComponent(UITransform)!.setContentSize(Math.max(570,size.width+100),height); + bg.setPosition(0,18,0);n.setPosition(0,18,0); + } + showTips(message:string,time=3000):void{ + if(this.locked||!message)return;this.closeTips(); + this.text(this.tipNode,'group-32/提示文字','group-32/提示背景',message); + this.tipNode.active=true;this.front(this.tipNode); + if(time>0)this.timer=setTimeout(()=>this.closeTips(),time); + } + closeTips():void{if(this.timer!==null)clearTimeout(this.timer);this.timer=null;if(isValid(this.tipNode))this.tipNode.active=false;} + private spin(root:Node,path:string,visible:boolean):void{ + const n=requireNode(root,path);Tween.stopAllByTarget(n);root.active=visible&&!this.locked; + if(root.active){this.front(root);tween(n).by(1,{angle:-360}).repeatForever().start();} + } + loading(show:boolean):void{this.spin(this.loadingNode,'group-40/载入动画',show);} + reconnect(show:boolean):void{ + const animation=requireNode(this.reconnectNode,'group-35/重连动画').getComponent(Animation); + if(!animation||!animation.defaultClip)throw Error('Reconnect requires serialized AnimationClip'); + this.reconnectNode.active=show&&!this.locked; + if(this.reconnectNode.active){this.front(this.reconnectNode);animation.play();}else animation.stop(); + } + kick(message:string):void{ + this.loading(false);this.reconnect(false);this.closeTips();this.locked=true; + this.text(this.kickNode,'group-33/强制退出提示文字','group-33/强制下线提示底',message); + this.kickNode.active=true;this.front(this.kickNode); + } + dispose():void{ + this.closeTips();for(const n of this.nodes){if(!isValid(n))continue;for(const c of n.getComponentsInChildren(UITransform))Tween.stopAllByTarget(c.node);n.destroy();} + this.nodes=[]; + } +} diff --git a/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/feedback-panels.ts.meta b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/feedback-panels.ts.meta new file mode 100644 index 0000000..8beb31c --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/feedback-panels.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.24", + "importer": "typescript", + "imported": true, + "uuid": "000c909d-064e-4734-a837-168fdab1062b", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/lobby-panel.ts b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/lobby-panel.ts new file mode 100644 index 0000000..bbcf2fb --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/lobby-panel.ts @@ -0,0 +1,234 @@ +import { assetManager, BlockInputEvents, ImageAsset, Label, Mask, Node, Prefab, ScrollView, Sprite, SpriteFrame, Texture2D, UITransform, Widget, instantiate, isValid } from 'cc'; +import type { RuntimeConfig } from '../../framework/config/runtime-config.ts'; +import { selectLobbyModel, shouldShowNotice, type LobbyModel, type LobbyPolicy } from '../../framework/presentation/lobby-model.ts'; +import type { PlatformState } from '../../framework/platform/stores/platform-types.ts'; +import { LobbyAssets } from './LobbyAssets.ts'; +import { requireNode } from './node-bindings.ts'; + +function need(value:T|null|undefined,name:string):T {if(value==null)throw Error(`Lobby missing ${name}`);return value;} +const label=(root:Node,path:string)=>need(requireNode(root,path).getComponent(Label),`${path} Label`); + +/** Scene-local view. All identity/assets come from PlatformStore; configuration is resolved once. */ +export class LobbyPanel { + private releases:Array<()=>void>=[]; + private modalReleases:Array<()=>void>=[]; + private modal:Node|null=null; + private modalKind=''; + private disposed=false; + private model:LobbyModel; + private menu:Node; + private header:Node; + private noticeMenu:Node; + private avatarUrl:string|null=null; + private avatarFrame:SpriteFrame|null=null; + private avatarTexture:Texture2D|null=null; + private avatarGeneration=0; + private cardValue:number|null=null; + private beanValue:number|null=null; + constructor(private readonly canvas:Node,private readonly popup:Node,private readonly assets:LobbyAssets, + private readonly config:RuntimeConfig,private readonly policy:LobbyPolicy,state:PlatformState, + private readonly tip:(text:string)=>void,private readonly logout:()=>void, + private readonly location:()=>unknown,private readonly openUrl:(url:string)=>void){ + this.model=selectLobbyModel(state); + if(assets.switches.length!==2)throw Error('LobbyAssets requires 2 switch frames'); + this.menu=this.add(assets.menu,canvas);this.header=this.add(assets.header,canvas);this.noticeMenu=this.add(assets.noticeMenu,canvas); + requireNode(this.header,'group-103').active=false; + requireNode(this.noticeMenu,'group-95').active=false; + // Original JumpMenuScene hides these transient/obsolete fields. + for(const id of [219,220,157,497])requireNode(this.menu,`group-3/Spirit${id}`).active=false; + // updateNoticeBoard clears all old contact samples before rendering source values. + for(const id of [180,193,194,682,178,179,340]){label(this.menu,`group-3/Spirit${id}`).string='';requireNode(this.menu,`group-3/Spirit${id}`).active=false;} + label(this.menu,'group-3/Spirit681').string='客服信息'; + const pairs=[[180,682],[193,178],[194,179]]; + policy.contacts.forEach((contact,index)=>{ + const [title,value]=pairs[index];const titleLabel=label(this.menu,`group-3/Spirit${title}`),valueLabel=label(this.menu,`group-3/Spirit${value}`); + titleLabel.string=contact.label;valueLabel.string=contact.value;titleLabel.node.active=true;valueLabel.node.active=true; + }); + requireNode(this.menu,'group-3/Spirit17').active=!policy.hideTask; + requireNode(this.menu,'group-3/Spirit14').active=!policy.hideShare; + label(this.noticeMenu,'group-3/Spirit145').string=policy.scroll; + this.bind(requireNode(this.menu,'group-3/Spirit7'),()=>this.openSettings()); + this.bind(requireNode(this.header,'group-3/PlayerInfo/头像框'),()=>this.openProfile()); + this.bind(requireNode(this.menu,'group-3/Spirit12'),()=>this.openJoin()); + this.bind(requireNode(this.menu,'group-3/Spirit3120'),()=>{const tray=requireNode(this.noticeMenu,'group-95');tray.active=!tray.active;}); + this.bind(requireNode(this.noticeMenu,'group-95/Spirit5'),()=>this.openNotice()); + // Unconnected game/service entries give explicit feedback instead of issuing guessed packets. + const remaining:Record={11:'创建房间需要接入目标子游戏规则',13:'战绩功能尚未接入',14:'分享功能尚未接入',17:'任务列表尚未接入', + 483:'比赛场尚未接入',568:'星星场尚未接入',3016:'商城尚未接入',3018:'福袋尚未接入',99:'房间列表尚未接入',76:'二维码尚未接入',3139:'试玩房间尚未接入',234:'更多游戏尚未接入'}; + for(const [id,message] of Object.entries(remaining))this.bind(requireNode(this.menu,`group-3/Spirit${id}`),()=>this.tip(message)); + for(const name of ['购买房卡','Spirit509','Spirit3233','Spirit3232','Spirit3256','Spirit3264'])this.bind(requireNode(this.header,`group-3/${name}`),()=>this.tip('此功能尚未接入')); + for(const id of [3017,235,604,3057,15])this.bind(requireNode(this.noticeMenu,`group-95/Spirit${id}`),()=>this.tip('此功能尚未接入')); + this.render(state); + const key=`tsgame_gameNoteTime_${config.identity.gameid}${config.identity.agentid}`; + const previous=window.localStorage.getItem(key),time=previous===null?null:Number(previous); + if(time!==null&&!Number.isFinite(time))throw Error(`Invalid ${key}`); + const now=Date.now(); + if(shouldShowNotice(policy.noticeHours,time,now,false)){ + if(policy.noticeHours>0)window.localStorage.setItem(key,String(now)); + this.openNotice(); + } + } + private add(prefab:Prefab|null,parent:Node):Node { + const root=instantiate(need(prefab,'prefab'));root.parent=parent;root.setPosition(0,0,0);root.active=true; + const widget=root.getComponent(Widget); + if(widget){widget.target=parent;widget.isAlignLeft=true;widget.isAlignRight=true;widget.isAlignTop=true;widget.isAlignBottom=true; + widget.left=0;widget.right=0;widget.top=0;widget.bottom=0;widget.updateAlignment();} + return root; + } + private bind(node:Node,action:()=>void,modal=false):void { + const listener=()=>{if(this.disposed||(!modal&&this.modal!==null)||!this.model.canAct)return; + try{action();}catch(error){this.tip(error instanceof Error?error.message:String(error));}}; + node.on(Node.EventType.TOUCH_END,listener); + (modal?this.modalReleases:this.releases).push(()=>{if(isValid(node))node.off(Node.EventType.TOUCH_END,listener);}); + } + render(state:PlatformState):void { + if(this.disposed)return;this.model=selectLobbyModel(state); + label(this.header,'group-3/PlayerInfo/昵称').string=this.model.nickname; + label(this.header,'group-3/PlayerInfo/ID').string=`ID:${this.model.playerid}`; + if(this.cardValue!==this.model.roomcard){this.numbers('Spirit3161','Spirit287',this.model.roomcard);this.cardValue=this.model.roomcard;} + if(this.beanValue!==this.model.bean){this.numbers('Spirit3162','Spirit496',this.model.bean);this.beanValue=this.model.bean;} + // Task tip stays attached to its button and inherits its visibility. + const task=requireNode(this.menu,'group-3/Spirit17'); + let tip=task.getChildByName('TaskTip'); + if(!tip){tip=new Node('TaskTip');tip.parent=task;tip.layer=task.layer;tip.setPosition(45,25,0); + tip.addComponent(UITransform).setContentSize(63,63);const dot=tip.addComponent(Sprite);dot.sizeMode=Sprite.SizeMode.CUSTOM;dot.spriteFrame=need(this.assets.taskTip,'task tip frame');} + tip.active=this.model.taskstate!==0; + this.updateAvatar(); + if(this.modalKind==='profile')this.renderProfile(); + } + private numbers(name:string,background:string,value:number):void { + const root=requireNode(this.header,`group-3/${name}`),ui=need(root.getComponent(UITransform),name); + const numberLabel=label(root,'NumberLabel'); + numberLabel.string=String(value); + numberLabel.updateRenderData(true); + const width=need(numberLabel.node.getComponent(UITransform),'number label transform').width; + ui.setContentSize(width,28); + const bg=requireNode(this.header,`group-3/${background}`),bgUI=need(bg.getComponent(UITransform),background); + bgUI.width=width>119?width+55:155; + const widget=root.getComponent(Widget);if(widget)widget.enabled=false; + root.setPosition(bg.position.x+8,root.position.y,0); + } + private updateAvatar():void { + if(this.avatarUrl===this.model.avatar)return; + this.avatarUrl=this.model.avatar;const generation=++this.avatarGeneration; + const sprite=need(requireNode(this.header,'group-3/PlayerInfo/头像框/头像').getComponent(Sprite),'avatar'); + sprite.sizeMode=Sprite.SizeMode.CUSTOM; + need(sprite.node.getComponent(UITransform),'avatar transform').setContentSize(63,65); + sprite.spriteFrame=null; + this.avatarFrame?.destroy();this.avatarTexture?.destroy();this.avatarFrame=null;this.avatarTexture=null; + if(this.model.avatar==='')return; + assetManager.loadRemote(this.model.avatar,{ext:'.png'},(error,image)=>{ + if(this.disposed||generation!==this.avatarGeneration)return; + if(error){this.tip(`头像加载失败:${error.message}`);return;} + const texture=new Texture2D();texture.image=image;const frame=new SpriteFrame();frame.texture=texture; + this.avatarTexture=texture;this.avatarFrame=frame;sprite.spriteFrame=frame; + if(this.modalKind==='profile')this.renderProfile(); + }); + } + private open(prefab:Prefab|null,kind:string,group:string):Node { + this.close();requireNode(this.noticeMenu,'group-95').active=false; + const modal=this.add(prefab,this.popup);this.modal=modal;this.modalKind=kind; + for(const child of modal.children)child.active=child.name===group; + const shield=new Node('ModalInputShield');shield.parent=modal;shield.layer=modal.layer;shield.setSiblingIndex(0); + shield.addComponent(UITransform).setContentSize(1600,720);shield.addComponent(BlockInputEvents); + return modal; + } + openProfile():void { + const modal=this.open(this.assets.profile,'profile','group-18'); + this.bind(requireNode(modal,'group-18/Spirit116'),()=>this.close(),true);this.renderProfile(); + this.bind(requireNode(modal,'group-18/Spirit484'),()=>this.tip('实名认证尚未接入'),true); + } + private renderProfile():void { + const modal=need(this.modal,'profile'); + const values:Record={196:this.model.nickname,197:`ID:${this.model.playerid}`,198:`IP:${need(this.model.ip,'player ip')}`, + 199:`积分:${this.model.score}`,510:`${this.policy.starName}:${this.model.bean}`,3152:'个性签名:',3157:this.model.sign}; + const location=this.location() as {errorCode?:number;province?:string;city?:string}|null; + values[200]=location?.errorCode===0?`${need(location.province,'location province')}-${need(location.city,'location city')}`:'获取定位失败!'; + for(const [id,text] of Object.entries(values))label(modal,`group-18/Spirit${id}`).string=text; + const avatar=need(requireNode(modal,'group-18/Spirit118').getComponent(Sprite),'profile avatar'); + avatar.sizeMode=Sprite.SizeMode.CUSTOM;avatar.spriteFrame=this.avatarFrame; + } + openSettings():void { + const modal=this.open(this.assets.settings,'settings','group-6'); + const group=requireNode(modal,'group-6'); + for(const name of ['申请解散','邀请好友'])requireNode(group,name).active=false; + this.bind(requireNode(group,'设置遮罩'),()=>this.close(),true); + this.bind(requireNode(group,'退出登录'),()=>this.logout(),true); + for(const [name,key] of [['音乐底',`tsgame_bgm_${this.config.identity.gameid}`],['音效底',`tsgame_sound_${this.config.identity.gameid}${this.config.identity.agentid}`]] as const){ + const sprite=need(requireNode(group,name).getComponent(Sprite),name); + const read=()=>{const raw=window.localStorage.getItem(key);if(raw===null){window.localStorage.setItem(key,'1');return true;} + if(raw!=='0'&&raw!=='1')throw Error(`Invalid ${key}`);return raw==='1';}; + const render=()=>{sprite.spriteFrame=this.assets.switches[read()?0:1];};render(); + this.bind(sprite.node,()=>{window.localStorage.setItem(key,read()?'0':'1');render();},true); + } + for(const name of ['Spirit357','Spirit388'])this.bind(requireNode(group,name),()=>this.tip('原生震动与语音开关尚未接入'),true); + } + openNotice():void { + const modal=this.open(this.assets.notices,'notice','group-12'),group=requireNode(modal,'group-12'); + for(const name of ['通知遮罩','通知关闭'])this.bind(requireNode(group,name),()=>this.close(),true); + const close=requireNode(group,'通知关闭'); + const closeWidget=close.getComponent(Widget);if(closeWidget)closeWidget.enabled=false; + close.setPosition(475,264,0);close.active=true; + // Replace the old ifast clipping surface with a native masked ScrollView. + const viewport=new Node('NoticeViewport');viewport.parent=group;viewport.layer=group.layer;viewport.setPosition(125,-30,0); + viewport.addComponent(UITransform).setContentSize(725,450);viewport.addComponent(Mask); + const scroll=viewport.addComponent(ScrollView);scroll.horizontal=false; + const contentRoot=new Node('NoticeContent');contentRoot.parent=viewport;contentRoot.layer=group.layer; + const contentUI=contentRoot.addComponent(UITransform);contentUI.setAnchorPoint(0.5,1);contentUI.setContentSize(725,450);contentRoot.setPosition(0,225,0);scroll.content=contentRoot; + const contentLabel=label(group,'通知内容');const textWidget=contentLabel.node.getComponent(Widget);if(textWidget)textWidget.enabled=false; + contentLabel.node.parent=contentRoot;contentLabel.node.setPosition(-345,0,0); + const textUI=need(contentLabel.node.getComponent(UITransform),'notice text');textUI.setAnchorPoint(0,1);textUI.setContentSize(690,450); + contentLabel.overflow=Label.Overflow.RESIZE_HEIGHT;contentLabel.enableWrapText=true;contentLabel.horizontalAlign=Label.HorizontalAlign.LEFT;contentLabel.verticalAlign=Label.VerticalAlign.TOP; + const imageNode=requireNode(group,'Spirit3102');const imageWidget=imageNode.getComponent(Widget);if(imageWidget)imageWidget.enabled=false; + imageNode.parent=contentRoot;imageNode.setPosition(0,0,0);need(imageNode.getComponent(UITransform),'notice image transform').setAnchorPoint(0.5,1); + let pageGeneration=0; + let selectedPage=0; + let releaseImage=()=>{}; + this.modalReleases.push(()=>releaseImage()); + const link=requireNode(group,'Spirit576'); + this.bind(link,()=>this.openUrl(this.policy.notices[selectedPage].url),true); + this.bind(imageNode,()=>this.openUrl(this.policy.notices[selectedPage].url),true); + const show=(index:number)=>{ + selectedPage=index;releaseImage();releaseImage=()=>{}; + const generation=++pageGeneration; + const notice=this.policy.notices[index]; + for(const id of [404,3105,3106,576])requireNode(group,`Spirit${id}`).active=false; + link.active=notice.type===0&¬ice.url!==''; + imageNode.active=false; + const content=contentLabel;content.string=notice.text;content.node.active=notice.type===0; + content.updateRenderData(true);contentUI.height=Math.max(450,textUI.height);scroll.scrollToTop(0); + if(notice.type===1&¬ice.image){ + imageNode.active=true; + const sprite=need(imageNode.getComponent(Sprite),'notice image');sprite.spriteFrame=null; + assetManager.loadRemote(notice.image,{ext:'.png'},(error,image)=>{ + if(this.disposed||this.modal!==modal||generation!==pageGeneration||!isValid(imageNode))return; + if(error){this.tip(`公告图片加载失败:${error.message}`);return;} + const texture=new Texture2D();texture.image=image;const frame=new SpriteFrame();frame.texture=texture;sprite.sizeMode=Sprite.SizeMode.CUSTOM;sprite.spriteFrame=frame; + need(imageNode.getComponent(UITransform),'notice image transform').setContentSize(725,notice.height);contentUI.height=Math.max(450,notice.height);scroll.scrollToTop(0); + releaseImage=()=>{sprite.spriteFrame=null;frame.destroy();texture.destroy();}; + }); + } + }; + for(let index=0;index<3;index++){ + const notice=this.policy.notices[index],visible=index===0||notice.text!==''||notice.image!==''; + for(const id of [570+index,573+index]){const button=requireNode(group,`Spirit${id}`);button.active=visible;this.bind(button,()=>show(index),true);} + } + show(0); + } + openJoin():void { + const modal=this.open(this.assets.join,'join','group-5'); + for(const id of [27,59])this.bind(requireNode(modal,`group-5/Spirit${id}`),()=>this.close(),true); + // Room entry needs the real game host before a room request can be sent safely. + for(const id of [28,29,30,31,32,33,34,35,36,37,38,39,40])this.bind(requireNode(modal,`group-5/Spirit${id}`),()=>this.tip('加入房间将在目标子游戏接入后启用'),true); + for(let id=236;id<=241;id++)label(modal,`group-5/Spirit${id}`).string=''; + } + close():void { + for(const release of this.modalReleases.splice(0))release(); + this.modal?.destroy();this.modal=null;this.modalKind=''; + } + dispose():void { + if(this.disposed)return;this.disposed=true;this.avatarGeneration++;this.close(); + for(const release of this.releases.splice(0))release(); + this.avatarFrame?.destroy();this.avatarTexture?.destroy(); + } +} diff --git a/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/lobby-panel.ts.meta b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/lobby-panel.ts.meta new file mode 100644 index 0000000..e4589ab --- /dev/null +++ b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/lobby-panel.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.24", + "importer": "typescript", + "imported": true, + "uuid": "59042cb2-3da1-41c9-a4aa-e37e5d655e37", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/local-config-fetcher.ts b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/local-config-fetcher.ts index 5cdd702..0972940 100644 --- a/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/local-config-fetcher.ts +++ b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/local-config-fetcher.ts @@ -1,5 +1,6 @@ import { resources, TextAsset } from 'cc'; import { DEBUG } from 'cc/env'; +import { STARTUP_CONFIG } from '../../framework/config/profiles.ts'; import { ConfigFetchError, ConfigParseError, type ConfigFetcher } from '../../framework/config/remote-config.ts'; /** @@ -18,8 +19,11 @@ export class CocosLocalConfigFetcher implements ConfigFetcher { }); }); try { - return JSON.parse(asset.text) as unknown; + const data: unknown = JSON.parse(asset.text); + if (STARTUP_CONFIG.debugIO) console.log('[Config LOCAL]', `${resourcePath}.txt`, data); + return data; } catch { + if (STARTUP_CONFIG.debugIO) console.log('[Config LOCAL]', `${resourcePath}.txt`, { parseError: 'Invalid JSON', raw: asset.text }); throw new ConfigParseError(`本地配置 JSON 解析失败: ${resourcePath}.txt`); } finally { // 内容已转为普通数据;下次启动重新加载,避免沿用旧 TextAsset 缓存。 diff --git a/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/login-panel.ts b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/login-panel.ts index 3b0d919..27216ba 100644 --- a/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/login-panel.ts +++ b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/login-panel.ts @@ -32,13 +32,9 @@ export class LoginPanel { if(policy.deviceLogin)left('手机登录',490); if(accounts.versionState===1){requireNode(group,'渠道logo').active=false;left('微信登录',113,320,98);left('游客登录',488);} else left('微信登录',415); - // Both switches may be enabled by the remote hierarchy. Keep both actions - // visible, with the user-requested side-by-side layout instead of overlap. - if(state.visitor&&state.phone){ - for(const [name,x] of [['游客登录',-210],['手机登录',210]] as const){ - const node=requireNode(group,name),widget=node.getComponent(Widget);if(widget)widget.enabled=false; - node.setPosition(x,node.position.y,node.position.z); - } + if(state.visitor){ + const node=requireNode(group,'游客登录'),widget=node.getComponent(Widget);if(widget)widget.enabled=false; + node.setPosition(0,node.position.y,node.position.z); } // 登录中展示节点统一位于 prefab 的 Logining 分组,路径必须与资源一致。 const logining=requireNode(group,'Logining'); @@ -93,33 +89,16 @@ export class LoginPanel { const title=requireNode(group,'Spirit3252').getComponent(Sprite);if(!title)throw Error('Spirit3252 requires Sprite');title.spriteFrame=frames.loginTitle; const saved=this.accounts.phonePanelState(); const input=(name:string,textName:string,placeholderName:string)=>{ - const node=requireNode(group,name),labelNode=requireNode(group,textName); + const node=requireNode(group,`${name}/InputEditBox`); + const edit=node.getComponent(EditBox); + if(!edit||!edit.textLabel||!edit.placeholderLabel)throw Error(`${name}/InputEditBox requires serialized EditBox label references`); const placeholder=requireNode(group,placeholderName); - const glyph=labelNode.getComponent(UITransform);if(!glyph)throw Error(`${textName} requires UITransform`); - // Existing art remains the input background; native EditBox owns text entry. - const ui=node.getComponent(UITransform);if(!ui)throw Error(`${name} requires UITransform`); - const text=new Node('InputText');text.parent=node;text.layer=node.layer; - const textUi=text.addComponent(UITransform);textUi.setAnchorPoint(0,0.5);textUi.setContentSize(ui.width-85,ui.height); - text.setPosition(-ui.width/2+65,0,0); - const inputLabel=text.addComponent(Label);inputLabel.string='';inputLabel.fontSize=glyph.height; - inputLabel.horizontalAlign=Label.HorizontalAlign.LEFT;inputLabel.overflow=Label.Overflow.CLAMP;inputLabel.color=Color.BLACK; - const hint=new Node('Placeholder');hint.parent=node;hint.layer=node.layer; - hint.addComponent(UITransform).setContentSize(ui.width-20,ui.height); - const hintLabel=hint.addComponent(Label);hintLabel.string='';hintLabel.fontSize=glyph.height; - // Configure before onLoad so EditBox does not create orphan default labels. - labelNode.active=false;node.active=false; - const edit=node.addComponent(EditBox);edit.textLabel=inputLabel;edit.placeholderLabel=hintLabel; - edit.string='';edit.placeholder=''; - edit.inputMode=EditBox.InputMode.NUMERIC;edit.maxLength=18; + requireNode(group,textName).active=false; + edit.string=''; const changed=()=>{edit.string=edit.string.replace(/\D/g,'');placeholder.active=edit.string.length===0;}; - node.on(EditBox.EventType.TEXT_CHANGED,changed);this.modalReleases.push(()=>node.off(EditBox.EventType.TEXT_CHANGED,changed)); - changed();node.active=true; - const alignText=()=>{ - textUi.setAnchorPoint(0,1);textUi.setContentSize(ui.width-85,ui.height); - text.setPosition(-ui.width/2+65,ui.height/2,0);inputLabel.verticalAlign=Label.VerticalAlign.CENTER; - }; - alignText();node.on(Node.EventType.SIZE_CHANGED,alignText); - this.modalReleases.push(()=>node.off(Node.EventType.SIZE_CHANGED,alignText));return edit; + node.on(EditBox.EventType.TEXT_CHANGED,changed); + this.modalReleases.push(()=>node.off(EditBox.EventType.TEXT_CHANGED,changed)); + changed();return edit; }; const phone=input('Spirit3243','Spirit3247','Spirit3249'); const code=input('Spirit3244','Spirit3248','Spirit3250'); @@ -127,28 +106,26 @@ export class LoginPanel { const codeButton=requireNode(group,'Spirit3245'),codeSprite=codeButton.getComponent(Sprite); if(!codeSprite||!codeSprite.spriteFrame)throw Error('Spirit3245 requires SpriteFrame'); const idleFrame=codeSprite.spriteFrame; - const timerNode=requireNode(group,'Spirit3246'),timerSprite=timerNode.getComponent(Sprite); - if(!timerSprite)throw Error('Spirit3246 requires Sprite');timerSprite.enabled=false; - const timerWidget=timerNode.getComponent(Widget);if(timerWidget)timerWidget.enabled=false; - timerNode.setPosition(codeButton.position);timerNode.getComponent(UITransform)!.setContentSize(148,28); - const timerText=new Node('CountdownText');timerText.parent=timerNode;timerText.layer=timerNode.layer; - timerText.addComponent(UITransform).setContentSize(148,28); - const timerLabel=timerText.addComponent(Label);timerLabel.fontSize=28;timerLabel.color=Color.BLACK; + const timerNode=requireNode(group,'Spirit3246'); + const timerLabel=requireNode(timerNode,'CountdownText').getComponent(Label); + if(!timerLabel||!timerLabel.font)throw Error('Spirit3246/CountdownText requires serialized bitmap Label'); let restTime=saved===null?0:saved.restTime; let waiting=restTime>0; - const renderTimer=()=>{timerNode.active=waiting;timerLabel.string=`${restTime}秒`;codeSprite.spriteFrame=waiting?frames.codeWaiting:idleFrame;}; + const renderTimer=()=>{timerNode.active=waiting;timerLabel.string=`${restTime}s`;codeSprite.spriteFrame=waiting?frames.codeWaiting:idleFrame;}; renderTimer(); if(waiting){const timer=window.setInterval(()=>{restTime--;if(restTime<0){waiting=false;window.clearInterval(timer);}renderTimer();},1000); this.modalReleases.push(()=>window.clearInterval(timer));} this.bind(codeButton,()=>{if(restTime<=0&&phone.string)this.tip('请通过相关渠道获取');},true); this.bind(requireNode(group,'Spirit3253'),()=>{if(!this.accounts.requireAgreement())return; if(!phone.string||!code.string){this.tip('手机号与验证码均不能为空!');return;} - this.accounts.phone(phone.string,code.string);this.close();},true); + // Keep the entered values and modal until successful navigation disposes it. + this.accounts.phone(phone.string,code.string);},true); for(const name of ['Spirit3251','Spirit3241'])this.bind(requireNode(group,name),()=>this.close(),true); const background=requireNode(group,'Spirit3242');if(!background.getComponent(BlockInputEvents))background.addComponent(BlockInputEvents); } /** 帧切换由 prefab 的 AnimationClip 驱动;登录状态只负责显隐及播放生命周期。 */ setBusy(busy:boolean):void{ + busy=busy&&this.modal===null; const group=requireNode(this.root,'group-2/Logining'); group.active=busy; for(const name of ['登录中遮罩','登录头像背景框','登录中头像','登录中昵称','登录中动画','登录中头像框'])requireNode(group,name).active=busy; diff --git a/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/scene-flow.ts b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/scene-flow.ts index eb87515..aac23e0 100644 --- a/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/scene-flow.ts +++ b/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/scene-flow.ts @@ -2,9 +2,11 @@ export class SceneFlow { private pending:Promise=Promise.resolve(); private disposed=false; + private destination:string|null=null; constructor(private readonly load:(name:string)=>Promise){} /** 串行加载后绑定新场景;等待期间已销毁则禁止继续绑定。 */ enter(name:string,bind:()=>void|Promise):Promise{ + this.destination=name; const next=this.pending.then(async()=>{ if(this.disposed)throw Error('SceneFlow disposed'); await this.load(name); @@ -14,5 +16,10 @@ export class SceneFlow { this.pending=next; return next; } + enterOnce(name:string,bind:()=>void|Promise):Promise{ + if(this.disposed)return Promise.reject(Error('SceneFlow disposed')); + if(this.destination===name)return this.pending; + return this.enter(name,bind); + } dispose():void{this.disposed=true;} } diff --git a/cocoscreator_projects/YouleNexus/out/legacy-migration/BackHall_Layer.prefab b/cocoscreator_projects/YouleNexus/out/legacy-migration/BackHall_Layer.prefab index 48b7e81..d64f80d 100644 --- a/cocoscreator_projects/YouleNexus/out/legacy-migration/BackHall_Layer.prefab +++ b/cocoscreator_projects/YouleNexus/out/legacy-migration/BackHall_Layer.prefab @@ -196,7 +196,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "mInE3pjb7inUvBo169DrOa" + "fileId": "Tl79wHILyqZmgHifukKMpx" }, { "__type__": "cc.ProgressBar", @@ -234,7 +234,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "1N6ZFPkq5zEJ7jgzMsNyGH" + "fileId": "vB6DiXk6RqHgmGw2u9zTrm" }, { "__type__": "cc.Widget", @@ -266,7 +266,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "WHfrSPfR6JYu8iU0TUyF4B" + "fileId": "Q09eblOtqpOIKUIR1rCPZ2" }, { "__type__": "cc.PrefabInfo", @@ -276,7 +276,7 @@ "asset": { "__id__": 0 }, - "fileId": "uD64Wer4QOsrcrKwFEBcGx", + "fileId": "lEc1cHfiiU8pOyCoEMnGvk", "instance": null, "targetOverrides": null, "nestedPrefabInstanceRoots": null @@ -307,7 +307,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "SrfinWAjvhIAnF15pZ8Jl5" + "fileId": "n2HDVxxgW5JYaaRcZTtLgX" }, { "__type__": "cc.Widget", @@ -343,7 +343,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "ynl6MmKhLB1JpjfJYYknOJ" + "fileId": "JcwosMI94uI6qNvPfhuVrg" }, { "__type__": "cc.PrefabInfo", @@ -353,7 +353,7 @@ "asset": { "__id__": 0 }, - "fileId": "k0mLQkhZT4Bgy0QiQz8hRI", + "fileId": "IKuPU4SV6obmlKOT1Mn9gj", "instance": null, "targetOverrides": null, "nestedPrefabInstanceRoots": null @@ -384,7 +384,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "QnDDrcnTGJ5DG2obSiYOul" + "fileId": "sQ3rVPLSdPLSKzoTCm4Tx5" }, { "__type__": "cc.Widget", @@ -420,7 +420,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "zrHpjg0XQokLNDH3DA9n5w" + "fileId": "4Umf5MWWDG3bBa0BcBsaZg" }, { "__type__": "cc.PrefabInfo", @@ -430,7 +430,7 @@ "asset": { "__id__": 0 }, - "fileId": "hqbrtQ82b7eHjNVL5HOntu", + "fileId": "kcfBiJsbVilUo0b3r0zbaP", "instance": null, "targetOverrides": null, "nestedPrefabInstanceRoots": null diff --git a/cocoscreator_projects/YouleNexus/out/legacy-migration/Protol_Layer.prefab b/cocoscreator_projects/YouleNexus/out/legacy-migration/Protol_Layer.prefab index 46da12f..43efa10 100644 --- a/cocoscreator_projects/YouleNexus/out/legacy-migration/Protol_Layer.prefab +++ b/cocoscreator_projects/YouleNexus/out/legacy-migration/Protol_Layer.prefab @@ -205,7 +205,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "bZqUXACEgZZ2npPpKlt4O8" + "fileId": "5zbsvleU3JFo89mNlrntqz" }, { "__type__": "cc.Sprite", @@ -250,7 +250,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "4KtDvVGrwHfMfaXMnf4dS3" + "fileId": "rnz2kKUmlo8fnOFEEAg3i4" }, { "__type__": "cc.Widget", @@ -284,7 +284,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "73ryZUOBvcmAWZlm732ugm" + "fileId": "XtzeyYW0vAgjaDTmi06BgH" }, { "__type__": "cc.PrefabInfo", @@ -294,7 +294,7 @@ "asset": { "__id__": 0 }, - "fileId": "RvaYrR09qerZp7hdyLyfi4", + "fileId": "CCQyXKYSldKYixjmKQyBR7", "instance": null, "targetOverrides": null, "nestedPrefabInstanceRoots": null @@ -378,7 +378,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "edrmoIX3sEqHpEDVcZ7ngh" + "fileId": "0Mg6XQRNDlMBfUImLl4xxY" }, { "__type__": "cc.Sprite", @@ -423,7 +423,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "1nbsoyZUZ08g0BL2vyBCw0" + "fileId": "arAuZ0PpZvtNgPinh74eZ1" }, { "__type__": "cc.Widget", @@ -455,7 +455,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "fcFFI9lb0nmhN8mhwsguMB" + "fileId": "09CleamlDzqz1RinZyxJEe" }, { "__type__": "cc.PrefabInfo", @@ -465,7 +465,7 @@ "asset": { "__id__": 0 }, - "fileId": "ApJiAjt9QiZuDkS8RUIT3F", + "fileId": "rZzxnWHY7Ippf3rrsdlVsf", "instance": null, "targetOverrides": null, "nestedPrefabInstanceRoots": null @@ -549,7 +549,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "Qtrr6UEkSWlIScZnohdC4t" + "fileId": "J5nd70IDoqSeoYpblm1SQX" }, { "__type__": "cc.Sprite", @@ -594,7 +594,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "9EZ23U5H4iKBPiB92pQYRw" + "fileId": "wfePXNUMjBMQYe3YsF56NY" }, { "__type__": "cc.Widget", @@ -626,7 +626,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "ubWz0YxR2HftAAGvixGkL4" + "fileId": "jrxPOGiIa1kqw5KgnPSWt0" }, { "__type__": "cc.PrefabInfo", @@ -636,7 +636,7 @@ "asset": { "__id__": 0 }, - "fileId": "KERZz284qNxfS1DojvS3Lp", + "fileId": "NbAXSG7uByHwfQnrOBhGCw", "instance": null, "targetOverrides": null, "nestedPrefabInstanceRoots": null @@ -720,7 +720,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "7RxBWcb1rMF1mb27WMzxEt" + "fileId": "HKWZesJAsszTjyYAxaxEB0" }, { "__type__": "cc.Sprite", @@ -765,7 +765,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "Ea4PMzZ0LqtdrWqe08m36j" + "fileId": "XLannaAXrnUrPU0C6URFQu" }, { "__type__": "cc.Widget", @@ -797,7 +797,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "WY4oscIEVUBRMAH627IU9R" + "fileId": "IHoa97vActqBkyNsNLWaAv" }, { "__type__": "cc.PrefabInfo", @@ -807,7 +807,7 @@ "asset": { "__id__": 0 }, - "fileId": "vGvQQ4eaN3SQRDOP7p0S5L", + "fileId": "GHeeTorUmowZVS93Ho1SAt", "instance": null, "targetOverrides": null, "nestedPrefabInstanceRoots": null @@ -838,7 +838,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "jmuupytmW3wxBbCdcFHCw8" + "fileId": "Pn47cX8ZcdIDpnkdhn6yGi" }, { "__type__": "cc.Widget", @@ -874,7 +874,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "nNMwJ2Dk1SMBp326XXoGyA" + "fileId": "jeUx1uMSCPCPCUPV8EuKxG" }, { "__type__": "cc.PrefabInfo", @@ -884,7 +884,7 @@ "asset": { "__id__": 0 }, - "fileId": "LZDCXwjSMs5CI1HJVsNO4k", + "fileId": "QqLQr6Qt0vi3qeiNoRz9ry", "instance": null, "targetOverrides": null, "nestedPrefabInstanceRoots": null @@ -915,7 +915,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "CdA6w9o9f6p7j3Mez6OQc1" + "fileId": "UEYEyd7T0SF5X9juUEN5ag" }, { "__type__": "cc.Widget", @@ -951,7 +951,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "jm2gaYOQ4loFiPn0eK9hw5" + "fileId": "9KAbWtG3eD1a12O065OBh7" }, { "__type__": "cc.PrefabInfo", @@ -961,7 +961,7 @@ "asset": { "__id__": 0 }, - "fileId": "DK8xdjdZ9gKkBOLPIrwSHR", + "fileId": "hYX7ba3RBk6ERJ3TnJgoLI", "instance": null, "targetOverrides": null, "nestedPrefabInstanceRoots": null diff --git a/cocoscreator_projects/framework-tests/config/local-config-fetcher.test.ts b/cocoscreator_projects/framework-tests/config/local-config-fetcher.test.ts index 4655aa7..8f172ab 100644 --- a/cocoscreator_projects/framework-tests/config/local-config-fetcher.test.ts +++ b/cocoscreator_projects/framework-tests/config/local-config-fetcher.test.ts @@ -6,8 +6,9 @@ import ts from 'typescript'; import { ConfigFetchError, ConfigParseError } from '../../YouleNexus/assets/framework/config/remote-config.ts'; // 在引擎资源边界验证错误、JSON 解析和缓存释放,不以 HTTP 模拟项目资源。 -function fixture(debug: boolean, text: string, error?: Error) { +function fixture(debug: boolean, text: string, error?: Error, debugIO = false) { const calls: string[] = []; + const logs: unknown[][] = []; const exports: any = {}; class TextAsset {} const resources = { @@ -19,15 +20,25 @@ function fixture(debug: boolean, text: string, error?: Error) { const source = readFileSync(new URL('../../YouleNexus/assets/scripts/platform-login/local-config-fetcher.ts', import.meta.url), 'utf8'); runInNewContext(ts.transpileModule(source, { compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2020 }, - }).outputText, { exports, require(name: string) { + }).outputText, { exports, console: {log: (...args:unknown[])=>logs.push(args)}, require(name: string) { if (name === 'cc') return { resources, TextAsset }; if (name === 'cc/env') return { DEBUG: debug }; + if (name.endsWith('/profiles.ts')) return { STARTUP_CONFIG: { debugIO } }; if (name.endsWith('/remote-config.ts')) return { ConfigFetchError, ConfigParseError }; throw Error(`Unexpected import: ${name}`); } }); - return { fetcher: new exports.CocosLocalConfigFetcher(), calls }; + return { fetcher: new exports.CocosLocalConfigFetcher(), calls, logs }; } +test('config logging emits the parsed object and is silent when disabled', async () => { + for(const enabled of [false,true]){ + const f=fixture(true,'{"showVisitor":1}',undefined,enabled); + const data=await f.fetcher.fetch('dev-config/test'); + assert.deepEqual(f.logs,enabled?[['[Config LOCAL]','dev-config/test.txt',data]]:[]); + if(enabled)assert.equal(typeof f.logs[0][2],'object'); + } +}); + test('project txt parses JSON and releases the asset after every load', async () => { const f = fixture(true, '{"showVisitor":1}'); assert.equal((await f.fetcher.fetch('dev-config/test')).showVisitor, 1); diff --git a/cocoscreator_projects/framework-tests/config/profiles.test.ts b/cocoscreator_projects/framework-tests/config/profiles.test.ts index 5a4ca7d..d75867d 100644 --- a/cocoscreator_projects/framework-tests/config/profiles.test.ts +++ b/cocoscreator_projects/framework-tests/config/profiles.test.ts @@ -25,11 +25,11 @@ test('resolveGameServer:空 gameconfig 使用配置源,非空值使用解码 }); test('one frozen source defines the complete default startup configuration', () => { - assert.deepEqual(STARTUP_CONFIG, { mode: 'debug', configSource: 'remote', localConfigResource: 'dev-config/update_jsonv2', gameserver: 'https://tsgames.daoqi88.cn/config_test/update_jsonv2.txt', useLocalServer: true, localServers: ['ws://127.0.0.1:3088'] }); + assert.deepEqual(STARTUP_CONFIG, { debugIO: true, mode: 'debug', configSource: 'remote', localConfigResource: 'dev-config/update_jsonv2', gameserver: 'https://tsgames.daoqi88.cn/config_test/update_jsonv2.txt', useLocalServer: true, localServers: ['ws://127.0.0.1:3088'] }); assert.ok(Object.isFrozen(STARTUP_CONFIG)); assert.ok(Object.isFrozen(STARTUP_CONFIG.localServers)); }); test('source validation rejects malformed configuration without defaults', () => { - for (const patch of [{mode:'other'}, {useLocalServer:undefined}, {gameserver:'ws://host'}, {gameserver:''}, {localServers:[]}, {localServers:['ws://example.com:3088']}, {localServers:['ws://user:pass@localhost']}, {localServers:['ws://localhost/#fragment']}, {localServers:['ws://127.999.0.1']}, {localServers:['not-a-url']}]) { + for (const patch of [{debugIO:undefined}, {debugIO:'true'}, {mode:'other'}, {useLocalServer:undefined}, {gameserver:'ws://host'}, {gameserver:''}, {localServers:[]}, {localServers:['ws://example.com:3088']}, {localServers:['ws://user:pass@localhost']}, {localServers:['ws://localhost/#fragment']}, {localServers:['ws://127.999.0.1']}, {localServers:['not-a-url']}]) { assert.throws(() => validateStartupConfig({...STARTUP_CONFIG,...patch} as any), /startup config/i); } for (const url of ['ws://127.4.3.2:3088','wss://localhost:3088','ws://[::1]:3088']) assert.deepEqual(validateStartupConfig({...STARTUP_CONFIG,localServers:[url]}).localServers,[url]); diff --git a/cocoscreator_projects/framework-tests/net/cocos-transport-logging.test.ts b/cocoscreator_projects/framework-tests/net/cocos-transport-logging.test.ts new file mode 100644 index 0000000..572e77b --- /dev/null +++ b/cocoscreator_projects/framework-tests/net/cocos-transport-logging.test.ts @@ -0,0 +1,55 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import {readFileSync} from 'node:fs'; +import {runInNewContext} from 'node:vm'; +import ts from 'typescript'; + +test('wire logs correctly label both directions and preserve transmitted frames',()=>{ + for(const debugIO of [false,true]){ + const logs:unknown[][]=[],sent:string[]=[],received:string[]=[]; + let socket:any; + class WebSocket { + constructor(readonly url:string){socket=this;} + send(frame:string){sent.push(frame);} + } + const exports:any={}; + const source=readFileSync(new URL('../../YouleNexus/assets/framework/net/cocos-transport.ts',import.meta.url),'utf8'); + runInNewContext(ts.transpileModule(source,{compilerOptions:{module:ts.ModuleKind.CommonJS,target:ts.ScriptTarget.ES2020}}).outputText, + {exports,WebSocket,console:{log:(...args:unknown[])=>logs.push(args)},require:()=>({STARTUP_CONFIG:{debugIO}})}); + const transport=new exports.CocosWebSocketTransport();transport.onMessage((s:string)=>received.push(s));transport.connect('ws://test'); + const frame='{"route":"agent","rpc":"player_login","data":{"state":0}}'; + transport.send(frame);socket.onmessage({data:frame});socket.onmessage({data:'{"com":"@serverheartbeat"}'}); + assert.deepEqual(sent,[frame]);assert.equal(received[0],frame); + const frames=logs.filter(args=>String(args[0]).includes('包 ')); + assert.equal(frames.length,debugIO?3:0); + if(debugIO){ + assert.equal(frames[0][0],'[发包 C→S] agent/player_login'); + assert.equal(frames[1][0],'[收包 S→C] agent/player_login'); + assert.equal(frames[2][0],'[收包 S→C] @serverheartbeat'); + assert.equal(typeof frames[0][2],'object'); + } + else assert.equal(logs.length,0); + } +}); + +test('connection debug logs preserve close evidence and are disabled by debugIO',()=>{ + for(const debugIO of [false,true]){ + const logs:any[][]=[];let socket:any,opened=0,closed=0; + class WebSocket { + readyState=0; + constructor(readonly url:string){socket=this;} + close(){this.readyState=3;this.onclose({code:1006,reason:'test disconnect',wasClean:false});} + onclose:any; + } + const exports:any={}; + const source=readFileSync(new URL('../../YouleNexus/assets/framework/net/cocos-transport.ts',import.meta.url),'utf8'); + runInNewContext(ts.transpileModule(source,{compilerOptions:{module:ts.ModuleKind.CommonJS,target:ts.ScriptTarget.ES2020}}).outputText, + {exports,WebSocket,console:{log:(...args:any[])=>logs.push(args)},require:()=>({STARTUP_CONFIG:{debugIO}})}); + const transport=new exports.CocosWebSocketTransport(); + transport.onOpen(()=>opened++);transport.onClose(()=>closed++);transport.connect('ws://test'); + socket.readyState=1;socket.onopen();socket.onerror({type:'error'}); + assert.equal(opened,1);assert.equal(closed,1); + assert.deepEqual(logs.map(x=>x[0]),debugIO?['[WebSocket] 连接中','[WebSocket] 已连接','[WebSocket] 连接错误','[WebSocket] 已断开']:[]); + if(debugIO){assert.equal(logs[3][1].code,1006);assert.equal(logs[3][1].reason,'test disconnect');assert.equal(logs[3][1].readyState,3);} + } +}); diff --git a/cocoscreator_projects/framework-tests/platform-login/loading-animation.test.ts b/cocoscreator_projects/framework-tests/platform-login/loading-animation.test.ts index 2861aec..3040b2e 100644 --- a/cocoscreator_projects/framework-tests/platform-login/loading-animation.test.ts +++ b/cocoscreator_projects/framework-tests/platform-login/loading-animation.test.ts @@ -20,6 +20,7 @@ test('login busy state starts Animation once, hides on completion and restarts o const group = {active:false, paths:children}; let playing = false, starts = 0, stops = 0; const panel = Object.create(exports.LoginPanel.prototype); + panel.modal = null; panel.root = {paths:{'group-2/Logining':group}}; panel.loadingAnimation = {defaultClip:{name:'LoginLoading'}, getState:()=>({isPlaying:playing}), play(name: string){assert.equal(name,'LoginLoading');playing=true;starts++;}, stop(){playing=false;stops++;}}; @@ -29,4 +30,8 @@ test('login busy state starts Animation once, hides on completion and restarts o panel.setBusy(false); assert.equal(stops,1); assert.equal(group.active,false); assert.equal(playing,false); panel.setBusy(true); assert.equal(starts,2); + panel.modal = {name:'Layer29_PhoneInfo'}; + panel.setBusy(true); + assert.equal(starts,2);assert.equal(group.active,false);assert.equal(playing,false); + assert.ok(Object.values(children).every(node=>!node.active)); }); diff --git a/cocoscreator_projects/framework-tests/platform-login/lobby-links.test.ts b/cocoscreator_projects/framework-tests/platform-login/lobby-links.test.ts new file mode 100644 index 0000000..56a49a9 --- /dev/null +++ b/cocoscreator_projects/framework-tests/platform-login/lobby-links.test.ts @@ -0,0 +1,9 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { openLobbyUrl } from '../../YouleNexus/assets/framework/adapters/native/lobby-links.ts'; +test('announcement links preserve fixUrl and distinct native timestamp conventions',()=>{ + const calls:unknown[]=[]; + openLobbyUrl('https://example.test/?a=1?b=2',{kind:'settings',browser:u=>calls.push(u)},()=>123); + openLobbyUrl('https://example.test/?a=1?b=2',{kind:'bridge',call:(n,d)=>calls.push([n,d])},()=>123); + assert.deepEqual(calls,['https://example.test/?a=1&b=2×tamp=123',['browser','https://example.test/?a=1&b=2']]); +}); diff --git a/cocoscreator_projects/framework-tests/platform-login/login-accounts.test.ts b/cocoscreator_projects/framework-tests/platform-login/login-accounts.test.ts index 7133d51..2b70458 100644 --- a/cocoscreator_projects/framework-tests/platform-login/login-accounts.test.ts +++ b/cocoscreator_projects/framework-tests/platform-login/login-accounts.test.ts @@ -3,9 +3,32 @@ import assert from 'node:assert/strict'; import { LoginAccounts, nicknameHash } from '../../YouleNexus/assets/framework/adapters/native/login-accounts.ts'; import { resolveLoginPolicy } from '../../YouleNexus/assets/framework/presentation/login-policy.ts'; import { buildLoginRequest } from '../../YouleNexus/assets/framework/protocol/contracts/login-contract.ts'; + +test('logout expires visitor auto-login and clears cached player selection',()=>{ + const values=new Map(); + const service=new LoginAccounts({storage:{removeItem:(k:string)=>{values.delete(k);},getItem:k=>values.get(k)??null,setItem:(k,v)=>{values.set(k,v);}}, + random:()=>0.2,now:()=>100,gameid:'g',agentid:'a',policy:resolveLoginPolicy({raw:{},getValue:k=>k==='showVisitor'?1:null}),submit:()=>{},tip:()=>{}}); + service.setAgreement(true);service.visitor();assert.ok(service.cached()); + service.logout();assert.equal(service.cached(),null); + assert.equal(values.get('tsgame_playerid_ga'),''); +}); +test('logout removes authorization caches and stays logged out after recreating accounts',()=>{ + for(const mode of ['wechat','phone','visitor']){ + const account=JSON.stringify({openid:'old',headimgurl:'a',nickname:'old',sex:1,city:'c',Province:'p',unionid:'old',telphone:'123'}); + const values=new Map([['tsgame_wxinfo',account],['tsgame_devicePlayer',account],['tsgame_visitorinfo',account], + ['tsgame_validtime','100000'],['tsgame_playerid_ga','42'],['tsgame_dLogin','1'],['tsgame_machineId_','installation']]); + const options={storage:{getItem:(k:string)=>values.get(k)??null,setItem:(k:string,v:string)=>{values.set(k,v);},removeItem:(k:string)=>{values.delete(k);}}, + random:()=>0.2,now:()=>100,gameid:'g',agentid:'a',policy:{...resolveLoginPolicy({raw:{},getValue:()=>null}),showVisitor:mode==='visitor',deviceLogin:mode==='phone'},submit:()=>{},tip:()=>{}}; + const service=new LoginAccounts(options);assert.ok(service.cached());service.logout();service.logout(); + assert.equal(values.has('tsgame_wxinfo'),false);assert.equal(values.has('tsgame_devicePlayer'),false); + assert.equal(values.get('tsgame_validtime'),'0');assert.equal(values.get('tsgame_dLogin'),'0');assert.equal(values.get('tsgame_playerid_ga'),''); + assert.equal(new LoginAccounts(options).cached(),null); + assert.equal(values.get('tsgame_visitorinfo'),account);assert.equal(values.get('tsgame_machineId_'),'installation'); + } +}); test('native authorization preserves provider numbers, agreement guard, callback and cache', () => { const values=new Map();const calls:number[]=[];const submitted:any[]=[];const tips:string[]=[]; - const service=new LoginAccounts({storage:{getItem:k=>values.get(k)??null,setItem:(k,v)=>{values.set(k,v);}}, + const service=new LoginAccounts({storage:{removeItem:(k:string)=>{values.delete(k);},getItem:k=>values.get(k)??null,setItem:(k,v)=>{values.set(k,v);}}, settings:{accreditlogin:p=>calls.push(p),getcompareCode:()=>0},random:()=>0.2,now:()=>100, gameid:'g',agentid:'a',policy:resolveLoginPolicy({raw:{},getValue:()=>null}),submit:(a,d)=>submitted.push([a,d]),tip:t=>tips.push(t)}); service.setAgreement(false);service.authorize('wechat');assert.deepEqual(calls,[]);assert.deepEqual(tips,['未同意协议']); @@ -16,7 +39,7 @@ test('native authorization preserves provider numbers, agreement guard, callback }); test('all login paths require the current agreement and rejected paths have no side effects',()=>{ const values=new Map(),tips:string[]=[],submitted:unknown[]=[],native:number[]=[]; - const service=new LoginAccounts({storage:{getItem:k=>values.get(k)??null,setItem:(k,v)=>{values.set(k,v);}}, + const service=new LoginAccounts({storage:{removeItem:(k:string)=>{values.delete(k);},getItem:k=>values.get(k)??null,setItem:(k,v)=>{values.set(k,v);}}, settings:{getcompareCode:()=>0,accreditlogin:p=>native.push(p)},random:()=>0.2,now:()=>100, gameid:'g',agentid:'a',policy:resolveLoginPolicy({raw:{},getValue:()=>null}),submit:a=>submitted.push(a),tip:t=>tips.push(t)}); assert.equal(service.agreed,true);service.setAgreement(false); @@ -29,7 +52,7 @@ test('all login paths require the current agreement and rejected paths have no s }); test('successful device login persists server identity for the next automatic login', () => { const values=new Map();const submitted:any[]=[]; - const service=new LoginAccounts({storage:{getItem:k=>values.get(k)??null,setItem:(k,v)=>{values.set(k,v);}}, + const service=new LoginAccounts({storage:{removeItem:(k:string)=>{values.delete(k);},getItem:k=>values.get(k)??null,setItem:(k,v)=>{values.set(k,v);}}, random:()=>0.2,now:()=>100,gameid:'g',agentid:'a',policy:{...resolveLoginPolicy({raw:{},getValue:()=>null}),deviceLogin:true}, submit:(a,d)=>submitted.push([a,d]),tip:()=>{}}); service.loginSucceeded({state:0,playerid:42,openid:'server-o',avatar:'server-a',nickname:'server-n',sex:2,city:'c',province:'p',unionid:'u',tel:'13800138000'}, {enabled:true,telphone:'13800138000'}); @@ -39,21 +62,40 @@ test('successful device login persists server identity for the next automatic lo }); test('visitor login and cached visitor stay phone-free when both login buttons are enabled', () => { const values=new Map();const submitted:any[]=[]; - const options={storage:{getItem:(k:string)=>values.get(k)??null,setItem:(k:string,v:string)=>{values.set(k,v);}}, + const options={storage:{removeItem:(k:string)=>{values.delete(k);},getItem:(k:string)=>values.get(k)??null,setItem:(k:string,v:string)=>{values.set(k,v);}}, random:()=>0.2,now:()=>100,gameid:'g',agentid:'a',policy:{...resolveLoginPolicy({raw:{},getValue:()=>null}),showVisitor:true,deviceLogin:true}, submit:(a:unknown,d:unknown)=>submitted.push([a,d]),tip:()=>{}}; const service=new LoginAccounts(options); service.visitor();assert.deepEqual(submitted[0][1],{enabled:false}); - assert.doesNotThrow(()=>service.loginSucceeded({state:0,playerid:42},submitted[0][1])); + const response={state:0,playerid:42,openid:'server',avatar:'a',nickname:'n',sex:0,city:'c',province:'p',unionid:'server'}; + assert.doesNotThrow(()=>service.loginSucceeded(response,submitted[0][1])); assert.equal(values.get('tsgame_playerid_ga'),'42'); - assert.equal(values.has('tsgame_devicePlayer'),false);assert.equal(values.has('tsgame_dLogin'),false); + assert.equal(JSON.parse(values.get('tsgame_devicePlayer')!).sex,0);assert.equal(values.get('tsgame_dLogin'),'1'); const reloaded=new LoginAccounts(options);reloaded.autoLogin(); assert.deepEqual(submitted[1],[submitted[0][0],{enabled:false}]); - assert.doesNotThrow(()=>reloaded.loginSucceeded({state:0,playerid:42},submitted[1][1])); + assert.doesNotThrow(()=>reloaded.loginSucceeded(response,submitted[1][1])); +}); + +test('phone cache writes match legacy before submit, denial, and successful server response',()=>{ + for(const showVisitor of [false,true])for(const deviceLogin of [false,true]){ + const values=new Map();let now=100;let submitted:any; + const service=new LoginAccounts({storage:{getItem:k=>values.get(k)??null,setItem:(k,v)=>{values.set(k,v);},removeItem:k=>{values.delete(k);}}, + random:()=>0.2,now:()=>now,gameid:'g',agentid:'a',policy:{...resolveLoginPolicy({raw:{},getValue:()=>null}),showVisitor,deviceLogin}, + submit:(account,mode)=>{submitted={account,mode};assert.equal(values.has('tsgame_visitorinfo'),showVisitor);assert.equal(values.has('tsgame_devicePlayer'),false);},tip:()=>{}}); + service.phone('00123','000456'); + const before=[...values];assert.throws(()=>service.loginSucceeded({state:-1,msg:'短信验证码不正确'},submitted.mode));assert.deepEqual([...values],before); + now=200; + service.loginSucceeded({state:0,playerid:42,openid:'server',avatar:'avatar',nickname:'server name',sex:0,city:'city',province:'province',unionid:'server union',tel:'00123'},submitted.mode); + assert.equal(values.has('tsgame_devicePlayer'),deviceLogin); + if(deviceLogin){assert.deepEqual(JSON.parse(values.get('tsgame_devicePlayer')!),{openid:'server',headimgurl:'avatar',nickname:'server name',sex:0,city:'city',Province:'province',unionid:'server union',telphone:'00123'});assert.equal(values.get('tsgame_validtime'),String(200+48*60*60*1000));assert.equal(values.get('tsgame_dLogin'),'1');} + if(showVisitor)assert.equal(JSON.parse(values.get('tsgame_visitorinfo')!).openid,'phone_00123'); + assert.equal(values.get('tsgame_playerid_ga'),'42'); + assert.equal([...values.values()].some(v=>v.includes('000456')),false,'SMS code is not persisted'); + } }); test('global and WVJB authorization retain their distinct legacy cache destinations', () => { const values=new Map(); - const service=new LoginAccounts({storage:{getItem:k=>values.get(k)??null,setItem:(k,v)=>{values.set(k,v);}}, + const service=new LoginAccounts({storage:{removeItem:(k:string)=>{values.delete(k);},getItem:k=>values.get(k)??null,setItem:(k,v)=>{values.set(k,v);}}, random:()=>0.2,now:()=>100,gameid:'g',agentid:'a',policy:{...resolveLoginPolicy({raw:{},getValue:()=>null}),showVisitor:true},submit:()=>{},tip:()=>{}}); const data={openid:'o',headimgurl:'a',nickname:'n',sex:1,city:'c',Province:'p',unionid:'u'}; service.acceptNative(data,'global');assert.ok(values.has('tsgame_visitorinfo'));assert.equal(values.has('tsgame_wxinfo'),false); @@ -63,9 +105,22 @@ test('legacy nickname MD5 matches standard vectors',()=>{ assert.equal(nicknameHash(''),'d41d8cd98f00b204e9800998ecf8427e'); assert.equal(nicknameHash('abc'),'900150983cd24fb0d6963f7d28e17f72'); }); +test('phone login preserves leading zeros and legacy visitor cache before submitting', () => { + const values=new Map();const tips:string[]=[];const submissions:unknown[]=[]; + const service=new LoginAccounts({storage:{removeItem:(k:string)=>{values.delete(k);},getItem:k=>values.get(k)??null,setItem:(k,v)=>{values.set(k,v);}}, + random:()=>0.2,now:()=>100,gameid:'g',agentid:'a',policy:{...resolveLoginPolicy({raw:{},getValue:()=>null}),showVisitor:true}, + submit:(account,mode)=>{assert.equal(JSON.parse(values.get('tsgame_visitorinfo')!).telphone,'00123');submissions.push([account,mode]);},tip:m=>tips.push(m)}); + service.phone('','000456');service.phone('00123',''); + assert.equal(submissions.length,0);assert.equal(values.size,0); + assert.deepEqual(tips,['手机号与验证码均不能为空!','手机号与验证码均不能为空!']); + service.phone('00123','000456'); + assert.deepEqual((submissions[0] as unknown[])[1],{enabled:true,telphone:'00123',smmcode:'000456'}); + assert.equal(values.has('tsgame_devicePlayer'),false); +}); + test('phone login emits original sms fields and does not masquerade as cached auto login', () => { const values=new Map();const submitted:any[]=[]; - const service=new LoginAccounts({storage:{getItem:k=>values.get(k)??null,setItem:(k,v)=>{values.set(k,v);}}, + const service=new LoginAccounts({storage:{removeItem:(k:string)=>{values.delete(k);},getItem:k=>values.get(k)??null,setItem:(k,v)=>{values.set(k,v);}}, random:()=>0.2,now:()=>100,gameid:'g',agentid:'a',policy:resolveLoginPolicy({raw:{},getValue:()=>null}), submit:(a,d)=>submitted.push([a,d]),tip:()=>{}}); service.phone('13800138000','123456'); diff --git a/cocoscreator_projects/framework-tests/platform-login/login-policy.test.ts b/cocoscreator_projects/framework-tests/platform-login/login-policy.test.ts index e487598..07d5db9 100644 --- a/cocoscreator_projects/framework-tests/platform-login/login-policy.test.ts +++ b/cocoscreator_projects/framework-tests/platform-login/login-policy.test.ts @@ -10,10 +10,10 @@ const remote = (values: Record) => ({raw:values,getValue:(key:s test('source defaults and channel overrides retain legacy button order', () => { const policy = resolveLoginPolicy(remote({})); assert.deepEqual(loginButtons(policy, 0, false), {wechat:true,visitor:false,phone:false,quick:false,qq:false,account:false}); - assert.deepEqual(loginButtons(policy, 1, false), {wechat:true,visitor:true,phone:false,quick:false,qq:false,account:false}); + assert.deepEqual(loginButtons(policy, 1, false), {wechat:false,visitor:true,phone:false,quick:false,qq:false,account:false}); const configured = resolveLoginPolicy(remote({deviceLogin:1,hall_config:{showVisitor:1,qqLogin:1}})); - assert.deepEqual(loginButtons(configured, 0, false), {wechat:false,visitor:true,phone:true,quick:false,qq:true,account:false}); - assert.deepEqual(loginButtons(configured, 0, true), {wechat:false,visitor:true,phone:false,quick:false,qq:true,account:true}); + assert.deepEqual(loginButtons(configured, 0, false), {wechat:false,visitor:true,phone:false,quick:false,qq:false,account:false}); + assert.deepEqual(loginButtons(configured, 0, true), {wechat:false,visitor:true,phone:false,quick:false,qq:false,account:true}); }); test('invalid upstream login options fail at the config source', () => { assert.throws(()=>resolveLoginPolicy(remote({deviceLogin:'yes'})), /deviceLogin/); @@ -34,7 +34,7 @@ test('build identity selects its own remote agent showVisitor through to login b assert.equal(resolved.identity.channelid,'aouv0LotK0pYyQ0Pdrx0CsdcaezfzrcG'); const buttons=loginButtons(resolveLoginPolicy(resolved.remoteConfig),0,false); assert.equal(buttons.visitor,true);assert.equal(buttons.wechat,false); - assert.equal(buttons.phone,true,'market deviceLogin and agent showVisitor both take effect'); + assert.equal(buttons.phone,false,'visitor visibility takes precedence over deviceLogin'); const other=await resolveRuntimeConfig({...options,search:'?agentid=veRa0qrBf0df2K1G4de2tgfmVxB2jxpv'}); assert.equal(resolveLoginPolicy(other.remoteConfig).showVisitor,false,'must not read another agent configuration'); }); diff --git a/cocoscreator_projects/framework-tests/platform-login/scene-flow.test.ts b/cocoscreator_projects/framework-tests/platform-login/scene-flow.test.ts index 654d48b..685ef76 100644 --- a/cocoscreator_projects/framework-tests/platform-login/scene-flow.test.ts +++ b/cocoscreator_projects/framework-tests/platform-login/scene-flow.test.ts @@ -1,11 +1,22 @@ import test from 'node:test'; import assert from 'node:assert/strict'; import { SceneFlow } from '../../YouleNexus/assets/scripts/platform-login/scene-flow.ts'; + +test('repeated lobby notifications share one pending transition and bind once',async()=>{ + const calls:string[]=[]; + const flow=new SceneFlow(async name=>{calls.push(name);}); + await Promise.all([flow.enterOnce('Lobby',()=>{calls.push('bind');}),flow.enterOnce('Lobby',()=>{calls.push('duplicate');})]); + await flow.enterOnce('Lobby',()=>{calls.push('duplicate');}); + assert.deepEqual(calls,['Lobby','bind']); + await flow.enter('Login',()=>{}); + await flow.enterOnce('Lobby',()=>{calls.push('new');}); + assert.deepEqual(calls,['Lobby','bind','Login','Lobby','new']); +}); test('scene transitions are sequential and disposal prevents late scene binding',async()=>{ const calls:string[]=[];let finish!:()=>void; const flow=new SceneFlow(async name=>{calls.push(name);if(name==='Loading')await new Promise(r=>finish=r);}); - const loading=flow.enter('Loading',()=>calls.push('bindLoading')); - const login=flow.enter('Login',()=>calls.push('bindLogin')); + const loading=flow.enter('Loading',()=>{calls.push('bindLoading');}); + const login=flow.enter('Login',()=>{calls.push('bindLogin');}); await Promise.resolve();assert.deepEqual(calls,['Loading']);finish();await loading;await login; assert.deepEqual(calls,['Loading','bindLoading','Login','bindLogin']); flow.dispose();await assert.rejects(flow.enter('Login',()=>{}),/disposed/); diff --git a/cocoscreator_projects/framework-tests/platform/platform-store.test.ts b/cocoscreator_projects/framework-tests/platform/platform-store.test.ts index a260af0..8f5e947 100644 --- a/cocoscreator_projects/framework-tests/platform/platform-store.test.ts +++ b/cocoscreator_projects/framework-tests/platform/platform-store.test.ts @@ -42,6 +42,7 @@ test('applyLoginSuccess commits the complete login once and notifies once', () = sex: 0, bean: 0, ip: '127.0.0.1', + roomcard: 3, taskstate: 1, score: 0, sign: null, }); assert.deepEqual(state.room, { kind: 'outside' }); }); diff --git a/cocoscreator_projects/framework-tests/platform/runtime.test.ts b/cocoscreator_projects/framework-tests/platform/runtime.test.ts index fdef004..3d6822e 100644 --- a/cocoscreator_projects/framework-tests/platform/runtime.test.ts +++ b/cocoscreator_projects/framework-tests/platform/runtime.test.ts @@ -267,6 +267,7 @@ class RecordingScene implements ScenePort { showRoom(): void { this.record('room'); } showReconnect(): void { this.record('reconnect'); } showKicked(data: unknown): void { this.record('kicked', data); } + showTips(message:string,time:number):void { this.record('tips',{message,time}); } showServerDenial(outcome: unknown): void { this.record('denied', outcome); } showFatal(error: Error): void { this.record('fatal', error); } } @@ -717,22 +718,27 @@ for (const count of [0, 2.5, 2]) { }); } -test('a nonzero login outcome clears its guard, retains state and permits account retry', async () => { +for(const loginRoute of ['agent','room','platform'])test(`${loginRoute} login denial clears its guard, retains state and permits account retry`, async () => { const { runtime, wire, scene, clock } = makeRuntime(); await runtime.start(); wire.emit({ type: 'open', server: 'ws://agent' }); const before = runtime.state; runtime.login(ACCOUNT); - const denial = { state: 7, roomcode: 'unavailable', showerror: 1, error: 'Login denied' }; - wire.emit({ type: 'message', message: { route: 'agent', rpc: 'player_login', data: denial } }); + const denial = { state: -1, msg: '短信验证码不正确', time: 0 }; + assert.equal(wire.sent.at(-1)?.route,'agent','outbound login remains agent'); + wire.emit({ type: 'message', message: { route: loginRoute, rpc: 'player_login', data: denial } }); assert.equal(runtime.state, before); assert.equal(wire.stopCalls, 0); assert.equal(clock.timers.size, 0); const outcome = scene.calls.find(call => call.name === 'denied')?.value; - assert.deepEqual(outcome, { rpc: 'player_login', state: 7, data: denial }); + assert.deepEqual(outcome, { rpc: 'player_login', state: -1, data: denial }); assert.equal((outcome as { data: unknown }).data, denial); assert.deepEqual(scene.calls.filter(call => call.name === 'fatal'), []); + const sentBeforeReconnect=wire.sent.length; + wire.emit({type:'reconnecting',server:'ws://agent'}); + wire.emit({type:'open',server:'ws://agent'}); + assert.equal(wire.sent.length,sentBeforeReconnect,'a denied first login must not be replayed'); runtime.login({ ...ACCOUNT, openid: 'retry-account' }); assert.equal((wire.sent[wire.sent.length - 1]!.data as Record).openid, 'retry-account'); wire.emit({ type: 'message', message: { @@ -1570,6 +1576,29 @@ test('slow and reconnecting show reconnect without clearing or replacing room st ); }); +test('kick_offline bypasses pending login and stops late navigation', async () => { + const {runtime,wire,scene}=makeRuntime(); + await runtime.start();wire.emit({type:'open',server:'ws://agent'});runtime.login(ACCOUNT); + const data={fromOther:true,gameid:'another-game'}; + wire.emit({type:'message',message:{route:'agent',rpc:'kick_offline',data}}); + assert.equal(scene.calls.at(-1)?.name,'kicked');assert.equal(scene.calls.at(-1)?.value,data); + assert.equal(wire.stopCalls,1); + const count=scene.calls.length;wire.emit({type:'open',server:'ws://agent'}); + assert.equal(scene.calls.length,count); +}); + +test('show_message preserves text and legacy numeric timeout without navigating', async () => { + const {runtime,wire,scene}=makeRuntime(); + await runtime.start();wire.emit({type:'open',server:'ws://agent'}); + const before=runtime.state; + for(const time of ['3000','0','-1']){ + wire.emit({type:'message',message:{route:'agent',rpc:'show_message',data:{msg:'服务器提示#第二行',time}}}); + assert.deepEqual(scene.calls.at(-1),{name:'tips',value:{message:'服务器提示#第二行',time:Number(time)}}); + assert.equal(runtime.state,before); + } + runtime.stop(); +}); + test('kick closes the game before showing kicked and stopping the wire', async () => { const log: string[] = []; const restored: unknown[] = []; diff --git a/cocoscreator_projects/framework-tests/presentation/lobby-model.test.ts b/cocoscreator_projects/framework-tests/presentation/lobby-model.test.ts new file mode 100644 index 0000000..c26047b --- /dev/null +++ b/cocoscreator_projects/framework-tests/presentation/lobby-model.test.ts @@ -0,0 +1,25 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { readFileSync } from 'node:fs'; +import { PlatformStore } from '../../YouleNexus/assets/framework/platform/stores/platform-store.ts'; +import { parseLoginResponse } from '../../YouleNexus/assets/framework/protocol/contracts/login-contract.ts'; + +const response = () => JSON.parse(readFileSync(new URL('../fixtures/contracts/player-login-success.json', import.meta.url), 'utf8')).data; +test('login publishes server assets and task status, including subsequent login changes', () => { + const store = new PlatformStore(); + const data = response(); + store.applyLoginSuccess(parseLoginResponse(data)); + const self = () => store.getState().players.entities[data.playerid] as any; + assert.equal(self().roomcard, 3); + assert.equal(self().taskstate, 1); + assert.equal(self().score, 0); + assert.equal(self().sign, null); + store.applyLoginSuccess(parseLoginResponse({...data, roomcard:8, taskstate:0})); + assert.equal(self().roomcard, 8); + assert.equal(self().taskstate, 0); +}); +test('invalid supplied asset fields reject the complete login without publishing partial state', () => { + const store = new PlatformStore(), before = store.getState(); + assert.throws(() => store.applyLoginSuccess(parseLoginResponse({...response(), roomcard:'3'})), /roomcard/); + assert.equal(store.getState(), before); +}); diff --git a/cocoscreator_projects/framework-tests/presentation/lobby-policy.test.ts b/cocoscreator_projects/framework-tests/presentation/lobby-policy.test.ts new file mode 100644 index 0000000..d94b7d2 --- /dev/null +++ b/cocoscreator_projects/framework-tests/presentation/lobby-policy.test.ts @@ -0,0 +1,21 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { createRemoteConfig } from '../../YouleNexus/assets/framework/config/remote-config.ts'; +import { resolveLobbyPolicy, shouldShowNotice, selectLobbyModel } from '../../YouleNexus/assets/framework/presentation/lobby-model.ts'; +const identity = {agentid:'a',gameid:'g',channelid:'c',marketid:'m',version:1}; +test('announcement interval preserves strict expiry and never shows on reconnect',()=>{ + assert.equal(shouldShowNotice(0, null, 1000, false),true); + assert.equal(shouldShowNotice(-1, null, 1000, false),false); + assert.equal(shouldShowNotice(1, 1000, 3601000, false),false); + assert.equal(shouldShowNotice(1, 1000, 3601001, false),true); + assert.equal(shouldShowNotice(0, null, 1000, true),false); +}); +test('notice configuration follows the same channel source and replaces legacy line breaks',()=>{ + const p=resolveLobbyPolicy(createRemoteConfig({noticemsg:'global',agentlist:[{agentid:'a',menunotice:{advert0:{type:0,msg:'one#two',url:''}}}]},identity)); + assert.equal(p.notices[0].text,'one\ntwo'); + assert.equal(p.noticeHours,0); + assert.throws(()=>resolveLobbyPolicy(createRemoteConfig({gameNoticeShow:'bad'},identity)),/gameNoticeShow/); +}); +test('lobby rejects incomplete self assets instead of displaying invented zeroes',()=>{ + assert.throws(()=>selectLobbyModel({app:{phase:'logged-in'},room:{kind:'outside'},players:{selfPlayerId:7,entities:{7:{playerid:7,nickname:'A',avatar:'',sex:0,bean:0}}}}),/roomcard/); +}); diff --git a/cocoscreator_projects/framework-tests/protocol/first-slice-routes.test.ts b/cocoscreator_projects/framework-tests/protocol/first-slice-routes.test.ts index c05abb9..913696f 100644 --- a/cocoscreator_projects/framework-tests/protocol/first-slice-routes.test.ts +++ b/cocoscreator_projects/framework-tests/protocol/first-slice-routes.test.ts @@ -18,6 +18,8 @@ test('FIRST_SLICE_RPC_ROUTE 是第一纵向切片唯一且精确的 rpc route connect_roomserver: 'room', connect_agentserver: 'agent', kick_server: 'agent', + kick_offline: 'agent', + show_message: 'agent', }); }); diff --git a/cocoscreator_projects/framework-tests/protocol/platform-handlers.test.ts b/cocoscreator_projects/framework-tests/protocol/platform-handlers.test.ts index e0b671a..8ad38c1 100644 --- a/cocoscreator_projects/framework-tests/protocol/platform-handlers.test.ts +++ b/cocoscreator_projects/framework-tests/protocol/platform-handlers.test.ts @@ -489,7 +489,7 @@ test('unknown and every route-mismatched platform rpc leave all observable state } for (const [rpc, expectedRoute] of rpcsByRoute) { for (const route of ['platform', 'agent', 'room'] as const) { - if (route === expectedRoute) continue; + if (route === expectedRoute || rpc==='player_login') continue; assert.throws( () => setup.router.dispatch({ route, rpc, data: {} }), /route mismatch/i, diff --git a/cocoscreator_projects/framework-tests/protocol/router.test.ts b/cocoscreator_projects/framework-tests/protocol/router.test.ts index b8ad63a..19e3bca 100644 --- a/cocoscreator_projects/framework-tests/protocol/router.test.ts +++ b/cocoscreator_projects/framework-tests/protocol/router.test.ts @@ -134,7 +134,7 @@ test('Router login gate enforces the complete route by rpc cross matrix', () => const message: InboundMessage = { route, rpc, data: { marker: `${route}:${rpc}` } }; gate.markLoginPending(); - const passes = route === 'agent' && (rpc === 'player_login' || rpc === 'kick_server'); + const passes = (rpc==='player_login'&&route!=='fixture-game')||(route === 'agent' && (rpc === 'kick_server' || rpc === 'kick_offline')); assert.equal( router.dispatch(message), passes ? 'handled-platform' : 'ignored-login-gate', diff --git a/docs/protocol/02-协议-agent路由.md b/docs/protocol/02-协议-agent路由.md index c077913..459de3d 100644 --- a/docs/protocol/02-协议-agent路由.md +++ b/docs/protocol/02-协议-agent路由.md @@ -12,6 +12,7 @@ ## 登录 / 账号 ### `player_login` · route=agent · C→S 请求 + S→C 响应 +- 接收路由补充(2026-09-06 实包核对):C→S 仍为 `agent/player_login`;S→C 可以是 `agent`、`room` 或 `platform` 下的 `player_login`。原工程 `12_Logic.js:238-260` 按 rpc 解除登录等待,再把这三类平台路由交给 `Net[rpc]`。已实测短信验证码失败为 `room/player_login`,data 为 `{msg:"短信验证码不正确",state:-1,time:0}`;必须解除等待并交给登录失败处理,不能因响应 route 与发包 route 不同而忽略。 - 场景:连接建立后 `onopen` 自动发送;断线重连、切服后重发(12_Logic.js:35、:61 构造,09_Net.js:122 `Send_login` 注入)。 - 请求字段(C→S): | 字段 | 类型 | 说明 | diff --git a/docs/superpowers/reports/2026-09-06-post-login-lobby-acceptance.md b/docs/superpowers/reports/2026-09-06-post-login-lobby-acceptance.md new file mode 100644 index 0000000..df0b8a6 --- /dev/null +++ b/docs/superpowers/reports/2026-09-06-post-login-lobby-acceptance.md @@ -0,0 +1,37 @@ +# 登录后大厅第一批接线验收 + +日期:2026-09-06。分支:`codex/post-login-lobby`。工程:`cocoscreator_projects/YouleNexus`。 + +## 已接入 + +- 登录成功切换到 PlatformLobby;复用已迁移的大厅、顶部信息和公告菜单 prefab,保持原有 1600×720 资源布局。 +- 登录响应进入 PlatformStore,界面读取当前玩家昵称、ID、头像、房卡、星星、任务提示;必需字段缺失直接报错。 +- 个人资料、公告分页/滚动/链接、设置及退出登录。公告频率读取远程配置;客服信息和星星名称读取同一配置来源。 +- 公告外链遵循原生 settings/WVJB browser 契约;图片切页释放旧纹理。 +- 重复大厅请求复用场景切换;退出清除访客缓存有效期,避免刷新后立即自动登录。 + +未修改服务器、协议路由或数据包结构。场景、组件引用和资源元数据由 Cocos MCP/editor 创建与保存。 + +## 验证 + +- 本地配置和真实 WebSocket 服务完成 Loading → Login → Lobby;响应、Store、界面的玩家 ID 和房卡一致。 +- Creator 预览关闭当前连接后,观察到 close → reconnecting → open → message,最终恢复 logged-in / outside,保持 PlatformLobby、无终止错误、无重复公告,Lobby 场景事件仍仅一次。 +- 并发调用两次 showLobby,大厅子节点数量保持 6,未重复挂载。 +- 浏览器实际检查公告、大厅、个人资料、设置;退出登录后停留登录页。 +- 完整前端回归:715 / 715 通过,0 失败。 +- 仓库 TypeScript 编译器检查 Creator 脚本通过;import-boundaries 检查通过。 +- 测试改写的两份 out/legacy-migration 输出已恢复。 + +运行命令(在 cocoscreator_projects): + +```powershell +node scripts/run-framework-tests.mjs +node node_modules/typescript/bin/tsc -p YouleNexus/tsconfig.json --noEmit --ignoreDeprecations 6.0 --skipLibCheck --target ES2020 --types node --strict +node scripts/check-import-boundaries.mjs +``` + +## 尚未接入 + +任务领取、战绩列表、商城支付等业务 RPC,以及创建/加入房间和子游戏运行。相关入口显示明确提示;加入房间仅接通面板开关。设置中的音乐/音效保存原配置键,本批未新增音频资源播放。未宣称这些业务完成联调。 + +原生外链通过契约单测,尚未在真实原生容器验证。Creator 内置旧编译器的诊断与仓库 TypeScript 版本不兼容,因此以上类型验证使用仓库编译器。资源依赖扫描器会将节点 ID、组件 ID 和属性名误判为 UUID;实际序列化资源引用已由编辑器加载并在预览使用。