071faa482c
纳入 AGC Cargo workspace 的统一 rustfmt 检查与格式化入口 完成项目 TypeScript/Prettier 与 Rust 全量格式化 修复 Pingora expected executable 门禁的空白敏感误报 同步开发运维文档与 AGC skill pack 格式化忽略规则
40 lines
1.0 KiB
TypeScript
40 lines
1.0 KiB
TypeScript
import type { PuzzleAgentSessionSnapshot } from '../../../packages/shared/src/contracts/puzzleAgentSession';
|
|
|
|
function hasText(value: string | null | undefined) {
|
|
return typeof value === 'string' && value.trim().length > 0;
|
|
}
|
|
|
|
function hasAssetReference(
|
|
imageSrc: string | null | undefined,
|
|
objectKey: string | null | undefined,
|
|
) {
|
|
return hasText(imageSrc) || hasText(objectKey);
|
|
}
|
|
|
|
export function isPuzzleCompileActionReady(
|
|
session: PuzzleAgentSessionSnapshot,
|
|
) {
|
|
const draft = session.draft;
|
|
if (!draft) {
|
|
return false;
|
|
}
|
|
return (
|
|
draft.levels?.some(
|
|
(level) =>
|
|
(hasText(draft.coverImageSrc) || hasText(level.coverImageSrc)) &&
|
|
hasAssetReference(
|
|
level.levelSceneImageSrc,
|
|
level.levelSceneImageObjectKey,
|
|
) &&
|
|
hasAssetReference(
|
|
level.uiSpritesheetImageSrc,
|
|
level.uiSpritesheetImageObjectKey,
|
|
) &&
|
|
hasAssetReference(
|
|
level.levelBackgroundImageSrc,
|
|
level.levelBackgroundImageObjectKey,
|
|
),
|
|
) === true
|
|
);
|
|
}
|