112 lines
2.7 KiB
Haskell
112 lines
2.7 KiB
Haskell
{-# LANGUAGE DeriveGeneric #-}
|
|
{-# LANGUAGE DeriveAnyClass #-}
|
|
{-# LANGUAGE StrictData #-}
|
|
{-# LANGUAGE TemplateHaskell #-}
|
|
|
|
module Dodge.Data.Item.Use (
|
|
module Dodge.Data.Item.Use,
|
|
module Dodge.Data.Item.Use.Equipment,
|
|
module Dodge.Data.Item.HeldUse,
|
|
module Dodge.Data.Item.HeldScroll,
|
|
module Dodge.Data.Item.HeldDelay,
|
|
module Dodge.Data.Item.Use.Consumption,
|
|
module Dodge.Data.Hammer,
|
|
module Dodge.Data.Item.Targeting,
|
|
) where
|
|
|
|
import Linear
|
|
import Control.Lens
|
|
import Data.Aeson
|
|
import Data.Aeson.TH
|
|
import Dodge.Data.Hammer
|
|
import Dodge.Data.Item.HeldScroll
|
|
import Dodge.Data.Item.HeldUse
|
|
import Dodge.Data.Item.Use.Consumption
|
|
import Dodge.Data.Item.Use.Equipment
|
|
import Dodge.Data.Item.HeldDelay
|
|
import Dodge.Data.Item.Targeting
|
|
|
|
data ItemUse
|
|
= HeldUse
|
|
{ _heldUse :: Huse
|
|
, _heldDelay :: UseDelay
|
|
, _heldMods :: HeldMod
|
|
, _heldHammer :: HammerPosition
|
|
, _heldAim :: AimParams
|
|
, _heldScroll :: HeldScroll
|
|
, _heldConsumption :: HeldConsumption
|
|
-- , _useTargeting :: Maybe TargetType
|
|
}
|
|
| LeftUse
|
|
{ _leftUse :: Luse
|
|
, _leftDelay :: UseDelay
|
|
, _leftHammer :: HammerPosition
|
|
, _equipEffect :: EquipEffect
|
|
, _leftConsumption :: LeftConsumption
|
|
}
|
|
| ConsumeUse
|
|
{ _cUse :: Cuse
|
|
, _useAmount :: ItAmount
|
|
}
|
|
| EquipUse
|
|
{ _equipEffect :: EquipEffect
|
|
, _equipTargeting :: Maybe TargetType
|
|
}
|
|
| CraftUse
|
|
{_useAmount :: ItAmount}
|
|
--deriving (Eq, Show, Read) --Generic, Flat)
|
|
|
|
data ItemUse'
|
|
= ItemHeld HeldUse'
|
|
| ItemEquip EquipUse'
|
|
| ItemConsume ConsumeUse'
|
|
| ItemCraft Int
|
|
|
|
data HeldUse' = HeldUse'
|
|
data EquipUse' = EquipUse'
|
|
data ConsumeUse' = ConsumeUse'
|
|
|
|
data AimParams = AimParams
|
|
{ _aimWeight :: Int
|
|
, _aimTurnSpeed :: Float
|
|
, _aimRange :: Float
|
|
, _aimZoom :: ItZoom
|
|
, _aimStance :: AimStance
|
|
, _aimHandlePos :: V2 Float
|
|
, _aimMuzzles :: [Muzzle]
|
|
}
|
|
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
|
|
data Muzzle = Muzzle
|
|
{ _mzPos :: V2 Float
|
|
, _mzRot :: Float
|
|
, _mzInaccuracy :: Float
|
|
}
|
|
|
|
|
|
data AimStance
|
|
= TwoHandUnder
|
|
| TwoHandOver
|
|
| TwoHandFlat
|
|
| OneHand
|
|
-- | LeaveHolstered
|
|
deriving (Eq)
|
|
--deriving (Eq, Show, Ord, Enum, Read) --Generic, Flat)
|
|
|
|
data ItZoom = ItZoom
|
|
{ _izMax :: Float
|
|
, _izMin :: Float
|
|
, _izFac :: Float
|
|
}
|
|
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
|
|
makeLenses ''ItemUse
|
|
makeLenses ''AimParams
|
|
makeLenses ''ItZoom
|
|
makeLenses ''Muzzle
|
|
deriveJSON defaultOptions ''Muzzle
|
|
deriveJSON defaultOptions ''AimStance
|
|
deriveJSON defaultOptions ''ItZoom
|
|
deriveJSON defaultOptions ''AimParams
|
|
deriveJSON defaultOptions ''ItemUse
|