Refactor, add bullet modules and weapon effect modifiers
This commit is contained in:
+13
-4
@@ -194,8 +194,8 @@ data PressPlate = PressPlate
|
||||
}
|
||||
data FloorItem = FlIt { _flIt :: Item , _flItPos :: Point2 , _flItRot :: Float, _flItID :: Int}
|
||||
data ItemPos
|
||||
= InInv { _itCrId :: Int , _itInvId :: Int }
|
||||
| OnFloor { _itFlID :: Int }
|
||||
= InInv { _itCrId :: Int , _itInvId :: Int }
|
||||
| OnFloor { _itFlID :: Int }
|
||||
data Item
|
||||
= Weapon
|
||||
{ _itName :: String
|
||||
@@ -207,6 +207,7 @@ data Item
|
||||
, _itUseRate :: Int
|
||||
, _itUseTime :: Int
|
||||
, _itUse :: Item -> Creature -> World -> World
|
||||
, _itUseModifiers :: [(Item -> Creature -> World -> World) -> Item -> Creature -> World -> World]
|
||||
, _itLeftClickUse :: Maybe (Creature -> Int -> World -> World)
|
||||
, _wpSpread :: Float
|
||||
, _wpRange :: Float
|
||||
@@ -391,23 +392,30 @@ data Particle
|
||||
, _btMaxTime' :: Int
|
||||
, _btTimer' :: Int
|
||||
}
|
||||
type HitEffect = Particle -> [(Point2, Either3 Creature Wall ForceField)] -> World -> (World,Maybe Particle)
|
||||
type HitEffect = Particle
|
||||
-> [(Point2, Either3 Creature Wall ForceField)]
|
||||
-> World
|
||||
-> (World,Maybe Particle)
|
||||
|
||||
data Ammo
|
||||
= ShellAmmo
|
||||
{ _amPayload :: Point2 -> World -> World
|
||||
, _amString :: String
|
||||
, _amPjMove :: [PjParam]
|
||||
, _amPjParams :: [PjParam]
|
||||
, _amPjDraw :: Projectile -> Picture
|
||||
, _amParamSel :: Int
|
||||
}
|
||||
| BulletAmmo
|
||||
{ _amString :: String
|
||||
, _amBulEff :: HitEffect
|
||||
, _amBulWth :: Float
|
||||
, _amBulVel :: Point2
|
||||
}
|
||||
| GenericAmmo
|
||||
data PjParam = PjParam
|
||||
{ _pjMoveParam :: Int -> Item -> Creature -> Projectile -> World -> World
|
||||
, _pjIntParam :: Int
|
||||
, _pjMaxParam :: Int
|
||||
, _pjDisplayParam :: Int -> String
|
||||
}
|
||||
data Projectile
|
||||
@@ -677,6 +685,7 @@ makeLenses ''ItEffect
|
||||
makeLenses ''ItZoom
|
||||
makeLenses ''FloorItem
|
||||
makeLenses ''Ammo
|
||||
makeLenses ''PjParam
|
||||
makeLenses ''Projectile
|
||||
makeLenses ''Particle
|
||||
makeLenses ''Wall
|
||||
|
||||
Reference in New Issue
Block a user