summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle/src/Comm/CharacterTurn.elm6
-rw-r--r--src/battle/src/Comm/LoadBattle.elm6
-rw-r--r--src/battle/src/Comm/Send.elm21
-rw-r--r--src/battle/src/ElmModule/Init.elm4
-rw-r--r--src/battle/src/ElmModule/Update.elm59
-rw-r--r--src/battle/src/Main.elm4
-rw-r--r--src/battle/src/Struct/Battle.elm22
-rw-r--r--src/battle/src/Struct/CharacterTurn.elm70
-rw-r--r--src/battle/src/Struct/Event.elm2
-rw-r--r--src/battle/src/Struct/Model.elm8
-rw-r--r--src/battle/src/Struct/Navigator.elm23
-rw-r--r--src/battle/src/Struct/Path.elm28
-rw-r--r--src/battle/src/Struct/Puppeteer.elm6
-rw-r--r--src/battle/src/Struct/TurnResult.elm2
-rw-r--r--src/battle/src/Update/Character/DisplayCharacterInfo.elm2
-rw-r--r--src/battle/src/Update/Character/DisplayInfo.elm21
-rw-r--r--src/battle/src/Update/Character/DisplayNavigator.elm12
-rw-r--r--src/battle/src/Update/Character/LookForCharacter.elm2
-rw-r--r--src/battle/src/Update/CharacterTurn.elm44
-rw-r--r--src/battle/src/Update/CharacterTurn/Attack.elm (renamed from src/battle/src/Update/CharacterTurn/AttackWithoutMoving.elm)34
-rw-r--r--src/battle/src/Update/CharacterTurn/EndTurn.elm75
-rw-r--r--src/battle/src/Update/CharacterTurn/RequestDirection.elm6
-rw-r--r--src/battle/src/Update/CharacterTurn/SwitchWeapon.elm102
-rw-r--r--src/battle/src/Update/CharacterTurn/ToggleTarget.elm65
-rw-r--r--src/battle/src/Update/CharacterTurn/UndoAction.elm112
-rw-r--r--src/battle/src/Update/HandleServerReply.elm42
-rw-r--r--src/battle/src/Update/SelectCharacter.elm97
-rw-r--r--src/battle/src/Update/SelectCharacterOrTile.elm12
-rw-r--r--src/battle/src/Update/SelectTile.elm16
-rw-r--r--src/battle/src/Update/UI/GoToMainMenu.elm4
-rw-r--r--src/battle/src/View/Controlled.elm72
-rw-r--r--src/battle/src/View/Controlled/CharacterCard.elm3
-rw-r--r--src/battle/src/View/Controlled/ManualControls.elm2
-rw-r--r--src/battle/src/View/MainMenu.elm2
-rw-r--r--src/battle/src/View/Map.elm4
-rw-r--r--src/battle/src/View/Map/Character.elm6
-rw-r--r--src/battle/src/View/MessageBoard.elm4
-rw-r--r--src/battle/src/View/SubMenu.elm26
-rw-r--r--src/shared/battle-characters/BattleCharacters/View/Portrait.elm2
-rw-r--r--src/shared/battle-map/BattleMap/Struct/Map.elm27
-rw-r--r--src/shared/battle-map/BattleMap/View/TileInfo.elm3
-rw-r--r--src/shared/elm/Shared/Struct/Flags.elm4
-rw-r--r--src/shared/elm/Shared/Update/Sequence.elm6
43 files changed, 519 insertions, 549 deletions
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/AttackWithoutMoving.elm b/src/battle/src/Update/CharacterTurn/Attack.elm
index 7946b8f..73f3698 100644
--- a/src/battle/src/Update/CharacterTurn/AttackWithoutMoving.elm
+++ b/src/battle/src/Update/CharacterTurn/Attack.elm
@@ -1,40 +1,34 @@
-module Update.CharacterTurn.AttackWithoutMoving exposing (apply_to)
+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 -----------------------------------------------------------------------
--------------------------------------------------------------------------------
-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)
-
- _ ->
+ case (Struct.CharacterTurn.maybe_get_navigator model.char_turn) of
+ Nothing -> (model, Cmd.none)
+ (Just nav) ->
(
- (Struct.Model.invalidate
- (Struct.Error.new
- Struct.Error.Programming
- (
- "Attempt to do an attack without moving, despite no"
- ++ "character being selected."
+ {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)
+ )
)
- )
- 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 =