summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2018-09-29 13:30:15 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2018-09-29 13:30:15 +0200
commit80c3b7947eb0bd240d4c1f94808cb64d2fbfbf3d (patch)
tree6b4168efd6165f0f23c70cd054416b270a39042a /src/shared/Struct/Player.elm
parentaa908fcf7072c0e27d242ecf7014174f9de16965 (diff)
...
Diffstat (limited to 'src/shared/Struct/Player.elm')
-rw-r--r--src/shared/Struct/Player.elm133
1 files changed, 133 insertions, 0 deletions
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 = []
+ }