🐛 fix issue with items menu

This commit is contained in:
Chase Manning 2023-11-29 13:27:45 +00:00
commit 079582a0bf

View file

@ -16,7 +16,7 @@ import {
selectPokemonEncounter, selectPokemonEncounter,
} from "../state/gameSlice"; } from "../state/gameSlice";
import { useState } from "react"; import { useState } from "react";
import useItemData from "../app/use-item-data"; import useItemData, { ItemData } from "../app/use-item-data";
import { InventoryItemType } from "../state/state-types"; import { InventoryItemType } from "../state/state-types";
const ItemsMenu = () => { const ItemsMenu = () => {
@ -30,14 +30,12 @@ const ItemsMenu = () => {
const learningMove = !!useSelector(selectLearningMove); const learningMove = !!useSelector(selectLearningMove);
const tossing = !!useSelector(selectConfirmationMenu); const tossing = !!useSelector(selectConfirmationMenu);
const [selected, setSelected] = useState<number | null>(null); const [selected, setSelected] = useState<ItemData | null>(null);
const item = selected !== null ? itemData[inventory[selected].item] : null;
return ( return (
<> <>
<Menu <Menu
disabled={selected !== null || usingItem || learningMove} disabled={!!selected || usingItem || learningMove}
show={show} show={show}
close={() => dispatch(hideItemsMenu())} close={() => dispatch(hideItemsMenu())}
menuItems={inventory menuItems={inventory
@ -49,14 +47,14 @@ const ItemsMenu = () => {
return { return {
label: itemData[item.item].name, label: itemData[item.item].name,
value: item.amount, value: item.amount,
action: () => setSelected(index), action: () => setSelected(itemData[item.item]),
}; };
})} })}
/> />
{item && selected !== null && ( {selected && (
<Menu <Menu
disabled={tossing || usingItem} disabled={tossing || usingItem}
show={selected !== null} show={!!selected}
close={() => setSelected(null)} close={() => setSelected(null)}
menuItems={[ menuItems={[
{ {
@ -64,9 +62,9 @@ const ItemsMenu = () => {
action: () => { action: () => {
// Can't use // Can't use
if ( if (
(inBattle && !item.usableInBattle) || (inBattle && !selected.usableInBattle) ||
!item.consumable || !selected.consumable ||
(item.pokeball && !inBattle) (selected.pokeball && !inBattle)
) { ) {
dispatch( dispatch(
showText([ showText([
@ -78,7 +76,7 @@ const ItemsMenu = () => {
// Can use // Can use
else { else {
item.action(); selected.action();
setSelected(null); setSelected(null);
} }
}, },
@ -88,10 +86,9 @@ const ItemsMenu = () => {
action: () => { action: () => {
dispatch( dispatch(
showConfirmationMenu({ showConfirmationMenu({
preMessage: `Is it OK to toss ${inventory[selected].item}`, preMessage: `Is it OK to toss ${selected.name}`,
postMessage: `${name} tossed ${inventory[selected].item}`, postMessage: `${name} tossed ${selected.name}`,
confirm: () => confirm: () => dispatch(consumeItem(selected.type)),
dispatch(consumeItem(inventory[selected].item)),
}) })
); );
}, },