This commit is contained in:
2025-04-23 20:24:12 +07:00
parent f933b5aad5
commit ef52d632bd
63 changed files with 3911 additions and 138 deletions
+43
View File
@@ -0,0 +1,43 @@
import useBattleDataStore from "@/stores/battleDataStore";
import { useMemo } from "react";
export function useDamageLinesForAll(mode: 0 | 1 = 0) {
const { turnHistory } = useBattleDataStore.getState();
return useMemo(() => {
const avatarMap = new Map<number, Map<number, number>>();
for (const turn of turnHistory) {
if (!avatarMap.has(turn.avatarId)) {
avatarMap.set(turn.avatarId, new Map());
}
const charMap = avatarMap.get(turn.avatarId)!;
const prev = charMap.get(turn.actionValue) || 0;
charMap.set(turn.actionValue, prev + turn.totalDamage);
}
const result: Record<number, { x: number; y: number }[]> = {};
for (const [avatarId, damageMap] of avatarMap.entries()) {
const points = Array.from(damageMap.entries())
.map(([x, y]) => ({ x, y }))
.sort((a, b) => a.x - b.x);
if (mode === 1) {
let cumulative = 0;
result[avatarId] = points.map(p => {
cumulative += p.y;
return { x: p.x, y: Number(cumulative.toFixed(2)) };
});
} else {
result[avatarId] = points.map(p => ({
x: p.x,
y: Number(p.y.toFixed(2)),
}));
}
}
return result;
}, [turnHistory, mode]);
}