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