From e22e904a181a3158787d5e5e7552a0405f20d210 Mon Sep 17 00:00:00 2001 From: Nathanael Sensfelder Date: Tue, 4 Sep 2018 20:19:47 +0200 Subject: Requests player info. --- src/main-menu/src/Comm/LoadPlayer.elm | 18 ++++++++++------- src/main-menu/src/Comm/Send.elm | 4 ++-- src/main-menu/src/Comm/SetPlayer.elm | 26 ++++++++++++++++++++++++ src/main-menu/src/Constants/IO.elm.m4 | 14 ++++--------- src/main-menu/src/ElmModule/Init.elm | 12 +++++++++-- src/main-menu/src/ElmModule/Subscriptions.elm | 2 +- src/main-menu/src/Struct/Player.elm | 7 +++++++ src/main-menu/src/Update/HandleServerReply.elm | 28 +++++++++++++++++++++++++- 8 files changed, 88 insertions(+), 23 deletions(-) create mode 100644 src/main-menu/src/Comm/SetPlayer.elm (limited to 'src/main-menu') diff --git a/src/main-menu/src/Comm/LoadPlayer.elm b/src/main-menu/src/Comm/LoadPlayer.elm index c4a28ee..f93ed25 100644 --- a/src/main-menu/src/Comm/LoadPlayer.elm +++ b/src/main-menu/src/Comm/LoadPlayer.elm @@ -20,14 +20,18 @@ import Struct.Model -------------------------------------------------------------------------------- try_encoding : Struct.Model.Type -> (Maybe Json.Encode.Value) try_encoding model = - (Just - (Json.Encode.object - [ - ("stk", (Json.Encode.string model.session_token)), - ("pid", (Json.Encode.string model.player_id)) - ] + let + player_id = (Json.Encode.string model.player_id) + in + (Just + (Json.Encode.object + [ + ("stk", (Json.Encode.string model.session_token)), + ("pid", player_id), + ("id", player_id) + ] + ) ) - ) -------------------------------------------------------------------------------- -- EXPORTED -------------------------------------------------------------------- diff --git a/src/main-menu/src/Comm/Send.elm b/src/main-menu/src/Comm/Send.elm index e488d77..925b956 100644 --- a/src/main-menu/src/Comm/Send.elm +++ b/src/main-menu/src/Comm/Send.elm @@ -8,7 +8,7 @@ import Json.Encode -- Map ------------------------------------------------------------------- import Comm.Okay -import Comm.SetSession +import Comm.SetPlayer import Struct.Event import Struct.ServerReply @@ -25,7 +25,7 @@ internal_decoder : String -> (Json.Decode.Decoder Struct.ServerReply.Type) internal_decoder reply_type = case reply_type of "okay" -> (Comm.Okay.decode) - "sse" -> (Comm.SetSession.decode) + "set_plr" -> (Comm.SetPlayer.decode) other -> (Json.Decode.fail ( diff --git a/src/main-menu/src/Comm/SetPlayer.elm b/src/main-menu/src/Comm/SetPlayer.elm new file mode 100644 index 0000000..a595777 --- /dev/null +++ b/src/main-menu/src/Comm/SetPlayer.elm @@ -0,0 +1,26 @@ +module Comm.SetPlayer exposing (decode) + +-- Elm ------------------------------------------------------------------------- +import Json.Decode + +-- Map ------------------------------------------------------------------------- +import Struct.Player +import Struct.ServerReply + +-------------------------------------------------------------------------------- +-- TYPES ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- +internal_decoder : Struct.Player.Type -> Struct.ServerReply.Type +internal_decoder player = + (Struct.ServerReply.SetPlayer player) + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +decode : (Json.Decode.Decoder Struct.ServerReply.Type) +decode = + (Json.Decode.map (internal_decoder) (Struct.Player.decoder)) diff --git a/src/main-menu/src/Constants/IO.elm.m4 b/src/main-menu/src/Constants/IO.elm.m4 index fdb5ed3..699bab2 100644 --- a/src/main-menu/src/Constants/IO.elm.m4 +++ b/src/main-menu/src/Constants/IO.elm.m4 @@ -3,14 +3,8 @@ module Constants.IO exposing (..) base_url : String base_url = "__CONF_SERVER_URL" -login_handler_url : String -login_handler_url = (base_url ++ "/handler/login") +player_handler_url : String +player_handler_url = (base_url ++ "/handler/player") -login_sign_in_handler : String -login_sign_in_handler = (login_handler_url ++ "/lgn_sign_in") - -login_sign_up_handler : String -login_sign_up_handler = (login_handler_url ++ "/lgn_sign_up") - -login_recovery_handler : String -login_recovery_handler = (login_handler_url ++ "/lgn_recovery") +player_loading_handler : String +player_loading_handler = (player_handler_url ++ "/plr_load") diff --git a/src/main-menu/src/ElmModule/Init.elm b/src/main-menu/src/ElmModule/Init.elm index 4cfbcb2..367af39 100644 --- a/src/main-menu/src/ElmModule/Init.elm +++ b/src/main-menu/src/ElmModule/Init.elm @@ -2,7 +2,9 @@ module ElmModule.Init exposing (init) -- Elm ------------------------------------------------------------------------- --- Map ------------------------------------------------------------------- +-- Main Menu ------------------------------------------------------------------- +import Comm.LoadPlayer + import Struct.Event import Struct.Flags import Struct.Model @@ -15,4 +17,10 @@ import Struct.Model -- EXPORTED -------------------------------------------------------------------- -------------------------------------------------------------------------------- init : Struct.Flags.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) -init flags = ((Struct.Model.new flags), Cmd.none) +init flags = + let + model = (Struct.Model.new flags) + in + case (Comm.LoadPlayer.try model) of + Nothing -> (model, Cmd.none) + (Just command) -> (model, command) diff --git a/src/main-menu/src/ElmModule/Subscriptions.elm b/src/main-menu/src/ElmModule/Subscriptions.elm index fe276f4..e9b557e 100644 --- a/src/main-menu/src/ElmModule/Subscriptions.elm +++ b/src/main-menu/src/ElmModule/Subscriptions.elm @@ -2,7 +2,7 @@ module ElmModule.Subscriptions exposing (..) -- Elm ------------------------------------------------------------------------- --- Map ------------------------------------------------------------------- +-- Main Menu ------------------------------------------------------------------- import Struct.Model import Struct.Event diff --git a/src/main-menu/src/Struct/Player.elm b/src/main-menu/src/Struct/Player.elm index 2a56395..73fbdb3 100644 --- a/src/main-menu/src/Struct/Player.elm +++ b/src/main-menu/src/Struct/Player.elm @@ -1,6 +1,7 @@ module Struct.Player exposing ( Type, + get_id, get_username, get_maps, get_campaigns, @@ -25,6 +26,7 @@ import Struct.MapSummary -------------------------------------------------------------------------------- type alias Type = { + id : String, name : String, maps : (List Struct.MapSummary.Type), campaigns : (List Struct.BattleSummary.Type), @@ -41,6 +43,9 @@ type alias Type = -------------------------------------------------------------------------------- -- EXPORTED -------------------------------------------------------------------- -------------------------------------------------------------------------------- +get_id : Type -> String +get_id t = t.id + get_username : Type -> String get_username t = t.name @@ -66,6 +71,7 @@ decoder : (Json.Decode.Decoder Type) decoder = (Json.Decode.Pipeline.decode Type + |> (Json.Decode.Pipeline.required "id" Json.Decode.string) |> (Json.Decode.Pipeline.required "nme" Json.Decode.string) |> (Json.Decode.Pipeline.required "maps" @@ -90,6 +96,7 @@ decoder = none : Type none = { + id = "", name = "Unknown", maps = [], campaigns = [], diff --git a/src/main-menu/src/Update/HandleServerReply.elm b/src/main-menu/src/Update/HandleServerReply.elm index 18cfdd8..96cb0f1 100644 --- a/src/main-menu/src/Update/HandleServerReply.elm +++ b/src/main-menu/src/Update/HandleServerReply.elm @@ -7,6 +7,7 @@ import Http import Struct.Error import Struct.Event import Struct.Model +import Struct.Player import Struct.ServerReply -------------------------------------------------------------------------------- @@ -16,6 +17,31 @@ import Struct.ServerReply -------------------------------------------------------------------------------- -- LOCAL ----------------------------------------------------------------------- -------------------------------------------------------------------------------- +set_player : ( + Struct.Player.Type -> + ( + Struct.Model.Type, + (Maybe Struct.Error.Type), + (List (Cmd Struct.Event.Type)) + ) -> + ( + Struct.Model.Type, + (Maybe Struct.Error.Type), + (List (Cmd Struct.Event.Type)) + ) + ) +set_player player current_state = + let + (model, error, event_list) = current_state + in + ( + {model | + player = player + }, + error, + event_list + ) + apply_command : ( Struct.ServerReply.Type -> ( @@ -31,7 +57,7 @@ apply_command : ( ) apply_command command current_state = case command of - (Struct.ServerReply.SetPlayer _) -> current_state + (Struct.ServerReply.SetPlayer player) -> (set_player player current_state) Struct.ServerReply.Okay -> current_state -------------------------------------------------------------------------------- -- cgit v1.2.3-70-g09d2