Skip to content

Commit

Permalink
Handle firearms in state
Browse files Browse the repository at this point in the history
  • Loading branch information
8kto committed Apr 28, 2024
1 parent 9ebe426 commit c4cfe23
Showing 1 changed file with 24 additions and 2 deletions.
26 changes: 24 additions & 2 deletions src/state/InventoryState.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand All @@ -19,6 +23,7 @@ export type InventoryStateType = {
isWalletManaged: boolean
meleeWeapons: ReadonlyArray<InventoryItem<MeleeWeaponItem>>
missileWeapons: ReadonlyArray<InventoryItem<MissileWeaponItem>>
firearmWeapons: ReadonlyArray<InventoryItem<FirearmWeaponItem>>
miscEquipment: ReadonlyArray<InventoryItem<EquipmentItem>>
encumbranceThreshold: EncumbranceThreshold
}
Expand All @@ -31,6 +36,7 @@ export type InventoryStateType = {
const initialInventoryState: Readonly<InventoryStateType> = {
armor: Array<InventoryItem<ArmorItem>>(),
encumbranceThreshold: EncumbranceThreshold.Regular,
firearmWeapons: Array<InventoryItem<FirearmWeaponItem>>(),
isCoinWeightActive: true,
isCostRural: false,
isWalletManaged: false,
Expand All @@ -44,14 +50,22 @@ const initialInventoryState: Readonly<InventoryStateType> = {
},
}

// TODO convert to enum?
export type EquipmentCategoryKey =
| 'armor'
| 'meleeWeapons'
| 'missileWeapons'
| 'firearmWeapons'
| 'miscEquipment'

export const EquipmentStateKeys: ReadonlyArray<EquipmentCategoryKey> =
Object.freeze(['armor', 'meleeWeapons', 'missileWeapons', 'miscEquipment'])
Object.freeze([
'armor',
'meleeWeapons',
'missileWeapons',
'miscEquipment',
'firearmWeapons',
])

export const getInitialInventoryState = (): InventoryStateType => {
return deepclone(initialInventoryState)
Expand Down Expand Up @@ -116,6 +130,10 @@ export const addEquipmentItem = (item: InventoryItem<EquipmentItem>) =>
addItem(InventoryState.miscEquipment, item)
export const removeEquipmentItem = (item: InventoryItem<EquipmentItem>) =>
removeItem(InventoryState.miscEquipment, item)
export const addFirearmWeapon = (item: InventoryItem<FirearmWeaponItem>) =>
addItem(InventoryState.firearmWeapons, item)
export const removeFirearmWeapon = (item: InventoryItem<FirearmWeaponItem>) =>
removeItem(InventoryState.firearmWeapons, item)

export const toggleCost = () => {
const isCostRural = InventoryState.isCostRural
Expand Down Expand Up @@ -196,6 +214,10 @@ export const EquipmentStateActions: EquipmentStateActionsType = {
add: addArmor,
remove: removeArmor,
},
firearmWeapons: {
add: addFirearmWeapon,
remove: removeFirearmWeapon,
},
meleeWeapons: {
add: addMeleeWeapon,
remove: removeMeleeWeapon,
Expand Down

0 comments on commit c4cfe23

Please sign in to comment.