diff --git a/elm/Match.elm b/elm/Match.elm index 29f2f5e..322064e 100644 --- a/elm/Match.elm +++ b/elm/Match.elm @@ -6,7 +6,6 @@ module Match exposing (..) import Api import Duration exposing (Duration) import Element exposing (Element) -import Element.Background import Http import Json.Decode as D import Layout @@ -252,5 +251,5 @@ viewMenu : , width : Quantity Int Pixels } -> Element (Msg gameState) -viewMenu data = +viewMenu _ = Element.none diff --git a/elm/Screen/CreateGame.elm b/elm/Screen/CreateGame.elm new file mode 100644 index 0000000..de0e9ad --- /dev/null +++ b/elm/Screen/CreateGame.elm @@ -0,0 +1,65 @@ +module Screen.CreateGame exposing (..) + +-- MODEL + +type alias Model = + { baseUrl : String + , players : List String + } + +type Msg + = OnBaseUrl String + | OnPlayer Int String + | RemovePlayer Int + +-- UPDATE + +update : Msg -> Model -> ( Model, Cmd Msg ) +update msg model = + case msg of + OnBaseUrl url -> + ( { model | baseUrl = url }, Cmd.none ) + + OnPlayer n p -> + let + newIndex = List.length model.players == n + + newPlayers = + if newIndex && mayCreateNewPlayer model.players then + List.append model.players [ p ] + else + List.indexedMap + (\i player -> + if n == i then + p + else + player + ) + model.players + + in + ( { model | players = newPlayers }, Cmd.none ) + + RemovePlayer n -> + ( { model + | players = + model.players + |> List.indexedMap + (\i player -> + if n == i then + Nothing + else + Just player + ) + |> List.filterMap identity + } + , Cmd.none + ) + +-- SUBSCRIPTIONS + +-- VIEW + +mayCreateNewPlayer : List String -> Bool +mayCreateNewPlayer = + List.all (not << String.isEmpty)