spitOut is promoted out of Dirty.hs! Congrats spitOut!

This commit is contained in:
opfez 2021-05-31 19:41:51 +02:00
parent 1c51571188
commit 6d9b5b794a
2 changed files with 16 additions and 16 deletions

View File

@ -54,19 +54,3 @@ getTile West f elem
getTile North f elem
| yPos elem - 1 < 0 = Nothing
| otherwise = Just $ (f !! (yPos elem - 1)) !! xPos elem
spitOutBehaviour :: Direction -> (Element -> Element)
spitOutBehaviour dir = case dir of
East -> incXPos
South -> incYPos
West -> decXPos
North -> decYPos
spitOut :: Direction -> Factory -> Element -> Element
spitOut dir f elem = (correctFunction f (dir, succ dir, succ $ succ dir, succ $ succ $ succ dir) elem) elem
where correctFunction :: Factory -> (Direction, Direction, Direction, Direction) -> Element -> (Element -> Element)
correctFunction f (a, b, c, d) elem
| getTile a f elem == Just (Track a) = spitOutBehaviour a
| getTile b f elem == Just (Track b) = spitOutBehaviour b
| getTile c f elem == Just (Track c) = spitOutBehaviour c
| getTile d f elem == Just (Track d) = spitOutBehaviour d

16
Main.hs
View File

@ -64,6 +64,22 @@ tileActionMap tile (pair:rest)
| tile == fst pair = snd pair
| otherwise = tileActionMap tile rest
spitOutBehaviour :: Direction -> (Element -> Element)
spitOutBehaviour dir = case dir of
East -> incXPos
South -> incYPos
West -> decXPos
North -> decYPos
spitOut :: Direction -> Factory -> Element -> Element
spitOut dir f elem = (correctFunction f (dir, succ dir, succ $ succ dir, succ $ succ $ succ dir) elem) elem
where correctFunction :: Factory -> (Direction, Direction, Direction, Direction) -> Element -> (Element -> Element)
correctFunction f (a, b, c, d) elem
| getTile a f elem == Just (Track a) = spitOutBehaviour a
| getTile b f elem == Just (Track b) = spitOutBehaviour b
| getTile c f elem == Just (Track c) = spitOutBehaviour c
| getTile d f elem == Just (Track d) = spitOutBehaviour d
spitOutNth :: Int -> Direction -> Factory -> Element -> Element
spitOutNth 0 dir f elem = spitOut dir f elem
spitOutNth n dir f elem = spitOutNth decremented (succ dir) f elem