From b8a5f115793a9f1b39c236e0862ead27b76cc92a Mon Sep 17 00:00:00 2001 From: Jasper Van der Jeugt Date: Thu, 6 Aug 2020 20:09:14 +0200 Subject: Skipping rounds --- client/src/Client.elm | 34 ++++++++++++++++++++++++++-------- client/src/Messages.elm | 12 +++++++++--- 2 files changed, 35 insertions(+), 11 deletions(-) (limited to 'client') diff --git a/client/src/Client.elm b/client/src/Client.elm index fd4663e..840e9b6 100644 --- a/client/src/Client.elm +++ b/client/src/Client.elm @@ -23,11 +23,13 @@ type Msg -- Card selection | SelectWhiteCard WhiteCard | ProposeWhiteCards + | AdminSkipProposals -- Voting | SelectVote Int | SubmitVote + | AdminSkipVotes -- Tally - | ConfirmTally + | AdminConfirmTally type alias Cards = {black : Array String, white : Array String} @@ -159,7 +161,12 @@ viewTable game = case game.view.table of , Html.Events.onClick ProposeWhiteCards ] [Html.text "Propose"] - ] + ] ++ + ifAdmin game.view + [ Html.button + [Html.Events.onClick AdminSkipProposals] + [Html.text "Skip remaining players"] + ] Messages.Voting black proposals myProposal myVote -> Html.div [] <| [Html.p [] [Html.text <| "Vote for the funniest combination"]] ++ List.indexedMap (\i proposal -> @@ -183,7 +190,12 @@ viewTable game = case game.view.table of , Html.Events.onClick SubmitVote ] [Html.text "Vote"] - ] + ] ++ + ifAdmin game.view + [ Html.button + [Html.Events.onClick AdminSkipVotes] + [Html.text "Skip remaining players"] + ] Messages.Tally black results -> Html.div [] <| [Html.p [] [Html.text "Vote results"]] ++ @@ -201,13 +213,15 @@ viewTable game = case game.view.table of ] ]) results ++ - if not game.view.me.admin then - [] - else + ifAdmin game.view [ Html.button - [Html.Events.onClick ConfirmTally] [Html.text "Next round"] + [Html.Events.onClick AdminConfirmTally] + [Html.text "Next round"] ] +ifAdmin : GameView -> List (Html a) -> List (Html a) +ifAdmin gameView html = if gameView.me.admin then html else [] + intersperseWith : List a -> a -> List a -> List a intersperseWith values def list = case list of [] -> [] @@ -326,6 +340,8 @@ update msg model = case msg of ) _ -> (model, Cmd.none) + AdminSkipProposals -> (model, send Messages.AdminSkipProposals) + SelectVote i -> case model of Game game -> case game.view.table of Messages.Voting _ _ _ Nothing -> @@ -333,6 +349,8 @@ update msg model = case msg of _ -> (model, Cmd.none) _ -> (model, Cmd.none) + AdminSkipVotes -> (model, send Messages.AdminSkipVotes) + SubmitVote -> case model of Game game -> case game.selectedVote of Just vote -> @@ -342,7 +360,7 @@ update msg model = case msg of _ -> (model, Cmd.none) _ -> (model, Cmd.none) - ConfirmTally -> (model, send <| Messages.ConfirmTally) + AdminConfirmTally -> (model, send Messages.AdminConfirmTally) main : Program () Model Msg main = Browser.application diff --git a/client/src/Messages.elm b/client/src/Messages.elm index fb244f9..02d2a37 100644 --- a/client/src/Messages.elm +++ b/client/src/Messages.elm @@ -183,7 +183,9 @@ type ClientMessage = ChangeMyName String | ProposeWhiteCards (List WhiteCard) | SubmitVote Int - | ConfirmTally + | AdminSkipProposals + | AdminSkipVotes + | AdminConfirmTally jsonDecClientMessage : Json.Decode.Decoder ( ClientMessage ) jsonDecClientMessage = @@ -191,7 +193,9 @@ jsonDecClientMessage = [ ("ChangeMyName", Json.Decode.lazy (\_ -> Json.Decode.map ChangeMyName (Json.Decode.string))) , ("ProposeWhiteCards", Json.Decode.lazy (\_ -> Json.Decode.map ProposeWhiteCards (Json.Decode.list (jsonDecWhiteCard)))) , ("SubmitVote", Json.Decode.lazy (\_ -> Json.Decode.map SubmitVote (Json.Decode.int))) - , ("ConfirmTally", Json.Decode.lazy (\_ -> Json.Decode.succeed ConfirmTally)) + , ("AdminSkipProposals", Json.Decode.lazy (\_ -> Json.Decode.succeed AdminSkipProposals)) + , ("AdminSkipVotes", Json.Decode.lazy (\_ -> Json.Decode.succeed AdminSkipVotes)) + , ("AdminConfirmTally", Json.Decode.lazy (\_ -> Json.Decode.succeed AdminConfirmTally)) ] in decodeSumObjectWithSingleField "ClientMessage" jsonDecDictClientMessage @@ -201,7 +205,9 @@ jsonEncClientMessage val = ChangeMyName v1 -> ("ChangeMyName", encodeValue (Json.Encode.string v1)) ProposeWhiteCards v1 -> ("ProposeWhiteCards", encodeValue ((Json.Encode.list jsonEncWhiteCard) v1)) SubmitVote v1 -> ("SubmitVote", encodeValue (Json.Encode.int v1)) - ConfirmTally -> ("ConfirmTally", encodeValue (Json.Encode.list identity [])) + AdminSkipProposals -> ("AdminSkipProposals", encodeValue (Json.Encode.list identity [])) + AdminSkipVotes -> ("AdminSkipVotes", encodeValue (Json.Encode.list identity [])) + AdminConfirmTally -> ("AdminConfirmTally", encodeValue (Json.Encode.list identity [])) in encodeSumObjectWithSingleField keyval val -- cgit v1.2.3