Rethink damage data type, work on damage sensors
This commit is contained in:
@@ -11,34 +11,48 @@ import Geometry.Data
|
||||
|
||||
import Control.Lens
|
||||
|
||||
data DamageType
|
||||
= Piercing {_dmAmount :: Int , _dmFrom :: Point2 , _dmAt :: Point2 , _dmTo :: Point2 }
|
||||
| Blunt {_dmAmount :: Int , _dmFrom :: Point2 , _dmAt :: Point2 , _dmTo :: Point2 }
|
||||
| Cutting {_dmAmount :: Int , _dmFrom :: Point2 , _dmAt :: Point2 , _dmTo :: Point2 }
|
||||
| SparkDam {_dmAmount :: Int , _dmFrom :: Point2 , _dmAt :: Point2 , _dmTo :: Point2 }
|
||||
| Flaming {_dmAmount :: Int , _dmFrom :: Point2 , _dmAt :: Point2 , _dmTo :: Point2 }
|
||||
| Lasering {_dmAmount :: Int , _dmFrom :: Point2 , _dmAt :: Point2 , _dmTo :: Point2 }
|
||||
| Electrical {_dmAmount :: Int , _dmFrom :: Point2 , _dmAt :: Point2 , _dmTo :: Point2 }
|
||||
| Explosive {_dmAmount :: Int , _dmFrom :: Point2 }
|
||||
| Concussive
|
||||
{ _dmAmount :: Int
|
||||
, _dmFrom :: Point2
|
||||
, _dmPush :: Float
|
||||
, _dmPushExp :: Float
|
||||
, _dmPushRadius :: Float
|
||||
}
|
||||
| TorqueDam {_dmAmount :: Int , _dmTorque :: Float }
|
||||
| PushDam {_dmAmount :: Int , _dmPushBack :: Point2 }
|
||||
| PoisonDam {_dmAmount :: Int}
|
||||
data DamageType = Piercing
|
||||
| Blunt
|
||||
| Cutting
|
||||
| SparkDam
|
||||
| Flaming
|
||||
| Lasering
|
||||
| Electrical
|
||||
| Explosive
|
||||
| Concussive
|
||||
| TorqueDam
|
||||
| PushDam
|
||||
| PoisonDam
|
||||
deriving (Eq,Ord,Show)
|
||||
|
||||
isElectrical :: DamageType -> Bool
|
||||
isElectrical Electrical {} = True
|
||||
isElectrical _ = False
|
||||
data DamageEffect
|
||||
= PushDamage
|
||||
{ _dePush :: Float
|
||||
, _dePushExp :: Float
|
||||
, _dePushRadius :: Float
|
||||
}
|
||||
| TorqueDamage { _deTorque :: Float }
|
||||
| PushBackDamage {_dePushBack :: Point2 }
|
||||
| NoDamageEffect
|
||||
deriving (Eq,Ord,Show)
|
||||
|
||||
isMovementDam :: DamageType -> Bool
|
||||
isMovementDam TorqueDam{} = True
|
||||
isMovementDam PushDam{} = True
|
||||
isMovementDam _ = False
|
||||
data Damage = Damage
|
||||
{ _dmType :: DamageType
|
||||
, _dmAmount :: Int , _dmFrom :: Point2 , _dmAt :: Point2 , _dmTo :: Point2
|
||||
, _dmEffect :: DamageEffect
|
||||
}
|
||||
deriving (Eq,Ord,Show)
|
||||
|
||||
makeLenses ''DamageType
|
||||
isElectrical :: Damage -> Bool
|
||||
isElectrical dm = case _dmType dm of
|
||||
Electrical{} -> True
|
||||
_ -> False
|
||||
|
||||
isMovementDam :: Damage -> Bool
|
||||
isMovementDam dm = case _dmType dm of
|
||||
TorqueDam{} -> True
|
||||
PushDam{} -> True
|
||||
_ -> False
|
||||
|
||||
makeLenses ''Damage
|
||||
makeLenses ''DamageEffect
|
||||
|
||||
Reference in New Issue
Block a user