| summaryrefslogtreecommitdiff | 
diff options
| -rw-r--r-- | src/main-menu/src/ElmModule/Update.elm | 18 | ||||
| -rw-r--r-- | src/main-menu/src/Struct/BattleRequest.elm | 12 | ||||
| -rw-r--r-- | src/main-menu/src/Struct/Event.elm | 2 | ||||
| -rw-r--r-- | src/main-menu/src/Update/HandleNewBattle.elm (renamed from src/main-menu/src/Update/HandleNewInvasion.elm) | 31 | ||||
| -rw-r--r-- | src/main-menu/src/View/BattleListing.elm | 2 | ||||
| -rw-r--r-- | src/main-menu/src/View/CurrentTab.elm | 4 | ||||
| -rw-r--r-- | src/main-menu/src/View/Invasions.elm | 6 | ||||
| -rw-r--r-- | src/main-menu/src/View/Tab/NewBattle.elm | 224 | ||||
| -rw-r--r-- | src/main-menu/src/View/Tab/NewInvasion.elm | 176 | 
9 files changed, 280 insertions, 195 deletions
| diff --git a/src/main-menu/src/ElmModule/Update.elm b/src/main-menu/src/ElmModule/Update.elm index 5eb3e19..095d7da 100644 --- a/src/main-menu/src/ElmModule/Update.elm +++ b/src/main-menu/src/ElmModule/Update.elm @@ -6,7 +6,7 @@ module ElmModule.Update exposing (update)  import Struct.Event  import Struct.Model -import Update.HandleNewInvasion +import Update.HandleNewBattle  import Update.HandleServerReply  -------------------------------------------------------------------------------- @@ -37,16 +37,16 @@ update event model =        (Struct.Event.ServerReplied result) ->           (Update.HandleServerReply.apply_to model result) -      (Struct.Event.NewInvasion ix) -> -         (Update.HandleNewInvasion.apply_to new_model ix) +      (Struct.Event.NewBattle (ix, category)) -> +         (Update.HandleNewBattle.apply_to new_model ix category) -      (Struct.Event.InvasionSetSize size) -> -         (Update.HandleNewInvasion.set_size new_model size) +      (Struct.Event.BattleSetSize size) -> +         (Update.HandleNewBattle.set_size new_model size) -      (Struct.Event.InvasionSetCategory cat) -> -         (Update.HandleNewInvasion.set_category new_model cat) +      (Struct.Event.BattleSetMode mode) -> +         (Update.HandleNewBattle.set_mode new_model mode) -      (Struct.Event.InvasionSetMap map_summary) -> -         (Update.HandleNewInvasion.set_map new_model map_summary) +      (Struct.Event.BattleSetMap map_summary) -> +         (Update.HandleNewBattle.set_map new_model map_summary)        (Struct.Event.TabSelected tab) -> (model, Cmd.none) diff --git a/src/main-menu/src/Struct/BattleRequest.elm b/src/main-menu/src/Struct/BattleRequest.elm index a02a1bf..b6864e1 100644 --- a/src/main-menu/src/Struct/BattleRequest.elm +++ b/src/main-menu/src/Struct/BattleRequest.elm @@ -5,9 +5,11 @@ module Struct.BattleRequest exposing        new,        get_ix,        get_mode, +      get_category,        get_size,        get_map_id,        set_mode, +      set_category,        set_size,        set_map_id,        get_url_params @@ -58,9 +60,15 @@ get_ix ir = ir.ix  get_mode : Type -> Struct.BattleSummary.Mode  get_mode ir = ir.mode +get_category : Type -> Struct.BattleSummary.Category +get_category ir = ir.category +  set_mode : Struct.BattleSummary.Mode -> Type -> Type  set_mode mode ir = {ir | mode = mode} +set_category : Struct.BattleSummary.Category -> Type -> Type +set_category category ir = {ir | category = category} +  get_size : Type -> (Maybe Size)  get_size ir = ir.size @@ -87,6 +95,7 @@ get_url_params ir =              Struct.BattleSummary.Campaign -> "c"        )        ++ "&mod=" +      ++        (           case ir.mode of              Struct.BattleSummary.Either -> "e" @@ -94,6 +103,7 @@ get_url_params ir =              Struct.BattleSummary.Defend -> "d"        )        ++ "&s=" +      ++        (           case ir.size of              (Just Medium) -> "m" @@ -101,5 +111,5 @@ get_url_params ir =              _ -> "s"        )        ++ "&map_id=" -      ir.map_id +      ++ ir.map_id     ) diff --git a/src/main-menu/src/Struct/Event.elm b/src/main-menu/src/Struct/Event.elm index 8699ddb..d552d2d 100644 --- a/src/main-menu/src/Struct/Event.elm +++ b/src/main-menu/src/Struct/Event.elm @@ -18,7 +18,7 @@ type Type =     None     | Failed Struct.Error.Type     | ServerReplied (Result Http.Error (List Struct.ServerReply.Type)) -   | NewBattle (Int, Struct.BattleRequest.Category) +   | NewBattle (Int, Struct.BattleSummary.Category)     | BattleSetSize Struct.BattleRequest.Size     | BattleSetMap Struct.MapSummary.Type     | BattleSetMode Struct.BattleSummary.Mode diff --git a/src/main-menu/src/Update/HandleNewInvasion.elm b/src/main-menu/src/Update/HandleNewBattle.elm index 0dd53c9..396635e 100644 --- a/src/main-menu/src/Update/HandleNewInvasion.elm +++ b/src/main-menu/src/Update/HandleNewBattle.elm @@ -3,6 +3,7 @@ module Update.HandleNewBattle exposing        apply_to,        set_size,        set_category, +      set_mode,        set_map     )  -- Elm ------------------------------------------------------------------------- @@ -48,7 +49,7 @@ set_size model size =  set_category : (        Struct.Model.Type -> -      Struct.BattleSummary.BattleCategory -> +      Struct.BattleSummary.Category ->        (Struct.Model.Type, (Cmd Struct.Event.Type))     )  set_category model category = @@ -56,13 +57,37 @@ set_category model category =        Struct.UI.None -> -- TODO: err           (model, Cmd.none) -      (Struct.UI.NewBattle invasion) -> +      (Struct.UI.NewBattle battle) -> +         ( +            {model | +               ui = +                  (Struct.UI.set_action +                     (Struct.UI.NewBattle +                        (Struct.BattleRequest.set_category category battle) +                     ) +                     model.ui +                  ) +            }, +            Cmd.none +         ) + +set_mode : ( +      Struct.Model.Type -> +      Struct.BattleSummary.Mode -> +      (Struct.Model.Type, (Cmd Struct.Event.Type)) +   ) +set_mode model mode = +   case (Struct.UI.get_action model.ui) of +      Struct.UI.None -> -- TODO: err +         (model, Cmd.none) + +      (Struct.UI.NewBattle battle) ->           (              {model |                 ui =                    (Struct.UI.set_action                       (Struct.UI.NewBattle -                        (Struct.BattleRequest.set_category category invasion) +                        (Struct.BattleRequest.set_mode mode battle)                       )                       model.ui                    ) diff --git a/src/main-menu/src/View/BattleListing.elm b/src/main-menu/src/View/BattleListing.elm index 9b667ac..4e9479f 100644 --- a/src/main-menu/src/View/BattleListing.elm +++ b/src/main-menu/src/View/BattleListing.elm @@ -44,7 +44,7 @@ get_item_html item =                 (Html.Attributes.class "main-menu-battle-summary-date")              ]              [ -               (Html.text (Struct.BattleSummary.get_last_edit item)) +               (Html.text (Struct.BattleSummary.get_deadline item))              ]           )        ] diff --git a/src/main-menu/src/View/CurrentTab.elm b/src/main-menu/src/View/CurrentTab.elm index 3a5f711..054d764 100644 --- a/src/main-menu/src/View/CurrentTab.elm +++ b/src/main-menu/src/View/CurrentTab.elm @@ -17,7 +17,7 @@ import View.Invasions  import View.MapListing  import View.Roster -import View.Tab.NewInvasion +import View.Tab.NewBattle  --------------------------------------------------------------------------------  -- LOCAL ----------------------------------------------------------------------- @@ -54,4 +54,4 @@ get_html : (Struct.Model.Type -> (Html.Html Struct.Event.Type))  get_html model =     case (Struct.UI.get_current_tab model.ui) of        Struct.UI.DefaultTab -> (default_tab model) -      Struct.UI.NewInvasionTab -> (View.Tab.NewInvasion.get_html model) +      Struct.UI.NewBattleTab -> (View.Tab.NewBattle.get_html model) diff --git a/src/main-menu/src/View/Invasions.elm b/src/main-menu/src/View/Invasions.elm index b4ce14c..233c621 100644 --- a/src/main-menu/src/View/Invasions.elm +++ b/src/main-menu/src/View/Invasions.elm @@ -39,7 +39,9 @@ get_invasion_html ix invasion =        then           (Html.a              [ -               (Html.Events.onClick (Struct.Event.NewInvasion ix)), +               (Html.Events.onClick +                  (Struct.Event.NewBattle (ix, Struct.BattleSummary.Invasion)) +               ),                 (Html.Attributes.class "clickable"),                 invasion_type              ] @@ -68,7 +70,7 @@ get_invasion_html ix invasion =                       (Html.Attributes.class "main-menu-battle-summary-date")                    ]                    [ -                     (Html.text (Struct.BattleSummary.get_last_edit invasion)) +                     (Html.text (Struct.BattleSummary.get_deadline invasion))                    ]                 )              ] diff --git a/src/main-menu/src/View/Tab/NewBattle.elm b/src/main-menu/src/View/Tab/NewBattle.elm new file mode 100644 index 0000000..c5d22fa --- /dev/null +++ b/src/main-menu/src/View/Tab/NewBattle.elm @@ -0,0 +1,224 @@ +module View.Tab.NewBattle exposing (get_html) + +-- Elm ------------------------------------------------------------------------- +import Array +import List + +import Html +import Html.Attributes +import Html.Events + +-- Main Menu ------------------------------------------------------------------- +import Struct.BattleRequest +import Struct.BattleSummary +import Struct.Event +import Struct.MapSummary +import Struct.Model +import Struct.Player +import Struct.UI + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- +select_mode_html : (Html.Html Struct.Event.Type) +select_mode_html = +   (Html.div +      [ +      ] +      [ +         (Html.button +            [ +               (Html.Events.onClick +                  (Struct.Event.BattleSetMode +                     Struct.BattleSummary.Attack +                  ) +               ) +            ] +            [ +               (Html.text "New Offensive") +            ] +         ), +         (Html.button +            [ +               (Html.Events.onClick +                  (Struct.Event.BattleSetMode +                     Struct.BattleSummary.Defend +                  ) +               ) +            ] +            [ +               (Html.text "New Defense") +            ] +         ) +      ] +   ) + +select_size_html : Struct.BattleRequest.Size -> (Html.Html Struct.Event.Type) +select_size_html max_size = +   (Html.div +      [ +      ] +      [ +         (Html.button +            [ +               (Html.Events.onClick +                  (Struct.Event.BattleSetSize +                     Struct.BattleRequest.Small +                  ) +               ) +            ] +            [ +               (Html.text "Small") +            ] +         ), +         (Html.button +            [ +               (Html.Events.onClick +                  (Struct.Event.BattleSetSize +                     Struct.BattleRequest.Medium +                  ) +               ) +            ] +            [ +               (Html.text "Medium") +            ] +         ), +         (Html.button +            [ +               (Html.Events.onClick +                  (Struct.Event.BattleSetSize +                     Struct.BattleRequest.Large +                  ) +               ) +            ] +            [ +               (Html.text "Large") +            ] +         ) +      ] +   ) + +map_button_html : Struct.MapSummary.Type -> (Html.Html Struct.Event.Type) +map_button_html map_summary = +   (Html.button +      [ +         (Html.Events.onClick (Struct.Event.BattleSetMap map_summary)) +      ] +      [ +         (Html.text (Struct.MapSummary.get_name map_summary)) +      ] +   ) + +select_map_html : Struct.Model.Type -> (Html.Html Struct.Event.Type) +select_map_html model = +   (Html.div +      [ +      ] +      ( +         (Html.text "Map Selection:") +         :: +         (List.map +            (map_button_html) +            (Array.toList (Struct.Player.get_maps model.player)) +         ) +      ) +   ) + +select_characters_html : ( +      Struct.BattleRequest.Type -> +      (Html.Html Struct.Event.Type) +   ) +select_characters_html battle_req = +   (Html.a +      [ +         (Html.Attributes.href +            ( +               "/roster-editor/" +               ++ +               (Struct.BattleRequest.get_url_params battle_req) +            ) +         ) +      ] +      [ +         (Html.text "Select Characters") +      ] +   ) + +new_invasion_html : ( +      Struct.BattleRequest.Type -> +      Struct.Model.Type -> +      (Html.Html Struct.Event.Type) +   ) +new_invasion_html battle_req model = +   case +      ( +         (Struct.BattleRequest.get_mode battle_req), +         (Struct.BattleRequest.get_size battle_req) +      ) +   of +      (Struct.BattleSummary.Attack, Nothing) -> +         (select_size_html Struct.BattleRequest.Large) + +      (Struct.BattleSummary.Attack, _) -> +         (select_characters_html battle_req) + +      (Struct.BattleSummary.Defend, Nothing) -> +         (select_map_html model) + +      (Struct.BattleSummary.Defend, _) -> +         (select_characters_html battle_req) + +      (_, _) -> +         (select_mode_html) + +new_event_html : ( +      Struct.BattleRequest.Type -> +      Struct.Model.Type -> +      (Html.Html Struct.Event.Type) +   ) +new_event_html battle_req model = +   (Html.div +      [ +      ] +      [ +         (Html.text "Not available yet.") +      ] +   ) + +new_campaign_html : ( +      Struct.BattleRequest.Type -> +      Struct.Model.Type -> +      (Html.Html Struct.Event.Type) +   ) +new_campaign_html battle_req model = +   (Html.div +      [ +      ] +      [ +         (Html.text "Not available yet.") +      ] +   ) + +get_actual_html : ( +      Struct.BattleRequest.Type -> +      Struct.Model.Type -> +      (Html.Html Struct.Event.Type) +   ) +get_actual_html battle_req model = +   case (Struct.BattleRequest.get_category battle_req) of +      Struct.BattleSummary.Invasion -> (new_invasion_html battle_req model) +      Struct.BattleSummary.Event -> (new_event_html battle_req model) +      Struct.BattleSummary.Campaign -> (new_campaign_html battle_req model) + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +get_html : Struct.Model.Type -> (Html.Html Struct.Event.Type) +get_html model = +   case (Struct.UI.get_action model.ui) of +      Struct.UI.None -> +         -- TODO: explain & let the user go back to the main menu. +         (Html.text "Error.") + +      (Struct.UI.NewBattle battle_req) -> +         (get_actual_html battle_req model) diff --git a/src/main-menu/src/View/Tab/NewInvasion.elm b/src/main-menu/src/View/Tab/NewInvasion.elm deleted file mode 100644 index 8cba188..0000000 --- a/src/main-menu/src/View/Tab/NewInvasion.elm +++ /dev/null @@ -1,176 +0,0 @@ -module View.Tab.NewBattle exposing (get_html) - --- Elm ------------------------------------------------------------------------- -import Html -import Html.Attributes -import Html.Events - --- Main Menu ------------------------------------------------------------------- -import Struct.Event -import Struct.Model -import Struct.UI -import Struct.BattleRequest -import Struct.BattleSummary - --------------------------------------------------------------------------------- --- LOCAL ----------------------------------------------------------------------- --------------------------------------------------------------------------------- -select_category_html : (Html.Html Struct.Event.Type) -select_category_html = -   (Html.div -      [ -      ] -      [ -         (Html.button -            [ -               (Html.Events.onClick -                  (Struct.Event.BattleSetCategory -                     Struct.BattleSummary.BattleAttack -                  ) -               ) -            ] -            [ -               (Html.text "New Offensive") -            ] -         ), -         (Html.button -            [ -               (Html.Events.onClick -                  (Struct.Event.BattleSetCategory -                     Struct.BattleSummary.BattleDefend -                  ) -               ) -            ] -            [ -               (Html.text "New Defense") -            ] -         ) -      ] -   ) - -select_size_html : Struct.BattleRequest.Size -> (Html.Html Struct.Event.Type) -select_size_html max_size = -   (Html.div -      [ -      ] -      [ -         (Html.button -            [ -               (Html.Events.onClick -                  (Struct.Event.BattleSetSize -                     Struct.BattleRequest.Small -                  ) -               ) -            ] -            [ -               (Html.text "Small") -            ] -         ), -         (Html.button -            [ -               (Html.Events.onClick -                  (Struct.Event.BattleSetSize -                     Struct.BattleRequest.Medium -                  ) -               ) -            ] -            [ -               (Html.text "Medium") -            ] -         ), -         (Html.button -            [ -               (Html.Events.onClick -                  (Struct.Event.BattleSetSize -                     Struct.BattleRequest.Large -                  ) -               ) -            ] -            [ -               (Html.text "Large") -            ] -         ) -      ] -   ) - -select_map_html : (Html.Html Struct.Event.Type) -select_map_html = -   (Html.div -      [ -      ] -      [ -         (Html.text "Map Selection") -      ] -   ) - - -get_actual_html : Struct.BattleRequest.Type -> (Html.Html Struct.Event.Type) -get_actual_html battle_req = -   case (Struct.BattleRequest.get_category battle_req) of -      Struct.BattleSummary.Invasion -> - -      _ -> -         case  -      Struct.BattleSummary.Either -> (select_category_html) -      Struct.BattleSummary.Attack -> -         ( -            case (Struct.BattleRequest.get_size battle_req) of -               -- TODO: use roster size as upper limit. -               Nothing -> (select_size_html Struct.BattleRequest.Large) -               _ -> -                  (Html.a -                     [ -                        (Html.Attributes.href -                           ( -                              "/roster-editor/" -                              ++ -                              (Struct.BattleRequest.get_url_params battle_req) -                           ) -                        ) -                     ] -                     [ -                        (Html.text "Select Characters") -                     ] -                  ) -         ) -      Struct.BattleSummary.Defend -> -         ( -            case (Struct.BattleRequest.get_map_id battle_req) of -               -- FIXME: Requires model. -               "" -> (select_map_html) -               _ -> -                  case (Struct.BattleRequest.get_size battle_req) of -                     Nothing -> -                        -- TODO: use min(RosterSize, MapSize) as upper limit. -                        (select_size_html Struct.BattleRequest.Large) -                     _ -> -                        (Html.a -                           [ -                              (Html.Attributes.href -                                 ( -                                    "/roster-editor/" -                                    ++ -                                    (Struct.BattleRequest.get_url_params -                                       battle_req -                                    ) -                                 ) -                              ) -                           ] -                           [ -                              (Html.text "Select Characters") -                           ] -                        ) -         ) - --------------------------------------------------------------------------------- --- EXPORTED -------------------------------------------------------------------- --------------------------------------------------------------------------------- -get_html : Struct.Model.Type -> (Html.Html Struct.Event.Type) -get_html model = -   case (Struct.UI.get_action model.ui) of -      Struct.UI.None -> -         -- TODO: explain & let the user go back to the main menu. -         (Html.text "Error.") - -      (Struct.UI.NewBattle battle_req) -> -         (get_actual_html battle_req) | 


