summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle/src/Comm/CharacterTurn.elm25
-rw-r--r--src/battle/src/Comm/LoadBattle.elm25
-rw-r--r--src/battle/src/Comm/Send.elm17
-rw-r--r--src/battle/src/Struct/Model.elm391
-rw-r--r--src/battle/src/Struct/ServerReply.elm2
-rw-r--r--src/battle/src/Struct/TurnResultAnimator.elm68
-rw-r--r--src/battle/src/View/Character.elm13
-rw-r--r--src/battle/src/View/Map/Character.elm14
-rw-r--r--src/battle/src/View/SubMenu.elm13
-rw-r--r--src/roster-editor/src/Struct/Inventory.elm54
-rw-r--r--src/roster-editor/src/Struct/Model.elm19
-rw-r--r--src/shared/battle-characters/BattleCharacters/Struct/DataSet.elm (renamed from src/shared/battle-characters/BattleCharacters/Struct/Inventory.elm)112
-rw-r--r--src/shared/battle-map/BattleMap/Struct/DataSet.elm67
-rw-r--r--src/shared/elm/Struct/Flags.elm10
14 files changed, 338 insertions, 492 deletions
diff --git a/src/battle/src/Comm/CharacterTurn.elm b/src/battle/src/Comm/CharacterTurn.elm
index 6e3612f..9fd77d1 100644
--- a/src/battle/src/Comm/CharacterTurn.elm
+++ b/src/battle/src/Comm/CharacterTurn.elm
@@ -3,11 +3,15 @@ module Comm.CharacterTurn exposing (try)
-- Elm -------------------------------------------------------------------------
import Json.Encode
+-- Shared ----------------------------------------------------------------------
+import Struct.Flags
+
-- Local Module ----------------------------------------------------------------
import Constants.IO
import Comm.Send
+import Struct.Battle
import Struct.Character
import Struct.CharacterTurn
import Struct.Event
@@ -27,9 +31,24 @@ try_encoding model =
(Just
(Json.Encode.object
[
- ("stk", (Json.Encode.string model.session_token)),
- ("pid", (Json.Encode.string model.player_id)),
- ("bid", (Json.Encode.string model.battle_id)),
+ (
+ "stk",
+ (Json.Encode.string
+ (Struct.Flags.get_session_token model.flags)
+ )
+ ),
+ (
+ "pid",
+ (Json.Encode.string
+ (Struct.Flags.get_user_id model.flags)
+ )
+ ),
+ (
+ "bid",
+ (Json.Encode.string
+ (Struct.Battle.get_id model.battle)
+ )
+ ),
(
"cix",
(Json.Encode.int (Struct.Character.get_index char))
diff --git a/src/battle/src/Comm/LoadBattle.elm b/src/battle/src/Comm/LoadBattle.elm
index 78a337f..9099f1e 100644
--- a/src/battle/src/Comm/LoadBattle.elm
+++ b/src/battle/src/Comm/LoadBattle.elm
@@ -3,11 +3,15 @@ module Comm.LoadBattle exposing (try)
-- Elm -------------------------------------------------------------------------
import Json.Encode
+-- Shared ----------------------------------------------------------------------
+import Struct.Flags
+
-- Local Module ----------------------------------------------------------------
import Comm.Send
import Constants.IO
+import Struct.Battle
import Struct.Event
import Struct.Model
@@ -23,9 +27,24 @@ try_encoding model =
(Just
(Json.Encode.object
[
- ("stk", (Json.Encode.string model.session_token)),
- ("pid", (Json.Encode.string model.player_id)),
- ("bid", (Json.Encode.string model.battle_id))
+ (
+ "stk",
+ (Json.Encode.string
+ (Struct.Flags.get_session_token model.flags)
+ )
+ ),
+ (
+ "pid",
+ (Json.Encode.string
+ (Struct.Flags.get_user_id model.flags)
+ )
+ ),
+ (
+ "bid",
+ (Json.Encode.string
+ (Struct.Battle.get_id model.battle)
+ )
+ )
]
)
)
diff --git a/src/battle/src/Comm/Send.elm b/src/battle/src/Comm/Send.elm
index faac297..009b57e 100644
--- a/src/battle/src/Comm/Send.elm
+++ b/src/battle/src/Comm/Send.elm
@@ -11,6 +11,7 @@ import BattleCharacters.Comm.AddArmor
import BattleCharacters.Comm.AddGlyph
import BattleCharacters.Comm.AddGlyphBoard
import BattleCharacters.Comm.AddPortrait
+import BattleCharacters.Comm.AddSkill
import BattleCharacters.Comm.AddWeapon
-- Battle Map ------------------------------------------------------------------
@@ -38,16 +39,20 @@ internal_decoder : String -> (Json.Decode.Decoder Struct.ServerReply.Type)
internal_decoder reply_type =
case reply_type of
"add_tile" -> (BattleMap.Comm.AddTile.decode)
+ "set_map" -> (BattleMap.Comm.SetMap.decode)
+
"add_armor" -> (BattleCharacters.Comm.AddArmor.decode)
- "add_char" -> (Comm.AddChar.decode)
- "add_portrait" -> (BattleCharacters.Comm.AddPortrait.decode)
- "add_glyph_board" -> (BattleCharacters.Comm.AddGlyphBoard.decode)
"add_glyph" -> (BattleCharacters.Comm.AddGlyph.decode)
- "add_player" -> (Comm.AddPlayer.decode)
+ "add_glyph_board" -> (BattleCharacters.Comm.AddGlyphBoard.decode)
+ "add_portrait" -> (BattleCharacters.Comm.AddPortrait.decode)
+ "add_skill" -> (BattleCharacters.Comm.AddSkill.decode)
"add_weapon" -> (BattleCharacters.Comm.AddWeapon.decode)
- "set_map" -> (BattleMap.Comm.SetMap.decode)
- "turn_results" -> (Comm.TurnResults.decode)
+
+ "add_char" -> (Comm.AddChar.decode)
+ "add_player" -> (Comm.AddPlayer.decode)
"set_timeline" -> (Comm.SetTimeline.decode)
+ "turn_results" -> (Comm.TurnResults.decode)
+
"disconnected" -> (Json.Decode.succeed Struct.ServerReply.Disconnected)
"okay" -> (Json.Decode.succeed Struct.ServerReply.Okay)
diff --git a/src/battle/src/Struct/Model.elm b/src/battle/src/Struct/Model.elm
index 314a7a5..e23cd9e 100644
--- a/src/battle/src/Struct/Model.elm
+++ b/src/battle/src/Struct/Model.elm
@@ -2,67 +2,28 @@ module Struct.Model exposing
(
Type,
new,
- add_character,
- update_character,
- update_character_fun,
- add_weapon,
- add_armor,
- add_portrait,
- add_glyph_board,
- add_glyph,
- add_skill,
- add_player,
- add_tile,
invalidate,
- initialize_animator,
- apply_animator_step,
- move_animator_to_next_step,
- reset,
- full_debug_reset,
- clear_error,
- tile_omnimods_fun
+ clear,
+ clear_error
)
--- Elm -------------------------------------------------------------------------
-import Array
-
-import Dict
-
-import Set
-
-- Shared ----------------------------------------------------------------------
import Struct.Flags
--- Battle ----------------------------------------------------------------------
-import Battle.Struct.Omnimods
-
-- Battle Characters -----------------------------------------------------------
-import BattleCharacters.Struct.Armor
-import BattleCharacters.Struct.Character
-import BattleCharacters.Struct.Glyph
-import BattleCharacters.Struct.GlyphBoard
-import BattleCharacters.Struct.Portrait
-import BattleCharacters.Struct.Skill
-import BattleCharacters.Struct.Weapon
+import BattleCharacters.Struct.DataSet
-- Battle Map ------------------------------------------------------------------
-import BattleMap.Struct.Location
-import BattleMap.Struct.Map
-import BattleMap.Struct.Marker
-import BattleMap.Struct.Tile
+import BattleMap.Struct.DataSet
-- Local Module ----------------------------------------------------------------
-import Struct.Character
import Struct.CharacterTurn
import Struct.Error
import Struct.HelpRequest
import Struct.TurnResult
import Struct.TurnResultAnimator
-import Struct.Player
import Struct.UI
-import Util.Array
-
--------------------------------------------------------------------------------
-- TYPES -----------------------------------------------------------------------
--------------------------------------------------------------------------------
@@ -71,142 +32,40 @@ type alias Type =
flags : Struct.Flags.Type,
help_request : Struct.HelpRequest.Type,
animator : (Maybe Struct.TurnResultAnimator.Type),
- map : BattleMap.Struct.Map.Type,
- characters : (Array.Array Struct.Character.Type),
- players : (Array.Array Struct.Player.Type),
- weapons :
- (Dict.Dict
- BattleCharacters.Struct.Weapon.Ref
- BattleCharacters.Struct.Weapon.Type
- ),
- armors :
- (Dict.Dict
- BattleCharacters.Struct.Armor.Ref
- BattleCharacters.Struct.Armor.Type
- ),
- portraits :
- (Dict.Dict
- BattleCharacters.Struct.Portrait.Ref
- BattleCharacters.Struct.Portrait.Type
- ),
- glyph_boards :
- (Dict.Dict
- BattleCharacters.Struct.GlyphBoard.Ref
- BattleCharacters.Struct.GlyphBoard.Type
- ),
- glyphs :
- (Dict.Dict
- BattleCharacters.Struct.Glyph.Ref
- BattleCharacters.Struct.Glyph.Type
- ),
- skills :
- (Dict.Dict
- BattleCharacters.Struct.Skill.Ref
- BattleCharacters.Struct.Skill.Type
- ),
- tiles : (Dict.Dict BattleMap.Struct.Tile.Ref BattleMap.Struct.Tile.Type),
- error : (Maybe Struct.Error.Type),
- player_id : String,
- battle_id : String,
- session_token : String,
- player_ix : Int,
ui : Struct.UI.Type,
char_turn : Struct.CharacterTurn.Type,
- timeline : (Array.Array Struct.TurnResult.Type)
+ error : (Maybe Struct.Error.Type),
+
+ battle : Struct.Battle.Type,
+
+ -- Data Sets -------------------------------------------------------------
+ characters_data_set : BattleCharacters.Struct.DataSet.Type,
+ map_data_set : BattleMap.Struct.DataSet.Type
}
--------------------------------------------------------------------------------
-- LOCAL -----------------------------------------------------------------------
--------------------------------------------------------------------------------
-regenerate_attack_of_opportunity_markers_of_char : (
- Int ->
- Struct.Character.Type ->
- Type ->
- Type
- )
-regenerate_attack_of_opportunity_markers_of_char char_ix char model =
- if ((Struct.Character.get_player_index char) == model.player_ix)
- then model
- else
- let
- marker_name = ("matk_c" ++ (String.fromInt char_ix))
- map_without_this_marker =
- (BattleMap.Struct.Map.remove_marker marker_name model.map)
- in
- case (Struct.Character.get_melee_attack_range char) of
- 0 -> {model | map = map_without_this_marker}
- attack_range ->
- {model |
- map =
- (BattleMap.Struct.Map.add_marker
- marker_name
- (BattleMap.Struct.Marker.new_melee_attack
- char_ix
- (BattleMap.Struct.Location.add_neighborhood_to_set
- (BattleMap.Struct.Map.get_width
- map_without_this_marker
- )
- (BattleMap.Struct.Map.get_height
- map_without_this_marker
- )
- attack_range
- (Struct.Character.get_location char)
- (Set.empty)
- )
- )
- map_without_this_marker
- )
- }
-
-regenerate_attack_of_opportunity_markers : Int -> Type -> Type
-regenerate_attack_of_opportunity_markers char_ix model =
- case (Array.get char_ix model.characters) of
- Nothing -> model
- (Just char) ->
- (regenerate_attack_of_opportunity_markers_of_char char_ix char model)
--------------------------------------------------------------------------------
-- EXPORTED --------------------------------------------------------------------
--------------------------------------------------------------------------------
-tile_omnimods_fun : (
- Type ->
- (BattleMap.Struct.Location.Type -> Battle.Struct.Omnimods.Type)
- )
-tile_omnimods_fun model =
- (\loc -> (BattleMap.Struct.Map.get_omnimods_at loc model.tiles model.map))
-
new : Struct.Flags.Type -> Type
new flags =
- let
- maybe_battle_id = (Struct.Flags.maybe_get_param "id" flags)
+ let maybe_battle_id =
model =
{
flags = flags,
help_request = Struct.HelpRequest.None,
animator = Nothing,
- map = (BattleMap.Struct.Map.empty),
- characters = (Array.empty),
- weapons = (Dict.empty),
- armors = (Dict.empty),
- portraits = (Dict.empty),
- glyph_boards = (Dict.empty),
- glyphs = (Dict.empty),
- skills = (Dict.empty),
- tiles = (Dict.empty),
- players = (Array.empty),
- error = Nothing,
- battle_id = "",
- player_id =
- (
- if (flags.user_id == "")
- then "0"
- else flags.user_id
- ),
- session_token = flags.token,
- player_ix = 0,
ui = (Struct.UI.default),
char_turn = (Struct.CharacterTurn.new),
- timeline = (Array.empty)
+ error = Nothing,
+
+ characters_data_set = (BattleCharacters.Struct.DataSet.new),
+ map_data_set = (BattleMap.Struct.DataSet.new),
+
+ battle = (Struct.Battle.new)
}
in
case maybe_battle_id of
@@ -219,110 +78,13 @@ new flags =
model
)
- (Just id) -> {model | battle_id = id}
-
-add_character : Struct.Character.Type -> Type -> Type
-add_character char model =
- let characters = model.characters in
- (regenerate_attack_of_opportunity_markers_of_char
- (Array.length characters)
- char
- {model | characters = (Array.push char characters)}
- )
-
-add_weapon : BattleCharacters.Struct.Weapon.Type -> Type -> Type
-add_weapon wp model =
- {model |
- weapons =
- (Dict.insert
- (BattleCharacters.Struct.Weapon.get_id wp)
- wp
- model.weapons
- )
- }
+ (Just id) ->
+ {model |
+ battle = (Struct.Battle.set_battle_id id model.battle)
+ }
-add_armor : BattleCharacters.Struct.Armor.Type -> Type -> Type
-add_armor ar model =
- {model |
- armors =
- (Dict.insert
- (BattleCharacters.Struct.Armor.get_id ar)
- ar
- model.armors
- )
- }
-
-add_portrait : BattleCharacters.Struct.Portrait.Type -> Type -> Type
-add_portrait pt model =
- {model |
- portraits =
- (Dict.insert
- (BattleCharacters.Struct.Portrait.get_id pt)
- pt
- model.portraits
- )
- }
-
-add_glyph_board : BattleCharacters.Struct.GlyphBoard.Type -> Type -> Type
-add_glyph_board pt model =
- {model |
- glyph_boards =
- (Dict.insert
- (BattleCharacters.Struct.GlyphBoard.get_id pt)
- pt
- model.glyph_boards
- )
- }
-
-add_glyph : BattleCharacters.Struct.Glyph.Type -> Type -> Type
-add_glyph pt model =
- {model |
- glyphs =
- (Dict.insert
- (BattleCharacters.Struct.Glyph.get_id pt)
- pt
- model.glyphs
- )
- }
-
-add_skill : BattleCharacters.Struct.Skill.Type -> Type -> Type
-add_skill sk model =
- {model |
- skills =
- (Dict.insert
- (BattleCharacters.Struct.Skill.get_id sk)
- sk
- model.skills
- )
- }
-
-add_player : Struct.Player.Type -> Type -> Type
-add_player pl model =
- {model |
- players =
- (Array.push
- pl
- model.players
- ),
- player_ix =
- if ((Struct.Player.get_id pl) == model.player_id)
- then (Struct.Player.get_index pl)
- else model.player_ix
- }
-
-add_tile : BattleMap.Struct.Tile.Type -> Type -> Type
-add_tile tl model =
- {model |
- tiles =
- (Dict.insert
- (BattleMap.Struct.Tile.get_id tl)
- tl
- model.tiles
- )
- }
-
-reset : Type -> Type
-reset model =
+clear : Type -> Type
+clear model =
{model |
help_request = Struct.HelpRequest.None,
error = Nothing,
@@ -333,111 +95,6 @@ reset model =
char_turn = (Struct.CharacterTurn.new)
}
-full_debug_reset : Type -> Type
-full_debug_reset model =
- {model |
- help_request = Struct.HelpRequest.None,
- animator = Nothing,
- map = (BattleMap.Struct.Map.empty),
- characters = (Array.empty),
- weapons = (Dict.empty),
- armors = (Dict.empty),
- portraits = (Dict.empty),
- glyph_boards = (Dict.empty),
- glyphs = (Dict.empty),
- skills = (Dict.empty),
- tiles = (Dict.empty),
- error = Nothing,
- ui = (Struct.UI.default),
- char_turn = (Struct.CharacterTurn.new),
- timeline = (Array.empty)
- }
-
-initialize_animator : Type -> Type
-initialize_animator model =
- let
- timeline_list = (Array.toList model.timeline)
- (characters, players) =
- (List.foldr
- (\event (pcharacters, pplayers) ->
- (Struct.TurnResult.apply_inverse_step
- (tile_omnimods_fun model)
- event
- pcharacters
- pplayers
- )
- )
- (model.characters, model.players)
- timeline_list
- )
- in
- {model |
- animator =
- (Struct.TurnResultAnimator.maybe_new
- (List.reverse timeline_list)
- True
- ),
- ui = (Struct.UI.default),
- characters = characters,
- players = players
- }
-
-move_animator_to_next_step : Type -> Type
-move_animator_to_next_step model =
- case model.animator of
- Nothing -> model
- (Just animator) ->
- case (Struct.TurnResultAnimator.maybe_trigger_next_step animator) of
- Nothing ->
- (Set.foldl
- (regenerate_attack_of_opportunity_markers)
- {model | animator = Nothing }
- (Struct.TurnResultAnimator.get_animated_character_indices
- animator
- )
- )
-
- just_next_animator -> {model | animator = just_next_animator }
-
-apply_animator_step : Type -> Type
-apply_animator_step model =
- case model.animator of
- Nothing -> model
- (Just animator) ->
- case (Struct.TurnResultAnimator.get_current_animation animator) of
- (Struct.TurnResultAnimator.TurnResult turn_result) ->
- let
- (characters, players) =
- (Struct.TurnResult.apply_step
- (tile_omnimods_fun model)
- turn_result
- model.characters
- model.players
- )
- in
- {model |
- characters = characters,
- players = players
- }
- _ -> model
-
-update_character : Int -> Struct.Character.Type -> Type -> Type
-update_character ix new_val model =
- {model |
- characters = (Array.set ix new_val model.characters)
- }
-
-update_character_fun : (
- Int ->
- ((Maybe Struct.Character.Type) -> (Maybe Struct.Character.Type)) ->
- Type ->
- Type
- )
-update_character_fun ix fun model =
- {model |
- characters = (Util.Array.update ix (fun) model.characters)
- }
-
invalidate : Struct.Error.Type -> Type -> Type
invalidate err model =
{model |
diff --git a/src/battle/src/Struct/ServerReply.elm b/src/battle/src/Struct/ServerReply.elm
index f02f791..d059c17 100644
--- a/src/battle/src/Struct/ServerReply.elm
+++ b/src/battle/src/Struct/ServerReply.elm
@@ -5,6 +5,7 @@ import BattleCharacters.Struct.Armor
import BattleCharacters.Struct.Glyph
import BattleCharacters.Struct.GlyphBoard
import BattleCharacters.Struct.Portrait
+import BattleCharacters.Struct.Skill
import BattleCharacters.Struct.Weapon
-- Battle Map ------------------------------------------------------------------
@@ -26,6 +27,7 @@ type Type =
| AddPortrait BattleCharacters.Struct.Portrait.Type
| AddGlyphBoard BattleCharacters.Struct.GlyphBoard.Type
| AddGlyph BattleCharacters.Struct.Glyph.Type
+ | AddSkill BattleCharacters.Struct.Skill.Type
| AddPlayer Struct.Player.Type
| AddWeapon BattleCharacters.Struct.Weapon.Type
| AddCharacter Struct.Character.Unresolved
diff --git a/src/battle/src/Struct/TurnResultAnimator.elm b/src/battle/src/Struct/TurnResultAnimator.elm
index d4445f7..9736c72 100644
--- a/src/battle/src/Struct/TurnResultAnimator.elm
+++ b/src/battle/src/Struct/TurnResultAnimator.elm
@@ -98,6 +98,74 @@ maybe_go_to_next_animation tra =
(_, _) -> Nothing
+initialize_animator : Type -> Type
+initialize_animator model =
+ let
+ timeline_list = (Array.toList model.timeline)
+ (characters, players) =
+ (List.foldr
+ (\event (pcharacters, pplayers) ->
+ (Struct.TurnResult.apply_inverse_step
+ (tile_omnimods_fun model)
+ event
+ pcharacters
+ pplayers
+ )
+ )
+ (model.characters, model.players)
+ timeline_list
+ )
+ in
+ {model |
+ animator =
+ (Struct.TurnResultAnimator.maybe_new
+ (List.reverse timeline_list)
+ True
+ ),
+ ui = (Struct.UI.default),
+ characters = characters,
+ players = players
+ }
+
+move_animator_to_next_step : Type -> Type
+move_animator_to_next_step model =
+ case model.animator of
+ Nothing -> model
+ (Just animator) ->
+ case (Struct.TurnResultAnimator.maybe_trigger_next_step animator) of
+ Nothing ->
+ (Set.foldl
+ (regenerate_attack_of_opportunity_markers)
+ {model | animator = Nothing }
+ (Struct.TurnResultAnimator.get_animated_character_indices
+ animator
+ )
+ )
+
+ just_next_animator -> {model | animator = just_next_animator }
+
+apply_animator_step : Type -> Type
+apply_animator_step model =
+ case model.animator of
+ Nothing -> model
+ (Just animator) ->
+ case (Struct.TurnResultAnimator.get_current_animation animator) of
+ (Struct.TurnResultAnimator.TurnResult turn_result) ->
+ let
+ (characters, players) =
+ (Struct.TurnResult.apply_step
+ (tile_omnimods_fun model)
+ turn_result
+ model.characters
+ model.players
+ )
+ in
+ {model |
+ characters = characters,
+ players = players
+ }
+ _ -> model
+
--------------------------------------------------------------------------------
-- EXPORTED --------------------------------------------------------------------
--------------------------------------------------------------------------------
diff --git a/src/battle/src/View/Character.elm b/src/battle/src/View/Character.elm
index c5082c9..dc256c6 100644
--- a/src/battle/src/View/Character.elm
+++ b/src/battle/src/View/Character.elm
@@ -48,11 +48,14 @@ get_alliance_class : (
(Html.Attribute Struct.Event.Type)
)
get_alliance_class model char =
- if ((Struct.Character.get_player_index char) == model.player_ix)
- then
- (Html.Attributes.class "character-ally")
- else
- (Html.Attributes.class "character-enemy")
+ if
+ (
+ (Struct.Character.get_player_index char) == model.player_i
+ ==
+ (Struct.Battle.get_own_player_index model.battle)
+ )
+ then (Html.Attributes.class "character-ally")
+ else (Html.Attributes.class "character-enemy")
get_position_style : (
Struct.Character.Type ->
diff --git a/src/battle/src/View/Map/Character.elm b/src/battle/src/View/Map/Character.elm
index 4b69ebc..b20c29a 100644
--- a/src/battle/src/View/Map/Character.elm
+++ b/src/battle/src/View/Map/Character.elm
@@ -16,6 +16,7 @@ import BattleCharacters.Struct.Equipment
-- Local Module ----------------------------------------------------------------
import Constants.UI
+import Struct.Battle
import Struct.Character
import Struct.CharacterTurn
import Struct.Event
@@ -80,11 +81,14 @@ get_alliance_class : (
(Html.Attribute Struct.Event.Type)
)
get_alliance_class model char =
- if ((Struct.Character.get_player_index char) == model.player_ix)
- then
- (Html.Attributes.class "character-ally")
- else
- (Html.Attributes.class "character-enemy")
+ if
+ (
+ (Struct.Character.get_player_index char)
+ ==
+ (Struct.Battle.get_own_player_index model.battle)
+ )
+ then (Html.Attributes.class "character-ally")
+ else (Html.Attributes.class "character-enemy")
get_position_style : (
Struct.Character.Type ->
diff --git a/src/battle/src/View/SubMenu.elm b/src/battle/src/View/SubMenu.elm
index 60a1c7d..dea0a86 100644
--- a/src/battle/src/View/SubMenu.elm
+++ b/src/battle/src/View/SubMenu.elm
@@ -11,6 +11,7 @@ import Html.Lazy
import Util.Html
-- Local Module ----------------------------------------------------------------
+import Struct.Battle
import Struct.CharacterTurn
import Struct.Event
import Struct.Model
@@ -37,10 +38,9 @@ get_inner_html model tab =
(View.SubMenu.Status.get_html model)
Struct.UI.CharactersTab ->
- (Html.Lazy.lazy2
+ (Html.Lazy.lazy
(View.SubMenu.Characters.get_html)
- model.characters
- model.player_ix
+ model.battle
)
Struct.UI.SettingsTab ->
@@ -71,9 +71,12 @@ get_html model =
[
(Html.text "Targeting:"),
(Html.Lazy.lazy3
- (View.Controlled.CharacterCard.get_summary_html)
+ (View.Controlled.CharacterCard.get_summary_html
+ (Struct.Battle.get_own_player_index
+ model.battle
+ )
+ )
model.char_turn
- model.player_ix
char
)
]
diff --git a/src/roster-editor/src/Struct/Inventory.elm b/src/roster-editor/src/Struct/Inventory.elm
index e04e828..85ae5b5 100644
--- a/src/roster-editor/src/Struct/Inventory.elm
+++ b/src/roster-editor/src/Struct/Inventory.elm
@@ -25,6 +25,7 @@ import BattleCharacters.Struct.Equipment
import BattleCharacters.Struct.Glyph
import BattleCharacters.Struct.GlyphBoard
import BattleCharacters.Struct.Portrait
+import BattleCharacters.Struct.Skill
import BattleCharacters.Struct.Weapon
--------------------------------------------------------------------------------
@@ -36,7 +37,8 @@ type alias Type =
glyphs : (Set.Set BattleCharacters.Struct.Glyph.Ref),
glyph_boards : (Set.Set BattleCharacters.Struct.GlyphBoard.Ref),
weapons : (Set.Set BattleCharacters.Struct.Weapon.Ref),
- armors : (Set.Set BattleCharacters.Struct.Armor.Ref)
+ armors : (Set.Set BattleCharacters.Struct.Armor.Ref),
+ skills : (Set.Set BattleCharacters.Struct.Skill.Ref)
}
--------------------------------------------------------------------------------
@@ -46,63 +48,73 @@ type alias Type =
--------------------------------------------------------------------------------
-- EXPORTED --------------------------------------------------------------------
--------------------------------------------------------------------------------
-has_portrait : Type -> BattleCharacters.Struct.Portrait.Ref -> Bool
-has_portrait inv id = (Set.member id inv.portraits)
+has_portrait : BattleCharacters.Struct.Portrait.Ref -> Type -> Bool
+has_portrait id inv = (Set.member id inv.portraits)
-has_glyph : Type -> BattleCharacters.Struct.Glyph.Ref -> Bool
-has_glyph inv id = (Set.member id inv.glyphs)
+has_glyph : BattleCharacters.Struct.Glyph.Ref -> Type -> Bool
+has_glyph id inv = (Set.member id inv.glyphs)
-has_glyph_board : Type -> BattleCharacters.Struct.GlyphBoard.Ref -> Bool
-has_glyph_board inv id = (Set.member id inv.glyph_boards)
+has_glyph_board : BattleCharacters.Struct.GlyphBoard.Ref -> Type -> Bool
+has_glyph_board id inv = (Set.member id inv.glyph_boards)
-has_weapon : Type -> BattleCharacters.Struct.Weapon.Ref -> Bool
-has_weapon inv id = (Set.member id inv.weapons)
+has_weapon : BattleCharacters.Struct.Weapon.Ref -> Type -> Bool
+has_weapon id inv = (Set.member id inv.weapons)
-has_armor : Type -> BattleCharacters.Struct.Armor.Ref -> Bool
-has_armor inv id = (Set.member id inv.armors)
+has_armor : BattleCharacters.Struct.Armor.Ref -> Type -> Bool
+has_armor id inv = (Set.member id inv.armors)
-allows : Type -> BattleCharacters.Struct.Equipment.Type -> Bool
-allows inv equipment =
+has_skill : BattleCharacters.Struct.Skill.Ref -> Type -> Bool
+has_skill id inv = (Set.member id inv.skills)
+
+allows : BattleCharacters.Struct.Equipment.Type -> Type -> Bool
+allows equipment inv =
(
(has_weapon
- inv
(BattleCharacters.Struct.Weapon.get_id
(BattleCharacters.Struct.Equipment.get_primary_weapon equipment)
)
+ inv
)
&&
(has_weapon
- inv
(BattleCharacters.Struct.Weapon.get_id
(BattleCharacters.Struct.Equipment.get_secondary_weapon equipment)
)
+ inv
)
&&
(has_armor
- inv
(BattleCharacters.Struct.Armor.get_id
(BattleCharacters.Struct.Equipment.get_armor equipment)
)
+ inv
)
&&
(has_portrait
- inv
(BattleCharacters.Struct.Portrait.get_id
(BattleCharacters.Struct.Equipment.get_portrait equipment)
)
+ inv
)
&&
(has_glyph_board
- inv
(BattleCharacters.Struct.GlyphBoard.get_id
(BattleCharacters.Struct.Equipment.get_glyph_board equipment)
)
+ inv
)
&&
(List.all
- ((BattleCharacters.Struct.Glyph.get_id) >> (has_glyph inv))
+ (e -> (has_glyph e inv))
(Array.toList (BattleCharacters.Struct.Equipment.get_glyphs equipment))
)
+ &&
+ (has_skill
+ (BattleCharacters.Struct.Skill.get_id
+ (BattleCharacters.Struct.Equipment.get_skill equipment)
+ )
+ inv
+ )
)
empty : Type
@@ -112,7 +124,8 @@ empty =
glyphs = (Set.empty),
glyph_boards = (Set.empty),
weapons = (Set.empty),
- armors = (Set.empty)
+ armors = (Set.empty),
+ skills = (Set.empty)
}
decoder : (Json.Decode.Decoder Type)
@@ -125,4 +138,5 @@ decoder =
|> (Json.Decode.Pipeline.hardcoded (Set.empty))
|> (Json.Decode.Pipeline.hardcoded (Set.empty))
|> (Json.Decode.Pipeline.hardcoded (Set.empty))
+ |> (Json.Decode.Pipeline.hardcoded (Set.empty))
)
diff --git a/src/roster-editor/src/Struct/Model.elm b/src/roster-editor/src/Struct/Model.elm
index 3e573f9..d0d70b4 100644
--- a/src/roster-editor/src/Struct/Model.elm
+++ b/src/roster-editor/src/Struct/Model.elm
@@ -44,18 +44,19 @@ import Struct.UI
type alias Type =
{
flags : Struct.Flags.Type,
+ error : (Maybe Struct.Error.Type),
+ ui : Struct.UI.Type
help_request : Struct.HelpRequest.Type,
+ edited_char : (Maybe Struct.Character.Type),
+
+ roster_id : String,
+ battle_order : (Array.Array Int),
+
characters : (Array.Array Struct.Character.Type),
unresolved_characters : (List Struct.Character.Unresolved),
- inventory : BattleCharacters.Struct.Inventory.Type,
- error : (Maybe Struct.Error.Type),
- battle_order : (Array.Array Int),
- player_id : String,
- roster_id : String,
- edited_char : (Maybe Struct.Character.Type),
inventory : Struct.Inventory.Type,
- session_token : String,
- ui : Struct.UI.Type
+
+ characters_data_set : BattleCharacters.Struct.DataSet.Type,
}
--------------------------------------------------------------------------------
@@ -83,7 +84,7 @@ has_loaded_data : Type -> Bool
has_loaded_data model =
(
((Array.length model.characters) > 0)
- || (BattleCharacters.Struct.Inventory.is_ready model.inventory)
+ || (BattleCharacters.Struct.DataSet.is_ready model.characters_data_set)
)
--------------------------------------------------------------------------------
diff --git a/src/shared/battle-characters/BattleCharacters/Struct/Inventory.elm b/src/shared/battle-characters/BattleCharacters/Struct/DataSet.elm
index 9e1347e..4e3050a 100644
--- a/src/shared/battle-characters/BattleCharacters/Struct/Inventory.elm
+++ b/src/shared/battle-characters/BattleCharacters/Struct/DataSet.elm
@@ -1,4 +1,4 @@
-module BattleCharacters.Struct.Inventory exposing
+module BattleCharacters.Struct.DataSet exposing
(
Type,
new,
@@ -75,47 +75,23 @@ type alias Type =
new : Type
new =
{
- weapons :
- (Dict.Dict
- BattleCharacters.Struct.Weapon.Ref
- BattleCharacters.Struct.Weapon.Type
- ),
- armors :
- (Dict.Dict
- BattleCharacters.Struct.Armor.Ref
- BattleCharacters.Struct.Armor.Type
- ),
- glyphs :
- (Dict.Dict
- BattleCharacters.Struct.Glyph.Ref
- BattleCharacters.Struct.Glyph.Type
- ),
- glyph_boards :
- (Dict.Dict
- BattleCharacters.Struct.GlyphBoard.Ref
- BattleCharacters.Struct.GlyphBoard.Type
- ),
- portraits :
- (Dict.Dict
- BattleCharacters.Struct.Portrait.Ref
- BattleCharacters.Struct.Portrait.Type
- ),
- skills :
- (Dict.Dict
- BattleCharacters.Struct.Portrait.Ref
- BattleCharacters.Struct.Portrait.Type
- ),
+ weapons = (Dict.new),
+ armors = (Dict.new),
+ glyphs = (Dict.new),
+ glyph_boards = (Dict.new),
+ portraits = (Dict.new),
+ skills = (Dict.new)
}
is_ready : Type -> Bool
-is_ready inventory =
+is_ready data_set =
(
- (inventory.portraits /= (Dict.empty))
- && (inventory.weapons /= (Dict.empty))
- && (inventory.armors /= (Dict.empty))
- && (inventory.glyph_boards /= (Dict.empty))
- && (inventory.glyphs /= (Dict.empty))
- && (inventory.skills /= (Dict.empty))
+ (data_set.portraits /= (Dict.empty))
+ && (data_set.weapons /= (Dict.empty))
+ && (data_set.armors /= (Dict.empty))
+ && (data_set.glyph_boards /= (Dict.empty))
+ && (data_set.glyphs /= (Dict.empty))
+ && (data_set.skills /= (Dict.empty))
)
---- Accessors -----------------------------------------------------------------
@@ -128,19 +104,19 @@ get_weapon : (
Type ->
BattleCharacters.Struct.Weapon.Type
)
-get_weapon wp_id inventory =
- case (Dict.get wp_id inventory.weapons) of
+get_weapon wp_id data_set =
+ case (Dict.get wp_id data_set.weapons) of
(Just wp) -> wp
Nothing -> BattleCharacters.Struct.Weapon.none
add_weapon : BattleCharacters.Struct.Weapon.Type -> Type -> Type
-add_weapon wp inventory =
- {inventory |
+add_weapon wp data_set =
+ {data_set |
weapons =
(Dict.insert
(BattleCharacters.Struct.Weapon.get_id wp)
wp
- inventory.weapons
+ data_set.weapons
)
}
@@ -152,19 +128,19 @@ get_armor : (
Type ->
BattleCharacters.Struct.Armor.Type
)
-get_armor ar_id inventory =
- case (Dict.get ar_id inventory.armors) of
+get_armor ar_id data_set =
+ case (Dict.get ar_id data_set.armors) of
(Just ar) -> ar
Nothing -> BattleCharacters.Struct.Armor.none
add_armor : BattleCharacters.Struct.Armor.Type -> Type -> Type
-add_armor ar inventory =
- {inventory |
+add_armor ar data_set =
+ {data_set |
armors =
(Dict.insert
(BattleCharacters.Struct.Armor.get_id ar)
ar
- inventory.armors
+ data_set.armors
)
}
@@ -176,19 +152,19 @@ get_portrait : (
Type ->
BattleCharacters.Struct.Portrait.Type
)
-get_portrait pt_id inventory =
- case (Dict.get pt_id inventory.portraits) of
+get_portrait pt_id data_set =
+ case (Dict.get pt_id data_set.portraits) of
(Just pt) -> pt
Nothing -> BattleCharacters.Struct.Portrait.none
add_portrait : BattleCharacters.Struct.Portrait.Type -> Type -> Type
-add_portrait pt inventory =
- {inventory |
+add_portrait pt data_set =
+ {data_set |
portraits =
(Dict.insert
(BattleCharacters.Struct.Portrait.get_id pt)
pt
- inventory.portraits
+ data_set.portraits
)
}
@@ -200,19 +176,19 @@ get_glyph : (
Type ->
BattleCharacters.Struct.Glyph.Type
)
-get_glyph gl_id inventory =
- case (Dict.get gl_id inventory.glyphs) of
+get_glyph gl_id data_set =
+ case (Dict.get gl_id data_set.glyphs) of
(Just gl) -> gl
Nothing -> BattleCharacters.Struct.Glyph.none
add_glyph : BattleCharacters.Struct.Glyph.Type -> Type -> Type
-add_glyph gl inventory =
- {inventory |
+add_glyph gl data_set =
+ {data_set |
glyphs =
(Dict.insert
(BattleCharacters.Struct.Glyph.get_id gl)
gl
- inventory.glyphs
+ data_set.glyphs
)
}
@@ -224,19 +200,19 @@ get_glyph_board : (
Type ->
BattleCharacters.Struct.GlyphBoard.Type
)
-get_glyph_board gb_id inventory =
- case (Dict.get gb_id inventory.glyph_boards) of
+get_glyph_board gb_id data_set =
+ case (Dict.get gb_id data_set.glyph_boards) of
(Just gb) -> gb
Nothing -> BattleCharacters.Struct.GlyphBoard.none
add_glyph_board : BattleCharacters.Struct.GlyphBoard.Type -> Type -> Type
-add_glyph_board glb inventory =
- {inventory |
+add_glyph_board glb data_set =
+ {data_set |
glyph_boards =
(Dict.insert
(BattleCharacters.Struct.GlyphBoard.get_id glb)
glb
- inventory.glyph_boards
+ data_set.glyph_boards
)
}
@@ -248,19 +224,19 @@ get_skill : (
Type ->
BattleCharacters.Struct.Skill.Type
)
-get_skill sk_id inventory =
- case (Dict.get sk_id inventory.skills) of
+get_skill sk_id data_set =
+ case (Dict.get sk_id data_set.skills) of
(Just sk) -> sk
Nothing -> BattleCharacters.Struct.Skill.none
add_skill : BattleCharacters.Struct.Skill.Type -> Type -> Type
-add_skill sk inventory =
- {inventory |
+add_skill sk data_set =
+ {data_set |
skills =
(Dict.insert
(BattleCharacters.Struct.Skill.get_id sk)
sk
- inventory.skills
+ data_set.skills
)
}
diff --git a/src/shared/battle-map/BattleMap/Struct/DataSet.elm b/src/shared/battle-map/BattleMap/Struct/DataSet.elm
new file mode 100644
index 0000000..f292443
--- /dev/null
+++ b/src/shared/battle-map/BattleMap/Struct/DataSet.elm
@@ -0,0 +1,67 @@
+module BattleMap.Struct.DataSet exposing
+ (
+ Type,
+ new,
+ is_ready,
+ get_tile,
+ add_tile
+ )
+
+-- Elm -------------------------------------------------------------------------
+import Dict
+
+-- Battle ----------------------------------------------------------------------
+import BattleMap.Struct.Tile
+
+--------------------------------------------------------------------------------
+-- TYPES -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+type alias Type =
+ {
+ tiles : (Dict.Dict BattleMap.Struct.Tile.Ref BattleMap.Struct.Tile.Type)
+ }
+
+--------------------------------------------------------------------------------
+-- LOCAL -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+-- EXPORTED --------------------------------------------------------------------
+--------------------------------------------------------------------------------
+new : Type
+new =
+ {
+ tiles = (Dict.new)
+ }
+
+is_ready : Type -> Bool
+is_ready data_set =
+ (
+ (data_set.tiles /= (Dict.empty))
+ )
+
+---- Accessors -----------------------------------------------------------------
+
+--------------
+---- Tile ----
+--------------
+get_tile : (
+ BattleMap.Struct.Tile.Ref ->
+ Type ->
+ BattleMap.Struct.Tile.Type
+ )
+get_tile tl_id data_set =
+ case (Dict.get tl_id data_set.tiles) of
+ (Just tl) -> tl
+ Nothing -> BattleMap.Struct.Tile.none
+
+add_tile : BattleMap.Struct.Tile.Type -> Type -> Type
+add_tile tl data_set =
+ {data_set |
+ tiles =
+ (Dict.insert
+ (BattleMap.Struct.Tile.get_id tl)
+ tl
+ data_set.tiles
+ )
+ }
diff --git a/src/shared/elm/Struct/Flags.elm b/src/shared/elm/Struct/Flags.elm
index 9fb9eac..a9f1630 100644
--- a/src/shared/elm/Struct/Flags.elm
+++ b/src/shared/elm/Struct/Flags.elm
@@ -3,7 +3,9 @@ module Struct.Flags exposing
Type,
maybe_get_param,
force_get_param,
- get_params_as_url
+ get_params_as_url,
+ get_session_token,
+ get_user_id
)
-- Elm -------------------------------------------------------------------------
@@ -63,3 +65,9 @@ get_params_as_url flags =
""
flags.url_params
)
+
+get_session_token : Type -> String
+get_session_token flags = flags.token
+
+get_user_id : Type -> String
+get_user_id flags = flags.user_id