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
+17 -46
View File
@@ -10,6 +10,10 @@ circular imports are probably not a good idea.
{-# LANGUAGE DerivingStrategies #-}
module Dodge.Data
( module Dodge.Data
, module Dodge.Data.ItEffect
, module Dodge.Data.Hammer
, module Dodge.Data.Item.Use
, module Dodge.Data.Item.UseDelay
, module Dodge.Data.ArcStep
, module Dodge.Data.CrWlID
, module Dodge.Data.Item.HeldUse
@@ -61,6 +65,10 @@ module Dodge.Data
, module Dodge.Data.RadarBlip
, module Dodge.Data.PathGraph
) where
import Dodge.Data.ItEffect
import Dodge.Data.Hammer
import Dodge.Data.Item.Use
import Dodge.Data.Item.UseDelay
import Dodge.Data.CrWlID
import Dodge.Data.ArcStep
import Dodge.Data.Item.HeldUse
@@ -404,39 +412,6 @@ data PressPlate = PressPlate
, _ppText :: String
}
data FloorItem = FlIt { _flIt :: Item , _flItPos :: Point2 , _flItRot :: Float, _flItID :: Int}
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
}
_itUseAimStance :: Item -> AimStance
_itUseAimStance = _aimStance . _useAim . _itUse
data Item = Item
{ _itConsumption :: ItemConsumption
@@ -471,25 +446,25 @@ data Targeting
data ItEffect
= NoItEffect
| ItInvEffect
{_ieInv :: Item -> Creature -> World -> World
{_ieInv :: ItInvEffect --Item -> Creature -> World -> World
,_ieCounter :: Int
}
| ItRewindEffect
{_ieInv :: Item -> Creature -> World -> World
{_ieInv :: ItInvEffect --Item -> Creature -> World -> World
,_ieStoredWorlds :: [World]
}
| ItEffect
{_ieInv :: Item -> Creature -> World -> World
,_ieFloor :: Int -> World -> World
{_ieInv :: ItInvEffect --Item -> Creature -> World -> World
,_ieFloor :: ItFloorEffect --Int -> World -> World
,_ieCounter :: Int
}
| ItInvEffectID
{_ieInv :: Item -> Creature -> World -> World
{_ieInv :: ItInvEffect --Item -> Creature -> World -> World
,_ieMID :: Maybe Int
} -- the duplication of ieMID may cause errors...
| ItInvEffectDrop
{ _ieInv :: Item -> Creature -> World -> World
, _ieDrop :: Item -> Creature -> World -> World
{ _ieInv :: ItInvEffect --Item -> Creature -> World -> World
, _ieDrop :: ItDropEffect --Item -> Creature -> World -> World
, _ieMID :: Maybe Int
}
data IntID a = IntID Int a
@@ -612,10 +587,6 @@ data GunBarrels
, _brlInaccuracy :: Float
}
| SingleBarrel {_brlInaccuracy :: Float}
data EquipParams
= NoEquipParams
| EquipID {_eparamID :: Int}
| EquipCounter {_eparamInt :: Int}
data ItemParams
= NoParams
| ShellLauncher
@@ -1256,7 +1227,6 @@ makeLenses ''CreatureState
makeLenses ''World
makeLenses ''Creature
makeLenses ''Item
makeLenses ''ItemUse
makeLenses ''ItEffect
makeLenses ''FloorItem
makeLenses ''TweakParam
@@ -1288,7 +1258,6 @@ makeLenses ''ScreenLayer
makeLenses ''Beam
makeLenses ''BeamType
makeLenses ''WorldBeams
makeLenses ''EquipParams
makeLenses ''TerminalCommand
makeLenses ''TerminalInput
makeLenses ''GenParams
@@ -1301,6 +1270,8 @@ makeLenses ''PSType
makeLenses ''PlacementSpot
makeLenses ''Placement
_itUseAimStance :: Item -> AimStance
_itUseAimStance = _aimStance . _useAim . _itUse
crSel :: Creature -> Int
crSel = _iselPos . _crInvSel