4Blocks-0.2: Core/Commands.hs
module Core.Commands ( Game,
standardGame,
shift_brick_down,
shift_brick_up,
shift_brick_left,
shift_brick_right,
rotate_brick_left,
rotate_brick_right,
next_brick,
clear_brick_lines,
lock_brick,
increment_speed,
decrement_speed,
increment_score,
reset_score,
increment_lines,
reset_lines,
soft_drop_brick,
hard_drop_brick,
lock_clear_next_brick,
drop_lock_clear_next_brick,
pause_resume )
where
import Core.Game
import Control.Monad.State
next_brick :: State Game Bool
next_brick
= do game <- get
let (newGame, newResult) = nextBrick game
put newGame
return newResult
shift_brick_down :: State Game Bool
shift_brick_down
= do game <- get
let (newGame, newResult) = shiftDown game
put newGame
return newResult
shift_brick_up :: State Game Bool
shift_brick_up
= do game <- get
let (newGame, newResult) = shiftUp game
put newGame
return newResult
shift_brick_left :: State Game Bool
shift_brick_left
= do game <- get
let (newGame, newResult) = shiftLeft game
put newGame
return newResult
shift_brick_right :: State Game Bool
shift_brick_right
= do game <- get
let (newGame, newResult) = shiftRight game
put newGame
return newResult
rotate_brick_left :: State Game Bool
rotate_brick_left
= do game <- get
let (newGame, newResult) = rotateLeft game
put newGame
return newResult
rotate_brick_right :: State Game Bool
rotate_brick_right
= do game <- get
let (newGame, newResult) = rotateRight game
put newGame
return newResult
clear_brick_lines :: State Game Bool
clear_brick_lines
= do game <- get
let (newGame, newResult) = clearLines game
put newGame
return newResult
lock_brick :: State Game Bool
lock_brick
= do game <- get
let (newGame, newResult) = lockBrick game
put newGame
return newResult
increment_speed :: State Game Bool
increment_speed
= do game <- get
let (newGame, newResult) = incrementSpeed game
put newGame
return newResult
decrement_speed :: State Game Bool
decrement_speed
= do game <- get
let (newGame, newResult) = decrementSpeed game
put newGame
return newResult
increment_score :: Int -> State Game Bool
increment_score n
= do game <- get
let (newGame, newResult) = incrementScore n game
put newGame
return newResult
reset_score :: State Game Bool
reset_score
= do game <- get
let (newGame, newResult) = resetScore game
put newGame
return newResult
increment_lines :: Int -> State Game Bool
increment_lines n
= do game <- get
let (newGame, newResult) = incrementLines n game
put newGame
return newResult
reset_lines :: State Game Bool
reset_lines
= do game <- get
let (newGame, newResult) = resetLines game
put newGame
return newResult
soft_drop_brick :: State Game Bool
soft_drop_brick
= do game <- get
let (newGame, newResult) = softDrop game
put newGame
return newResult
hard_drop_brick :: State Game Bool
hard_drop_brick
= do game <- get
let (newGame, newResult) = hardDrop game
put newGame
return newResult
lock_clear_next_brick :: State Game Bool
lock_clear_next_brick
= do lock_brick
clear_brick_lines
next_brick
drop_lock_clear_next_brick :: State Game Bool
drop_lock_clear_next_brick
= do hard_drop_brick
lock_clear_next_brick
pause_resume :: State Game Bool
pause_resume
= do game <- get
let (newGame, newResult) = pause game
put newGame
return newResult