mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-04-25 07:32:19 -05:00
Fix crash when no damage data on obj dmg calc
This commit is contained in:
parent
20650c9a86
commit
b4762d6455
|
|
@ -1,5 +1,4 @@
|
|||
import { useSearchParams } from "@remix-run/react";
|
||||
import invariant from "tiny-invariant";
|
||||
import { type MainWeaponId } from "../in-game-lists";
|
||||
import { calculateDamage } from "./objectDamage";
|
||||
import { buildStats } from "./stats";
|
||||
|
|
@ -37,7 +36,7 @@ export function useObjectDamage() {
|
|||
{
|
||||
weapon: String(newMainWeaponId),
|
||||
[ABILITY_POINTS_SP_KEY]: String(newAbilityPoints),
|
||||
[DAMAGE_TYPE_SP_KEY]: newDamageType,
|
||||
[DAMAGE_TYPE_SP_KEY]: newDamageType ?? "",
|
||||
},
|
||||
{ replace: true, state: { scroll: false } }
|
||||
);
|
||||
|
|
@ -47,15 +46,17 @@ export function useObjectDamage() {
|
|||
mainWeaponId,
|
||||
subWeaponId: analyzed.weapon.subWeaponSplId,
|
||||
handleChange,
|
||||
damagesToReceivers: calculateDamage({
|
||||
abilityPoints: new Map([
|
||||
["BRU", { ap: abilityPoints, apBeforeTacticooler: abilityPoints }],
|
||||
["SPU", { ap: abilityPoints, apBeforeTacticooler: abilityPoints }],
|
||||
]),
|
||||
analyzed,
|
||||
mainWeaponId,
|
||||
damageType,
|
||||
}),
|
||||
damagesToReceivers: damageType
|
||||
? calculateDamage({
|
||||
abilityPoints: new Map([
|
||||
["BRU", { ap: abilityPoints, apBeforeTacticooler: abilityPoints }],
|
||||
["SPU", { ap: abilityPoints, apBeforeTacticooler: abilityPoints }],
|
||||
]),
|
||||
analyzed,
|
||||
mainWeaponId,
|
||||
damageType,
|
||||
})
|
||||
: null,
|
||||
abilityPoints: String(abilityPoints),
|
||||
damageType,
|
||||
allDamageTypes: Array.from(
|
||||
|
|
@ -99,7 +100,6 @@ function validatedDamageTypeFromSearchParams({
|
|||
const fallbackFound = damageTypePriorityList.find((type) =>
|
||||
analyzed.stats.damages.some((d) => d.type === type)
|
||||
);
|
||||
invariant(fallbackFound);
|
||||
|
||||
return fallbackFound;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ export default function ObjectDamagePage() {
|
|||
clearsInputOnFocus
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<div className={clsx({ invisible: !damagesToReceivers })}>
|
||||
<Label htmlFor="damage">{t("analyzer:labels.damageType")}</Label>
|
||||
<DamageTypesSelect
|
||||
handleChange={handleChange}
|
||||
|
|
@ -104,10 +104,14 @@ export default function ObjectDamagePage() {
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<DamageReceiversGrid
|
||||
subWeaponId={subWeaponId}
|
||||
damagesToReceivers={damagesToReceivers}
|
||||
/>
|
||||
{damagesToReceivers ? (
|
||||
<DamageReceiversGrid
|
||||
subWeaponId={subWeaponId}
|
||||
damagesToReceivers={damagesToReceivers}
|
||||
/>
|
||||
) : (
|
||||
<div>{t("analyzer:noDmgData")}</div>
|
||||
)}
|
||||
<div className="object-damage__bottom-container">
|
||||
<div className="text-lighter text-xs">
|
||||
{t("analyzer:dmgHtdExplanation")}
|
||||
|
|
@ -175,10 +179,12 @@ const damageReceiverImages: Record<DamageReceiver, string> = {
|
|||
function DamageReceiversGrid({
|
||||
subWeaponId,
|
||||
damagesToReceivers,
|
||||
}: Pick<
|
||||
ReturnType<typeof useObjectDamage>,
|
||||
"damagesToReceivers" | "subWeaponId"
|
||||
>) {
|
||||
}: {
|
||||
subWeaponId: ReturnType<typeof useObjectDamage>["subWeaponId"];
|
||||
damagesToReceivers: NonNullable<
|
||||
ReturnType<typeof useObjectDamage>["damagesToReceivers"]
|
||||
>;
|
||||
}) {
|
||||
const { t } = useTranslation(["weapons", "analyzer", "common"]);
|
||||
useSetTitle(t("common:pages.object-damage-calculator"));
|
||||
|
||||
|
|
|
|||
|
|
@ -102,5 +102,6 @@
|
|||
"labels.amountOf": "Amount of",
|
||||
"labels.damageType": "Damage type",
|
||||
"labels.weapon": "Weapon",
|
||||
"dmgHtdExplanation": "DMG = Damage • HTD = Hits to destroy"
|
||||
"dmgHtdExplanation": "DMG = Damage • HTD = Hits to destroy",
|
||||
"noDmgData": "No damage data yet for this weapon. Check back later!"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
### 🟡 analyzer.json
|
||||
|
||||
**94/104**
|
||||
**94/105**
|
||||
|
||||
<details>
|
||||
<summary>Missing</summary>
|
||||
|
|
@ -19,6 +19,7 @@
|
|||
- labels.damageType
|
||||
- labels.weapon
|
||||
- dmgHtdExplanation
|
||||
- noDmgData
|
||||
|
||||
</details>
|
||||
|
||||
|
|
@ -78,7 +79,7 @@
|
|||
|
||||
### 🟡 analyzer.json
|
||||
|
||||
**94/104**
|
||||
**94/105**
|
||||
|
||||
<details>
|
||||
<summary>Missing</summary>
|
||||
|
|
@ -93,6 +94,7 @@
|
|||
- labels.damageType
|
||||
- labels.weapon
|
||||
- dmgHtdExplanation
|
||||
- noDmgData
|
||||
|
||||
</details>
|
||||
|
||||
|
|
@ -153,7 +155,7 @@
|
|||
|
||||
### 🟡 analyzer.json
|
||||
|
||||
**91/104**
|
||||
**91/105**
|
||||
|
||||
<details>
|
||||
<summary>Missing</summary>
|
||||
|
|
@ -171,6 +173,7 @@
|
|||
- labels.damageType
|
||||
- labels.weapon
|
||||
- dmgHtdExplanation
|
||||
- noDmgData
|
||||
|
||||
</details>
|
||||
|
||||
|
|
@ -286,7 +289,7 @@
|
|||
|
||||
### 🟡 analyzer.json
|
||||
|
||||
**91/104**
|
||||
**91/105**
|
||||
|
||||
<details>
|
||||
<summary>Missing</summary>
|
||||
|
|
@ -304,6 +307,7 @@
|
|||
- labels.damageType
|
||||
- labels.weapon
|
||||
- dmgHtdExplanation
|
||||
- noDmgData
|
||||
|
||||
</details>
|
||||
|
||||
|
|
@ -431,7 +435,7 @@
|
|||
|
||||
### 🔴 analyzer.json
|
||||
|
||||
**0/104**
|
||||
**0/105**
|
||||
|
||||
### 🔴 badges.json
|
||||
|
||||
|
|
@ -486,7 +490,7 @@
|
|||
|
||||
### 🟡 analyzer.json
|
||||
|
||||
**12/104**
|
||||
**12/105**
|
||||
|
||||
<details>
|
||||
<summary>Missing</summary>
|
||||
|
|
@ -583,6 +587,7 @@
|
|||
- labels.damageType
|
||||
- labels.weapon
|
||||
- dmgHtdExplanation
|
||||
- noDmgData
|
||||
|
||||
</details>
|
||||
|
||||
|
|
@ -709,7 +714,7 @@
|
|||
|
||||
### 🔴 analyzer.json
|
||||
|
||||
**0/104**
|
||||
**0/105**
|
||||
|
||||
### 🟢 badges.json
|
||||
|
||||
|
|
@ -845,7 +850,7 @@
|
|||
|
||||
### 🟡 analyzer.json
|
||||
|
||||
**94/104**
|
||||
**94/105**
|
||||
|
||||
<details>
|
||||
<summary>Missing</summary>
|
||||
|
|
@ -860,6 +865,7 @@
|
|||
- labels.damageType
|
||||
- labels.weapon
|
||||
- dmgHtdExplanation
|
||||
- noDmgData
|
||||
|
||||
</details>
|
||||
|
||||
|
|
@ -963,7 +969,7 @@
|
|||
|
||||
### 🔴 analyzer.json
|
||||
|
||||
**0/104**
|
||||
**0/105**
|
||||
|
||||
### 🟢 badges.json
|
||||
|
||||
|
|
@ -1099,7 +1105,7 @@
|
|||
|
||||
### 🟡 analyzer.json
|
||||
|
||||
**94/104**
|
||||
**94/105**
|
||||
|
||||
<details>
|
||||
<summary>Missing</summary>
|
||||
|
|
@ -1114,6 +1120,7 @@
|
|||
- labels.damageType
|
||||
- labels.weapon
|
||||
- dmgHtdExplanation
|
||||
- noDmgData
|
||||
|
||||
</details>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user