56 lines
1.5 KiB
Haskell
56 lines
1.5 KiB
Haskell
module Dodge.Default.Item (
|
|
defaultHeldItem,
|
|
singleAmmo,
|
|
defaultBulletWeapon,
|
|
defaultLeftItem,
|
|
defaultCraftItem,
|
|
defaultConsumable,
|
|
module Dodge.Default.Item.Use,
|
|
) where
|
|
|
|
import Control.Lens
|
|
import qualified Data.IntMap.Strict as IM
|
|
import Dodge.Data.Item
|
|
import Dodge.Default.Item.Use
|
|
import Geometry.Data
|
|
|
|
defaultHeldItem :: Item
|
|
defaultHeldItem =
|
|
Item
|
|
{ _itType = HELD PISTOL
|
|
, _itConsumables = NoConsumables
|
|
, _itEffect = defaultItEffect
|
|
, _itID = 0 -- should this return an error ? const $ error "itID not correctly initialised" ?
|
|
, _itTargeting = NoItTargeting
|
|
, _itAmmoSlots = mempty
|
|
, _itLocation = InVoid
|
|
, _itUse = defaultHeldUse
|
|
, _itParams = NoParams
|
|
}
|
|
|
|
defaultLeftItem :: Item
|
|
defaultLeftItem = defaultHeldItem & itUse .~ defaultLeftUse
|
|
|
|
defaultCraftItem :: Item
|
|
defaultCraftItem = defaultHeldItem & itUse .~ UseNothing
|
|
|
|
singleAmmo :: a -> IM.IntMap a
|
|
singleAmmo x = IM.insert 0 x mempty
|
|
|
|
defaultBulletWeapon :: Item
|
|
defaultBulletWeapon =
|
|
defaultHeldItem
|
|
& itAmmoSlots .~ singleAmmo BulletAmmo
|
|
& itUse . heldAim . aimMuzzles .~ [Muzzle (V2 15 0) 0 0.01 0 PistolFlare MuzzleShootBullet (UseExactly 1)]
|
|
|
|
defaultConsumable :: Item
|
|
defaultConsumable = defaultHeldItem & itUse .~ UseConsume CDoNothing
|
|
|
|
defaultItEffect :: ItEffect
|
|
defaultItEffect =
|
|
ItEffect
|
|
{ _ieInv = NoInvEffect
|
|
, _ieOnInsert = NoInvEffect
|
|
, _ieOnDrop = NoInvEffect
|
|
}
|