(services: ServiceContainer)
| 65 | private unsubscribers: Array<() => void> = []; |
| 66 | |
| 67 | async install(services: ServiceContainer): Promise<void> { |
| 68 | // 注册检视器提供者 | Register inspector provider |
| 69 | const inspectorRegistry = services.resolve(InspectorRegistry); |
| 70 | if (inspectorRegistry) { |
| 71 | inspectorRegistry.register(new TilemapInspectorProvider()); |
| 72 | } |
| 73 | |
| 74 | // 注册组件到编辑器组件注册表 | Register to editor component registry |
| 75 | const componentRegistry = services.resolve(EditorComponentRegistry); |
| 76 | if (componentRegistry) { |
| 77 | componentRegistry.register({ |
| 78 | name: 'Tilemap', |
| 79 | type: TilemapComponent, |
| 80 | category: 'components.category.tilemap', |
| 81 | description: 'Tilemap component for tile-based levels', |
| 82 | icon: 'Grid3X3' |
| 83 | }); |
| 84 | |
| 85 | componentRegistry.register({ |
| 86 | name: 'TilemapCollider2D', |
| 87 | type: TilemapCollider2DComponent, |
| 88 | category: 'components.category.physics', |
| 89 | description: 'Generates physics colliders from tilemap collision data', |
| 90 | icon: 'Shield' |
| 91 | }); |
| 92 | } |
| 93 | |
| 94 | // 订阅 tilemap:create-asset 消息 | Subscribe to tilemap:create-asset message |
| 95 | const messageHub = services.resolve(MessageHub); |
| 96 | if (messageHub) { |
| 97 | const unsubscribe = messageHub.subscribe('tilemap:create-asset', async (payload: { |
| 98 | entityId?: string; |
| 99 | onChange?: (value: string | null) => void; |
| 100 | }) => { |
| 101 | await this.handleCreateTilemapAsset(services, payload); |
| 102 | }); |
| 103 | this.unsubscribers.push(unsubscribe); |
| 104 | } |
| 105 | |
| 106 | // 注册资产创建消息映射 | Register asset creation message mappings |
| 107 | const fileActionRegistry = services.resolve(FileActionRegistry); |
| 108 | if (fileActionRegistry) { |
| 109 | fileActionRegistry.registerAssetCreationMapping({ |
| 110 | extension: '.tilemap', |
| 111 | createMessage: 'tilemap:create-asset' |
| 112 | }); |
| 113 | fileActionRegistry.registerAssetCreationMapping({ |
| 114 | extension: '.tileset', |
| 115 | createMessage: 'tileset:create-asset' |
| 116 | }); |
| 117 | } |
| 118 | |
| 119 | // 注册 Tilemap Gizmo | Register Tilemap gizmo |
| 120 | registerTilemapGizmo(); |
| 121 | } |
| 122 | |
| 123 | async uninstall(): Promise<void> { |
| 124 | // 清理订阅 | Clean up subscriptions |
nothing calls this directly
no test coverage detected