sendou.ink/app/modules/analyzer/useObjectDamage.ts
2022-10-23 11:13:02 +03:00

40 lines
975 B
TypeScript

import { useSearchParams } from "@remix-run/react";
import { type MainWeaponId } from "../in-game-lists";
import { calculateDamage } from "./objectDamage";
import { buildStats } from "./stats";
import { validatedWeaponIdFromSearchParams } from "./utils";
export function useObjectDamage() {
const [searchParams, setSearchParams] = useSearchParams();
const mainWeaponId = validatedWeaponIdFromSearchParams(searchParams);
const handleChange = ({
newMainWeaponId = mainWeaponId,
}: {
newMainWeaponId?: MainWeaponId;
}) => {
setSearchParams(
{
weapon: String(newMainWeaponId),
},
{ replace: true, state: { scroll: false } }
);
};
const analyzed = buildStats({
weaponSplId: mainWeaponId,
});
return {
mainWeaponId,
subWeaponId: analyzed.weapon.subWeaponSplId,
handleChange,
damagesToReceivers: calculateDamage({
abilityPoints: new Map(),
analyzed,
mainWeaponId,
}),
};
}