Files
loop/src/Dodge/Default/Item.hs
T
2023-09-25 13:38:47 +01:00

66 lines
1.8 KiB
Haskell

module Dodge.Default.Item (
module Dodge.Default.Item,
module Dodge.Default.Item.Use,
module Dodge.Default.Item.Effect,
) where
import Control.Lens
import qualified Data.Map.Strict as M
import Dodge.Data.Item
import Dodge.Default.Item.Effect
import Dodge.Default.Item.Use
import Geometry.Data
defaultItemDimension :: ItemDimension
defaultItemDimension = ItemDimension
{ _dimRad = 2
, _dimCenter = 0
, _dimAttachPos = V3 10 (-5) 3
}
defaultHeldItem :: Item
defaultHeldItem = Item
{ _itCurseStatus = Uncursed
, _itType = ItemType (HELD PISTOL) mempty
, _itEffect = defaultItEffect
, _itID = 0
, _itIsHeld = False
, _itInvSize = 1
, _itLocation = InVoid
, _itDimension = defaultItemDimension
, _itUse = defaultHeldUse
, _itParams = NoParams
, _itTweaks = NoTweaks
, _itScope = NoScope
, _itAttachments = mempty
}
defaultLeftItem :: Item
defaultLeftItem = defaultHeldItem & itUse .~ defaultLeftUse
defaultCraftItem :: Item
defaultCraftItem = defaultHeldItem & itUse .~ CraftUse 1
defaultBulletWeapon :: Item
defaultBulletWeapon =
defaultWeapon
& itUse . heldConsumption .~ defaultBulletLoadable
& itUse . heldUse .~ HeldUseAmmoParams -- useAmmoParams
& itType . iyModules . at ModBulletCollision ?~ EMPTYMODULE
& itType . iyModules . at ModBulletPayload ?~ EMPTYMODULE
& itType . iyModules . at ModBulletTrajectory ?~ EMPTYMODULE
defaultWeapon :: Item
defaultWeapon =
defaultHeldItem
& itUse .~ defaultHeldUse
& itType . iyModules
.~ M.fromList
[ (ModTarget, EMPTYMODULE)
, (ModTeleport, EMPTYMODULE)
]
defaultConsumable :: Item
defaultConsumable = defaultHeldItem & itUse .~ ConsumeUse CDoNothing 1