37 lines
978 B
Haskell
37 lines
978 B
Haskell
module Dodge.Corpse.Make where
|
|
import Dodge.Creature.Picture
|
|
import Dodge.Data.Creature
|
|
import Dodge.Data.Corpse
|
|
import Control.Lens
|
|
import ShapePicture
|
|
import Shape
|
|
import Geometry
|
|
|
|
makeCorpse :: CreatureCorpse -> Creature -> Corpse
|
|
makeCorpse cc = case cc of
|
|
MakeDefaultCorpse -> makeDefaultCorpse
|
|
|
|
makeDefaultCorpse :: Creature -> Corpse
|
|
makeDefaultCorpse cr = defaultCorpse
|
|
& cpPos .~ _crPos cr
|
|
& cpDir .~ _crDir cr
|
|
& cpSPic .~ noPic (scaleSH (V3 crsize crsize crsize) $ mconcat
|
|
[ colorSH (_skinHead cskin) $ deadScalp cr
|
|
, colorSH (_skinUpper cskin) $ deadUpperBody cr
|
|
, rotmdir $ colorSH (_skinLower cskin) $ deadFeet cr
|
|
]
|
|
)
|
|
where
|
|
cskin = _crType cr -- this should be fixed
|
|
crsize = 0.1 * _crRad cr
|
|
rotmdir = rotateSH (_crMvDir cr - _crDir cr)
|
|
|
|
defaultCorpse :: Corpse
|
|
defaultCorpse = Corpse
|
|
{ _cpID = 0
|
|
, _cpPos = 0
|
|
, _cpDir = 0
|
|
, _cpSPic = mempty
|
|
, _cpRes = NoResurrection
|
|
}
|