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