cocos基础工程
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
/**
|
||||
* 启动器基类
|
||||
* 定义不同启动模式的统一接口
|
||||
*/
|
||||
|
||||
import { Component } from 'cc';
|
||||
import { PinballManager } from '../PinballManager';
|
||||
import { PinballBootConfig } from './BootTypes';
|
||||
|
||||
export abstract class BaseBooter {
|
||||
|
||||
/**
|
||||
* 启动特定模式的游戏
|
||||
* @param hostComponent 宿主组件
|
||||
* @param config 启动配置
|
||||
*/
|
||||
abstract boot(hostComponent: Component, config: PinballBootConfig): Promise<PinballManager>;
|
||||
|
||||
/**
|
||||
* 应用配置到 PinballManager
|
||||
* @param pinballManager PinballManager 实例
|
||||
* @param config 启动配置
|
||||
*/
|
||||
protected applyConfiguration(pinballManager: PinballManager, config: PinballBootConfig): void {
|
||||
// 设置节点引用
|
||||
if (config.cameraNode) {
|
||||
pinballManager.cameraNode = config.cameraNode;
|
||||
}
|
||||
|
||||
if (config.renderContainer) {
|
||||
pinballManager.renderContainer = config.renderContainer;
|
||||
}
|
||||
|
||||
if (config.uiContainer) {
|
||||
pinballManager.uiContainer = config.uiContainer;
|
||||
}
|
||||
|
||||
// 设置基础配置
|
||||
pinballManager.autoStart = config.autoStart !== false; // 默认为 true
|
||||
pinballManager.debugMode = config.debugMode || false;
|
||||
|
||||
// 应用自定义配置
|
||||
if (config.physicsConfig || config.renderConfig || config.wasmPath) {
|
||||
const pinballConfig = pinballManager.getConfig();
|
||||
|
||||
if (!pinballConfig) {
|
||||
pinballManager.updateConfig(config);
|
||||
} else {
|
||||
if (config.physicsConfig) {
|
||||
pinballConfig.physicsSettings = {
|
||||
...pinballConfig.physicsSettings,
|
||||
gravity: config.physicsConfig.gravity || { x: 0, y: -9.81 },
|
||||
timeStep: config.physicsConfig.timeStep || 1 / 60
|
||||
};
|
||||
}
|
||||
|
||||
if (config.renderConfig) {
|
||||
pinballConfig.renderSettings = {
|
||||
...pinballConfig.renderSettings,
|
||||
enableEffects: config.renderConfig.enableEffects !== false,
|
||||
maxParticles: config.renderConfig.maxParticles || 500
|
||||
};
|
||||
}
|
||||
|
||||
if (config.wasmPath) {
|
||||
pinballConfig.wasmPath = config.wasmPath;
|
||||
}
|
||||
|
||||
pinballManager.updateConfig(pinballConfig);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 条件日志输出
|
||||
*/
|
||||
protected log(message: string, enabled?: boolean): void {
|
||||
if (enabled !== false) {
|
||||
console.log(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user