refactor: 收口小玩法生成 action payload
This commit is contained in:
@@ -1,3 +1,8 @@
|
||||
import type {
|
||||
JumpHopActionRequest,
|
||||
JumpHopSessionSnapshotResponse,
|
||||
JumpHopWorkspaceCreateRequest,
|
||||
} from '../../../packages/shared/src/contracts/jumpHop';
|
||||
import type {
|
||||
CreateMatch3DSessionRequest,
|
||||
Match3DAgentSessionSnapshot,
|
||||
@@ -13,6 +18,11 @@ import type {
|
||||
PuzzleAgentSessionSnapshot,
|
||||
} from '../../../packages/shared/src/contracts/puzzleAgentSession';
|
||||
import type { PuzzleWorkSummary } from '../../../packages/shared/src/contracts/puzzleWorkSummary';
|
||||
import type {
|
||||
WoodenFishActionRequest,
|
||||
WoodenFishSessionSnapshotResponse,
|
||||
WoodenFishWorkspaceCreateRequest,
|
||||
} from '../../../packages/shared/src/contracts/woodenFish';
|
||||
|
||||
export type PuzzleWorkUpdatePayload = {
|
||||
workTitle?: string;
|
||||
@@ -65,6 +75,49 @@ export function buildPuzzleWorkUpdatePayloadFromDraft(
|
||||
};
|
||||
}
|
||||
|
||||
export function buildJumpHopDraftActionPayload(
|
||||
actionType: 'compile-draft' | 'regenerate-character' | 'regenerate-tiles',
|
||||
input: {
|
||||
payload?: JumpHopWorkspaceCreateRequest | null;
|
||||
draft?: JumpHopSessionSnapshotResponse['draft'] | null;
|
||||
},
|
||||
): JumpHopActionRequest {
|
||||
const { payload, draft } = input;
|
||||
return {
|
||||
actionType,
|
||||
workTitle: payload?.workTitle ?? draft?.workTitle,
|
||||
workDescription: payload?.workDescription ?? draft?.workDescription,
|
||||
themeTags: payload?.themeTags ?? draft?.themeTags,
|
||||
difficulty: payload?.difficulty ?? draft?.difficulty,
|
||||
stylePreset: payload?.stylePreset ?? draft?.stylePreset,
|
||||
characterPrompt: payload?.characterPrompt ?? draft?.characterPrompt,
|
||||
tilePrompt: payload?.tilePrompt ?? draft?.tilePrompt,
|
||||
endMoodPrompt: payload?.endMoodPrompt ?? draft?.endMoodPrompt,
|
||||
};
|
||||
}
|
||||
|
||||
export function buildWoodenFishDraftActionPayload(
|
||||
actionType: 'compile-draft' | 'regenerate-hit-object',
|
||||
input: {
|
||||
payload?: WoodenFishWorkspaceCreateRequest | null;
|
||||
draft?: WoodenFishSessionSnapshotResponse['draft'] | null;
|
||||
},
|
||||
): WoodenFishActionRequest {
|
||||
const { payload, draft } = input;
|
||||
return {
|
||||
actionType,
|
||||
workTitle: payload?.workTitle ?? draft?.workTitle,
|
||||
workDescription: payload?.workDescription ?? draft?.workDescription,
|
||||
themeTags: payload?.themeTags ?? draft?.themeTags,
|
||||
hitObjectPrompt: payload?.hitObjectPrompt ?? draft?.hitObjectPrompt,
|
||||
hitObjectReferenceImageSrc:
|
||||
payload?.hitObjectReferenceImageSrc ??
|
||||
draft?.hitObjectReferenceImageSrc,
|
||||
hitSoundAsset: payload?.hitSoundAsset ?? draft?.hitSoundAsset,
|
||||
floatingWords: payload?.floatingWords ?? draft?.floatingWords,
|
||||
};
|
||||
}
|
||||
|
||||
function parseOptionalFiniteNumber(value: string | number | null | undefined) {
|
||||
if (typeof value === 'number') {
|
||||
return Number.isFinite(value) ? value : undefined;
|
||||
|
||||
Reference in New Issue
Block a user