| summaryrefslogtreecommitdiff |
diff options
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)) + ) + ) + ) + ) ) |


