Move item effect functions

This commit is contained in:
2022-07-20 22:43:30 +01:00
parent b36e7f8b78
commit 866196ab3e
16 changed files with 257 additions and 229 deletions
+16
View File
@@ -0,0 +1,16 @@
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TemplateHaskell #-}
module Dodge.Data.Hammer where
import Control.Lens
data HammerType
= NoHammer
| HasHammer {_hammerPosition :: HammerPosition}
deriving
(Eq, Ord, Show)
data HammerPosition
= HammerDown
| HammerReleased
| HammerUp
deriving
(Eq, Ord, Show)
makeLenses ''HammerType
+11
View File
@@ -0,0 +1,11 @@
module Dodge.Data.ItEffect where
data ItInvEffect = NoInvEffect
| RewindEffect
| ResetAttachmentEffect
| OnOffHeldEffect ItInvEffect ItInvEffect
| CreateHeldLight
| CreateShieldWall
| RemoveShieldWall
data ItFloorEffect = NoFloorEffect
data ItDropEffect = NoDropEffect
+69
View File
@@ -0,0 +1,69 @@
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE StrictData #-}
module Dodge.Data.Item.Use where
import Dodge.Data.Item.HeldUse
import Dodge.Data.Item.HeldScroll
import Dodge.Data.Item.UseDelay
import Dodge.Data.Hammer
import Dodge.Equipment.Data
import Control.Lens
data ItemUse
= RightUse
{ _rUse :: HeldUse -- Item -> Creature -> World -> World
, _useDelay :: UseDelay
, _useMods :: HeldMod --[(Item -> Creature -> World -> World) -> Item -> Creature -> World -> World]
, _useHammer :: HammerPosition
, _useAim :: AimParams
, _heldScroll :: HeldScroll --Float -> Creature -> Item -> Item
}
| LeftUse
{ _lUse :: Luse --Item -> Creature -> World -> World
, _useDelay :: UseDelay
, _useHammer :: HammerPosition
, _eqEq :: Equipment
}
| ConsumeUse
{ _cUse :: Cuse --Item -> Creature -> World -> World
}
| EquipUse
{ _eqEq :: Equipment
}
| NoUse
data Equipment = Equipment
{ _eqUse :: Euse --Item -> Creature -> World -> World
, _eqOnEquip :: Euse --Item -> Creature -> World -> World
, _eqOnRemove :: Euse --Item -> Creature -> World -> World
, _eqSite :: EquipSite
, _eqParams :: EquipParams
, _eqViewDist :: Maybe Float
}
data AimParams = AimParams
{ _aimWeight :: Int
, _aimRange :: Float
, _aimZoom :: ItZoom
, _aimStance :: AimStance
, _aimHandlePos :: Float
, _aimMuzPos :: Float
}
data AimStance
= TwoHandTwist
| TwoHandFlat
| OneHand
| LeaveHolstered
deriving
(Eq,Show,Ord,Enum)
data EquipParams
= NoEquipParams
| EquipID {_eparamID :: Int}
| EquipCounter {_eparamInt :: Int}
data ItZoom = ItZoom
{ _itZoomMax :: Float
, _itZoomMin :: Float
, _itZoomFac :: Float
}
makeLenses ''ItemUse
makeLenses ''AimParams
makeLenses ''EquipParams
makeLenses ''ItZoom
+21
View File
@@ -0,0 +1,21 @@
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TemplateHaskell #-}
module Dodge.Data.Item.UseDelay where
import Control.Lens
data UseDelay -- should just be Delay
= NoDelay
| FixedRate
{_rateMax :: Int
,_rateTime :: Int
}
| VariableRate
{_rateMax :: Int
,_rateTime :: Int
,_rateMaxMax :: Int
,_rateMinMax :: Int
}
| WarmUpNoDelay
{_warmTime :: Int
,_warmMax :: Int
}
makeLenses ''UseDelay
+1 -1
View File
@@ -2,7 +2,7 @@
{-# LANGUAGE StrictData #-}
module Dodge.Data.LoadAction where
import Sound.Data
import Dodge.Item.Data
import Dodge.Data.Hammer
import Control.Lens
data LoadAction
= LoadEject {_actionTime :: Int, _actionSound :: SoundID}