summaryrefslogtreecommitdiff |
diff options
author | nsensfel <SpamShield0@noot-noot.org> | 2018-12-10 17:42:00 +0100 |
---|---|---|
committer | nsensfel <SpamShield0@noot-noot.org> | 2018-12-10 17:42:00 +0100 |
commit | 23ecc837380e2653d600e0246f50db30a3a238fc (patch) | |
tree | 6fee1d249092894b7acfa6483658f7ae65afff73 | |
parent | fa70f7be28804fb497c4c3424463f9f1ba4bb453 (diff) |
...
-rw-r--r-- | src/roster-editor/src/Comm/JoinBattle.elm | 82 | ||||
-rw-r--r-- | src/roster-editor/src/Constants/IO.elm.m4 | 3 | ||||
-rw-r--r-- | src/roster-editor/src/ElmModule/Update.elm | 4 | ||||
-rw-r--r-- | src/roster-editor/src/ElmModule/View.elm | 2 | ||||
-rw-r--r-- | src/roster-editor/src/Struct/Event.elm | 1 | ||||
-rw-r--r-- | src/roster-editor/src/Struct/Model.elm | 6 | ||||
-rw-r--r-- | src/roster-editor/src/Update/JoinBattle.elm | 28 | ||||
-rw-r--r-- | src/roster-editor/src/Update/ToggleBattleIndex.elm | 10 | ||||
-rw-r--r-- | src/roster-editor/src/View/MainMenu.elm | 35 | ||||
-rw-r--r-- | src/shared/elm/Struct/Flags.elm | 7 |
10 files changed, 164 insertions, 14 deletions
diff --git a/src/roster-editor/src/Comm/JoinBattle.elm b/src/roster-editor/src/Comm/JoinBattle.elm new file mode 100644 index 0000000..582e269 --- /dev/null +++ b/src/roster-editor/src/Comm/JoinBattle.elm @@ -0,0 +1,82 @@ +module Comm.JoinBattle exposing (try) + +-- Elm ------------------------------------------------------------------------- +import Array + +import Json.Encode + +-- Shared ---------------------------------------------------------------------- +import Struct.Flags + +-- Roster Editor --------------------------------------------------------------- +import Comm.Send + +import Constants.IO + +import Struct.Event +import Struct.Model + +-------------------------------------------------------------------------------- +-- TYPES ------------------------------------------------------------------------ +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- +try_encoding : Struct.Model.Type -> (Maybe Json.Encode.Value) +try_encoding model = + (Just + (Json.Encode.object + [ + ("stk", (Json.Encode.string model.session_token)), + ("pid", (Json.Encode.string model.player_id)), + ( + "ix", + (Json.Encode.string + (Struct.Flags.force_get_param "ix" model.flags) + ) + ), + ( + "m", + (Json.Encode.string + (Struct.Flags.force_get_param "m" model.flags) + ) + ), + ( + "s", + (Json.Encode.string + (Struct.Flags.force_get_param "s" model.flags) + ) + ), + ( + "map_id", + (Json.Encode.string + (Struct.Flags.force_get_param "map_id" model.flags) + ) + ), + ( + "r", + (Json.Encode.array + (Array.map + (Json.Encode.int) + (Array.filter + (\e -> (e /= -1)) + model.battle_order + ) + ) + ) + ) + ] + ) + ) + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +try : Struct.Model.Type -> (Maybe (Cmd Struct.Event.Type)) +try model = + (Comm.Send.try_sending + model + Constants.IO.join_battle_handler + try_encoding + ) diff --git a/src/roster-editor/src/Constants/IO.elm.m4 b/src/roster-editor/src/Constants/IO.elm.m4 index 17683ac..c09c556 100644 --- a/src/roster-editor/src/Constants/IO.elm.m4 +++ b/src/roster-editor/src/Constants/IO.elm.m4 @@ -12,6 +12,9 @@ roster_loading_handler = (roster_handler_url ++ "/rst_load") roster_update_handler : String roster_update_handler = (roster_handler_url ++ "/rst_update") +join_battle_handler : String +join_battle_handler = (roster_handler_url ++ "/btl_join") + armors_data_url : String armors_data_url = (base_url ++ "/asset/data/armors.json") diff --git a/src/roster-editor/src/ElmModule/Update.elm b/src/roster-editor/src/ElmModule/Update.elm index 923b552..97d787d 100644 --- a/src/roster-editor/src/ElmModule/Update.elm +++ b/src/roster-editor/src/ElmModule/Update.elm @@ -9,6 +9,7 @@ import Struct.UI import Update.GoToMainMenu import Update.HandleServerReply +import Update.JoinBattle import Update.SelectCharacter import Update.SelectTab import Update.SendRoster @@ -74,6 +75,9 @@ update event model = Struct.Event.SaveRequest -> (Update.SendRoster.apply_to (Struct.Model.save_character new_model)) + Struct.Event.GoRequest -> + (Update.JoinBattle.apply_to (Struct.Model.save_character new_model)) + (Struct.Event.SetCharacterName name) -> (Update.SetName.apply_to new_model name) diff --git a/src/roster-editor/src/ElmModule/View.elm b/src/roster-editor/src/ElmModule/View.elm index f559cb5..bf086e3 100644 --- a/src/roster-editor/src/ElmModule/View.elm +++ b/src/roster-editor/src/ElmModule/View.elm @@ -27,7 +27,7 @@ view model = (Html.Attributes.class "fullscreen-module") ] [ - (View.MainMenu.get_html), + (View.MainMenu.get_html model), (View.CurrentTab.get_html model), (View.Controlled.get_html model), (View.MessageBoard.get_html model) diff --git a/src/roster-editor/src/Struct/Event.elm b/src/roster-editor/src/Struct/Event.elm index cfafbdd..032a002 100644 --- a/src/roster-editor/src/Struct/Event.elm +++ b/src/roster-editor/src/Struct/Event.elm @@ -29,6 +29,7 @@ type Type = | ClickedOnWeapon Bool | ClickedOnGlyph Int | SaveRequest + | GoRequest | SetCharacterName String diff --git a/src/roster-editor/src/Struct/Model.elm b/src/roster-editor/src/Struct/Model.elm index b205004..8794aca 100644 --- a/src/roster-editor/src/Struct/Model.elm +++ b/src/roster-editor/src/Struct/Model.elm @@ -56,7 +56,7 @@ type alias Type = glyph_boards: (Dict.Dict Struct.GlyphBoard.Ref Struct.GlyphBoard.Type), portraits: (Dict.Dict Struct.Portrait.Ref Struct.Portrait.Type), error: (Maybe Struct.Error.Type), - used_indices: (Array.Array Bool), + battle_order: (Array.Array Int), player_id: String, roster_id: String, edited_char: (Maybe Struct.Character.Type), @@ -143,7 +143,7 @@ new flags = then "0" else flags.user_id ), - used_indices = + battle_order = (Array.repeat ( case (Struct.Flags.maybe_get_param "s" flags) of @@ -153,7 +153,7 @@ new flags = (Just "l") -> 24 (Just _) -> 0 ) - False + -1 ), session_token = flags.token, edited_char = Nothing, diff --git a/src/roster-editor/src/Update/JoinBattle.elm b/src/roster-editor/src/Update/JoinBattle.elm new file mode 100644 index 0000000..eb164bc --- /dev/null +++ b/src/roster-editor/src/Update/JoinBattle.elm @@ -0,0 +1,28 @@ +module Update.JoinBattle exposing (apply_to) + +-- Elm ------------------------------------------------------------------------- +--import Array + +-- Roster Editor --------------------------------------------------------------- +import Comm.JoinBattle + +import Struct.Event +import Struct.Model + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) +apply_to model = + ( + model, + (case (Comm.JoinBattle.try model) of + (Just cmd) -> cmd + Nothing -> Cmd.none + ) + ) + diff --git a/src/roster-editor/src/Update/ToggleBattleIndex.elm b/src/roster-editor/src/Update/ToggleBattleIndex.elm index 42d8374..584c314 100644 --- a/src/roster-editor/src/Update/ToggleBattleIndex.elm +++ b/src/roster-editor/src/Update/ToggleBattleIndex.elm @@ -22,11 +22,11 @@ remove_battle_index : ( remove_battle_index model char index = {model | edited_char = Nothing, - used_indices = + battle_order = (Array.set (Struct.Character.get_battle_index char) - False - model.used_indices + -1 + model.battle_order ), characters = (Array.set @@ -43,12 +43,12 @@ give_battle_index : ( Struct.Model.Type ) give_battle_index model char index = - case (Util.Array.indexed_search (\e -> (not e)) model.used_indices) of + case (Util.Array.indexed_search (\e -> (e == -1)) model.battle_order) of Nothing -> model (Just (battle_index, _)) -> {model | edited_char = Nothing, - used_indices = (Array.set battle_index True model.used_indices), + battle_order = (Array.set battle_index index model.battle_order), characters = (Array.set index diff --git a/src/roster-editor/src/View/MainMenu.elm b/src/roster-editor/src/View/MainMenu.elm index 3663076..e70b5c0 100644 --- a/src/roster-editor/src/View/MainMenu.elm +++ b/src/roster-editor/src/View/MainMenu.elm @@ -1,12 +1,18 @@ module View.MainMenu exposing (get_html) -- Elm ------------------------------------------------------------------------- +import Array + import Html import Html.Attributes import Html.Events --- Map ------------------------------------------------------------------- +-- Shared ---------------------------------------------------------------------- +import Util.Html + +-- Roster Editor --------------------------------------------------------------- import Struct.Event +import Struct.Model import Struct.UI -------------------------------------------------------------------------------- @@ -41,14 +47,32 @@ get_save_button_html : (Html.Html Struct.Event.Type) get_save_button_html = (Html.button [ (Html.Events.onClick Struct.Event.SaveRequest) ] - [ (Html.text "Save") ] + [ + (Html.text "Save") + ] ) +get_go_button_html : Struct.Model.Type -> (Html.Html Struct.Event.Type) +get_go_button_html model = + if ((Array.length model.battle_order) > 0) + then + (Html.button + [ + (Html.Events.onClick Struct.Event.GoRequest), + (Html.Attributes.class "blinking") + ] + [ + (Html.text "Go!") + ] + ) + else + (Util.Html.nothing) + -------------------------------------------------------------------------------- -- EXPORTED -------------------------------------------------------------------- -------------------------------------------------------------------------------- -get_html : (Html.Html Struct.Event.Type) -get_html = +get_html : Struct.Model.Type -> (Html.Html Struct.Event.Type) +get_html model = (Html.div [ (Html.Attributes.class "main-menu") @@ -57,6 +81,7 @@ get_html = (get_main_menu_button_html), (get_reset_button_html), (get_characters_button_html), - (get_save_button_html) + (get_save_button_html), + (get_go_button_html model) ] ) diff --git a/src/shared/elm/Struct/Flags.elm b/src/shared/elm/Struct/Flags.elm index 8cb8aea..9fb9eac 100644 --- a/src/shared/elm/Struct/Flags.elm +++ b/src/shared/elm/Struct/Flags.elm @@ -2,6 +2,7 @@ module Struct.Flags exposing ( Type, maybe_get_param, + force_get_param, get_params_as_url ) @@ -47,6 +48,12 @@ maybe_get_param param flags = Nothing -> Nothing (Just b) -> (List.head b) +force_get_param : String -> Type -> String +force_get_param param flags = + case (maybe_get_param param flags) of + Nothing -> "" + (Just str) -> str + get_params_as_url : Type -> String get_params_as_url flags = (List.foldl |