From b61d70864de7e4a39196e06aaa7630c445e322c0 Mon Sep 17 00:00:00 2001 From: Nathanael Sensfelder Date: Sun, 24 May 2020 00:01:27 +0200 Subject: ... --- src/battle/src/Comm/CharacterTurn.elm | 6 +- src/battle/src/Comm/LoadBattle.elm | 6 +- src/battle/src/Comm/Send.elm | 21 +++- src/battle/src/ElmModule/Init.elm | 4 +- src/battle/src/ElmModule/Update.elm | 59 +++++------ src/battle/src/Main.elm | 4 +- src/battle/src/Struct/Battle.elm | 22 ++-- src/battle/src/Struct/CharacterTurn.elm | 70 ++++++++----- src/battle/src/Struct/Event.elm | 2 +- src/battle/src/Struct/Model.elm | 8 +- src/battle/src/Struct/Navigator.elm | 23 ++--- src/battle/src/Struct/Path.elm | 28 ++++-- src/battle/src/Struct/Puppeteer.elm | 6 +- src/battle/src/Struct/TurnResult.elm | 2 +- .../src/Update/Character/DisplayCharacterInfo.elm | 2 +- src/battle/src/Update/Character/DisplayInfo.elm | 21 ++-- .../src/Update/Character/DisplayNavigator.elm | 12 ++- .../src/Update/Character/LookForCharacter.elm | 2 +- src/battle/src/Update/CharacterTurn.elm | 44 +++++++- src/battle/src/Update/CharacterTurn/Attack.elm | 34 +++++++ .../Update/CharacterTurn/AttackWithoutMoving.elm | 40 -------- src/battle/src/Update/CharacterTurn/EndTurn.elm | 75 +++----------- .../src/Update/CharacterTurn/RequestDirection.elm | 6 +- .../src/Update/CharacterTurn/SwitchWeapon.elm | 102 +++++++------------ .../src/Update/CharacterTurn/ToggleTarget.elm | 65 ++++++++++-- src/battle/src/Update/CharacterTurn/UndoAction.elm | 112 ++++++--------------- src/battle/src/Update/HandleServerReply.elm | 42 ++++---- src/battle/src/Update/SelectCharacter.elm | 97 +++++------------- src/battle/src/Update/SelectCharacterOrTile.elm | 12 +-- src/battle/src/Update/SelectTile.elm | 16 ++- src/battle/src/Update/UI/GoToMainMenu.elm | 4 +- src/battle/src/View/Controlled.elm | 72 ++++++------- src/battle/src/View/Controlled/CharacterCard.elm | 3 - src/battle/src/View/Controlled/ManualControls.elm | 2 +- src/battle/src/View/MainMenu.elm | 2 +- src/battle/src/View/Map.elm | 4 +- src/battle/src/View/Map/Character.elm | 6 +- src/battle/src/View/MessageBoard.elm | 4 +- src/battle/src/View/SubMenu.elm | 26 +---- .../BattleCharacters/View/Portrait.elm | 2 +- src/shared/battle-map/BattleMap/Struct/Map.elm | 27 ++++- src/shared/battle-map/BattleMap/View/TileInfo.elm | 3 - src/shared/elm/Shared/Struct/Flags.elm | 4 +- src/shared/elm/Shared/Update/Sequence.elm | 6 +- 44 files changed, 539 insertions(+), 569 deletions(-) create mode 100644 src/battle/src/Update/CharacterTurn/Attack.elm delete mode 100644 src/battle/src/Update/CharacterTurn/AttackWithoutMoving.elm (limited to 'src') diff --git a/src/battle/src/Comm/CharacterTurn.elm b/src/battle/src/Comm/CharacterTurn.elm index 61b9f99..297180b 100644 --- a/src/battle/src/Comm/CharacterTurn.elm +++ b/src/battle/src/Comm/CharacterTurn.elm @@ -4,7 +4,7 @@ module Comm.CharacterTurn exposing (try) import Json.Encode -- Shared ---------------------------------------------------------------------- -import Struct.Flags +import Shared.Struct.Flags -- Local Module ---------------------------------------------------------------- import Constants.IO @@ -34,13 +34,13 @@ maybe_encode model = ( "stk", (Json.Encode.string - (Struct.Flags.get_session_token model.flags) + (Shared.Struct.Flags.get_session_token model.flags) ) ), ( "pid", (Json.Encode.string - (Struct.Flags.get_user_id model.flags) + (Shared.Struct.Flags.get_user_id model.flags) ) ), ( diff --git a/src/battle/src/Comm/LoadBattle.elm b/src/battle/src/Comm/LoadBattle.elm index b7c6759..57a7e03 100644 --- a/src/battle/src/Comm/LoadBattle.elm +++ b/src/battle/src/Comm/LoadBattle.elm @@ -4,7 +4,7 @@ module Comm.LoadBattle exposing (try) import Json.Encode -- Shared ---------------------------------------------------------------------- -import Struct.Flags +import Shared.Struct.Flags -- Local Module ---------------------------------------------------------------- import Comm.Send @@ -30,13 +30,13 @@ maybe_encode model = ( "stk", (Json.Encode.string - (Struct.Flags.get_session_token model.flags) + (Shared.Struct.Flags.get_session_token model.flags) ) ), ( "pid", (Json.Encode.string - (Struct.Flags.get_user_id model.flags) + (Shared.Struct.Flags.get_user_id model.flags) ) ), ( diff --git a/src/battle/src/Comm/Send.elm b/src/battle/src/Comm/Send.elm index d7d05fc..f7e737a 100644 --- a/src/battle/src/Comm/Send.elm +++ b/src/battle/src/Comm/Send.elm @@ -1,4 +1,4 @@ -module Comm.Send exposing (maybe_send) +module Comm.Send exposing (maybe_send, send) -- Elm ------------------------------------------------------------------------- import Http @@ -98,3 +98,22 @@ maybe_send model recipient maybe_encode_fun = ) Nothing -> Nothing + +send : ( + Struct.Model.Type -> + String -> + (Struct.Model.Type -> Json.Encode.Value) -> + (Cmd Struct.Event.Type) + ) +send model recipient encode_fun = + (Http.post + { + url = recipient, + body = (Http.jsonBody (encode_fun model)), + expect = + (Http.expectJson + Struct.Event.ServerReplied + (Json.Decode.list (decode)) + ) + } + ) diff --git a/src/battle/src/ElmModule/Init.elm b/src/battle/src/ElmModule/Init.elm index bc90dad..f946d76 100644 --- a/src/battle/src/ElmModule/Init.elm +++ b/src/battle/src/ElmModule/Init.elm @@ -1,7 +1,7 @@ module ElmModule.Init exposing (init) -- Shared ---------------------------------------------------------------------- -import Struct.Flags +import Shared.Struct.Flags -- Local Module ---------------------------------------------------------------- import Comm.LoadBattle @@ -16,7 +16,7 @@ import Struct.Model -------------------------------------------------------------------------------- -- EXPORTED -------------------------------------------------------------------- -------------------------------------------------------------------------------- -init : Struct.Flags.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) +init : Shared.Struct.Flags.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) init flags = let model = (Struct.Model.new flags) in ( diff --git a/src/battle/src/ElmModule/Update.elm b/src/battle/src/ElmModule/Update.elm index 77cdd89..c6c7ae3 100644 --- a/src/battle/src/ElmModule/Update.elm +++ b/src/battle/src/ElmModule/Update.elm @@ -4,23 +4,26 @@ module ElmModule.Update exposing (update) import Struct.Event import Struct.Model -import Update.AbortTurn -import Update.AttackWithoutMoving -import Update.ChangeScale -import Update.DisplayCharacterInfo -import Update.EndTurn -import Update.GoToMainMenu import Update.HandleServerReply -import Update.LookForCharacter import Update.Puppeteer -import Update.RequestDirection import Update.SelectCharacter import Update.SelectCharacterOrTile -import Update.SelectTab import Update.SelectTile import Update.SetRequestedHelp -import Update.SwitchWeapon -import Update.UndoAction + +import Update.Character.DisplayCharacterInfo +import Update.Character.LookForCharacter + +import Update.CharacterTurn.AbortTurn +import Update.CharacterTurn.Attack +import Update.CharacterTurn.EndTurn +import Update.CharacterTurn.RequestDirection +import Update.CharacterTurn.SwitchWeapon +import Update.CharacterTurn.UndoAction + +import Update.UI.ChangeScale +import Update.UI.GoToMainMenu +import Update.UI.SelectTab -------------------------------------------------------------------------------- -- LOCAL ----------------------------------------------------------------------- @@ -44,53 +47,53 @@ update event model = Cmd.none ) - Struct.Event.AttackWithoutMovingRequest -> - (Update.AttackWithoutMoving.apply_to model) + Struct.Event.AttackRequest -> + (Update.CharacterTurn.Attack.apply_to model) Struct.Event.AnimationEnded -> (Update.Puppeteer.apply_to model) (Struct.Event.DirectionRequested d) -> - (Update.RequestDirection.apply_to model d) + (Update.CharacterTurn.RequestDirection.apply_to d model) (Struct.Event.TileSelected loc) -> - (Update.SelectTile.apply_to model loc) + (Update.SelectTile.apply_to loc model) (Struct.Event.CharacterOrTileSelected loc) -> - (Update.SelectCharacterOrTile.apply_to model loc) + (Update.SelectCharacterOrTile.apply_to loc model) (Struct.Event.CharacterSelected char_id) -> - (Update.SelectCharacter.apply_to model char_id) + (Update.SelectCharacter.apply_to char_id model) (Struct.Event.CharacterInfoRequested char_id) -> - (Update.DisplayCharacterInfo.apply_to model char_id) + (Update.Character.DisplayCharacterInfo.apply_to char_id model) (Struct.Event.LookingForCharacter char_id) -> - (Update.LookForCharacter.apply_to model char_id) + (Update.Character.LookForCharacter.apply_to char_id model) Struct.Event.TurnEnded -> - (Update.EndTurn.apply_to model) + (Update.CharacterTurn.EndTurn.apply_to model) (Struct.Event.ScaleChangeRequested mod) -> - (Update.ChangeScale.apply_to model mod) + (Update.UI.ChangeScale.apply_to mod model) (Struct.Event.TabSelected tab) -> - (Update.SelectTab.apply_to model tab) + (Update.UI.SelectTab.apply_to tab model) (Struct.Event.ServerReplied result) -> - (Update.HandleServerReply.apply_to model result) + (Update.HandleServerReply.apply_to result model) Struct.Event.WeaponSwitchRequest -> - (Update.SwitchWeapon.apply_to model) + (Update.CharacterTurn.SwitchWeapon.apply_to model) Struct.Event.AbortTurnRequest -> - (Update.AbortTurn.apply_to model) + (Update.CharacterTurn.AbortTurn.apply_to model) Struct.Event.UndoActionRequest -> - (Update.UndoAction.apply_to model) + (Update.CharacterTurn.UndoAction.apply_to model) (Struct.Event.RequestedHelp help_request) -> - (Update.SetRequestedHelp.apply_to model help_request) + (Update.SetRequestedHelp.apply_to help_request model) Struct.Event.GoToMainMenu -> - (Update.GoToMainMenu.apply_to model) + (Update.UI.GoToMainMenu.apply_to model) diff --git a/src/battle/src/Main.elm b/src/battle/src/Main.elm index 761cf4a..4c1615b 100644 --- a/src/battle/src/Main.elm +++ b/src/battle/src/Main.elm @@ -4,7 +4,7 @@ module Main exposing (main) import Browser -- Shared ---------------------------------------------------------------------- -import Struct.Flags +import Shared.Struct.Flags -- Local Module ---------------------------------------------------------------- import Struct.Model @@ -15,7 +15,7 @@ import ElmModule.Subscriptions import ElmModule.View import ElmModule.Update -main : (Program Struct.Flags.Type Struct.Model.Type Struct.Event.Type) +main : (Program Shared.Struct.Flags.Type Struct.Model.Type Struct.Event.Type) main = (Browser.element { diff --git a/src/battle/src/Struct/Battle.elm b/src/battle/src/Struct/Battle.elm index a689f7a..5c27e27 100644 --- a/src/battle/src/Struct/Battle.elm +++ b/src/battle/src/Struct/Battle.elm @@ -43,7 +43,9 @@ import Battle.Struct.Omnimods import Array -- Shared ---------------------------------------------------------------------- -import Struct.Flags +import Shared.Util.Array + +import Shared.Struct.Flags -- Battle Map ------------------------------------------------------------------ import BattleMap.Struct.Location @@ -56,7 +58,6 @@ import Struct.Character import Struct.TurnResult import Struct.Player -import Util.Array -------------------------------------------------------------------------------- -- TYPES ----------------------------------------------------------------------- @@ -152,7 +153,7 @@ get_character ix battle = (Array.get ix battle.characters) set_character : Int -> Struct.Character.Type -> Type -> Type set_character ix char battle = - {battle | characters = (Array.set ix char battle.characters) } + {battle | characters = (Array.set ix char battle.characters)} update_character : ( Int -> @@ -161,7 +162,9 @@ update_character : ( Type ) update_character ix fun battle = - {battle | characters = (Util.Array.update ix (fun) battle.characters) } + {battle | + characters = (Shared.Util.Array.update ix (fun) battle.characters) + } get_characters : Type -> (Array.Array Struct.Character.Type) get_characters battle = battle.characters @@ -196,12 +199,15 @@ refresh_character map_dataset ix battle = ----------------- ---- Players ---- ----------------- -add_player : Struct.Flags.Type -> Struct.Player.Type -> Type -> Type +add_player : Shared.Struct.Flags.Type -> Struct.Player.Type -> Type -> Type add_player flags pl battle = {battle | players = (Array.push pl battle.players), own_player_ix = - if ((Struct.Player.get_id pl) == (Struct.Flags.get_user_id flags)) + if + ( + (Struct.Player.get_id pl) == (Shared.Struct.Flags.get_user_id flags) + ) then (Array.length battle.players) else battle.own_player_ix } @@ -211,7 +217,7 @@ get_player ix battle = (Array.get ix battle.players) set_player : Int -> Struct.Player.Type -> Type -> Type set_player ix pl battle = - {battle | players = (Array.set ix pl battle.players) } + {battle | players = (Array.set ix pl battle.players)} update_player : ( Int -> @@ -220,7 +226,7 @@ update_player : ( Type ) update_player ix fun battle = - {battle | players = (Util.Array.update ix (fun) battle.players) } + {battle | players = (Shared.Util.Array.update ix (fun) battle.players)} get_players : Type -> (Array.Array Struct.Player.Type) get_players battle = battle.players diff --git a/src/battle/src/Struct/CharacterTurn.elm b/src/battle/src/Struct/CharacterTurn.elm index c869feb..422c33c 100644 --- a/src/battle/src/Struct/CharacterTurn.elm +++ b/src/battle/src/Struct/CharacterTurn.elm @@ -1,7 +1,7 @@ module Struct.CharacterTurn exposing ( Type, - Action(..) + Action(..), -- Active Character maybe_get_active_character, @@ -21,6 +21,7 @@ module Struct.CharacterTurn exposing toggle_target_index, get_target_indices, set_target_indices, + clear_target_indices, -- Locations add_location, @@ -28,7 +29,7 @@ module Struct.CharacterTurn exposing toggle_location, get_locations, set_locations, - toggle_location, + clear_locations, -- Navigator maybe_get_navigator, @@ -70,7 +71,6 @@ type Action = | Attacking | SwitchingWeapons | UsingSkill - | AwaitingConfirmation type alias Type = { @@ -91,7 +91,7 @@ encode_path : Type -> (Json.Encode.Value) encode_path ct = (Json.Encode.object [ - ("cat", "mov"), + ("cat", (Json.Encode.string "mov")), ( "pat", (Json.Encode.list @@ -110,24 +110,25 @@ encode_action : Type -> (Json.Encode.Value) encode_action ct = case ct.action of None -> (Json.Encode.null) + Attacking -> case (List.head (Set.toList ct.targets)) of Nothing -> (Json.Encode.null) (Just target) -> (Json.Encode.object [ - ("cat", "atk"), + ("cat", (Json.Encode.string "atk")), ("tar", (Json.Encode.int target)) ] ) SwitchingWeapons -> - (Json.Encode.object [("cat", "swp")]) + (Json.Encode.object [("cat", (Json.Encode.string "swp"))]) UsingSkill -> (Json.Encode.object [ - ("cat", "skl"), + ("cat", (Json.Encode.string "skl")), ( "tar", (Json.Encode.list @@ -138,7 +139,11 @@ encode_action ct = ( "loc", (Json.Encode.list - (BattleMap.Struct.Location.encode) + ( + (BattleMap.Struct.Location.from_ref) + >> + (BattleMap.Struct.Location.encode) + ) (Set.toList ct.locations) ) ) @@ -185,7 +190,7 @@ set_action : Action -> Type -> Type set_action act ct = {ct | action = act} get_action : Type -> Action -get_action act ct = ct.action +get_action ct = ct.action clear_action : Type -> Type clear_action ct = {ct | action = None} @@ -209,6 +214,9 @@ get_target_indices ct = ct.targets set_target_indices : (Set.Set Int) -> Type -> Type set_target_indices targets ct = {ct | targets = targets} +clear_target_indices : Type -> Type +clear_target_indices ct = {ct | targets = (Set.empty)} + ---- Locations ----------------------------------------------------------------- add_location : BattleMap.Struct.Location.Ref -> Type -> Type add_location ix ct = {ct | locations = (Set.insert ix ct.locations)} @@ -228,11 +236,14 @@ get_locations ct = ct.locations set_locations : (Set.Set BattleMap.Struct.Location.Ref) -> Type -> Type set_locations locations ct = {ct | locations = locations} +clear_locations : Type -> Type +clear_locations ct = {ct | locations = (Set.empty)} + ---- Navigator ----------------------------------------------------------------- maybe_get_navigator : Type -> (Maybe Struct.Navigator.Type) maybe_get_navigator ct = ct.navigator -set_navigator : Type -> (Maybe Struct.Navigator.Type) +set_navigator : Struct.Navigator.Type -> Type -> Type set_navigator navigator ct = {ct | navigator = (Just navigator)} clear_navigator : Type -> Type @@ -243,7 +254,13 @@ get_path : Type -> (List BattleMap.Struct.Direction.Type) get_path ct = ct.path store_path : Type -> Type -store_path ct = {ct | path = (Struct.Navigator.get_path old_nav)} +store_path ct = + {ct | + path = + case ct.navigator of + (Just navigator) -> (Struct.Navigator.get_path navigator) + Nothing -> [] + } override_path : (List BattleMap.Struct.Direction.Type) -> Type -> Type override_path path ct = {ct | path = path} @@ -255,31 +272,34 @@ clear_path ct = {ct | path = []} encode : Type -> (Json.Encode.Value) encode ct = case ct.active_character of - None -> + Nothing -> (Json.Encode.object [ - ("cix", 0), - ("act", []) + ("cix", (Json.Encode.int 0)), + ("act", (Json.Encode.list (\a -> a) [])) ] ) (Just actor) -> (Json.Encode.object [ - ("cix", (Struct.Character.get_index actor)), + ("cix", (Json.Encode.int (Struct.Character.get_index actor))), ( "act", - ( - ( - if (List.isEmpty (get_path ct)) - then [(encode_path ct)] - else [] - ) - ++ + (Json.Encode.list + (\a -> a) ( - if (ct.action == None) - then [] - else [(encode_action ct)] + ( + if (List.isEmpty (get_path ct)) + then [(encode_path ct)] + else [] + ) + ++ + ( + if (ct.action == None) + then [] + else [(encode_action ct)] + ) ) ) ) diff --git a/src/battle/src/Struct/Event.elm b/src/battle/src/Struct/Event.elm index e0fa827..1f5c89f 100644 --- a/src/battle/src/Struct/Event.elm +++ b/src/battle/src/Struct/Event.elm @@ -19,7 +19,7 @@ import Struct.UI type Type = AbortTurnRequest | AnimationEnded - | AttackWithoutMovingRequest + | AttackRequest | CharacterInfoRequested Int | CharacterOrTileSelected BattleMap.Struct.Location.Ref | CharacterSelected Int diff --git a/src/battle/src/Struct/Model.elm b/src/battle/src/Struct/Model.elm index f12918e..2ddeecd 100644 --- a/src/battle/src/Struct/Model.elm +++ b/src/battle/src/Struct/Model.elm @@ -7,7 +7,7 @@ module Struct.Model exposing ) -- Shared ---------------------------------------------------------------------- -import Struct.Flags +import Shared.Struct.Flags -- Battle Characters ----------------------------------------------------------- import BattleCharacters.Struct.DataSet @@ -29,7 +29,7 @@ import Struct.UI -------------------------------------------------------------------------------- type alias Type = { - flags : Struct.Flags.Type, + flags : Shared.Struct.Flags.Type, puppeteer : Struct.Puppeteer.Type, ui : Struct.UI.Type, char_turn : Struct.CharacterTurn.Type, @@ -49,7 +49,7 @@ type alias Type = -------------------------------------------------------------------------------- -- EXPORTED -------------------------------------------------------------------- -------------------------------------------------------------------------------- -new : Struct.Flags.Type -> Type +new : Shared.Struct.Flags.Type -> Type new flags = let model = @@ -66,7 +66,7 @@ new flags = battle = (Struct.Battle.new) } in - case (Struct.Flags.maybe_get_parameter "id" flags) of + case (Shared.Struct.Flags.maybe_get_parameter "id" flags) of Nothing -> (invalidate (Struct.Error.new diff --git a/src/battle/src/Struct/Navigator.elm b/src/battle/src/Struct/Navigator.elm index 072f682..01ee47a 100644 --- a/src/battle/src/Struct/Navigator.elm +++ b/src/battle/src/Struct/Navigator.elm @@ -45,7 +45,7 @@ type alias Type = BattleMap.Struct.Location.Ref Struct.RangeIndicator.Type ), - tile_data_fun : (BattleMap.Struct.Location.Type -> (Int, Int)) + cost_and_danger_fun : (BattleMap.Struct.Location.Type -> (Int, Int)) } type alias Summary = @@ -71,7 +71,7 @@ new : ( (BattleMap.Struct.Location.Type -> (Int, Int)) -> Type ) -new start_loc mov_dist def_dist atk_dist tile_data_fun = +new start_loc mov_dist def_dist atk_dist cost_and_danger_fun = { starting_location = start_loc, movement_dist = mov_dist, @@ -85,9 +85,9 @@ new start_loc mov_dist def_dist atk_dist tile_data_fun = mov_dist def_dist atk_dist - (tile_data_fun) + (cost_and_danger_fun) ), - tile_data_fun = tile_data_fun + cost_and_danger_fun = cost_and_danger_fun } get_current_location : Type -> BattleMap.Struct.Location.Type @@ -157,7 +157,7 @@ lock_path navigator = 0 navigator.defense_dist navigator.attack_dist - (navigator.tile_data_fun) + (navigator.cost_and_danger_fun) ), locked_path = True } @@ -171,7 +171,7 @@ unlock_path navigator = navigator.movement_dist navigator.defense_dist navigator.attack_dist - (navigator.tile_data_fun) + (navigator.cost_and_danger_fun) ), locked_path = True } @@ -185,7 +185,7 @@ lock_path_with_new_attack_ranges range_min range_max navigator = 0 range_min range_max - (navigator.tile_data_fun) + (navigator.cost_and_danger_fun) ), locked_path = True } @@ -201,14 +201,13 @@ maybe_add_step dir navigator = Nothing else case - (Struct.Path.maybe_follow_direction - (navigator.tile_data_fun) - (Just navigator.path) + (Struct.Path.maybe_add_step dir + (navigator.cost_and_danger_fun) + navigator.path ) of - (Just path) -> - (Just {navigator | path = path}) + (Just path) -> (Just {navigator | path = path}) Nothing -> Nothing maybe_get_path_to : ( diff --git a/src/battle/src/Struct/Path.elm b/src/battle/src/Struct/Path.elm index aae8c41..76a2d64 100644 --- a/src/battle/src/Struct/Path.elm +++ b/src/battle/src/Struct/Path.elm @@ -15,7 +15,7 @@ module Struct.Path exposing import Set -- Shared ---------------------------------------------------------------------- -import Util.List +import Shared.Util.List -- Battle Map ------------------------------------------------------------------ import BattleMap.Struct.Direction @@ -83,16 +83,16 @@ maybe_move_to dir next_loc cost path = Nothing maybe_backtrack_to : ( - Type -> BattleMap.Struct.Direction.Type -> BattleMap.Struct.Location.Type -> + Type -> (Maybe Type) ) -maybe_backtrack_to path dir location = +maybe_backtrack_to dir location path = case ( - (Util.List.pop path.previous_directions), - (Util.List.pop path.previous_points) + (Shared.Util.List.pop path.previous_directions), + (Shared.Util.List.pop path.previous_points) ) of ( @@ -144,12 +144,24 @@ get_remaining_points path = path.remaining_points get_summary : Type -> (List BattleMap.Struct.Direction.Type) get_summary path = path.previous_directions -maybe_add_step : BattleMap.Struct.Direction.Type -> Int -> Type -> (Maybe Type) -maybe_add_step direction cost path = +maybe_add_step : ( + BattleMap.Struct.Direction.Type -> + (BattleMap.Struct.Location.Type -> (Int, Int)) -> + Type -> + (Maybe Type) + ) +maybe_add_step direction tile_cost_and_danger_fun path = let next_location = (BattleMap.Struct.Location.neighbor direction path.current_location) in if (has_been_to next_location path) then (maybe_backtrack_to direction next_location path) - else (maybe_move_to direction next_location cost path) + else + let (cost, dangers) = (tile_cost_and_danger_fun next_location) in + (maybe_move_to + direction + next_location + cost + path + ) diff --git a/src/battle/src/Struct/Puppeteer.elm b/src/battle/src/Struct/Puppeteer.elm index df0221d..60e554c 100644 --- a/src/battle/src/Struct/Puppeteer.elm +++ b/src/battle/src/Struct/Puppeteer.elm @@ -16,7 +16,7 @@ module Struct.Puppeteer exposing import List -- Shared ---------------------------------------------------------------------- -import Util.List +import Shared.Util.List -- Local Module ---------------------------------------------------------------- import Struct.TurnResult @@ -61,7 +61,7 @@ append_backward actions puppeteer = forward : Type -> Type forward puppeteer = - case (Util.List.pop puppeteer.forward_actions) of + case (Shared.Util.List.pop puppeteer.forward_actions) of Nothing -> puppeteer (Just (action, forward_actions)) -> {puppeteer | @@ -72,7 +72,7 @@ forward puppeteer = backward : Type -> Type backward puppeteer = - case (Util.List.pop puppeteer.backward_actions) of + case (Shared.Util.List.pop puppeteer.backward_actions) of Nothing -> puppeteer (Just (action, backward_actions)) -> {puppeteer | diff --git a/src/battle/src/Struct/TurnResult.elm b/src/battle/src/Struct/TurnResult.elm index fe49c2a..d5d43ad 100644 --- a/src/battle/src/Struct/TurnResult.elm +++ b/src/battle/src/Struct/TurnResult.elm @@ -25,7 +25,7 @@ import Array import Json.Decode -- Shared ---------------------------------------------------------------------- -import Util.Array +import Shared.Util.Array -- Battle ---------------------------------------------------------------------- import Battle.Struct.Omnimods diff --git a/src/battle/src/Update/Character/DisplayCharacterInfo.elm b/src/battle/src/Update/Character/DisplayCharacterInfo.elm index bcf972d..aa2e29a 100644 --- a/src/battle/src/Update/Character/DisplayCharacterInfo.elm +++ b/src/battle/src/Update/Character/DisplayCharacterInfo.elm @@ -1,4 +1,4 @@ -module Update.Character.DisplayInfo exposing (apply_to) +module Update.Character.DisplayCharacterInfo exposing (apply_to) -- Elm ------------------------------------------------------------------------- diff --git a/src/battle/src/Update/Character/DisplayInfo.elm b/src/battle/src/Update/Character/DisplayInfo.elm index c43e0bd..f00ee20 100644 --- a/src/battle/src/Update/Character/DisplayInfo.elm +++ b/src/battle/src/Update/Character/DisplayInfo.elm @@ -20,13 +20,16 @@ apply_to_ref : ( (Struct.Model.Type, (Cmd Struct.Event.Type)) ) apply_to_ref target_ref model = - {model | - ui = - (Struct.UI.set_displayed_tab - Struct.UI.StatusTab - (Struct.UI.set_previous_action - (Just (Struct.UI.SelectedCharacter target_ref)) - model.ui + ( + {model | + ui = + (Struct.UI.set_displayed_tab + Struct.UI.StatusTab + (Struct.UI.set_previous_action + (Just (Struct.UI.SelectedCharacter target_ref)) + model.ui + ) ) - ) - } + }, + Cmd.none + ) diff --git a/src/battle/src/Update/Character/DisplayNavigator.elm b/src/battle/src/Update/Character/DisplayNavigator.elm index 9c935ee..1ac6618 100644 --- a/src/battle/src/Update/Character/DisplayNavigator.elm +++ b/src/battle/src/Update/Character/DisplayNavigator.elm @@ -1,4 +1,8 @@ -module Update.Character.ScrollTo exposing (apply_to_ref, apply_to_character) +module Update.Character.DisplayNavigator exposing + ( + apply_to_ref, + apply_to_character + ) -- Elm ------------------------------------------------------------------------- import Task @@ -35,7 +39,11 @@ apply_to_character char model = ) ) -apply_to_ref : Int -> Struct.Model.Type -> (Cmd Struct.Event.Type) +apply_to_ref : ( + Int -> + Struct.Model.Type -> + (Struct.Model.Type, (Cmd Struct.Event.Type)) + ) apply_to_ref char_ix model = case (Struct.Battle.get_character char_ix model.battle) of (Just char) -> (apply_to_character char model) diff --git a/src/battle/src/Update/Character/LookForCharacter.elm b/src/battle/src/Update/Character/LookForCharacter.elm index 1c2af0a..49f788d 100644 --- a/src/battle/src/Update/Character/LookForCharacter.elm +++ b/src/battle/src/Update/Character/LookForCharacter.elm @@ -1,4 +1,4 @@ -module Update.LookForCharacter exposing (apply_to) +module Update.Character.LookForCharacter exposing (apply_to) -- Elm ------------------------------------------------------------------------- import Array diff --git a/src/battle/src/Update/CharacterTurn.elm b/src/battle/src/Update/CharacterTurn.elm index 19c75b6..f375f73 100644 --- a/src/battle/src/Update/CharacterTurn.elm +++ b/src/battle/src/Update/CharacterTurn.elm @@ -2,6 +2,15 @@ module Update.CharacterTurn exposing (apply_to) -- Elm ------------------------------------------------------------------------- +-- Local Module ---------------------------------------------------------------- +import Struct.CharacterTurn +import Struct.Character +import Struct.Event +import Struct.Model +import Struct.UI + +import Util.Navigator + -------------------------------------------------------------------------------- -- LOCAL ----------------------------------------------------------------------- -------------------------------------------------------------------------------- @@ -10,9 +19,38 @@ module Update.CharacterTurn exposing (apply_to) -- EXPORTED -------------------------------------------------------------------- -------------------------------------------------------------------------------- apply_to : ( + Struct.Character.Type -> Struct.Model.Type -> - Int -> (Struct.Model.Type, (Cmd Struct.Event.Type)) ) -apply_to model target_char_id = - +apply_to target_char model = + let + nav = + (case (Struct.UI.maybe_get_displayed_nav model.ui) of + (Just dnav) -> dnav + Nothing -> + (Util.Navigator.get_character_navigator + model.battle + target_char + ) + ) + in + ( + {model | + char_turn = + (Struct.CharacterTurn.set_navigator + nav + (Struct.CharacterTurn.set_active_character + target_char + (Struct.CharacterTurn.new) + ) + ), + ui = + (Struct.UI.reset_displayed_nav + (Struct.UI.reset_displayed_tab + (Struct.UI.set_previous_action Nothing model.ui) + ) + ) + }, + Cmd.none + ) diff --git a/src/battle/src/Update/CharacterTurn/Attack.elm b/src/battle/src/Update/CharacterTurn/Attack.elm new file mode 100644 index 0000000..73f3698 --- /dev/null +++ b/src/battle/src/Update/CharacterTurn/Attack.elm @@ -0,0 +1,34 @@ +module Update.CharacterTurn.Attack exposing (apply_to) + +-- Local Module ---------------------------------------------------------------- +import Struct.CharacterTurn +import Struct.Error +import Struct.Event +import Struct.Model +import Struct.Navigator + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) +apply_to model = + case (Struct.CharacterTurn.maybe_get_navigator model.char_turn) of + Nothing -> (model, Cmd.none) + (Just nav) -> + ( + {model | + char_turn = + (Struct.CharacterTurn.set_action + Struct.CharacterTurn.Attacking + (Struct.CharacterTurn.set_navigator + (Struct.Navigator.lock_path nav) + (Struct.CharacterTurn.store_path model.char_turn) + ) + ) + }, + Cmd.none + ) diff --git a/src/battle/src/Update/CharacterTurn/AttackWithoutMoving.elm b/src/battle/src/Update/CharacterTurn/AttackWithoutMoving.elm deleted file mode 100644 index 7946b8f..0000000 --- a/src/battle/src/Update/CharacterTurn/AttackWithoutMoving.elm +++ /dev/null @@ -1,40 +0,0 @@ -module Update.CharacterTurn.AttackWithoutMoving exposing (apply_to) - --- Local Module ---------------------------------------------------------------- -import Struct.CharacterTurn -import Struct.Error -import Struct.Event -import Struct.Model - --------------------------------------------------------------------------------- --- LOCAL ----------------------------------------------------------------------- --------------------------------------------------------------------------------- -make_it_so : Struct.Model.Type -> Struct.Model.Type -make_it_so model = - {model | - char_turn = (Struct.CharacterTurn.lock_path model.char_turn) - } - --------------------------------------------------------------------------------- --- EXPORTED -------------------------------------------------------------------- --------------------------------------------------------------------------------- -apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) -apply_to model = - case (Struct.CharacterTurn.get_state model.char_turn) of - Struct.CharacterTurn.SelectedCharacter -> - ((make_it_so model), Cmd.none) - - _ -> - ( - (Struct.Model.invalidate - (Struct.Error.new - Struct.Error.Programming - ( - "Attempt to do an attack without moving, despite no" - ++ "character being selected." - ) - ) - model - ), - Cmd.none - ) diff --git a/src/battle/src/Update/CharacterTurn/EndTurn.elm b/src/battle/src/Update/CharacterTurn/EndTurn.elm index b3b6cb0..4a5221b 100644 --- a/src/battle/src/Update/CharacterTurn/EndTurn.elm +++ b/src/battle/src/Update/CharacterTurn/EndTurn.elm @@ -23,31 +23,6 @@ maybe_disable_char maybe_char = (Just char) -> (Just (Struct.Character.set_enabled False char)) Nothing -> Nothing -make_it_so : ( - Struct.Model.Type -> - Struct.Character.Type -> - Struct.Navigator.Type -> - (Struct.Model.Type, (Cmd Struct.Event.Type)) - ) -make_it_so model char nav = - case (Comm.CharacterTurn.try model) of - (Just cmd) -> - ( - {model | - char_turn = (Struct.CharacterTurn.new), - battle = - (Struct.Battle.update_character - (Struct.Character.get_index char) - (maybe_disable_char) - model.battle - ) - }, - cmd - ) - - Nothing -> - (model, Cmd.none) - -------------------------------------------------------------------------------- -- EXPORTED -------------------------------------------------------------------- -------------------------------------------------------------------------------- @@ -55,42 +30,22 @@ apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) apply_to model = case ( - (Struct.CharacterTurn.get_state model.char_turn), - (Struct.CharacterTurn.maybe_get_active_character - model.char_turn - ), - (Struct.CharacterTurn.maybe_get_navigator model.char_turn) + (Struct.CharacterTurn.maybe_get_active_character model.char_turn), + (Comm.CharacterTurn.try model) ) of - ( - Struct.CharacterTurn.MovedCharacter, - (Just char), - (Just nav)) -> - (make_it_so model char nav) - - ( - Struct.CharacterTurn.ChoseTarget, - (Just char), - (Just nav)) -> - (make_it_so model char nav) - - ( - Struct.CharacterTurn.SwitchedWeapons, - (Just char), - (Just nav)) -> - (make_it_so model char nav) - - (Struct.CharacterTurn.SelectedCharacter, (Just char), (Just nav)) -> - (make_it_so model char nav) - - (_, _, _) -> + (Nothing, _) -> (model, Cmd.none) + (_, Nothing) -> (model, Cmd.none) + ((Just char), (Just cmd)) -> ( - (Struct.Model.invalidate - (Struct.Error.new - Struct.Error.Programming - "Character turn appears to be in an illegal state." - ) - model - ), - Cmd.none + {model | + battle = + (Struct.Battle.update_character + (Struct.Character.get_index char) + (maybe_disable_char) + model.battle + ), + char_turn = (Struct.CharacterTurn.new) + }, + cmd ) diff --git a/src/battle/src/Update/CharacterTurn/RequestDirection.elm b/src/battle/src/Update/CharacterTurn/RequestDirection.elm index 9b3ef0e..bbfbe4d 100644 --- a/src/battle/src/Update/CharacterTurn/RequestDirection.elm +++ b/src/battle/src/Update/CharacterTurn/RequestDirection.elm @@ -34,7 +34,7 @@ make_it_so model char navigator dir = char_turn = (Struct.CharacterTurn.set_navigator new_navigator - (Struct.CharacterTurn.set_active_character_no_reset + (Struct.CharacterTurn.set_active_character (Struct.Character.set_base_character (BattleCharacters.Struct.Character.set_extra_omnimods (BattleMap.Struct.Map.get_omnimods_at @@ -71,11 +71,11 @@ make_it_so model char navigator dir = -- EXPORTED -------------------------------------------------------------------- -------------------------------------------------------------------------------- apply_to : ( - Struct.Model.Type -> BattleMap.Struct.Direction.Type -> + Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) ) -apply_to model dir = +apply_to dir model = case ( (Struct.CharacterTurn.maybe_get_navigator model.char_turn), diff --git a/src/battle/src/Update/CharacterTurn/SwitchWeapon.elm b/src/battle/src/Update/CharacterTurn/SwitchWeapon.elm index 122f2a4..632e10c 100644 --- a/src/battle/src/Update/CharacterTurn/SwitchWeapon.elm +++ b/src/battle/src/Update/CharacterTurn/SwitchWeapon.elm @@ -11,18 +11,22 @@ import Struct.Error import Struct.Event import Struct.Model +import Util.Navigator + -------------------------------------------------------------------------------- -- LOCAL ----------------------------------------------------------------------- -------------------------------------------------------------------------------- -make_it_so : Struct.Model.Type -> Struct.Model.Type -make_it_so model = - case - ( - (Struct.CharacterTurn.maybe_get_active_character model.char_turn), - (Struct.CharacterTurn.maybe_get_navigator model.char_turn) - ) - of - ((Just char), (Just nav)) -> + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +apply_to : ( + Struct.Model.Type -> + (Struct.Model.Type, (Cmd Struct.Event.Type)) + ) +apply_to model = + case (Struct.CharacterTurn.maybe_get_active_character model.char_turn) of + (Just char) -> let new_base_character = (BattleCharacters.Struct.Character.switch_weapons @@ -32,66 +36,30 @@ make_it_so model = (BattleCharacters.Struct.Character.get_active_weapon new_base_character ) + new_character = + (Struct.Character.set_base_character + new_base_character + char + ) in - {model | - char_turn = - (Struct.CharacterTurn.show_attack_range_navigator - (BattleCharacters.Struct.Weapon.get_defense_range - active_weapon - ) - (BattleCharacters.Struct.Weapon.get_attack_range - active_weapon - ) - (Struct.CharacterTurn.set_has_switched_weapons - True - (Struct.CharacterTurn.set_active_character_no_reset - (Struct.Character.set_base_character - new_base_character - char + ( + {model | + char_turn = + (Struct.CharacterTurn.set_action + Struct.CharacterTurn.SwitchingWeapons + (Struct.CharacterTurn.set_navigator + (Util.Navigator.get_character_attack_navigator + model.battle + new_character + ) + (Struct.CharacterTurn.set_active_character + new_character + (Struct.CharacterTurn.store_path model.char_turn) ) - model.char_turn ) ) - ) - } - - (_, _) -> - (Struct.Model.invalidate - (Struct.Error.new - Struct.Error.Programming - """ - CharacterTurn structure in the 'SelectedCharacter' or - 'MovedCharacter' state without any character being selected. - """) - model - ) + }, + Cmd.none + ) --------------------------------------------------------------------------------- --- EXPORTED -------------------------------------------------------------------- --------------------------------------------------------------------------------- -apply_to : ( - Struct.Model.Type -> - (Struct.Model.Type, (Cmd Struct.Event.Type)) - ) -apply_to model = - case (Struct.CharacterTurn.get_state model.char_turn) of - Struct.CharacterTurn.SelectedCharacter -> - ((make_it_so model), Cmd.none) - - Struct.CharacterTurn.MovedCharacter -> - ((make_it_so model), Cmd.none) - - _ -> - ( - (Struct.Model.invalidate - (Struct.Error.new - Struct.Error.Programming - ( - "Attempt to switch weapons as a secondary action or" - ++ " without character being selected." - ) - ) - model - ), - Cmd.none - ) + Nothing -> (model, Cmd.none) diff --git a/src/battle/src/Update/CharacterTurn/ToggleTarget.elm b/src/battle/src/Update/CharacterTurn/ToggleTarget.elm index 272163e..7b5a9a9 100644 --- a/src/battle/src/Update/CharacterTurn/ToggleTarget.elm +++ b/src/battle/src/Update/CharacterTurn/ToggleTarget.elm @@ -1,9 +1,16 @@ -module Update.CharacterTurn.ToggleTarget exposing (apply_to_ref) +module Update.CharacterTurn.ToggleTarget exposing (apply_to, apply_to_ref) + +-- Battle Map ------------------------------------------------------------------ +import BattleMap.Struct.Location -- Local Module ---------------------------------------------------------------- +import Struct.Battle +import Struct.Character import Struct.CharacterTurn import Struct.Event import Struct.Model +import Struct.Navigator +import Struct.UI -------------------------------------------------------------------------------- -- LOCAL ----------------------------------------------------------------------- @@ -40,17 +47,36 @@ can_target_character model target = ) ) -attack_character : ( +toggle_attack_character : ( + Struct.Model.Type -> + Int -> + Struct.Model.Type + ) +toggle_attack_character model target_char_id = + {model | + char_turn = + (Struct.CharacterTurn.toggle_target_index + target_char_id + model.char_turn + ), + ui = + (Struct.UI.reset_displayed_nav + (Struct.UI.reset_displayed_tab + (Struct.UI.set_previous_action Nothing model.ui) + ) + ) + } + +undo_attack_character : ( Struct.Model.Type -> Int -> - Struct.Character.Type -> Struct.Model.Type ) -attack_character model target_char_id target_char = +undo_attack_character model target_char_id = {model | char_turn = - (Struct.CharacterTurn.set_target - (Just target_char_id) + (Struct.CharacterTurn.remove_target_index + target_char_id model.char_turn ), ui = @@ -64,11 +90,28 @@ attack_character model target_char_id target_char = -------------------------------------------------------------------------------- -- EXPORTED -------------------------------------------------------------------- -------------------------------------------------------------------------------- -apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) -apply_to model = +apply_to : ( + Struct.Character.Type -> + Struct.Model.Type -> + (Struct.Model.Type, (Cmd Struct.Event.Type)) + ) +apply_to target model = ( - {model | - char_turn = (Struct.CharacterTurn.new) - }, + ( + let target_ix = (Struct.Character.get_index target) in + if (can_target_character model target) + then (toggle_attack_character model target_ix) + else (undo_attack_character model target_ix) + ), Cmd.none ) + +apply_to_ref : ( + Int -> + Struct.Model.Type -> + (Struct.Model.Type, (Cmd Struct.Event.Type)) + ) +apply_to_ref target_ix model = + case (Struct.Battle.get_character target_ix model.battle) of + Nothing -> (model, Cmd.none) + (Just char) -> (apply_to char model) diff --git a/src/battle/src/Update/CharacterTurn/UndoAction.elm b/src/battle/src/Update/CharacterTurn/UndoAction.elm index 284b37d..6a9d7f8 100644 --- a/src/battle/src/Update/CharacterTurn/UndoAction.elm +++ b/src/battle/src/Update/CharacterTurn/UndoAction.elm @@ -21,91 +21,41 @@ import Struct.Event import Struct.Model import Struct.Navigator +import Util.Navigator + -------------------------------------------------------------------------------- -- LOCAL ----------------------------------------------------------------------- -------------------------------------------------------------------------------- -get_character_navigator : ( - Struct.Battle.Type -> - Struct.Character.Type -> - Struct.Navigator.Type +handle_undo_switching_weapons : ( + Struct.CharacterTurn.Type -> + Struct.CharacterTurn.Type ) -get_character_navigator battle char = - let - base_char = (Struct.Character.get_base_character char) - weapon = (BattleCharacters.Struct.Character.get_active_weapon base_char) - in - (Struct.Navigator.new - (Struct.Character.get_location char) - (Battle.Struct.Attributes.get_movement_points - (BattleCharacters.Struct.Character.get_attributes base_char) - ) - (BattleCharacters.Struct.Weapon.get_defense_range weapon) - (BattleCharacters.Struct.Weapon.get_attack_range weapon) - (BattleMap.Struct.Map.get_tile_data_function - (Struct.Battle.get_map battle) - (List.map - (Struct.Character.get_location) - (Array.toList (Struct.Battle.get_characters battle)) - ) - (Struct.Character.get_location char) - ) - ) - -handle_reset_character_turn : Struct.Model.Type -> Struct.CharacterTurn.Type -handle_reset_character_turn model = - case (Struct.CharacterTurn.maybe_get_active_character model.char_turn) of - Nothing -> model.char_turn - - (Just current_char) -> - case - (Struct.Battle.get_character - (Struct.Character.get_index current_char) - model.battle - ) - of - Nothing -> model.char_turn - - (Just reset_char) -> - (Struct.CharacterTurn.set_navigator - (get_character_navigator model.battle reset_char) - (Struct.CharacterTurn.set_active_character - reset_char - (Struct.CharacterTurn.new) - ) - ) - -handle_undo_switched_weapons : Struct.Model.Type -> Struct.CharacterTurn.Type -handle_undo_switched_weapons model = - case (Struct.CharacterTurn.maybe_get_active_character model.char_turn) of - Nothing -> model.char_turn +handle_undo_switching_weapons char_turn = + case (Struct.CharacterTurn.maybe_get_active_character char_turn) of + Nothing -> char_turn (Just char) -> - (Struct.CharacterTurn.lock_path - (Struct.CharacterTurn.unlock_path - (Struct.CharacterTurn.set_has_switched_weapons - False - (Struct.CharacterTurn.set_active_character_no_reset - (Struct.Character.set_base_character - (BattleCharacters.Struct.Character.switch_weapons - (Struct.Character.get_base_character char) - ) - char - ) - model.char_turn + (Struct.CharacterTurn.clear_action + (Struct.CharacterTurn.set_active_character + (Struct.Character.set_base_character + (BattleCharacters.Struct.Character.switch_weapons + (Struct.Character.get_base_character char) ) + char ) + char_turn ) ) -handle_undo_chose_target : Struct.Model.Type -> Struct.CharacterTurn.Type -handle_undo_chose_target model = - (Struct.CharacterTurn.set_target Nothing model.char_turn) --- Was previously something like below, but that looks really wrong: --- (Struct.CharacterTurn.lock_path --- (Struct.CharacterTurn.unlock_path --- model.char_turn --- ) --- ) +handle_undo_attacking : Struct.CharacterTurn.Type -> Struct.CharacterTurn.Type +handle_undo_attacking char_turn = + (Struct.CharacterTurn.clear_action + (Struct.CharacterTurn.clear_target_indices + (Struct.CharacterTurn.clear_locations + char_turn + ) + ) + ) -------------------------------------------------------------------------------- -- EXPORTED -------------------------------------------------------------------- @@ -116,15 +66,15 @@ apply_to model = {model | char_turn = ( - case (Struct.CharacterTurn.get_state model.char_turn) of - Struct.CharacterTurn.ChoseTarget -> - (handle_undo_chose_target model) + case (Struct.CharacterTurn.get_action model.char_turn) of + Struct.CharacterTurn.Attacking -> + (handle_undo_attacking model.char_turn) - Struct.CharacterTurn.SwitchedWeapons -> - (handle_undo_switched_weapons model) + Struct.CharacterTurn.UsingSkill -> + (handle_undo_attacking model.char_turn) - Struct.CharacterTurn.MovedCharacter -> - (handle_reset_character_turn model) + Struct.CharacterTurn.SwitchingWeapons -> + (handle_undo_switching_weapons model.char_turn) _ -> model.char_turn ) diff --git a/src/battle/src/Update/HandleServerReply.elm b/src/battle/src/Update/HandleServerReply.elm index e2dad31..a5b026c 100644 --- a/src/battle/src/Update/HandleServerReply.elm +++ b/src/battle/src/Update/HandleServerReply.elm @@ -14,13 +14,13 @@ import Time import Url -- Shared ---------------------------------------------------------------------- -import Action.Ports +import Shared.Action.Ports -import Struct.Flags +import Shared.Struct.Flags -import Util.Http +import Shared.Util.Http -import Update.Sequence +import Shared.Update.Sequence -- Battle Characters ----------------------------------------------------------- import BattleCharacters.Struct.DataSetItem @@ -55,14 +55,20 @@ import Update.Puppeteer -------------------------------------------------------------------------------- -- LOCAL ----------------------------------------------------------------------- -------------------------------------------------------------------------------- +do_nothing : ( + Struct.Model.Type -> + (Struct.Model.Type, (Cmd Struct.Event.Type)) + ) +do_nothing model = (model, Cmd.none) + disconnected : ( Struct.Model.Type -> - (Cmd Struct.Event.Type) + (Struct.Model.Type, (Cmd Struct.Event.Type)) ) disconnected model = ( model, - (Action.Ports.go_to + (Shared.Action.Ports.go_to ( Constants.IO.base_url ++ "/login/?action=disconnect&goto=" @@ -70,7 +76,7 @@ disconnected model = (Url.percentEncode ( "/battle/?" - ++ (Struct.Flags.get_parameters_as_url model.flags) + ++ (Shared.Struct.Flags.get_parameters_as_url model.flags) ) ) ) @@ -80,7 +86,7 @@ disconnected model = add_characters_data_set_item : ( BattleCharacters.Struct.DataSetItem.Type -> Struct.Model.Type -> - (Cmd Struct.Event.Type) + (Struct.Model.Type, (Cmd Struct.Event.Type)) ) add_characters_data_set_item item model = ( @@ -97,7 +103,7 @@ add_characters_data_set_item item model = add_map_data_set_item : ( BattleMap.Struct.DataSetItem.Type -> Struct.Model.Type -> - (Cmd Struct.Event.Type) + (Struct.Model.Type, (Cmd Struct.Event.Type)) ) add_map_data_set_item item model = ( @@ -111,7 +117,7 @@ add_map_data_set_item item model = add_player : ( Struct.Player.Type -> Struct.Model.Type -> - (Cmd Struct.Event.Type) + (Struct.Model.Type, (Cmd Struct.Event.Type)) ) add_player pl model = ( @@ -124,7 +130,7 @@ add_player pl model = add_character : ( Struct.Character.Unresolved -> Struct.Model.Type -> - (Cmd Struct.Event.Type) + (Struct.Model.Type, (Cmd Struct.Event.Type)) ) add_character unresolved_char model = ( @@ -153,7 +159,7 @@ add_character unresolved_char model = set_map : ( BattleMap.Struct.Map.Type -> Struct.Model.Type -> - (Cmd Struct.Event.Type) + (Struct.Model.Type, (Cmd Struct.Event.Type)) ) set_map map model = ( @@ -173,7 +179,7 @@ set_map map model = add_to_timeline : ( (List Struct.TurnResult.Type) -> Struct.Model.Type -> - (Cmd Struct.Event.Type) + (Struct.Model.Type, (Cmd Struct.Event.Type)) ) add_to_timeline turn_results model = (Update.Puppeteer.apply_to @@ -207,7 +213,7 @@ add_to_timeline turn_results model = set_timeline : ( (List Struct.TurnResult.Type) -> Struct.Model.Type -> - (Cmd Struct.Event.Type) + (Struct.Model.Type, (Cmd Struct.Event.Type)) ) set_timeline turn_results model = ( @@ -274,15 +280,15 @@ apply_to model query_result = ( (Struct.Model.invalidate (Struct.Error.new Struct.Error.Networking - (Util.Http.error_to_string error) + (Shared.Util.Http.error_to_string error) ) model ), Cmd.none ) - (Result.Ok server_command) -> - (Update.Sequence.sequence - (List.map (server_command_to_update) commands) + (Result.Ok server_commands) -> + (Shared.Update.Sequence.sequence + (List.map (server_command_to_update) server_commands) model ) diff --git a/src/battle/src/Update/SelectCharacter.elm b/src/battle/src/Update/SelectCharacter.elm index ae2860f..5111544 100644 --- a/src/battle/src/Update/SelectCharacter.elm +++ b/src/battle/src/Update/SelectCharacter.elm @@ -5,12 +5,14 @@ import Array import Task +-- Shared ---------------------------------------------------------------------- +import Shared.Update.Sequence + -- Battle ---------------------------------------------------------------------- import Battle.Struct.Attributes -- Battle Characters ----------------------------------------------------------- import BattleCharacters.Struct.Character -import BattleCharacters.Struct.Weapon -- Battle Map ------------------------------------------------------------------ import BattleMap.Struct.Map @@ -28,76 +30,17 @@ import Struct.Model import Struct.Navigator import Struct.UI --------------------------------------------------------------------------------- --- LOCAL ----------------------------------------------------------------------- --------------------------------------------------------------------------------- -attack_character : ( - Struct.Model.Type -> - Int -> - Struct.Character.Type -> - Struct.Model.Type - ) -attack_character model target_char_id target_char = - {model | - char_turn = - (Struct.CharacterTurn.set_target - (Just target_char_id) - model.char_turn - ), - ui = - (Struct.UI.reset_displayed_nav - (Struct.UI.reset_displayed_tab - (Struct.UI.set_previous_action Nothing model.ui) - ) - ) - } +import Update.Character.DisplayInfo +import Update.Character.DisplayNavigator -ctrl_or_focus_character : ( - Struct.Model.Type -> - Int -> - Struct.Character.Type -> - Struct.Model.Type - ) -ctrl_or_focus_character model target_char_id target_char = - if (Struct.Character.is_enabled target_char) - then - let - nav = - (case (Struct.UI.maybe_get_displayed_nav model.ui) of - (Just dnav) -> dnav - Nothing -> - (get_character_navigator model.battle target_char) - ) - in - {model | - char_turn = - (Struct.CharacterTurn.set_navigator - nav - (Struct.CharacterTurn.set_active_character - target_char - model.char_turn - ) - ), - ui = - (Struct.UI.reset_displayed_nav - (Struct.UI.reset_displayed_tab - (Struct.UI.set_previous_action Nothing model.ui) - ) - ) - } - else - {model | - ui = - (Struct.UI.set_previous_action - (Just (Struct.UI.SelectedCharacter target_char_id)) - (Struct.UI.set_displayed_nav - (get_character_navigator model.battle target_char) - model.ui - ) - ) - } +import Update.CharacterTurn.ToggleTarget +import Update.CharacterTurn +import Util.Navigator +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- second_click_on : ( Int -> Struct.Model.Type -> @@ -106,7 +49,13 @@ second_click_on : ( second_click_on target_char_id model = if (Struct.CharacterTurn.has_active_character model.char_turn) then (Update.CharacterTurn.ToggleTarget.apply_to_ref target_char_id model) - else (Update.CharacterTurn.apply_to target_char_id model) + else + case (Struct.Battle.get_character target_char_id model.battle) of + Nothing -> (model, Cmd.none) + (Just character) -> + if (Struct.Character.is_enabled character) + then (Update.CharacterTurn.apply_to character model) + else (model, Cmd.none) first_click_on : ( Int -> @@ -114,15 +63,15 @@ first_click_on : ( (Struct.Model.Type, (Cmd Struct.Event.Type)) ) first_click_on target_char_id model = - (Update.Sequence.sequence + (Shared.Update.Sequence.sequence [ - (Update.Character.DisplayInfo.apply_to target_char_id), + (Update.Character.DisplayInfo.apply_to_ref target_char_id), (Update.Character.DisplayNavigator.apply_to_ref target_char_id) ] {model | ui = (Struct.UI.set_previous_action - (Just (Struct.UI.SelectedCharacter target_ref)) + (Just (Struct.UI.SelectedCharacter target_char_id)) model.ui ) } @@ -132,11 +81,11 @@ first_click_on target_char_id model = -- EXPORTED -------------------------------------------------------------------- -------------------------------------------------------------------------------- apply_to : ( - Struct.Model.Type -> Int -> + Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) ) -apply_to model target_char_id = +apply_to target_char_id model = if ( (Struct.UI.get_previous_action model.ui) diff --git a/src/battle/src/Update/SelectCharacterOrTile.elm b/src/battle/src/Update/SelectCharacterOrTile.elm index 2135927..2f36179 100644 --- a/src/battle/src/Update/SelectCharacterOrTile.elm +++ b/src/battle/src/Update/SelectCharacterOrTile.elm @@ -1,7 +1,7 @@ module Update.SelectCharacterOrTile exposing (apply_to) -- Shared ---------------------------------------------------------------------- -import Util.Array +import Shared.Util.Array -- Battle Map ------------------------------------------------------------------ import BattleMap.Struct.Location @@ -23,13 +23,13 @@ import Update.SelectTile -- EXPORTED -------------------------------------------------------------------- -------------------------------------------------------------------------------- apply_to : ( - Struct.Model.Type -> BattleMap.Struct.Location.Ref -> + Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) ) -apply_to model loc_ref = +apply_to loc_ref model = case - (Util.Array.filter_first + (Shared.Util.Array.filter_first (\c -> ( ( @@ -45,10 +45,10 @@ apply_to model loc_ref = of (Just char) -> (Update.SelectCharacter.apply_to - model (Struct.Character.get_index char) + model ) Nothing -> - (Update.SelectTile.apply_to model loc_ref) + (Update.SelectTile.apply_to loc_ref model) diff --git a/src/battle/src/Update/SelectTile.elm b/src/battle/src/Update/SelectTile.elm index ebc7cd1..2f49f5f 100644 --- a/src/battle/src/Update/SelectTile.elm +++ b/src/battle/src/Update/SelectTile.elm @@ -49,7 +49,17 @@ go_to_current_tile model loc_ref = -- And we just clicked on that tile. ( {model | - char_turn = (Struct.CharacterTurn.lock_path model.char_turn) + char_turn = + case + (Struct.CharacterTurn.maybe_get_navigator model.char_turn) + of + (Just nav) -> + (Struct.CharacterTurn.set_navigator + (Struct.Navigator.lock_path nav) + (Struct.CharacterTurn.store_path model.char_turn) + ) + + Nothing -> model.char_turn }, Cmd.none ) @@ -166,11 +176,11 @@ go_to_tile model char navigator loc_ref = -- EXPORTED -------------------------------------------------------------------- -------------------------------------------------------------------------------- apply_to : ( - Struct.Model.Type -> BattleMap.Struct.Location.Ref -> + Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) ) -apply_to model loc_ref = +apply_to loc_ref model = case ( (Struct.CharacterTurn.maybe_get_navigator model.char_turn), diff --git a/src/battle/src/Update/UI/GoToMainMenu.elm b/src/battle/src/Update/UI/GoToMainMenu.elm index 7aec7b2..a522f66 100644 --- a/src/battle/src/Update/UI/GoToMainMenu.elm +++ b/src/battle/src/Update/UI/GoToMainMenu.elm @@ -1,7 +1,7 @@ module Update.UI.GoToMainMenu exposing (apply_to) -- Shared ---------------------------------------------------------------------- -import Action.Ports +import Shared.Action.Ports -- Local Module ---------------------------------------------------------------- import Constants.IO @@ -20,5 +20,5 @@ apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) apply_to model = ( model, - (Action.Ports.go_to (Constants.IO.base_url ++"/main-menu/")) + (Shared.Action.Ports.go_to (Constants.IO.base_url ++"/main-menu/")) ) diff --git a/src/battle/src/View/Controlled.elm b/src/battle/src/View/Controlled.elm index fe730fb..0293770 100644 --- a/src/battle/src/View/Controlled.elm +++ b/src/battle/src/View/Controlled.elm @@ -6,7 +6,7 @@ import Html.Attributes import Html.Events -- Shared ---------------------------------------------------------------------- -import Util.Html +import Shared.Util.Html -- Local Module ---------------------------------------------------------------- import Struct.CharacterTurn @@ -26,16 +26,31 @@ has_a_path char_turn = Nothing -> False +skill_button : Struct.CharacterTurn.Type -> (Html.Html Struct.Event.Type) +skill_button char_turn = + (Html.button + [ (Html.Events.onClick Struct.Event.AttackRequest) ] + [ + (Html.text + ( + if (has_a_path char_turn) + then ("Go & Select Skill Target(s)") + else ("Select Skill Target(s)") + ) + ) + ] + ) + attack_button : Struct.CharacterTurn.Type -> (Html.Html Struct.Event.Type) attack_button char_turn = (Html.button - [ (Html.Events.onClick Struct.Event.AttackWithoutMovingRequest) ] + [ (Html.Events.onClick Struct.Event.AttackRequest) ] [ (Html.text ( if (has_a_path char_turn) - then ("Go & Select Target") - else ("Select Target") + then ("Go & Select Attack Target") + else ("Select Attack Target") ) ) ] @@ -55,14 +70,14 @@ undo_button = [ (Html.text "Undo") ] ) -end_turn_button : String -> (Html.Html Struct.Event.Type) -end_turn_button suffix = +end_turn_button : (Html.Html Struct.Event.Type) +end_turn_button = (Html.button [ (Html.Events.onClick Struct.Event.TurnEnded), (Html.Attributes.class "end-turn-button") ] - [ (Html.text ("End Turn" ++ suffix)) ] + [ (Html.text ("Confirm Turn")) ] ) inventory_button : Bool -> (Html.Html Struct.Event.Type) @@ -85,41 +100,22 @@ get_available_actions : ( (List (Html.Html Struct.Event.Type)) ) get_available_actions char_turn = - case (Struct.CharacterTurn.get_state char_turn) of - Struct.CharacterTurn.SelectedCharacter -> + if ((Struct.CharacterTurn.get_action char_turn) == Struct.CharacterTurn.None) + then [ (attack_button char_turn), + (skill_button char_turn), (inventory_button (has_a_path char_turn)), - (end_turn_button " Doing Nothing"), - (abort_button) - ] - - Struct.CharacterTurn.MovedCharacter -> - [ - (inventory_button False), - (end_turn_button " by Moving"), - (undo_button), - (abort_button) - ] - - Struct.CharacterTurn.ChoseTarget -> - [ - (end_turn_button " by Attacking"), - (undo_button), + (end_turn_button), (abort_button) ] - - Struct.CharacterTurn.SwitchedWeapons -> + else [ - (end_turn_button " by Switching Weapons"), + (end_turn_button), (undo_button), (abort_button) ] - _ -> - [ - ] - -------------------------------------------------------------------------------- -- EXPORTED -------------------------------------------------------------------- -------------------------------------------------------------------------------- @@ -140,14 +136,12 @@ get_html char_turn player_ix = ( if ( - (Struct.CharacterTurn.get_state char_turn) + (Struct.CharacterTurn.get_action char_turn) == - Struct.CharacterTurn.SelectedCharacter + Struct.CharacterTurn.None ) - then - (View.Controlled.ManualControls.get_html) - else - (Util.Html.nothing) + then (View.Controlled.ManualControls.get_html) + else (Shared.Util.Html.nothing) ), (Html.div [(Html.Attributes.class "controlled-actions")] @@ -156,4 +150,4 @@ get_html char_turn player_ix = ] ) - Nothing -> (Util.Html.nothing) + Nothing -> (Shared.Util.Html.nothing) diff --git a/src/battle/src/View/Controlled/CharacterCard.elm b/src/battle/src/View/Controlled/CharacterCard.elm index 45e58d9..1981779 100644 --- a/src/battle/src/View/Controlled/CharacterCard.elm +++ b/src/battle/src/View/Controlled/CharacterCard.elm @@ -12,9 +12,6 @@ import Html import Html.Attributes import Html.Events --- Shared ---------------------------------------------------------------------- -import Util.Html - -- Battle ---------------------------------------------------------------------- import Battle.Struct.DamageType import Battle.Struct.Omnimods diff --git a/src/battle/src/View/Controlled/ManualControls.elm b/src/battle/src/View/Controlled/ManualControls.elm index d65bd1a..8c8c802 100644 --- a/src/battle/src/View/Controlled/ManualControls.elm +++ b/src/battle/src/View/Controlled/ManualControls.elm @@ -36,7 +36,7 @@ go_button = (Html.button [ (Html.Attributes.class "manual-controls-go"), - (Html.Events.onClick Struct.Event.AttackWithoutMovingRequest) + (Html.Events.onClick Struct.Event.AttackRequest) ] [ (Html.text "Go") diff --git a/src/battle/src/View/MainMenu.elm b/src/battle/src/View/MainMenu.elm index a40b2a3..318604c 100644 --- a/src/battle/src/View/MainMenu.elm +++ b/src/battle/src/View/MainMenu.elm @@ -16,7 +16,7 @@ get_menu_button_html : Struct.UI.Tab -> (Html.Html Struct.Event.Type) get_menu_button_html tab = (Html.button [ (Html.Events.onClick (Struct.Event.TabSelected tab)) ] - [ (Html.text (Struct.UI.to_string tab)) ] + [ (Html.text (Struct.UI.tab_to_string tab)) ] ) get_main_menu_button_html : (Html.Html Struct.Event.Type) diff --git a/src/battle/src/View/Map.elm b/src/battle/src/View/Map.elm index babfcaf..5b0182e 100644 --- a/src/battle/src/View/Map.elm +++ b/src/battle/src/View/Map.elm @@ -10,7 +10,7 @@ import Html.Lazy import List -- Shared ---------------------------------------------------------------------- -import Util.Html +import Shared.Util.Html -- Battle Map ------------------------------------------------------------------ import BattleMap.Struct.Map @@ -96,7 +96,7 @@ maybe_print_navigator interactive maybe_nav = ) Nothing -> - (Util.Html.nothing) + (Shared.Util.Html.nothing) get_characters_html : ( Struct.Battle.Type -> diff --git a/src/battle/src/View/Map/Character.elm b/src/battle/src/View/Map/Character.elm index 1afffeb..49150eb 100644 --- a/src/battle/src/View/Map/Character.elm +++ b/src/battle/src/View/Map/Character.elm @@ -6,7 +6,7 @@ import Html.Attributes import Html.Events -- Shared ---------------------------------------------------------------------- -import Util.Html +import Shared.Util.Html -- Battle Characters ----------------------------------------------------------- import BattleCharacters.Struct.Portrait @@ -80,7 +80,7 @@ get_head_html char = get_banner_html : Struct.Character.Type -> (Html.Html Struct.Event.Type) get_banner_html char = -- TODO: Banner from some status indicator - (Util.Html.nothing) + (Shared.Util.Html.nothing) get_actual_html : Struct.Character.Type -> (Html.Html Struct.Event.Type) get_actual_html char = @@ -123,4 +123,4 @@ get_html : Struct.Character.Type -> (Html.Html Struct.Event.Type) get_html char = if (Struct.Character.is_alive char) then (get_actual_html char) - else (Util.Html.nothing) + else (Shared.Util.Html.nothing) diff --git a/src/battle/src/View/MessageBoard.elm b/src/battle/src/View/MessageBoard.elm index 77ceccf..7177d94 100644 --- a/src/battle/src/View/MessageBoard.elm +++ b/src/battle/src/View/MessageBoard.elm @@ -4,7 +4,7 @@ module View.MessageBoard exposing (get_html) import Html -- Shared ---------------------------------------------------------------------- -import Util.Html +import Shared.Util.Html -- Local Module ---------------------------------------------------------------- import Struct.Event @@ -40,5 +40,5 @@ display model message = get_html : Struct.Model.Type -> (Html.Html Struct.Event.Type) get_html model = case (Struct.MessageBoard.maybe_get_current_message model.message_board) of - Nothing -> (Util.Html.nothing) + Nothing -> (Shared.Util.Html.nothing) (Just message) -> (display model message) diff --git a/src/battle/src/View/SubMenu.elm b/src/battle/src/View/SubMenu.elm index 0577cbf..1261764 100644 --- a/src/battle/src/View/SubMenu.elm +++ b/src/battle/src/View/SubMenu.elm @@ -8,11 +8,10 @@ import Html.Attributes import Html.Lazy -- Shared ---------------------------------------------------------------------- -import Util.Html +import Shared.Util.Html -- Local Module ---------------------------------------------------------------- import Struct.Battle -import Struct.CharacterTurn import Struct.Event import Struct.Model import Struct.UI @@ -63,25 +62,4 @@ get_html model = ) Nothing -> - case (Struct.CharacterTurn.maybe_get_target model.char_turn) of - (Just char_ref) -> - case (Struct.Battle.get_character char_ref model.battle) of - (Just char) -> - (Html.div - [(Html.Attributes.class "sub-menu")] - [ - (Html.text "Targeting:"), - (Html.Lazy.lazy3 - (View.Controlled.CharacterCard.get_summary_html) - model.char_turn - model.battle.own_player_ix - char - ) - ] - ) - - Nothing -> - (Util.Html.nothing) - - Nothing -> - (Util.Html.nothing) + (Shared.Util.Html.nothing) diff --git a/src/shared/battle-characters/BattleCharacters/View/Portrait.elm b/src/shared/battle-characters/BattleCharacters/View/Portrait.elm index 37b6d1f..05497a9 100644 --- a/src/shared/battle-characters/BattleCharacters/View/Portrait.elm +++ b/src/shared/battle-characters/BattleCharacters/View/Portrait.elm @@ -9,7 +9,7 @@ import Html.Attributes import Html.Events -- Shared ---------------------------------------------------------------------- -import Util.Html +import Shared.Util.Html -- Battle Characters ----------------------------------------------------------- import BattleCharacters.Struct.Armor diff --git a/src/shared/battle-map/BattleMap/Struct/Map.elm b/src/shared/battle-map/BattleMap/Struct/Map.elm index cbab5b2..3504f95 100644 --- a/src/shared/battle-map/BattleMap/Struct/Map.elm +++ b/src/shared/battle-map/BattleMap/Struct/Map.elm @@ -9,6 +9,7 @@ module BattleMap.Struct.Map exposing remove_marker, add_marker, get_tile_data_function, + get_tile_cost_function, get_omnimods_at, get_tiles, get_width, @@ -28,7 +29,7 @@ import Dict import Json.Decode -- Shared ---------------------------------------------------------------------- -import Util.Array +import Shared.Util.Array -- Battle ---------------------------------------------------------------------- import Battle.Struct.Omnimods @@ -98,7 +99,7 @@ remove_marker marker_name map = content = (Set.foldl (\loc array -> - (Util.Array.update_unsafe + (Shared.Util.Array.update_unsafe (location_to_index (BattleMap.Struct.Location.from_ref loc) map @@ -121,7 +122,7 @@ add_marker marker_name marker map = content = (Set.foldl (\loc array -> - (Util.Array.update_unsafe + (Shared.Util.Array.update_unsafe (location_to_index (BattleMap.Struct.Location.from_ref loc) map @@ -263,3 +264,23 @@ get_tile_data_function bmap occupied_tiles start_loc loc = Nothing -> (Constants.Movement.cost_when_out_of_bounds, 0) else (Constants.Movement.cost_when_out_of_bounds, 0) + +get_tile_cost_function : ( + Type -> + (List BattleMap.Struct.Location.Type) -> + BattleMap.Struct.Location.Type -> + BattleMap.Struct.Location.Type -> + Int + ) +get_tile_cost_function bmap occupied_tiles start_loc loc = + if (has_location loc bmap) + then + case (Array.get (location_to_index loc bmap) bmap.content) of + (Just tile) -> + if ((loc /= start_loc) && (List.member loc occupied_tiles)) + then Constants.Movement.cost_when_occupied_tile + else (BattleMap.Struct.TileInstance.get_cost tile) + + Nothing -> (Constants.Movement.cost_when_out_of_bounds) + else + (Constants.Movement.cost_when_out_of_bounds) diff --git a/src/shared/battle-map/BattleMap/View/TileInfo.elm b/src/shared/battle-map/BattleMap/View/TileInfo.elm index 8769157..8dc4788 100644 --- a/src/shared/battle-map/BattleMap/View/TileInfo.elm +++ b/src/shared/battle-map/BattleMap/View/TileInfo.elm @@ -6,9 +6,6 @@ import Dict import Html import Html.Attributes --- Shared ---------------------------------------------------------------------- -import Util.Html - -- Battle ---------------------------------------------------------------------- import Battle.Struct.Omnimods diff --git a/src/shared/elm/Shared/Struct/Flags.elm b/src/shared/elm/Shared/Struct/Flags.elm index f57362e..ff4dd20 100644 --- a/src/shared/elm/Shared/Struct/Flags.elm +++ b/src/shared/elm/Shared/Struct/Flags.elm @@ -12,7 +12,7 @@ module Shared.Struct.Flags exposing import List -- Shared ---------------------------------------------------------------------- -import Util.List +import Shared.Util.List -------------------------------------------------------------------------------- -- TYPES ----------------------------------------------------------------------- @@ -39,7 +39,7 @@ parameter_as_url parameter = maybe_get_parameter : String -> Type -> (Maybe String) maybe_get_parameter parameter flags = case - (Util.List.get_first + (Shared.Util.List.get_first (\e -> ((List.head e) == (Just parameter))) flags.url_parameters ) diff --git a/src/shared/elm/Shared/Update/Sequence.elm b/src/shared/elm/Shared/Update/Sequence.elm index ff33ae4..8f5b3e9 100644 --- a/src/shared/elm/Shared/Update/Sequence.elm +++ b/src/shared/elm/Shared/Update/Sequence.elm @@ -4,6 +4,7 @@ module Shared.Update.Sequence exposing (sequence) import List -- Local Module ---------------------------------------------------------------- +import Struct.Event import Struct.Model -------------------------------------------------------------------------------- @@ -16,9 +17,7 @@ sequence_step : ( ) sequence_step action (model, cmd_list) = let (next_model, new_cmd) = (action model) in - case new_cmd of - Cmd.none -> (next_model, cmd_list) - _ -> (next_model, (cmd_list ++ new_cmds)) + (next_model, (new_cmd :: cmd_list)) -------------------------------------------------------------------------------- -- EXPORTED -------------------------------------------------------------------- @@ -27,6 +26,7 @@ sequence : ( (List (Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type))) ) + -> Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) ) sequence actions model = -- cgit v1.2.3-70-g09d2