Fix crash when no damage data on obj dmg calc

This commit is contained in:
Kalle 2022-10-26 17:29:32 +03:00
parent 20650c9a86
commit b4762d6455
4 changed files with 46 additions and 32 deletions

View File

@ -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;
}

View File

@ -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"));

View File

@ -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!"
}

View File

@ -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>