Move some item datatypes into dedicated module

This commit is contained in:
2021-11-29 16:50:44 +00:00
parent f40d486d68
commit 89a80a0c77
15 changed files with 90 additions and 124 deletions
+4 -44
View File
@@ -294,22 +294,6 @@ data FloorItem = FlIt { _flIt :: Item , _flItPos :: Point2 , _flItRot :: Float,
data ItemPos
= InInv { _itCrId :: Int , _itInvId :: Int }
| OnFloor { _itFlID :: Int }
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
}
data ItemUse
= RightUse
{ _rUse :: Item -> Creature -> World -> World
@@ -324,12 +308,6 @@ data ItemUse
, _useHammer :: HammerType
}
| NoUse
data AimParams = AimParams
{ _aimSpeed :: Float
, _aimRange :: Float
, _aimZoom :: ItZoom
, _aimStance :: AimStance
}
_itUseAimStance :: Item -> AimStance
_itUseAimStance = _aimStance . _useAim . _itUse
data ItemConsumption
@@ -349,21 +327,13 @@ data ItemConsumption
{ _itMaxStack' :: Int
, _itAmount' :: Int
}
data ItemType
= Weapon'
{ _wpSpread :: Float
, _wpRange :: Float
, _wpNumBarrels :: Int
}
| UtilityItem
| ConsumableItem
data Item
= Weapon
{ _itName :: String
, _itConsumption :: ItemConsumption
, _itUse :: ItemUse
, _itFloorPict :: Item -> SPic
, _itZoom :: ItZoom
-- , _itZoom :: ItZoom
, _itEquipPict :: Creature -> Int -> SPic
, _itScroll :: Float -> Creature -> Item -> Item
, _itIdentity :: ItemIdentity
@@ -373,7 +343,6 @@ data Item
, _itInvDisplay :: Item -> String
, _itInvColor :: Color
, _itTargeting :: Maybe (World -> Maybe Point2, Int -> Item -> Creature -> World -> Picture)
, _itWorldTrigger :: Maybe (Int -> World -> Bool)
, _itDimension :: ItemDimension
, _itCurseStatus :: CurseStatus
, _itType :: ItemType
@@ -427,7 +396,7 @@ data Item
, _twMaxRange :: Float
, _twAccuracy :: Float
, _itUse :: ItemUse
, _itZoom :: ItZoom
-- , _itZoom :: ItZoom
, _itEquipPict :: Creature -> Int -> SPic
, _itIdentity :: ItemIdentity
, _itID :: Maybe Int
@@ -440,7 +409,6 @@ data Item
, _itDimension :: ItemDimension
}
| NoItem
data CurseStatus = Uncursed | UndroppableIdentified | UndroppableUnidentified
data ItemDimension = ItemDimension
{ _itDim :: Point3 -- length width height
@@ -453,7 +421,8 @@ data ItemDimension = ItemDimension
data ReloadType = ActiveReload | PassiveReload SoundID
-- I believe this is called every frame, not sure when though
data ItEffect = NoItEffect
data ItEffect
= NoItEffect
| ItSimpleInvEffect
{_itInvEffect :: ItEffect -> Creature -> Int -> World -> World
-- the Int is the items inventory position
@@ -477,11 +446,6 @@ data ItEffect = NoItEffect
-- the Int is the items inventory position
,_itEffectID :: Maybe Int
}
data ItZoom = ItZoom
{ _itZoomMax :: Float
, _itZoomMin :: Float
, _itZoomFac :: Float
}
data IntID a = IntID Int a
{- Objects without ids.
Update themselves, perhaps with side effects. -}
@@ -888,7 +852,6 @@ makeLenses ''Item
makeLenses ''ItemUse
makeLenses ''ItemPos
makeLenses ''ItEffect
makeLenses ''ItZoom
makeLenses ''FloorItem
makeLenses ''ItemConsumption
makeLenses ''AmmoType
@@ -913,8 +876,5 @@ makeLenses ''MachineType
makeLenses ''Zone
makeLenses ''ItemDimension
makeLenses ''Vocalization
makeLenses ''UseDelay
makeLenses ''AimParams
makeLenses ''Universe
makeLenses ''LSParam
makeLenses ''ItemType