Refactor, try to limit dependencies

This commit is contained in:
2022-07-28 00:59:56 +01:00
parent 8aa5c17ab9
commit 160560af5f
418 changed files with 15104 additions and 13342 deletions
+28 -23
View File
@@ -1,46 +1,51 @@
module Dodge.Material.Damage where
import Dodge.Data
import Dodge.Data.World
import Dodge.Spark
import Geometry
damageMaterial :: Damage -> Material
-> Float -- the angle of the hit surface, in radians
-> World -> (Int, World)
damageMaterial ::
Damage ->
Material ->
Float -> -- the angle of the hit surface, in radians
World ->
(Int, World)
damageMaterial dm mt = case mt of
Stone -> damageStone dm
_ -> defDamageMaterial dm
-- Glass -> damageGlass dm
defDamageMaterial :: Damage -> Float -> World -> (Int,World)
defDamageMaterial :: Damage -> Float -> World -> (Int, World)
defDamageMaterial dm _ w = (_dmAmount dm, w)
damageStone :: Damage -> Float -> World -> (Int,World)
damageStone :: Damage -> Float -> World -> (Int, World)
damageStone dm dir = case _dmType dm of
LASERING -> a 0 $ colSparkRandDir 0.2 lSparkCol outTo (argV $ reflectIn (p -.- sp) v)
PIERCING -> a d $ colSparkRandDir 0.2 pSparkCol outTo (argV $ reflectIn (p -.- sp) v)
BLUNT -> a d id
SHATTERING -> a d id
CRUSHING -> a d id
EXPLOSIVE -> a d id
CUTTING -> a d id
SPARKING -> a 0 id
FLAMING -> a 0 id
ELECTRICAL -> a 0 id
CONCUSSIVE -> a d id
TORQUEDAM -> a 0 id
PUSHDAM -> a 0 id
POISONDAM -> a 0 id
LASERING -> a 0 $ colSparkRandDir 0.2 lSparkCol outTo (argV $ reflectIn (p -.- sp) v)
PIERCING -> a d $ colSparkRandDir 0.2 pSparkCol outTo (argV $ reflectIn (p -.- sp) v)
BLUNT -> a d id
SHATTERING -> a d id
CRUSHING -> a d id
EXPLOSIVE -> a d id
CUTTING -> a d id
SPARKING -> a 0 id
FLAMING -> a 0 id
ELECTRICAL -> a 0 id
CONCUSSIVE -> a d id
TORQUEDAM -> a 0 id
PUSHDAM -> a 0 id
POISONDAM -> a 0 id
ENTERREMENT -> a 0 id
where
v = unitVectorAtAngle dir
a x f w = (x,f w)
a x f w = (x, f w)
d = _dmAmount dm
sp = _dmFrom dm
p = _dmAt dm
outTo = p +.+ squashNormalizeV (sp -.- p)
pSparkCol = V4 5 1 0.5 2
lSparkCol = V4 20 (-5) 0 1
--damageGlass :: Damage -> Float -> World -> (World,Int)
--damageGlass dm dir w = w & case _dmType dm of
-- LASERING -> a 0 $ id
@@ -59,7 +64,7 @@ damageStone dm dir = case _dmType dm of
-- POISONDAM -> a 0 id
-- ENTERREMENT -> a 0 id
-- where
-- mbl = do
-- mbl = do
-- blid <- wl ^? wlStructure . wsBlock
-- w ^? blocks . ix blid
-- d :: Int