From 2aa0c12b6a193d16681a0179a067664390af7aee Mon Sep 17 00:00:00 2001 From: nsensfel Date: Fri, 14 Sep 2018 18:57:42 +0200 Subject: ... --- src/Struct/Event.elm | 3 +++ src/Struct/Flags.elm | 18 ++++++++++---- src/Struct/Model.elm | 12 ++++++--- src/Struct/Player.elm | 62 +++++++++++++++++++++++++++++++++------------- src/Struct/ServerReply.elm | 13 +++++++--- 5 files changed, 80 insertions(+), 28 deletions(-) (limited to 'src/Struct') diff --git a/src/Struct/Event.elm b/src/Struct/Event.elm index 68bca98..eafd812 100644 --- a/src/Struct/Event.elm +++ b/src/Struct/Event.elm @@ -13,10 +13,13 @@ import Struct.ServerReply type Type = None | Failed Struct.Error.Type + | AddPlayer + | ShouldRefresh | SetUsername String | SetID String | SetURLPrefix String | SetFrequency Int + | StoreParams | ServerReplied (Result Http.Error (List Struct.ServerReply.Type)) attempted : (Result.Result err val) -> Type diff --git a/src/Struct/Flags.elm b/src/Struct/Flags.elm index d9d2dcd..e5a79f8 100644 --- a/src/Struct/Flags.elm +++ b/src/Struct/Flags.elm @@ -6,10 +6,10 @@ module Struct.Flags exposing ) -- Elm ------------------------------------------------------------------------- -import List +import Json.Decode --- Shared ---------------------------------------------------------------------- -import Util.List +-- Extension ------------------------------------------------------------------- +import Struct.Player -------------------------------------------------------------------------------- -- TYPES ----------------------------------------------------------------------- @@ -30,5 +30,13 @@ type alias Type = get_frequency : Type -> Int get_frequency flags = flags.frequency -get_players : Type -> String -get_players flags = flags.players +get_players : Type -> (List Struct.Player.Type) +get_players flags = + case + (Json.Decode.decodeString + (Json.Decode.list (Struct.Player.decoder)) + flags.players + ) + of + (Ok result) -> result + (Err _) -> [] diff --git a/src/Struct/Model.elm b/src/Struct/Model.elm index 6d4a588..dca14c2 100644 --- a/src/Struct/Model.elm +++ b/src/Struct/Model.elm @@ -22,7 +22,9 @@ type alias Type = { flags: Struct.Flags.Type, error: (Maybe Struct.Error.Type), - players: (Array.Array Struct.Player.Type) + players: (Array.Array Struct.Player.Type), + query_index: Int, + notify: Bool } -------------------------------------------------------------------------------- @@ -37,13 +39,17 @@ new flags = { flags = flags, error = Nothing, - players = (Array.empty) + players = (Array.fromList (Struct.Flags.get_players flags)), + query_index = -1, + notify = False } reset : Type -> Type reset model = {model | - error = Nothing + error = Nothing, + notify = False, + query_index = -1 } invalidate : Struct.Error.Type -> Type -> Type diff --git a/src/Struct/Player.elm b/src/Struct/Player.elm index 6a81daf..1e8365a 100644 --- a/src/Struct/Player.elm +++ b/src/Struct/Player.elm @@ -1,24 +1,26 @@ module Struct.Player exposing ( Type, - get_ix, - set_ix, get_id, set_id, - get_url_prefix, - set_url_prefix, + get_query_url, + set_query_url, get_username, set_username, get_campaigns, get_invasions, get_events, set_battles, - has_active_battles + has_active_battles, + decoder, + encode, + default ) -- Elm ------------------------------------------------------------------------- import Json.Decode import Json.Decode.Pipeline +import Json.Encode -- Extension ------------------------------------------------------------------- import Struct.BattleSummary @@ -28,10 +30,9 @@ import Struct.BattleSummary -------------------------------------------------------------------------------- type alias Type = { - ix : Int, id : String, name : String, - url_prefix : String, + query_url : String, campaigns : (List Struct.BattleSummary.Type), invasions : (List Struct.BattleSummary.Type), events : (List Struct.BattleSummary.Type) @@ -44,12 +45,6 @@ type alias Type = -------------------------------------------------------------------------------- -- EXPORTED -------------------------------------------------------------------- -------------------------------------------------------------------------------- -get_ix : Type -> Int -get_ix t = t.ix - -set_ix : Int -> Type -> Type -set_ix val t = {t | ix = val} - get_id : Type -> String get_id t = t.id @@ -62,11 +57,11 @@ get_username t = t.name set_username : String -> Type -> Type set_username str t = {t | name = str} -get_url_prefix : Type -> String -get_url_prefix t = t.url_prefix +get_query_url : Type -> String +get_query_url t = t.query_url -set_url_prefix : String -> Type -> Type -set_url_prefix str t = {t | url_prefix = str} +set_query_url : String -> Type -> Type +set_query_url str t = {t | query_url = str} get_campaigns : Type -> (List Struct.BattleSummary.Type) get_campaigns t = t.campaigns @@ -103,3 +98,36 @@ has_active_battles t = ) > 0 ) + +decoder : (Json.Decode.Decoder Type) +decoder = + (Json.Decode.Pipeline.decode + Type + |> (Json.Decode.Pipeline.required "id" Json.Decode.string) + |> (Json.Decode.Pipeline.required "name" Json.Decode.string) + |> (Json.Decode.Pipeline.required "query_url" Json.Decode.string) + |> (Json.Decode.Pipeline.hardcoded []) + |> (Json.Decode.Pipeline.hardcoded []) + |> (Json.Decode.Pipeline.hardcoded []) + ) + +encode : Type -> Json.Encode.Value +encode t = + (Json.Encode.object + [ + ("id", (Json.Encode.string t.id)), + ("name", (Json.Encode.string t.name)), + ("query_url", (Json.Encode.string t.query_url)) + ] + ) + +default : Type +default = + { + id = "0", + name = "Username", + query_url = "http://127.0.0.1/", + campaigns = [], + invasions = [], + events = [] + } diff --git a/src/Struct/ServerReply.elm b/src/Struct/ServerReply.elm index 65fc063..f0530d8 100644 --- a/src/Struct/ServerReply.elm +++ b/src/Struct/ServerReply.elm @@ -2,8 +2,8 @@ module Struct.ServerReply exposing (Type(..)) -- Elm ------------------------------------------------------------------------- --- Main Menu ------------------------------------------------------------------- -import Struct.Player +-- ------------------------------------------------------------------- +import Struct.BattleSummary -------------------------------------------------------------------------------- -- TYPES ----------------------------------------------------------------------- @@ -11,7 +11,14 @@ import Struct.Player type Type = Okay --- | SetBattles (List, List, List) + | SetID String + | SetUsername String + | SetBattles + ( + (List Struct.BattleSummary.Type), + (List Struct.BattleSummary.Type), + (List Struct.BattleSummary.Type) + ) -------------------------------------------------------------------------------- -- LOCAL ----------------------------------------------------------------------- -- cgit v1.2.3-70-g09d2