diff options
| author | Joris Guyonvarch | 2015-03-08 15:14:07 +0100 | 
|---|---|---|
| committer | Joris Guyonvarch | 2015-03-08 15:14:07 +0100 | 
| commit | 87386e8b148c2536214fdaf6c3140853c751d7b4 (patch) | |
| tree | 9af29dd893e414f610695f133b32ccf8a3cf79bf /src | |
| parent | 97e494a7c5a105bba6a48f5025e71a376fc8673d (diff) | |
Showing the score at the end of each round
Diffstat (limited to 'src')
| -rw-r--r-- | src/Model/Round.elm | 13 | ||||
| -rw-r--r-- | src/Update/Update.elm | 2 | ||||
| -rw-r--r-- | src/View/Game.elm | 2 | ||||
| -rw-r--r-- | src/View/Page.elm | 36 | 
4 files changed, 38 insertions, 15 deletions
| diff --git a/src/Model/Round.elm b/src/Model/Round.elm index d5210d5..16e8f5e 100644 --- a/src/Model/Round.elm +++ b/src/Model/Round.elm @@ -1,8 +1,9 @@  module Model.Round    ( Round -  , roundOrder +  , maybeBestRound    ) where +import List  import Time (Time)  type alias Round = @@ -10,6 +11,16 @@ type alias Round =    , score : Int    } +maybeBestRound : List Round -> Maybe Round +maybeBestRound rounds = +  let orderedRounds = +        rounds +          |> List.sortWith roundOrder +          |> List.reverse +  in  case orderedRounds of +        [] -> Nothing +        best :: _ -> Just best +  roundOrder : Round -> Round -> Order  roundOrder round1 round2 =    if round1.score == round2.score diff --git a/src/Update/Update.elm b/src/Update/Update.elm index 7cf4dee..ab68d2e 100644 --- a/src/Update/Update.elm +++ b/src/Update/Update.elm @@ -31,7 +31,7 @@ update input game =            | time <- 0            , currentScore <- 0            , cloud <- initCloud -          , rounds <- (Round game.time game.currentScore) :: game.rounds +          , rounds <- game.rounds `List.append` [Round game.time game.currentScore]            }          else            let newTime = game.time + input.delta diff --git a/src/View/Game.elm b/src/View/Game.elm index 8e76b48..0bbea00 100644 --- a/src/View/Game.elm +++ b/src/View/Game.elm @@ -69,7 +69,7 @@ outlineColor = rgb 34 34 34  scoreForms : Int -> List Form  scoreForms score =    let text = (toString score) -      scorePos = { x = 0.0, y = boardSize.y / 2 - 30 } +      scorePos = { x = 0.0, y = boardSize.y / 2 - 35 }    in  [textForm text scorePos centered]  textForm : String -> Vec2 -> (Text -> Element) -> Form diff --git a/src/View/Page.elm b/src/View/Page.elm index 3aa29a2..c85cf91 100644 --- a/src/View/Page.elm +++ b/src/View/Page.elm @@ -3,6 +3,7 @@ module View.Page    ) where  import List +import String (append)  import Html (..)  import Html.Attributes (..) @@ -10,7 +11,7 @@ import Html.Attributes as A  import Json.Encode (string)  import Model.Game (Game) -import Model.Round (roundOrder) +import Model.Round (..)  import View.Game (gameView)  import View.Time (timeView) @@ -29,18 +30,23 @@ pageView game =      , p          []          [ text "Use the arrow keys to move and 'e' to change your color." ] -    , ( let orderedRounds = -              game.rounds -                |> List.sortWith roundOrder -                |> List.reverse -        in case orderedRounds of -             [] -> -               div [ class "bestScore" ] [] -             bestRound :: _ -> -               p -                 [ class "bestScore isDefined" ] -                 [ text <| "Best score: " ++ (toString bestRound.score) ++ " hits within " ++ (timeView bestRound.duration) ] +    , ( case maybeBestRound game.rounds of +          Nothing -> +            div [ class "bestScore" ] [] +          Just bestRound -> +             p +               [ class "bestScore isDefined" ] +               [ roundView bestRound +                   |> append "Best score: " +                   |> text +               ]        ) +    , ul +        [ class "rounds" ] +        ( List.map +            (\round -> li [] [ text (roundView round) ]) +            game.rounds +        )      , a          [ href "https://github.com/guyonvarch/catchvoid" ]          [ img @@ -58,3 +64,9 @@ pageView game =          ]      ] +roundView : Round -> String +roundView round = +  let score = toString round.score +      hits = "hit" ++ (if round.score > 1 then "s" else "") +      duration = timeView round.duration +  in  score ++ " " ++ hits ++ " within " ++ duration | 
