sendou.ink/app/modules/analyzer/useObjectDamage.ts
2022-10-18 01:12:52 +03:00

49 lines
1.1 KiB
TypeScript

import { useSearchParams } from "@remix-run/react";
import { type MainWeaponId } from "../in-game-lists";
import { damageTypeToMultipliers, fallbackRates } from "./damageMultipliers";
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,
});
const multipliers = Object.fromEntries(
analyzed.stats.damages.map((damage) => {
return [
damage.type,
fallbackRates(
damageTypeToMultipliers({
type: damage.type,
weapon: { type: "MAIN", id: mainWeaponId },
})
),
];
})
);
return {
mainWeaponId,
handleChange,
multipliers,
};
}