spitOut is promoted out of Dirty.hs! Congrats spitOut!
This commit is contained in:
parent
1c51571188
commit
6d9b5b794a
16
Dirty.hs
16
Dirty.hs
|
@ -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
16
Main.hs
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue