66 lines
1.8 KiB
Haskell
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
|
|
|