diff --git a/src/state/InventoryState.ts b/src/state/InventoryState.ts index 97bed5e7..d6f5c81a 100644 --- a/src/state/InventoryState.ts +++ b/src/state/InventoryState.ts @@ -6,7 +6,11 @@ import type { CurrencyRecord, CurrencyWallet } from '@/domain/currency' import { EncumbranceThreshold } from '@/domain/encumbrance' import type { EquipmentItem } from '@/domain/equipment' import type { InventoryItem } from '@/domain/inventory' -import type { MeleeWeaponItem, MissileWeaponItem } from '@/domain/weapon' +import type { + FirearmWeaponItem, + MeleeWeaponItem, + MissileWeaponItem, +} from '@/domain/weapon' import deepclone from '@/shared/helpers/deepclone' import CurrencyConverter from '@/shared/services/CurrencyConverter' import { addItem, removeItem } from '@/state/helpers' @@ -19,6 +23,7 @@ export type InventoryStateType = { isWalletManaged: boolean meleeWeapons: ReadonlyArray> missileWeapons: ReadonlyArray> + firearmWeapons: ReadonlyArray> miscEquipment: ReadonlyArray> encumbranceThreshold: EncumbranceThreshold } @@ -31,6 +36,7 @@ export type InventoryStateType = { const initialInventoryState: Readonly = { armor: Array>(), encumbranceThreshold: EncumbranceThreshold.Regular, + firearmWeapons: Array>(), isCoinWeightActive: true, isCostRural: false, isWalletManaged: false, @@ -44,14 +50,22 @@ const initialInventoryState: Readonly = { }, } +// TODO convert to enum? export type EquipmentCategoryKey = | 'armor' | 'meleeWeapons' | 'missileWeapons' + | 'firearmWeapons' | 'miscEquipment' export const EquipmentStateKeys: ReadonlyArray = - Object.freeze(['armor', 'meleeWeapons', 'missileWeapons', 'miscEquipment']) + Object.freeze([ + 'armor', + 'meleeWeapons', + 'missileWeapons', + 'miscEquipment', + 'firearmWeapons', + ]) export const getInitialInventoryState = (): InventoryStateType => { return deepclone(initialInventoryState) @@ -116,6 +130,10 @@ export const addEquipmentItem = (item: InventoryItem) => addItem(InventoryState.miscEquipment, item) export const removeEquipmentItem = (item: InventoryItem) => removeItem(InventoryState.miscEquipment, item) +export const addFirearmWeapon = (item: InventoryItem) => + addItem(InventoryState.firearmWeapons, item) +export const removeFirearmWeapon = (item: InventoryItem) => + removeItem(InventoryState.firearmWeapons, item) export const toggleCost = () => { const isCostRural = InventoryState.isCostRural @@ -196,6 +214,10 @@ export const EquipmentStateActions: EquipmentStateActionsType = { add: addArmor, remove: removeArmor, }, + firearmWeapons: { + add: addFirearmWeapon, + remove: removeFirearmWeapon, + }, meleeWeapons: { add: addMeleeWeapon, remove: removeMeleeWeapon,