module Gameover where
import Monad
import qualified Graphics.UI.SDL as SDL
import Resource
import Stage
import Number
-- ゲームオーバー画面
data Gameover = Gameover {
lastState :: Stage
}
gameoverPaint = (("./resource/image/gameover.bmp", Nothing), Just (SDL.Rect 250 200 300 150))
blackPaint = (("./resource/image/black.bmp", Nothing), Nothing)
resultPaint = (("./resource/image/result.bmp", Nothing), Just (SDL.Rect 300 450 200 50))
gameoverPaints = [gameoverPaint, blackPaint, resultPaint]
gameoverImgs = number2Bmp:map (fst.fst) gameoverPaints
-- 描画
renderGameover :: Gameover -> SDL.Surface -> Resource -> IO ()
renderGameover g surf res = do
renderStage (lastState g) surf res
let ((filename, r1), r2) = blackPaint
(Just imgSurf) = lookup filename (imageResource res) in do
SDL.setAlpha imgSurf [SDL.SrcAlpha] 191
SDL.blitSurface imgSurf r1 surf r2
renderPaint res surf gameoverPaint
renderPaint res surf resultPaint
renderNumber surf res number2Bmp number2Size (450, 450) (milisec $ stageTime $ lastState g)
return ()
-- リソースの更新
addGameoverResource :: Resource -> IO Resource
addGameoverResource res = do
foldM addImageResource res gameoverImgs