| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/shared')
| -rw-r--r-- | src/shared/Struct/BattleSummary.elm | 79 | ||||
| -rw-r--r-- | src/shared/Struct/Flags.elm | 57 | ||||
| -rw-r--r-- | src/shared/Struct/Player.elm | 133 | 
3 files changed, 269 insertions, 0 deletions
| diff --git a/src/shared/Struct/BattleSummary.elm b/src/shared/Struct/BattleSummary.elm new file mode 100644 index 0000000..1947613 --- /dev/null +++ b/src/shared/Struct/BattleSummary.elm @@ -0,0 +1,79 @@ +module Struct.BattleSummary exposing +   ( +      Type, +      get_id, +      get_name, +      get_last_edit, +      is_players_turn, +      decoder, +      encode, +      none +   ) + +-- Elm ------------------------------------------------------------------------- +import Json.Decode +import Json.Decode.Pipeline + +import Json.Encode + +-- Extension ------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- TYPES ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- +type alias Type = +   { +      id : String, +      name : String, +      last_edit : String, +      is_players_turn : Bool +   } + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +get_id : Type -> String +get_id t = t.id + +get_name : Type -> String +get_name t = t.name + +get_last_edit : Type -> String +get_last_edit t = t.last_edit + +is_players_turn : Type -> Bool +is_players_turn t = t.is_players_turn + +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 "ldt" Json.Decode.string) +      |> (Json.Decode.Pipeline.required "ipt" Json.Decode.bool) +   ) + +encode : Type -> Json.Encode.Value +encode t = +   (Json.Encode.object +      [ +         ("id", (Json.Encode.string t.id)), +         ("nme", (Json.Encode.string t.name)), +         ("ldt", (Json.Encode.string t.last_edit)), +         ("ipt", (Json.Encode.bool t.is_players_turn)) +      ] +   ) + +none : Type +none = +   { +      id = "", +      name = "Unknown", +      last_edit = "Never", +      is_players_turn = False +   } diff --git a/src/shared/Struct/Flags.elm b/src/shared/Struct/Flags.elm new file mode 100644 index 0000000..29707a9 --- /dev/null +++ b/src/shared/Struct/Flags.elm @@ -0,0 +1,57 @@ +module Struct.Flags exposing +   ( +      Type, +      get_frequency, +      get_players, +      decoder, +      encode +   ) + +-- Elm ------------------------------------------------------------------------- +import Json.Decode +import Json.Encode + +-- Extension ------------------------------------------------------------------- +import Struct.Player + +-------------------------------------------------------------------------------- +-- TYPES ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- +type alias Type = +   { +      frequency : Int, +      players : (List Struct.Player.Type) +   } + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +get_frequency : Type -> Int +get_frequency flags = flags.frequency + +get_players : Type -> (List Struct.Player.Type) +get_players flags = flags.players + +decoder : (Json.Decode.Decoder Type) +decoder = +   (Json.Decode.map2 +      Type +      (Json.Decode.field "frequency" (Json.Decode.int)) +      (Json.Decode.field "players" (Json.Decode.list (Struct.Player.decoder))) +   ) + +encode : Type -> Json.Encode.Value +encode flags = +   (Json.Encode.object +      [ +         ("frequency", (Json.Encode.int flags.frequency)), +         ( +            "players", +            (Json.Encode.list (List.map (Struct.Player.encode) flags.players)) +         ) +      ] +   ) diff --git a/src/shared/Struct/Player.elm b/src/shared/Struct/Player.elm new file mode 100644 index 0000000..1e8365a --- /dev/null +++ b/src/shared/Struct/Player.elm @@ -0,0 +1,133 @@ +module Struct.Player exposing +   ( +      Type, +      get_id, +      set_id, +      get_query_url, +      set_query_url, +      get_username, +      set_username, +      get_campaigns, +      get_invasions, +      get_events, +      set_battles, +      has_active_battles, +      decoder, +      encode, +      default +   ) + +-- Elm ------------------------------------------------------------------------- +import Json.Decode +import Json.Decode.Pipeline +import Json.Encode + +-- Extension ------------------------------------------------------------------- +import Struct.BattleSummary + +-------------------------------------------------------------------------------- +-- TYPES ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- +type alias Type = +   { +      id : String, +      name : String, +      query_url : String, +      campaigns : (List Struct.BattleSummary.Type), +      invasions : (List Struct.BattleSummary.Type), +      events : (List Struct.BattleSummary.Type) +   } + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +get_id : Type -> String +get_id t = t.id + +set_id : String -> Type -> Type +set_id str t = {t | id = str} + +get_username : Type -> String +get_username t = t.name + +set_username : String -> Type -> Type +set_username str t = {t | name = str} + +get_query_url : Type -> String +get_query_url t = t.query_url + +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 + +get_invasions : Type -> (List Struct.BattleSummary.Type) +get_invasions t = t.invasions + +get_events : Type -> (List Struct.BattleSummary.Type) +get_events t = t.events + +set_battles : ( +      (List Struct.BattleSummary.Type) -> +      (List Struct.BattleSummary.Type) -> +      (List Struct.BattleSummary.Type) -> +      Type -> +      Type +   ) +set_battles campaigns invasions events t = +   {t | +      campaigns = +         (List.filter (Struct.BattleSummary.is_players_turn) campaigns), +      invasions = +         (List.filter (Struct.BattleSummary.is_players_turn) invasions), +      events = (List.filter (Struct.BattleSummary.is_players_turn) events) +   } + +has_active_battles : Type -> Bool +has_active_battles t = +   ( +      ( +         (List.length t.campaigns) +         + (List.length t.invasions) +         + (List.length t.events) +      ) +      > 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 = [] +   } | 


