33 lines
853 B
TypeScript
33 lines
853 B
TypeScript
|
|
import { IValidator, ValidationResult } from '../../domain/interfaces/IValidator';
|
|||
|
|
import { ITreeState } from '../commands/ITreeState';
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 验证行为树用例
|
|||
|
|
*/
|
|||
|
|
export class ValidateTreeUseCase {
|
|||
|
|
constructor(
|
|||
|
|
private readonly validator: IValidator,
|
|||
|
|
private readonly treeState: ITreeState
|
|||
|
|
) {}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 验证当前行为树
|
|||
|
|
*/
|
|||
|
|
execute(): ValidationResult {
|
|||
|
|
const tree = this.treeState.getTree();
|
|||
|
|
return this.validator.validateTree(tree);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 验证并抛出错误(如果验证失败)
|
|||
|
|
*/
|
|||
|
|
executeAndThrow(): void {
|
|||
|
|
const result = this.execute();
|
|||
|
|
|
|||
|
|
if (!result.isValid) {
|
|||
|
|
const errorMessages = result.errors.map((e) => e.message).join('\n');
|
|||
|
|
throw new Error(`行为树验证失败:\n${errorMessages}`);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|