summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/Struct')
-rw-r--r--src/Struct/Event.elm3
-rw-r--r--src/Struct/Flags.elm18
-rw-r--r--src/Struct/Model.elm12
-rw-r--r--src/Struct/Player.elm62
-rw-r--r--src/Struct/ServerReply.elm13
5 files changed, 80 insertions, 28 deletions
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 -----------------------------------------------------------------------