module Game.Entities.Entry (mkEntry) where import Game.Entities.Common import Game.Entities.Const import Game.Entities.Types import qualified Game.Sprites as S openingDoorSet :: Int openingDoorSet = 2 mkEntry :: S.SpriteSheet -> Int -> Int -> IO Entity mkEntry sprites x y = do s <- S.get sprites "exit" pure Entity { typ = TypePickup, x = x, y = y, delay = frameDelay, frame = 0, set = openingDoorSet, jumping = False, gravity = gravityOff, dir = DirRight, sprite = s, update = pure . updateEntry, destroy = False, actions = [] } updateEntry :: Entity -> Entity updateEntry e | e.delay > 0 = e {delay = e.delay - 1} | e.frame + 1 < frameLimit e = e {delay = frameDelay, frame = e.frame + 1} | otherwise = e {destroy = True, actions = [ActionEntryDone]}