feat: complete placement analysis workflow
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
/// <reference lib="webworker" />
|
||||
|
||||
import { optimizeExactOrderAndCooldowns } from '../engine/index.ts';
|
||||
import type { ExactOptimizeOptions, ExactSongChart, OptimizerCard } from '../engine/index.ts';
|
||||
|
||||
type OptimizeRequest = {
|
||||
type: 'optimize-exact';
|
||||
cards: OptimizerCard[];
|
||||
chart: ExactSongChart;
|
||||
perfectNoteScore: number;
|
||||
directSongScoreBonusPercent?: number;
|
||||
};
|
||||
|
||||
self.onmessage = (event: MessageEvent<OptimizeRequest>) => {
|
||||
if (event.data.type !== 'optimize-exact') return;
|
||||
|
||||
try {
|
||||
const options: ExactOptimizeOptions = {
|
||||
perfectNoteScore: event.data.perfectNoteScore,
|
||||
directSongScoreBonusPercent: event.data.directSongScoreBonusPercent,
|
||||
onProgress: (progress) => self.postMessage({ type: 'progress', progress })
|
||||
};
|
||||
const result = optimizeExactOrderAndCooldowns(event.data.cards, event.data.chart, options);
|
||||
self.postMessage({ type: 'result', result });
|
||||
} catch (error) {
|
||||
self.postMessage({
|
||||
type: 'error',
|
||||
message: error instanceof Error ? error.message : '분석 중 알 수 없는 오류가 발생했습니다.'
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
export {};
|
||||
Reference in New Issue
Block a user