Cleanup creature update slightly, add show instance for impulses
This commit is contained in:
+14
-15
@@ -35,8 +35,8 @@ import Control.Monad.State
|
||||
import System.Random
|
||||
--import qualified Data.Set as S
|
||||
--import qualified Data.Map as M
|
||||
import qualified Data.Vector as V
|
||||
import qualified Data.Vector.Mutable as MV
|
||||
--import qualified Data.Vector as V
|
||||
--import qualified Data.Vector.Mutable as MV
|
||||
|
||||
-- | The movement is updated before the ai in order to correctly set the oldpos.
|
||||
-- This should be made more sensible: should the movement side effects apply to
|
||||
@@ -49,18 +49,17 @@ stateUpdate = stateUpdateDamage doDamage
|
||||
|
||||
stateUpdateDamage :: (Creature -> World -> World)
|
||||
-> (Creature -> World -> (World -> World, Creature))
|
||||
-- -> CRUpdate
|
||||
-> Creature -> World -> World
|
||||
stateUpdateDamage damageupdate u cr w = damageupdate cr $
|
||||
mvcrhammerup . invSideEff upcr . movementSideEff cr . deathEff . f $ w
|
||||
& creatures . at (_crID cr) .~ (stepReloading <$> crOrCorpse upcr)
|
||||
invSideEff upcr . movementSideEff cr . deathEff . f $ w
|
||||
& creatures . at (_crID cr) .~ (mvcrhammerup . stepReloading <$> crOrCorpse upcr)
|
||||
where
|
||||
(f,upcr) = u (updateMovement cr) w
|
||||
mvcrhammerup = creatures . ix (_crID cr) . crHammerPosition %~ moveHammerUp
|
||||
crOrCorpse cr'
|
||||
mvcrhammerup = crHammerPosition %~ moveHammerUp
|
||||
crOrCorpse cr'
|
||||
| cr' ^. crHP > 0 = Just cr'
|
||||
| otherwise = Nothing
|
||||
deathEff
|
||||
deathEff
|
||||
| cr ^.crHP > 0 = id
|
||||
| otherwise = stopSoundFrom (CrWeaponSound (_crID cr) 0)
|
||||
. over decorations addCorpse
|
||||
@@ -87,18 +86,18 @@ clearDamage cr = creatures . ix (_crID cr) . crState . crDamage .~ []
|
||||
doDamage :: Creature -> World -> World
|
||||
doDamage cr w = w
|
||||
& creatures . ix (_crID cr) . crState . crDamage .~ []
|
||||
& creatures . ix (_crID cr) . crState . crPastDamage %~ advancePastDamages dams
|
||||
-- & creatures . ix (_crID cr) . crState . crPastDamage %~ advancePastDamages dams
|
||||
& _crApplyDamage cr dams cr
|
||||
where
|
||||
dams = _crDamage $ _crState cr
|
||||
|
||||
advancePastDamages :: [Damage] -> V.Vector [Damage] -> V.Vector [Damage]
|
||||
advancePastDamages newDs v = f $ V.backpermute v bpVector
|
||||
where
|
||||
f = V.modify $ \v' -> MV.write v' 0 newDs
|
||||
--advancePastDamages :: [Damage] -> V.Vector [Damage] -> V.Vector [Damage]
|
||||
--advancePastDamages newDs v = f $ V.backpermute v bpVector
|
||||
-- where
|
||||
-- f = V.modify $ \v' -> MV.write v' 0 newDs
|
||||
|
||||
bpVector :: V.Vector Int
|
||||
bpVector = V.fromList $ 0 : [0 .. 18]
|
||||
--bpVector :: V.Vector Int
|
||||
--bpVector = V.fromList $ 0 : [0 .. 18]
|
||||
|
||||
movementSideEff :: Creature -> World -> World
|
||||
movementSideEff cr w
|
||||
|
||||
Reference in New Issue
Block a user