| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2018-09-14 18:57:42 +0200 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2018-09-14 18:57:42 +0200 | 
| commit | 2aa0c12b6a193d16681a0179a067664390af7aee (patch) | |
| tree | ca2e2533c3a9947ba5ef9d5e1d646b964ba82eb6 /src/Update | |
| parent | ac5b50e4a622ee0885678a96c69af7f49290bcee (diff) | |
...
Diffstat (limited to 'src/Update')
| -rw-r--r-- | src/Update/AddPlayer.elm | 24 | ||||
| -rw-r--r-- | src/Update/HandleServerReply.elm | 61 | ||||
| -rw-r--r-- | src/Update/RefreshBattles.elm | 28 | ||||
| -rw-r--r-- | src/Update/StoreParams.elm | 18 | 
4 files changed, 126 insertions, 5 deletions
| diff --git a/src/Update/AddPlayer.elm b/src/Update/AddPlayer.elm new file mode 100644 index 0000000..ed9da4a --- /dev/null +++ b/src/Update/AddPlayer.elm @@ -0,0 +1,24 @@ +module Update.AddPlayer exposing (apply_to) + +-- Elm ------------------------------------------------------------------------- +import Array + +-- Extension ------------------------------------------------------------------- +import Struct.Event +import Struct.Flags +import Struct.Model +import Struct.Player + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) +apply_to model = +   ( +      {model | players = (Array.push (Struct.Player.default) model.players)}, +      Cmd.none +   ) diff --git a/src/Update/HandleServerReply.elm b/src/Update/HandleServerReply.elm index 271ecfb..b80c7b4 100644 --- a/src/Update/HandleServerReply.elm +++ b/src/Update/HandleServerReply.elm @@ -1,12 +1,14 @@  module Update.HandleServerReply exposing (apply_to)  -- Elm ------------------------------------------------------------------------- +import Array +  import Http --- Shared ---------------------------------------------------------------------- -import Struct.Flags +-- Extension ------------------------------------------------------------------- +import Comm.GetBattles --- Main Menu ------------------------------------------------------------------- +import Struct.BattleSummary  import Struct.Error  import Struct.Event  import Struct.Model @@ -20,6 +22,55 @@ import Struct.ServerReply  --------------------------------------------------------------------------------  -- LOCAL -----------------------------------------------------------------------  -------------------------------------------------------------------------------- +handle_set_battles : ( +      ( +         (List Struct.BattleSummary.Type), +         (List Struct.BattleSummary.Type), +         (List Struct.BattleSummary.Type) +      ) -> +      (Struct.Model.Type, (List (Cmd Struct.Event.Type))) -> +      (Struct.Model.Type, (List (Cmd Struct.Event.Type))) +   ) +handle_set_battles battles current_state = +   let +      (model, cmds) = current_state +      (campaigns, invasions, events) = battles +   in +      case (Array.get model.query_index model.players) of +         Nothing -> current_state -- TODO: error +         (Just player) -> +            let +               updated_player = +                  (Struct.Player.set_battles +                     campaigns +                     invasions +                     events +                     player +                  ) +               updated_model = +                  {model | +                     players = +                        (Array.set +                           model.query_index +                           updated_player +                           model.players +                        ), +                     query_index = (model.query_index + 1), +                     notify = +                        ( +                           model.notify +                           || (Struct.Player.has_active_battles updated_player) +                        ) +                  } +            in +               case (Array.get updated_model.query_index model.players) of +                  Nothing -> ({updated_model| query_index = -1}, cmds) + +                  (Just next_player) -> +                     case (Comm.GetBattles.try updated_model next_player) of +                        Nothing -> ({updated_model| query_index = -1}, cmds) +                        (Just query) -> (updated_model, (query :: cmds)) +  apply_command : (        Struct.ServerReply.Type ->        (Struct.Model.Type, (List (Cmd Struct.Event.Type))) -> @@ -28,6 +79,10 @@ apply_command : (  apply_command command current_state =     case command of        Struct.ServerReply.Okay -> current_state +      (Struct.ServerReply.SetID str) -> current_state -- TODO +      (Struct.ServerReply.SetUsername str) -> current_state -- TODO +      (Struct.ServerReply.SetBattles battles) -> +         (handle_set_battles battles current_state)  --------------------------------------------------------------------------------  -- EXPORTED -------------------------------------------------------------------- diff --git a/src/Update/RefreshBattles.elm b/src/Update/RefreshBattles.elm new file mode 100644 index 0000000..2ff739f --- /dev/null +++ b/src/Update/RefreshBattles.elm @@ -0,0 +1,28 @@ +module Update.RefreshBattles exposing (apply_to) + +-- Elm ------------------------------------------------------------------------- +import Array + +-- Extension ------------------------------------------------------------------- +import Comm.GetBattles + +import Struct.Event +import Struct.Flags +import Struct.Model + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) +apply_to model = +   case (Array.get 0 model.players) of +      Nothing -> (model, Cmd.none) +      (Just player) -> +         case (Comm.GetBattles.try model player) of +            -- TODO: Invalidate only this player, refresh the others. +            Nothing -> (model, Cmd.none) +            (Just cmd) -> ({model | query_index = 0}, cmd) diff --git a/src/Update/StoreParams.elm b/src/Update/StoreParams.elm index 3955ecd..f369be8 100644 --- a/src/Update/StoreParams.elm +++ b/src/Update/StoreParams.elm @@ -1,13 +1,17 @@  module Update.StoreParams exposing (apply_to)  -- Elm ------------------------------------------------------------------------- +import Array --- Login ----------------------------------------------------------------------- +import Json.Encode + +-- Extension -------------------------------------------------------------------  import Action.Ports  import Struct.Event  import Struct.Flags  import Struct.Model +import Struct.Player  --------------------------------------------------------------------------------  -- LOCAL ----------------------------------------------------------------------- @@ -20,5 +24,15 @@ apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type))  apply_to model =     (        model, -      (Action.Ports.store_params (5, "")) +      (Action.Ports.store_params +         ( +            (Struct.Flags.get_frequency model.flags), +            (Json.Encode.encode +               0 +               (Json.Encode.list +                  (List.map (Struct.Player.encode) (Array.toList model.players)) +               ) +            ) +         ) +      )     ) | 


