packages feed

Eternal10Seconds-0.1: Gameover.hs

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