feat: integrate room framework and isolated subgame bundles
Complete room UI and protocol integration, move game definitions and resources behind bundle entries, publish authoritative version XML, and document single-game builds. Include all current resource changes and experiment artifacts.
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
[
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/.meta",
|
||||
"change": "missing"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/presentation/room-chat-banned-words.ts.meta",
|
||||
"change": "missing"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,190 @@
|
||||
[
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00239.png.meta",
|
||||
"sha256": "c2c5d8dab2c8b1b42266a30a4f179b4b8a94f534326234ccfcc11edb050d1f29"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00001.png.meta",
|
||||
"sha256": "fc4145c8039c920acdd73ba14986713f235319d61f94260fd2be6f3ec6ebd60b"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer402_GameNotice.prefab",
|
||||
"sha256": "3084add5d567d4e108257d97693c24b27e67a899ec84b860b230e47882e6d52f"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer405_MainButton.prefab",
|
||||
"sha256": "d657c83249a7d7a9a5c80e6e1532f83760be463fc03fff5e9495e7c3a4fc2895"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer413_BtnPanel.prefab",
|
||||
"sha256": "46a4fc04933de389a238119e8fd7385fe824c110c673a2f85aca77820ddd2599"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer418_ChatPannel.prefab",
|
||||
"sha256": "3a9cc737c018bce86c76eb040018f0b7aeede69d96566d9956e60890d9c04ed5"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer420_CheckFree.prefab",
|
||||
"sha256": "bad3e7d13f6f0ec3bd0150d60163a77e0e6c8d373fce36d69bf3177acd62a60d"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer50_MainScene.prefab",
|
||||
"sha256": "492869af16ef769d9b1337e1b9ab95752c0027a789403183966a3f2b32738478"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer602_inputPannel.prefab",
|
||||
"sha256": "1c9ec859d20060d2950045c5160ac40f2e0e5ef998e35b94ca7fe308480f0d41"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer606_Apply.prefab",
|
||||
"sha256": "6e9564af2fb7c76308af932d2ac0fc3aa36bd74b7b19e5c8a6a7a54ce7713c5e"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer607_Cal.prefab",
|
||||
"sha256": "228b52df78e2f642420343098462c6e19ec7acd07d222f920714569bbfc00310"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer612_Tips.prefab",
|
||||
"sha256": "4807e086a20c0d9f9c147816f117945151f6cb75583c77996822fdd4ee6fcc9a"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/MainMenu.prefab",
|
||||
"sha256": "df6d4aaa2d344667681a8b5898c73153a8081c6d12c1d3a255926314148b9851"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/games/erqiwang/ErqiwangCreateRoom.prefab",
|
||||
"sha256": "daca1c06aa0b88a07862150fea5727835231bab326b448ff832a2095e0dc8c45"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/scenes/PlatformStartup.scene",
|
||||
"sha256": "c84a1ab557230fb4c63e1475b30320ca87101cd7bca5f9325e5397f75fdb9941"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/scenes/TemplateRoom.scene",
|
||||
"sha256": "956e835c512ea14873f0e7cf106446243068df1afc09b4dd0e5a37405d1ca848"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/.meta",
|
||||
"sha256": "b1090079c9b7015449474ab624c908a1705629925d137e5fb4180cf6a4c4ff1e"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/adapters/native/platform-native.ts.meta",
|
||||
"sha256": "93ee21b656ff550da27cb30fc4392d16caaa189dfa487b5846d77cd40f1a38ac"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/adapters/native/room-device-status.ts.meta",
|
||||
"sha256": "243952bc2e16389b943edec79a447c4f0b10c4ba0bf955fc3f5821fa44eac9f7"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/adapters/native/room-voice.ts.meta",
|
||||
"sha256": "0ced76ca651f32979aeb38954417f4007d32dbefed071daa0b4131cca50269af"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/platform/stores/dissolution.ts.meta",
|
||||
"sha256": "f514c8a10fd4923eec8ed95b1938029ed070b14cd22e0e64fba7dde6c53935d1"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/presentation/deferred-numeric-tools.ts.meta",
|
||||
"sha256": "e85b524e5fcbdaa6c15c320d58403a4fe6256704c67d7427341b3e1916dcee53"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/presentation/multiplier-model.ts.meta",
|
||||
"sha256": "99058123e4e5529a2658882323471d8ce8d87b77e71dc2bcff7b0b900a9626e9"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/presentation/numeric-input-model.ts.meta",
|
||||
"sha256": "d08a86662675f804e5c1f0f6f7acd8977e2d76237c5fb3aca22faddd8d5db9e7"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/presentation/platform-settings.ts.meta",
|
||||
"sha256": "d47d706eda06c247f8a47162789cf306a26653c966051822baf0b213a795b118"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/presentation/room-broadcast-queue.ts.meta",
|
||||
"sha256": "54e1dda14b15145269fdf4c4a459a4a80c71453f54da4049146308bd6a56d5e9"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/presentation/room-chat-banned-words.ts.meta",
|
||||
"sha256": "2a053343f1ce8e351656483e80b2b4960abd8d3c883959c1e6e5214435c4f9d9"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/presentation/room-chat-config.ts.meta",
|
||||
"sha256": "b4a9f86f5d619ba247389df42f63e06b258b66896a30c28431c03e75f68272ac"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/presentation/room-exit-action.ts.meta",
|
||||
"sha256": "ffc5a92f5c7d143b9f79e5fce0c406f15afb3a6dbd74d77f20a136d6a048d7fb"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/presentation/room-hud-model.ts.meta",
|
||||
"sha256": "c1532550b63ef63dbeb547bc1f6e15fc24fe43c8587c65589064fac2fe831bd8"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/presentation/room-menu-context.ts.meta",
|
||||
"sha256": "2a69292eb0447941f04152a385a4517ea6bfdadb73d4f242847633d90281461e"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/presentation/room-menu-model.ts.meta",
|
||||
"sha256": "b3d26e93603842dcec9f5113a481e74abefbfa63d6d0004ea3c3dca7aa7e0505"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/presentation/room-owner-notice.ts.meta",
|
||||
"sha256": "d7c82b1607bb887024a698488bb9a7bc3ecaa72bed408d95e6a25f64ffd5311f"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/ChatHistoryItem.prefab",
|
||||
"sha256": "9fbccbc82e16d0ceb1e2d2d4f5998389ad4f3d3d1085dc8a0ec6a7578492c3ae"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/ChatHistoryItem.prefab.meta",
|
||||
"sha256": "d26b74fd519586bbfbb074f9b4b0bbd6321ec8ac4b63450f2f9eed7f5c734d58"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/ChatPhraseItem.prefab",
|
||||
"sha256": "2702d1c63c547a365b2905b3a51ef16008979957e67488ed5471824a8bec0707"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/ChatPhraseItem.prefab.meta",
|
||||
"sha256": "1373d2b0f40bbe582470b8d381408ea2474b8fe2d184599c9f825855a3c49914"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/PlayerVoteItem.prefab",
|
||||
"sha256": "5ca55dca02df9c248120d43ab6b2f5e5a3203753e683f6dc2ad4420c2280582f"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/PlayerVoteItem.prefab.meta",
|
||||
"sha256": "979f250326b712c011f98e5dc53053139f3f976c0582916c92e3efedc6ac691b"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/scripts/platform-login/ApplyVotePanel.ts.meta",
|
||||
"sha256": "9e7d223a94cde36df07039c78de886c53e52a0fed50a17a7a99e367c58efdd85"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/scripts/platform-login/NumericToolsPanel.ts.meta",
|
||||
"sha256": "c2e3cd42ecb180fffa5ed168781cf749b2e99803fc73101d51d10d0827bab0c8"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomChatPanel.ts.meta",
|
||||
"sha256": "eadec17510d80c9ac49fae748949735f603927da447cec1064c3f58b9976d607"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomHud.ts.meta",
|
||||
"sha256": "882868bed38b5f17dde5596af134815d65e1dbd3d43cf97084262857403a67b7"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomNoticePanel.ts.meta",
|
||||
"sha256": "c1143dceb379437c7fd2d72cbed55528e0af205889d5be5abab8495deed1a6ac"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomPlatformPanels.ts.meta",
|
||||
"sha256": "83005621e5cfd59e253e3bdb097cde01044e882a0951bed16b977e280b1f8839"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomUi.ts.meta",
|
||||
"sha256": "0b7727fd75d53433c1ab215a3154484a84148098b01c82ff6c9e74667734dfc2"
|
||||
},
|
||||
{
|
||||
"file": "cocoscreator_projects/YouleNexus/assets/scripts/platform-login/apply-vote-model.ts.meta",
|
||||
"sha256": "7e5f8e76a4a9dc6a067d384382a23277b630600d15ff588c76cf275437934803"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,131 @@
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/adapters/native/owned-room-history.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/net/wire-client.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/platform/commands.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/platform/game-host-adapter.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/platform/runtime-session.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/platform/runtime.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/platform/stores/platform-store.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/platform/stores/platform-types.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/protocol/contracts/room-contracts.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/protocol/first-slice-routes.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/protocol/platform-handlers.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/sdk/contracts/game-host.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/sdk/contracts/platform-events.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00239.png.meta
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00001.png
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00001.png.meta
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer402_GameNotice.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer405_MainButton.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer413_BtnPanel.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer418_ChatPannel.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer420_CheckFree.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer50_MainScene.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer602_inputPannel.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer606_Apply.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer607_Cal.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer612_Tips.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/MainMenu.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/games/erqiwang/ErqiwangCreateRoom.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/games/erqiwang/ErqiwangCreateRoomView.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/games/erqiwang/erqiwang-game.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/games/erqiwang/erqiwang-room-rules.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/games/template/TemplateCreateRoomView.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/games/template/TemplateRoomView.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/games/template/template-game.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/scenes/PlatformStartup.scene
|
||||
M cocoscreator_projects/YouleNexus/assets/scenes/TemplateRoom.scene
|
||||
M cocoscreator_projects/YouleNexus/assets/scripts/platform-login/JoinRoomView.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/scripts/platform-login/PlatformStartup.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/scripts/platform-login/lobby-panel.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/scripts/platform-login/login-panel.ts
|
||||
M cocoscreator_projects/YouleNexus/settings/v2/packages/builder.json
|
||||
M cocoscreator_projects/YouleNexus/settings/v2/packages/information.json
|
||||
M cocoscreator_projects/framework-tests/adapters/owned-room-history.test.ts
|
||||
M cocoscreator_projects/framework-tests/legacy-layer-migration/layer418-prefab.test.mjs
|
||||
M cocoscreator_projects/framework-tests/net/wire-client.test.ts
|
||||
M cocoscreator_projects/framework-tests/platform/commands.test.ts
|
||||
M cocoscreator_projects/framework-tests/platform/game-host-adapter.test.ts
|
||||
M cocoscreator_projects/framework-tests/platform/runtime-session.test.ts
|
||||
M cocoscreator_projects/framework-tests/platform/runtime.test.ts
|
||||
M cocoscreator_projects/framework-tests/presentation/erqiwang-room-entry.test.ts
|
||||
M cocoscreator_projects/framework-tests/protocol/first-slice-routes.test.ts
|
||||
M cocoscreator_projects/framework-tests/protocol/platform-handlers.test.ts
|
||||
M docs/protocol/04-数据结构.md
|
||||
?? cocoscreator_projects/YouleNexus/assets/.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/adapters/native/platform-native.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/adapters/native/platform-native.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/adapters/native/room-device-status.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/adapters/native/room-device-status.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/adapters/native/room-voice.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/adapters/native/room-voice.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/platform/stores/dissolution.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/platform/stores/dissolution.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/deferred-numeric-tools.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/deferred-numeric-tools.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/multiplier-model.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/multiplier-model.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/numeric-input-model.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/numeric-input-model.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/platform-settings.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/platform-settings.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-broadcast-queue.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-broadcast-queue.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-chat-banned-words.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-chat-banned-words.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-chat-config.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-chat-config.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-exit-action.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-exit-action.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-hud-model.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-hud-model.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-menu-context.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-menu-context.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-menu-model.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-menu-model.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-owner-notice.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-owner-notice.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/ChatHistoryItem.prefab
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/ChatHistoryItem.prefab.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/ChatPhraseItem.prefab
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/ChatPhraseItem.prefab.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/PlayerVoteItem.prefab
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/PlayerVoteItem.prefab.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/ApplyVotePanel.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/ApplyVotePanel.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/NumericToolsPanel.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/NumericToolsPanel.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomChatPanel.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomChatPanel.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomHud.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomHud.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomNoticePanel.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomNoticePanel.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomPlatformPanels.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomPlatformPanels.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomUi.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomUi.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/apply-vote-model.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/apply-vote-model.ts.meta
|
||||
?? cocoscreator_projects/framework-tests/architecture/player-tip-boundary.test.mjs
|
||||
?? cocoscreator_projects/framework-tests/native/platform-native.test.ts
|
||||
?? cocoscreator_projects/framework-tests/native/room-device-status.test.ts
|
||||
?? cocoscreator_projects/framework-tests/native/room-voice.test.ts
|
||||
?? cocoscreator_projects/framework-tests/platform/dissolution.test.ts
|
||||
?? cocoscreator_projects/framework-tests/platform/room-broadcast.test.ts
|
||||
?? cocoscreator_projects/framework-tests/platform/room-hud-model.test.ts
|
||||
?? cocoscreator_projects/framework-tests/platform/room-social.test.ts
|
||||
?? cocoscreator_projects/framework-tests/presentation/apply-vote-model.test.ts
|
||||
?? cocoscreator_projects/framework-tests/presentation/deferred-numeric-tools.test.ts
|
||||
?? cocoscreator_projects/framework-tests/presentation/dissolution-settlement-boundary.test.ts
|
||||
?? cocoscreator_projects/framework-tests/presentation/numeric-tools.test.ts
|
||||
?? cocoscreator_projects/framework-tests/presentation/platform-settings.test.ts
|
||||
?? cocoscreator_projects/framework-tests/presentation/room-menu-model.test.ts
|
||||
?? cocoscreator_projects/framework-tests/presentation/room-owner-notice.test.ts
|
||||
?? cocoscreator_projects/framework-tests/protocol/roomcode-response.test.ts
|
||||
?? docs/Layer606-解散投票接线.md
|
||||
?? docs/superpowers/plans/2026-09-08-room-platform-refactor.md
|
||||
?? docs/superpowers/specs/2026-09-08-room-platform-api-migration.md
|
||||
?? docs/superpowers/specs/2026-09-08-room-platform-architecture.md
|
||||
?? docs/房间流程审查与架构重构建议.md
|
||||
?? docs/房间菜单与聊天接线.md
|
||||
?? docs/房间顶部广播与数字工具接线.md
|
||||
@@ -0,0 +1,14 @@
|
||||
import {readFileSync,writeFileSync} from 'node:fs';
|
||||
const p='G:/Works/YouleGamesCocosCreator/cocoscreator_projects/YouleNexus/assets/framework/platform/runtime.ts';
|
||||
let s=readFileSync(p,'utf8');
|
||||
s=s.replace("import { GameSessionHost } from '../sdk/runtime/game-session-host.ts';","import {SceneOrderedGameSessionHost} from './room/scene-game-session.ts';\nimport {ROOM_LIFECYCLE_CONFIG} from '../config/room-lifecycle.ts';");
|
||||
s=s.replace(/\/\*\* Keeps the scene transition[\s\S]*?(?=class PlatformRuntimeCleanupError)/,'');
|
||||
s=s.replace(' this.options.scene,\r\n );',` this.options.scene,
|
||||
{...ROOM_LIFECYCLE_CONFIG,clock:this.clock,onFailure:failure=>{
|
||||
if(!this.isTerminal())this.showFatalOnce(failure);
|
||||
}},
|
||||
host=>{if(this.activeGameHostLease?.host===host)this.activeGameHostLease.invalidate();},
|
||||
);`);
|
||||
s=s.replace(" this.options.scene.showReconnect();"," this.gameSession?.cancelPendingMount();\n this.options.scene.showReconnect();");
|
||||
s=s.replace(" case 'close':\r\n this.wireIsOpen = false;"," case 'close':\n this.wireIsOpen = false;\n this.gameSession?.cancelPendingMount();");
|
||||
writeFileSync(p,s);
|
||||
@@ -0,0 +1,15 @@
|
||||
import {readFileSync,writeFileSync,mkdirSync} from 'node:fs';
|
||||
const base='G:/Works/YouleGamesCocosCreator/cocoscreator_projects/YouleNexus/assets/';
|
||||
const path=base+'framework/presentation/room-chat-config.ts';
|
||||
const source=readFileSync(path,'utf8');
|
||||
const corpus=readFileSync(base+'framework/presentation/room-chat-banned-words.ts','utf8');
|
||||
for(const [key,folder,constant] of [['Game_Surface_3','template','ROOM_CHAT_BANNED_WORDS'],['erqiwang','erqiwang','ERQIWANG_CHAT_BANNED_WORDS']]){
|
||||
const begin=source.indexOf(key+':Object.freeze(')+key.length+1;
|
||||
const end=source.indexOf('].map(phrase=>Object.freeze(phrase)))}),',begin)+'].map(phrase=>Object.freeze(phrase)))}),'.length-1;
|
||||
if(begin<key.length+1||end<begin)throw Error('chat extraction failed');
|
||||
const declaration=corpus.split(/\r?\n/).find(line=>line.startsWith('export const '+constant+':'));
|
||||
if(!declaration)throw Error('missing corpus '+constant);
|
||||
writeFileSync(base+'games/'+folder+'/room-chat-config.ts',"import type {RoomChatConfig} from '../../framework/presentation/room-chat-config.ts';\n"+declaration+'\n/** Copied from this game’s original configuration and banned-word source. */\nexport const roomChatConfig:RoomChatConfig='+source.slice(begin,end)+';\n');
|
||||
}
|
||||
writeFileSync(path,source.replace(/^import \{ROOM_CHAT_BANNED_WORDS[^\n]*\r?\n/m,'').replace(/\/\/ Authoritative migration[\s\S]*?(?=\/\*\* Incoming send_text)/,''));
|
||||
mkdirSync(base+'app/composition',{recursive:true});
|
||||
@@ -0,0 +1,17 @@
|
||||
import {readFileSync,writeFileSync} from 'node:fs';
|
||||
const b='G:/Works/YouleGamesCocosCreator/cocoscreator_projects/YouleNexus/assets/';
|
||||
const old=b+'games/template/TemplateRoomView.ts';
|
||||
let src=readFileSync(old,'utf8').replace("import type {TemplateRoomActions,TemplateRoomPresentation} from './template-game.ts';","import type {RoomPresentationActions,RoomPresentation} from '../../framework/sdk/contracts/game-definition.ts';").replaceAll('TemplateRoomActions','RoomPresentationActions').replaceAll('TemplateRoomPresentation','RoomPresentation').replaceAll('TemplateRoomView','CommonRoomViewBase');
|
||||
writeFileSync(b+'scripts/platform-login/CommonRoomViewBase.ts',src);
|
||||
writeFileSync(old,"import {_decorator} from 'cc';\nimport {CommonRoomViewBase} from '../../scripts/platform-login/CommonRoomViewBase.ts';\nconst {ccclass}=_decorator;\n@ccclass('TemplateRoomView')\nexport class TemplateRoomView extends CommonRoomViewBase {}\n");
|
||||
const eq=b+'games/erqiwang/ErqiwangRoomView.ts';
|
||||
writeFileSync(eq,readFileSync(eq,'utf8').replace("import {TemplateRoomView} from '../template/TemplateRoomView.ts';","import {CommonRoomViewBase} from '../../scripts/platform-login/CommonRoomViewBase.ts';").replace("import type {TemplateRoomActions} from '../template/template-game.ts';","import type {RoomPresentationActions} from '../../framework/sdk/contracts/game-definition.ts';").replaceAll('extends TemplateRoomView','extends CommonRoomViewBase').replaceAll('TemplateRoomActions','RoomPresentationActions'));
|
||||
const exit=b+'framework/presentation/room-exit-action.ts';
|
||||
writeFileSync(b+'framework/sdk/room-exit-action.ts',readFileSync(exit,'utf8').replace('../sdk/contracts/','./contracts/'));
|
||||
writeFileSync(exit,"export {roomExitAction} from '../sdk/room-exit-action.ts';\n");
|
||||
for(const game of ['erqiwang','template']){
|
||||
const f=b+'games/'+game+'/'+game+'-game.ts';
|
||||
writeFileSync(f,readFileSync(f,'utf8').replace('framework/presentation/room-exit-action','framework/sdk/room-exit-action'));
|
||||
const chat=b+'games/'+game+'/room-chat-config.ts';
|
||||
writeFileSync(chat,readFileSync(chat,'utf8').replace('framework/presentation/room-chat-config','framework/sdk/contracts/room-chat'));
|
||||
}
|
||||
@@ -0,0 +1,203 @@
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/adapters/native/owned-room-history.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/net/wire-client.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/platform/commands.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/platform/game-host-adapter.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/platform/runtime-session.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/platform/runtime.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/platform/scene-port.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/platform/stores/platform-store.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/platform/stores/platform-types.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/protocol/contracts/room-contracts.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/protocol/contracts/validation.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/protocol/contracts/vip-room.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/protocol/first-slice-routes.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/protocol/platform-handlers.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/sdk/contracts/game-host.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/sdk/contracts/game-module.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/sdk/contracts/index.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/sdk/contracts/platform-events.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/sdk/contracts/roomtype.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/sdk/runtime/game-session-host.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-common/00239.png.meta
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00001.png
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/atlas-hall/00001.png.meta
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer402_GameNotice.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer405_MainButton.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer413_BtnPanel.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer418_ChatPannel.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer420_CheckFree.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer50_MainScene.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer602_inputPannel.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer606_Apply.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer607_Cal.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/Layer612_Tips.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/MainMenu.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/games/erqiwang/ErqiwangCreateRoom.prefab
|
||||
M cocoscreator_projects/YouleNexus/assets/games/erqiwang/ErqiwangCreateRoomView.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/games/erqiwang/ErqiwangRoomView.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/games/erqiwang/erqiwang-game.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/games/erqiwang/erqiwang-room-rules.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/games/template/TemplateCreateRoomView.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/games/template/TemplateRoomView.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/games/template/template-game.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/games/template/template-room-rules.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/scenes/PlatformStartup.scene
|
||||
M cocoscreator_projects/YouleNexus/assets/scenes/TemplateRoom.scene
|
||||
M cocoscreator_projects/YouleNexus/assets/scripts/platform-login/JoinRoomView.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/scripts/platform-login/PlatformStartup.ts
|
||||
D cocoscreator_projects/YouleNexus/assets/scripts/platform-login/SubgameAssets.ts
|
||||
D cocoscreator_projects/YouleNexus/assets/scripts/platform-login/SubgameAssets.ts.meta
|
||||
M cocoscreator_projects/YouleNexus/assets/scripts/platform-login/feedback-panels.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/scripts/platform-login/lobby-panel.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/scripts/platform-login/login-panel.ts
|
||||
M cocoscreator_projects/YouleNexus/assets/scripts/platform-login/scene-flow.ts
|
||||
M cocoscreator_projects/YouleNexus/out/legacy-migration/BackHall_Layer.prefab
|
||||
M cocoscreator_projects/YouleNexus/out/legacy-migration/Protol_Layer.prefab
|
||||
M cocoscreator_projects/YouleNexus/settings/v2/packages/builder.json
|
||||
M cocoscreator_projects/YouleNexus/settings/v2/packages/information.json
|
||||
M cocoscreator_projects/framework-tests/adapters/owned-room-history.test.ts
|
||||
M cocoscreator_projects/framework-tests/architecture/import-boundaries.test.mjs
|
||||
M cocoscreator_projects/framework-tests/legacy-layer-migration/layer418-prefab.test.mjs
|
||||
M cocoscreator_projects/framework-tests/net/wire-client.test.ts
|
||||
M cocoscreator_projects/framework-tests/platform-login/game-entry.test.ts
|
||||
M cocoscreator_projects/framework-tests/platform/commands.test.ts
|
||||
M cocoscreator_projects/framework-tests/platform/game-host-adapter.test.ts
|
||||
M cocoscreator_projects/framework-tests/platform/platform-store.test.ts
|
||||
M cocoscreator_projects/framework-tests/platform/runtime-session.test.ts
|
||||
M cocoscreator_projects/framework-tests/platform/runtime.test.ts
|
||||
M cocoscreator_projects/framework-tests/presentation/erqiwang-room-entry.test.ts
|
||||
M cocoscreator_projects/framework-tests/presentation/template-game.test.ts
|
||||
M cocoscreator_projects/framework-tests/protocol/contracts.test.ts
|
||||
M cocoscreator_projects/framework-tests/protocol/first-slice-routes.test.ts
|
||||
M cocoscreator_projects/framework-tests/protocol/platform-handlers.test.ts
|
||||
M cocoscreator_projects/framework-tests/sdk/game-contract-harness.test.ts
|
||||
M cocoscreator_projects/framework-tests/sdk/game-session-host.test.ts
|
||||
M cocoscreator_projects/scripts/check-import-boundaries.mjs
|
||||
M cocoscreator_projects/scripts/lib/import-boundaries.mjs
|
||||
M docs/protocol/04-数据结构.md
|
||||
?? cocoscreator_projects/YouleNexus/assets/app.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/app/
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/adapters/native/platform-native.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/adapters/native/platform-native.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/adapters/native/room-device-status.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/adapters/native/room-device-status.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/adapters/native/room-voice.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/adapters/native/room-voice.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/config/room-lifecycle.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/config/room-lifecycle.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/platform/room.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/platform/room/
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/platform/stores/dissolution.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/platform/stores/dissolution.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/deferred-numeric-tools.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/deferred-numeric-tools.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/game-room-presentation.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/game-room-presentation.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/keyed-rows.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/keyed-rows.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/multiplier-model.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/multiplier-model.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/numeric-input-model.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/numeric-input-model.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/owned-feedback.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/owned-feedback.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/platform-settings.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/platform-settings.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/resource-lease-cache.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/resource-lease-cache.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-broadcast-queue.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-broadcast-queue.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-chat-config.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-chat-config.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-exit-action.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-exit-action.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-hud-model.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-hud-model.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-menu-context.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-menu-context.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-menu-model.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-menu-model.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-owner-notice.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/presentation/room-owner-notice.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/sdk/contracts/game-capabilities.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/sdk/contracts/game-capabilities.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/sdk/contracts/game-definition.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/sdk/contracts/game-definition.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/sdk/contracts/game-room-projection.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/sdk/contracts/game-room-projection.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/sdk/contracts/room-chat.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/sdk/contracts/room-chat.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/sdk/game-room-projection.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/sdk/game-room-projection.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/sdk/room-action-policy.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/sdk/room-action-policy.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/sdk/room-exit-action.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/sdk/room-exit-action.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/ChatHistoryItem.prefab
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/ChatHistoryItem.prefab.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/ChatPhraseItem.prefab
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/ChatPhraseItem.prefab.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/PlayerVoteItem.prefab
|
||||
?? cocoscreator_projects/YouleNexus/assets/framework/ui/prefabs/widgets/PlayerVoteItem.prefab.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/games/erqiwang/room-chat-config.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/games/erqiwang/room-chat-config.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/games/template/room-chat-config.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/games/template/room-chat-config.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/ApplyVotePanel.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/ApplyVotePanel.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/CommonRoomViewBase.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/CommonRoomViewBase.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/GameComposition.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/GameComposition.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/NumericToolsPanel.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/NumericToolsPanel.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomChatPanel.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomChatPanel.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomHud.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomHud.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomNoticePanel.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomNoticePanel.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomPlatformPanels.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomPlatformPanels.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomUi.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomUi.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/apply-vote-model.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/apply-vote-model.ts.meta
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/avatar-cache.ts
|
||||
?? cocoscreator_projects/YouleNexus/assets/scripts/platform-login/avatar-cache.ts.meta
|
||||
?? cocoscreator_projects/framework-tests/architecture/game-definitions.test.ts
|
||||
?? cocoscreator_projects/framework-tests/architecture/player-tip-boundary.test.mjs
|
||||
?? cocoscreator_projects/framework-tests/architecture/room-assets.test.mjs
|
||||
?? cocoscreator_projects/framework-tests/native/platform-native.test.ts
|
||||
?? cocoscreator_projects/framework-tests/native/room-device-status.test.ts
|
||||
?? cocoscreator_projects/framework-tests/native/room-voice.test.ts
|
||||
?? cocoscreator_projects/framework-tests/platform/dissolution.test.ts
|
||||
?? cocoscreator_projects/framework-tests/platform/room-broadcast.test.ts
|
||||
?? cocoscreator_projects/framework-tests/platform/room-hud-model.test.ts
|
||||
?? cocoscreator_projects/framework-tests/platform/room-social.test.ts
|
||||
?? cocoscreator_projects/framework-tests/platform/room/
|
||||
?? cocoscreator_projects/framework-tests/presentation/apply-vote-model.test.ts
|
||||
?? cocoscreator_projects/framework-tests/presentation/deferred-numeric-tools.test.ts
|
||||
?? cocoscreator_projects/framework-tests/presentation/dissolution-settlement-boundary.test.ts
|
||||
?? cocoscreator_projects/framework-tests/presentation/incremental-room-ui.test.ts
|
||||
?? cocoscreator_projects/framework-tests/presentation/numeric-tools.test.ts
|
||||
?? cocoscreator_projects/framework-tests/presentation/owned-feedback.test.ts
|
||||
?? cocoscreator_projects/framework-tests/presentation/platform-settings.test.ts
|
||||
?? cocoscreator_projects/framework-tests/presentation/room-menu-model.test.ts
|
||||
?? cocoscreator_projects/framework-tests/presentation/room-owner-notice.test.ts
|
||||
?? cocoscreator_projects/framework-tests/protocol/opaque-roomtype.test.ts
|
||||
?? cocoscreator_projects/framework-tests/protocol/roomcode-response.test.ts
|
||||
?? cocoscreator_projects/framework-tests/sdk/game-room-projection.test.ts
|
||||
?? cocoscreator_projects/scripts/check-room-assets.mjs
|
||||
?? cocoscreator_projects/scripts/lib/room-assets.mjs
|
||||
?? cocoscreator_projects/scripts/verify-room-refactor-preview.mjs
|
||||
?? cocoscreator_projects/scripts/verify-room-resource-cycles.mjs
|
||||
?? docs/Layer606-解散投票接线.md
|
||||
?? docs/superpowers/implementations/
|
||||
?? docs/superpowers/plans/2026-09-08-room-platform-refactor.md
|
||||
?? docs/superpowers/specs/2026-09-08-room-platform-api-migration.md
|
||||
?? docs/superpowers/specs/2026-09-08-room-platform-architecture.md
|
||||
?? docs/房间流程审查与架构重构建议.md
|
||||
?? docs/房间菜单与聊天接线.md
|
||||
?? docs/房间顶部广播与数字工具接线.md
|
||||
?? out/
|
||||
@@ -0,0 +1,39 @@
|
||||
import {readFileSync,writeFileSync} from 'node:fs';
|
||||
const p='G:/Works/YouleGamesCocosCreator/cocoscreator_projects/YouleNexus/assets/scripts/platform-login/RoomChatPanel.ts';
|
||||
let s=readFileSync(p,'utf8');
|
||||
s=s.replace("import {BlockInputEvents,","import {Director,director,BlockInputEvents,");
|
||||
s=s.replace("import {requireNode}","import {KeyedRows} from '../../framework/presentation/keyed-rows.ts';\nimport {requireNode}");
|
||||
s=s.replace(' private historyUi:RoomUi;',` private readonly historyRows:KeyedRows<RoomSocialMessage,{node:Node;ui:RoomUi;index:number;message:RoomSocialMessage}>;
|
||||
private pendingRender:(()=>void)|null=null;
|
||||
private readonly flush=()=>{const render=this.pendingRender;this.pendingRender=null;render?.();};
|
||||
private readonly visited=new Set<string>();`);
|
||||
s=s.replace('this.ui=new RoomUi(actions.error);this.historyUi=new RoomUi(actions.error);this.root=this.ui.mount(prefab,canvas);',`this.ui=new RoomUi(actions.error);this.root=this.ui.mount(prefab,canvas);
|
||||
this.historyRows=new KeyedRows({key:message=>message.id,create:(message,index)=>this.createHistoryRow(message,index),
|
||||
update:(row,message,index)=>{if(row.message!==message){row.ui.dispose();Object.assign(row,this.createHistoryRow(message,index));}row.index=index;},remove:row=>{row.node.removeFromParent();row.ui.dispose();}});`);
|
||||
s=s.replace("if(page==='History'||page==='Announcements')this.scroll(page).scrollToBottom(0);","if(!this.visited.has(page)&&(page==='History'||page==='Announcements'))this.scroll(page).scrollToBottom(0);this.visited.add(page);");
|
||||
s=s.replace(' render(state:PlatformState,announcementAllowed:boolean,announcementCost:string):void{',` render(state:PlatformState,announcementAllowed:boolean,announcementCost:string):void{
|
||||
if(this.pendingRender===null)director.once(Director.EVENT_BEFORE_DRAW,this.flush);
|
||||
this.pendingRender=()=>this.renderState(state,announcementAllowed,announcementCost);
|
||||
}
|
||||
private renderState(state:PlatformState,announcementAllowed:boolean,announcementCost:string):void{`);
|
||||
const start=s.indexOf(' private renderHistory('),end=s.indexOf(' private renderNews(',start);
|
||||
let body=s.slice(start,end);
|
||||
body=body.slice(body.indexOf(' const row='),body.indexOf(" });this.layout('History')"));
|
||||
body=body.replaceAll('this.historyUi','ui').replace('const row=ui.mount(this.historyPrefab,content);row.name=`ChatHistoryItem_${index}`;',"const ui=new RoomUi(this.actions.error),row=ui.mount(this.historyPrefab,this.content('History'));row.name=`ChatHistoryItem_${message.id}`;\n const holder={node:row,ui,index,message};");
|
||||
body=body.replace("roomNeed(message.voiceurl,'voice URL'),index)","roomNeed(message.voiceurl,'voice URL'),holder.index)");
|
||||
const replacement=` private renderHistory(messages:readonly RoomSocialMessage[]):void{
|
||||
const scroll=this.scroll('History'),offset=scroll.getScrollOffset(),follow=offset.y>=scroll.getMaxScrollOffset().y-2;
|
||||
this.historyRows.render(messages);this.layout('History');
|
||||
if(follow)scroll.scrollToBottom(0);else scroll.scrollToOffset(offset,0);
|
||||
}
|
||||
private createHistoryRow(message:RoomSocialMessage,index:number):{node:Node;ui:RoomUi;index:number;message:RoomSocialMessage}{
|
||||
${body}
|
||||
return holder;
|
||||
}
|
||||
`;
|
||||
s=s.slice(0,start)+replacement+s.slice(end);
|
||||
s=s.replace(" const content=this.content('Announcements');this.clear(content);"," const scroll=this.scroll('Announcements'),offset=scroll.getScrollOffset(),follow=offset.y>=scroll.getMaxScrollOffset().y-2;\n const content=this.content('Announcements');this.clear(content);");
|
||||
s=s.replace("this.layout('Announcements');this.scroll('Announcements').scrollToBottom(0);","this.layout('Announcements');if(follow)scroll.scrollToBottom(0);else scroll.scrollToOffset(offset,0);");
|
||||
s=s.replace("const row=this.content('History').getChildByName(`ChatHistoryItem_${index}`);","const message=this.history?.[index],row=message?this.historyRows.get(message.id)?.node:undefined;");
|
||||
s=s.replace('dispose():void{this.historyUi.dispose();this.ui.dispose();}','dispose():void{director.off(Director.EVENT_BEFORE_DRAW,this.flush);this.pendingRender=null;try{this.historyRows.dispose();}finally{this.ui.dispose();}}');
|
||||
writeFileSync(p,s);
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"created": [
|
||||
{
|
||||
"key": "erqiwang",
|
||||
"submissions": 32,
|
||||
"format": "string"
|
||||
},
|
||||
{
|
||||
"key": "Game_Surface_3",
|
||||
"submissions": 1,
|
||||
"format": "object"
|
||||
}
|
||||
],
|
||||
"chat": {
|
||||
"beforeRows": 50,
|
||||
"afterRows": 51,
|
||||
"retainedRows": 50,
|
||||
"renderPasses": 1,
|
||||
"layouts": 2,
|
||||
"layoutChecks": 3,
|
||||
"scrollPreserved": true,
|
||||
"elapsedIncludingFrameWaitMs": 82.30000001192093
|
||||
},
|
||||
"leases": {
|
||||
"beforeDispose": 0,
|
||||
"afterDispose": 0
|
||||
},
|
||||
"environment": {
|
||||
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) CocosCreator/3.8.8 Chrome/126.0.6478.185 Electron/31.3.1 Safari/537.36",
|
||||
"width": 1600.4401650618984,
|
||||
"height": 720
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"cycles": 100,
|
||||
"nodesBefore": 8,
|
||||
"nodesAfter": 8,
|
||||
"activeAvatarLeases": 0,
|
||||
"cachedAvatarResources": 1,
|
||||
"sharedSpriteFrame": true
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user