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:
2026-09-09 03:13:18 +08:00
parent a7ec8aa6a7
commit 35216f75e7
1028 changed files with 835556 additions and 21415 deletions
@@ -0,0 +1,50 @@
import { _decorator, Component, Node, animation } from "cc";
const { ccclass, property } = _decorator;
@ccclass("<%UnderscoreCaseClassName%>")
export class <%UnderscoreCaseClassName%> extends animation.StateMachineComponent {
/**
* Called right after a motion state is entered.
* @param controller The animation controller it within.
* @param motionStateStatus The status of the motion.
*/
public onMotionStateEnter (controller: animation.AnimationController, motionStateStatus: Readonly<animation.MotionStateStatus>): void {
// Can be overrode
}
/**
* Called when a motion state is about to exit.
* @param controller The animation controller it within.
* @param motionStateStatus The status of the motion.
*/
public onMotionStateExit (controller: animation.AnimationController, motionStateStatus: Readonly<animation.MotionStateStatus>): void {
// Can be overrode
}
/**
* Called when a motion state updated except for the first and last frame.
* @param controller The animation controller it within.
* @param motionStateStatus The status of the motion.
*/
public onMotionStateUpdate (controller: animation.AnimationController, motionStateStatus: Readonly<animation.MotionStateStatus>): void {
// Can be overrode
}
/**
* Called right after a state machine is entered.
* @param controller The animation controller it within.
*/
public onStateMachineEnter (controller: animation.AnimationController) {
// Can be overrode
}
/**
* Called right after a state machine is entered.
* @param controller The animation controller it within.
*/
public onStateMachineExit (controller: animation.AnimationController) {
// Can be overrode
}
}
@@ -0,0 +1,7 @@
{
"__type__": "cc.Asset",
"_name": "ts-animation-graph",
"_objFlags": 0,
"__editorExtras__": {},
"_native": ""
}
@@ -0,0 +1,8 @@
{
"__type__": "cc.ImageAsset",
"content": {
"fmt": "0",
"w": 0,
"h": 0
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,9 @@
{
"__type__": "cc.Texture2D",
"content": {
"base": "2,2,2,2,0,0",
"mipmaps": [
"f12a23c4-b924-4322-a260-3d982428f1e8"
]
}
}
@@ -0,0 +1,90 @@
{
"__type__": "cc.SpriteFrame",
"content": {
"name": "default_radio_button_off",
"atlas": "",
"rect": {
"x": 3,
"y": 3,
"width": 26,
"height": 26
},
"offset": {
"x": 0,
"y": 0
},
"originalSize": {
"width": 32,
"height": 32
},
"rotated": false,
"capInsets": [
13,
13,
13,
13
],
"vertices": {
"rawPosition": [
-13,
-13,
0,
13,
-13,
0,
-13,
13,
0,
13,
13,
0
],
"indexes": [
0,
1,
2,
2,
1,
3
],
"uv": [
3,
29,
29,
29,
3,
3,
29,
3
],
"nuv": [
0.09375,
0.09375,
0.90625,
0.09375,
0.09375,
0.90625,
0.90625,
0.90625
],
"minPos": {
"x": -13,
"y": -13,
"z": 0
},
"maxPos": {
"x": 13,
"y": 13,
"z": 0
}
},
"texture": "f12a23c4-b924-4322-a260-3d982428f1e8@6c48a",
"packable": true,
"pixelsToUnit": 100,
"pivot": {
"x": 0.5,
"y": 0.5
},
"meshType": 0
}
}
File diff suppressed because one or more lines are too long