Files
loop/src/Dodge/Default/Item.hs
T
2023-09-25 10:51:24 +01:00

75 lines
2.0 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
}
defaultItem :: Item
defaultItem =
Item
{ _itCurseStatus = Uncursed
, _itType = defaultItemType
, _itEffect = defaultItEffect
, _itID = 0
, _itIsHeld = False
-- , _itInvColor = yellow
, _itInvSize = 1
, _itLocation = InVoid
, _itDimension = defaultItemDimension
, _itUse = CraftUse (ItAmount 1)
, _itParams = NoParams
, _itTweaks = NoTweaks
, _itScope = NoScope
, _itAttachments = mempty
-- , _itValue = ItemValue 0 MundaneItem
}
defaultLeftItem :: Item
defaultLeftItem = defaultItem & itUse .~ defaultLeftUse
defaultHeldItem :: Item
defaultHeldItem = defaultItem & itUse .~ defaultHeldUse
defaultCraftItem :: Item
defaultCraftItem = defaultItem & itUse .~ CraftUse 1
defaultItemType :: ItemType
defaultItemType = ItemType NoItemType mempty
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 = defaultItem & itUse .~ ConsumeUse CDoNothing 1