| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2018-09-13 16:51:08 +0200 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2018-09-13 16:51:08 +0200 | 
| commit | 9ec5806bc721734923ff4c93f7ef1f97a6a03248 (patch) | |
| tree | c80b737a8bf0cc6e311c4fe7256f68e7ea8e158a /src/Struct | |
Starting an browser extension for TO...
Diffstat (limited to 'src/Struct')
| -rw-r--r-- | src/Struct/BattleSummary.elm | 65 | ||||
| -rw-r--r-- | src/Struct/Error.elm | 45 | ||||
| -rw-r--r-- | src/Struct/Event.elm | 25 | ||||
| -rw-r--r-- | src/Struct/Model.elm | 64 | ||||
| -rw-r--r-- | src/Struct/Player.elm | 107 | ||||
| -rw-r--r-- | src/Struct/ServerReply.elm | 23 | ||||
| -rw-r--r-- | src/Struct/UI.elm | 62 | 
7 files changed, 391 insertions, 0 deletions
| diff --git a/src/Struct/BattleSummary.elm b/src/Struct/BattleSummary.elm new file mode 100644 index 0000000..adab965 --- /dev/null +++ b/src/Struct/BattleSummary.elm @@ -0,0 +1,65 @@ +module Struct.BattleSummary exposing +   ( +      Type, +      get_id, +      get_name, +      get_last_edit, +      is_players_turn, +      decoder, +      none +   ) + +-- Elm ------------------------------------------------------------------------- +import Json.Decode +import Json.Decode.Pipeline + +-- Main Menu ------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- 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) +   ) + +none : Type +none = +   { +      id = "", +      name = "Unknown", +      last_edit = "Never", +      is_players_turn = False +   } diff --git a/src/Struct/Error.elm b/src/Struct/Error.elm new file mode 100644 index 0000000..5f40c09 --- /dev/null +++ b/src/Struct/Error.elm @@ -0,0 +1,45 @@ +module Struct.Error exposing (Type, Mode(..), new, to_string) + +-------------------------------------------------------------------------------- +-- TYPES ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- +type Mode = +   IllegalAction +   | Programming +   | Unimplemented +   | Networking +   | Failure + +type alias Type = +   { +      mode: Mode, +      message: String +   } + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +new : Mode -> String -> Type +new mode str = +   { +      mode = mode, +      message = str +   } + +to_string : Type -> String +to_string e = +   ( +      (case e.mode of +         Failure -> "The action failed: " +         IllegalAction -> "Request discarded: " +         Programming -> "Error in the program (please report): " +         Unimplemented -> "Update discarded due to unimplemented feature: " +         Networking -> "Error while conversing with the server: " +      ) +      ++ e.message +   ) + diff --git a/src/Struct/Event.elm b/src/Struct/Event.elm new file mode 100644 index 0000000..419ef51 --- /dev/null +++ b/src/Struct/Event.elm @@ -0,0 +1,25 @@ +module Struct.Event exposing (Type(..), attempted) + +-- Elm ------------------------------------------------------------------------- +import Http + +-- Main Menu ------------------------------------------------------------------- +import Struct.Error +import Struct.ServerReply +import Struct.UI + +-------------------------------------------------------------------------------- +-- TYPES ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- +type Type = +   None +   | Failed Struct.Error.Type +   | ServerReplied (Result Http.Error (List Struct.ServerReply.Type)) +   | TabSelected Struct.UI.Tab + +attempted : (Result.Result err val) -> Type +attempted act = +   case act of +      (Result.Ok _) -> None +      (Result.Err msg) -> +         (Failed (Struct.Error.new Struct.Error.Failure (toString msg))) diff --git a/src/Struct/Model.elm b/src/Struct/Model.elm new file mode 100644 index 0000000..747a39e --- /dev/null +++ b/src/Struct/Model.elm @@ -0,0 +1,64 @@ +module Struct.Model exposing +   ( +      Type, +      new, +      invalidate, +      reset, +      clear_error +   ) + +-- Elm ------------------------------------------------------------------------- + +-- Shared ---------------------------------------------------------------------- +import Struct.Flags + +-- Main Menu ------------------------------------------------------------------- +import Struct.Error +import Struct.Player +import Struct.UI + +-------------------------------------------------------------------------------- +-- TYPES ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- +type alias Type = +   { +      flags: Struct.Flags.Type, +      error: (Maybe Struct.Error.Type), +      player_id: String, +      session_token: String, +      player: Struct.Player.Type, +      ui: Struct.UI.Type +   } + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +new : Struct.Flags.Type -> Type +new flags = +   { +      flags = flags, +      error = Nothing, +      player_id = flags.user_id, +      session_token = flags.token, +      player = (Struct.Player.none), +      ui = (Struct.UI.default) +   } + +reset : Type -> Type +reset model = +   {model | +      error = Nothing +   } + +invalidate : Struct.Error.Type -> Type -> Type +invalidate err model = +   {model | +      error = (Just err) +   } + +clear_error : Type -> Type +clear_error model = {model | error = Nothing} diff --git a/src/Struct/Player.elm b/src/Struct/Player.elm new file mode 100644 index 0000000..73fbdb3 --- /dev/null +++ b/src/Struct/Player.elm @@ -0,0 +1,107 @@ +module Struct.Player exposing +   ( +      Type, +      get_id, +      get_username, +      get_maps, +      get_campaigns, +      get_invasions, +      get_events, +      get_roster_id, +      get_inventory_id, +      decoder, +      none +   ) + +-- Elm ------------------------------------------------------------------------- +import Json.Decode +import Json.Decode.Pipeline + +-- Main Menu ------------------------------------------------------------------- +import Struct.BattleSummary +import Struct.MapSummary + +-------------------------------------------------------------------------------- +-- TYPES ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- +type alias Type = +   { +      id : String, +      name : String, +      maps : (List Struct.MapSummary.Type), +      campaigns : (List Struct.BattleSummary.Type), +      invasions : (List Struct.BattleSummary.Type), +      events : (List Struct.BattleSummary.Type), +      roster_id : String, +      inventory_id : String +   } + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +get_id : Type -> String +get_id t = t.id + +get_username : Type -> String +get_username t = t.name + +get_maps : Type -> (List Struct.MapSummary.Type) +get_maps t = t.maps + +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 + +get_roster_id : Type -> String +get_roster_id t = t.roster_id + +get_inventory_id : Type -> String +get_inventory_id t = t.inventory_id + +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" +            (Json.Decode.list Struct.MapSummary.decoder) +         ) +      |> (Json.Decode.Pipeline.required +            "cmps" +            (Json.Decode.list Struct.BattleSummary.decoder) +         ) +      |> (Json.Decode.Pipeline.required +            "invs" +            (Json.Decode.list Struct.BattleSummary.decoder) +         ) +      |> (Json.Decode.Pipeline.required +            "evts" +            (Json.Decode.list Struct.BattleSummary.decoder) +         ) +      |> (Json.Decode.Pipeline.required "rtid" Json.Decode.string) +      |> (Json.Decode.Pipeline.required "ivid" Json.Decode.string) +   ) + +none : Type +none = +   { +      id = "", +      name = "Unknown", +      maps = [], +      campaigns = [], +      invasions = [], +      events = [], +      roster_id = "", +      inventory_id = "" +   } diff --git a/src/Struct/ServerReply.elm b/src/Struct/ServerReply.elm new file mode 100644 index 0000000..fb4967b --- /dev/null +++ b/src/Struct/ServerReply.elm @@ -0,0 +1,23 @@ +module Struct.ServerReply exposing (Type(..)) + +-- Elm ------------------------------------------------------------------------- + +-- Main Menu ------------------------------------------------------------------- +import Struct.Player + +-------------------------------------------------------------------------------- +-- TYPES ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +type Type = +   Okay +   | Disconnected +   | SetPlayer Struct.Player.Type + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- diff --git a/src/Struct/UI.elm b/src/Struct/UI.elm new file mode 100644 index 0000000..6cf853c --- /dev/null +++ b/src/Struct/UI.elm @@ -0,0 +1,62 @@ +module Struct.UI exposing +   ( +      Type, +      Tab(..), +      default, +      -- Tab +      try_getting_displayed_tab, +      set_displayed_tab, +      reset_displayed_tab, +      to_string +   ) + +-- Main Menu ------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- TYPES ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- +type Tab = +   CampaignsTab +   | InvasionsTab +   | EventsTab +   | CharactersTab +   | MapsEditorTab +   | AccountTab + +type alias Type = +   { +      displayed_tab : (Maybe Tab) +   } + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +default : Type +default = +   { +      displayed_tab = Nothing +   } + +-- Tab ------------------------------------------------------------------------- +try_getting_displayed_tab : Type -> (Maybe Tab) +try_getting_displayed_tab ui = ui.displayed_tab + +set_displayed_tab : Tab -> Type -> Type +set_displayed_tab tab ui = {ui | displayed_tab = (Just tab)} + +reset_displayed_tab : Type -> Type +reset_displayed_tab ui = {ui | displayed_tab = Nothing} + +to_string : Tab -> String +to_string tab = +   case tab of +      CampaignsTab -> "Campaigns" +      InvasionsTab -> "Invasions" +      EventsTab -> "Events" +      CharactersTab -> "Character Editor" +      MapsEditorTab -> "Map Editor" +      AccountTab -> "Account Settings" | 


