From c92c0f65c733c9aba5c56313a4bc313a299e1230 Mon Sep 17 00:00:00 2001 From: Jasper Van der Jeugt Date: Thu, 30 Jul 2020 22:07:37 +0200 Subject: Some logic --- client/src/Client.elm | 12 +++++++++--- client/src/Messages.elm | 22 ++++++++++++++++++---- 2 files changed, 27 insertions(+), 7 deletions(-) (limited to 'client/src') diff --git a/client/src/Client.elm b/client/src/Client.elm index 5c6d167..194fd80 100644 --- a/client/src/Client.elm +++ b/client/src/Client.elm @@ -72,11 +72,17 @@ view model = case model of [Html.text "change"] ] ] ++ - (case game.view.blackCard of - Nothing -> [] - Just c -> [blackCard game.cards c]) ++ + [viewTable game.cards game.view.table] ++ (List.map (whiteCard game.cards) game.view.hand) +viewTable : Cards -> Messages.TableView -> Html a +viewTable cards (Messages.Proposing c my) = Html.div [] <| + [ blackCard cards c + ] ++ + (case my of + Nothing -> [] + Just mc -> [whiteCard cards mc]) + blackCard : Cards -> Messages.BlackCard -> Html a blackCard cards (Messages.BlackCard idx) = let blank = Html.span [Html.Attributes.class "blank"] [] in diff --git a/client/src/Messages.elm b/client/src/Messages.elm index 15a0d1c..69d0eff 100644 --- a/client/src/Messages.elm +++ b/client/src/Messages.elm @@ -56,19 +56,33 @@ jsonEncCards val = +type TableView = + Proposing BlackCard (Maybe WhiteCard) + +jsonDecTableView : Json.Decode.Decoder ( TableView ) +jsonDecTableView = + Json.Decode.lazy (\_ -> Json.Decode.map2 Proposing (Json.Decode.index 0 (jsonDecBlackCard)) (Json.Decode.index 1 (Json.Decode.maybe (jsonDecWhiteCard)))) + + +jsonEncTableView : TableView -> Value +jsonEncTableView (Proposing v1 v2) = + Json.Encode.list identity [jsonEncBlackCard v1, (maybeEncode (jsonEncWhiteCard)) v2] + + + type alias GameView = { opponents: (List String) , myName: String - , blackCard: (Maybe BlackCard) + , table: TableView , hand: (List WhiteCard) } jsonDecGameView : Json.Decode.Decoder ( GameView ) jsonDecGameView = - Json.Decode.succeed (\popponents pmyName pblackCard phand -> {opponents = popponents, myName = pmyName, blackCard = pblackCard, hand = phand}) + Json.Decode.succeed (\popponents pmyName ptable phand -> {opponents = popponents, myName = pmyName, table = ptable, hand = phand}) |> required "opponents" (Json.Decode.list (Json.Decode.string)) |> required "myName" (Json.Decode.string) - |> fnullable "blackCard" (jsonDecBlackCard) + |> required "table" (jsonDecTableView) |> required "hand" (Json.Decode.list (jsonDecWhiteCard)) jsonEncGameView : GameView -> Value @@ -76,7 +90,7 @@ jsonEncGameView val = Json.Encode.object [ ("opponents", (Json.Encode.list Json.Encode.string) val.opponents) , ("myName", Json.Encode.string val.myName) - , ("blackCard", (maybeEncode (jsonEncBlackCard)) val.blackCard) + , ("table", jsonEncTableView val.table) , ("hand", (Json.Encode.list jsonEncWhiteCard) val.hand) ] -- cgit v1.2.3