summaryrefslogtreecommitdiff |
diff options
-rw-r--r-- | src/battlemap/src/Comm/AddTile.elm | 25 | ||||
-rw-r--r-- | src/battlemap/src/Comm/Send.elm | 2 | ||||
-rw-r--r-- | src/battlemap/src/Struct/Model.elm | 30 | ||||
-rw-r--r-- | src/battlemap/src/Struct/ServerReply.elm | 1 | ||||
-rw-r--r-- | src/battlemap/src/Struct/Tile.elm | 3 | ||||
-rw-r--r-- | src/battlemap/src/Update/HandleServerReply.elm | 13 |
6 files changed, 73 insertions, 1 deletions
diff --git a/src/battlemap/src/Comm/AddTile.elm b/src/battlemap/src/Comm/AddTile.elm new file mode 100644 index 0000000..ff184fd --- /dev/null +++ b/src/battlemap/src/Comm/AddTile.elm @@ -0,0 +1,25 @@ +module Comm.AddTile exposing (decode) + +-- Elm ------------------------------------------------------------------------- +import Json.Decode + +-- Battlemap ------------------------------------------------------------------- +import Struct.Tile +import Struct.Model +import Struct.ServerReply + +-------------------------------------------------------------------------------- +-- TYPES ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- +internal_decoder : Struct.Tile.Type -> Struct.ServerReply.Type +internal_decoder wp = (Struct.ServerReply.AddTile wp) + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +decode : (Struct.Model.Type -> (Json.Decode.Decoder Struct.ServerReply.Type)) +decode model = (Json.Decode.map (internal_decoder) (Struct.Tile.decoder)) diff --git a/src/battlemap/src/Comm/Send.elm b/src/battlemap/src/Comm/Send.elm index 1b83073..45be5d0 100644 --- a/src/battlemap/src/Comm/Send.elm +++ b/src/battlemap/src/Comm/Send.elm @@ -9,6 +9,7 @@ import Json.Encode -- Battlemap ------------------------------------------------------------------- import Comm.AddArmor import Comm.AddChar +import Comm.AddTile import Comm.AddWeapon import Comm.SetMap import Comm.SetTimeline @@ -32,6 +33,7 @@ internal_decoder : ( ) internal_decoder model reply_type = case reply_type of + "add_tile" -> (Comm.AddTile.decode model) "add_armor" -> (Comm.AddArmor.decode model) "add_char" -> (Comm.AddChar.decode model) "add_weapon" -> (Comm.AddWeapon.decode model) diff --git a/src/battlemap/src/Struct/Model.elm b/src/battlemap/src/Struct/Model.elm index 6cf5368..63474d2 100644 --- a/src/battlemap/src/Struct/Model.elm +++ b/src/battlemap/src/Struct/Model.elm @@ -6,8 +6,10 @@ module Struct.Model exposing update_character, add_weapon, add_armor, + add_tile, invalidate, reset, + full_debug_reset, clear_error ) @@ -34,6 +36,7 @@ type alias Type = characters: (Array.Array Struct.Character.Type), weapons: (Dict.Dict Struct.Weapon.Ref Struct.Weapon.Type), armors: (Dict.Dict Struct.Armor.Ref Struct.Armor.Type), + tiles: (Dict.Dict Struct.Tile.Ref Struct.Tile.Type), error: (Maybe Struct.Error.Type), player_id: String, ui: Struct.UI.Type, @@ -55,6 +58,7 @@ new = characters = (Array.empty), weapons = (Dict.empty), armors = (Dict.empty), + tiles = (Dict.empty), error = Nothing, player_id = "0", ui = (Struct.UI.default), @@ -94,6 +98,17 @@ add_armor ar model = ) } +add_tile : Struct.Tile.Type -> Type -> Type +add_tile tl model = + {model | + tiles = + (Dict.insert + (Struct.Tile.get_id tl) + tl + model.tiles + ) + } + reset : Type -> Type reset model = {model | @@ -105,6 +120,21 @@ reset model = char_turn = (Struct.CharacterTurn.new) } +full_debug_reset : Type -> Type +full_debug_reset model = + {model | + battlemap = (Struct.Battlemap.empty), + characters = (Array.empty), + weapons = (Dict.empty), + armors = (Dict.empty), + tiles = (Dict.empty), + error = Nothing, + -- player_id remains + ui = (Struct.UI.default), + char_turn = (Struct.CharacterTurn.new), + timeline = (Array.empty) + } + update_character : Int -> Struct.Character.Type -> Type -> Type update_character ix new_val model = {model | diff --git a/src/battlemap/src/Struct/ServerReply.elm b/src/battlemap/src/Struct/ServerReply.elm index ed9014e..64eade1 100644 --- a/src/battlemap/src/Struct/ServerReply.elm +++ b/src/battlemap/src/Struct/ServerReply.elm @@ -18,6 +18,7 @@ type Type = | AddArmor Struct.Armor.Type | AddWeapon Struct.Weapon.Type | AddCharacter (Struct.Character.Type, Int, Int, Int) + | AddTile Struct.Tile.Type | SetMap Struct.Battlemap.Type | TurnResults (List Struct.TurnResult.Type) | SetTimeline (List Struct.TurnResult.Type) diff --git a/src/battlemap/src/Struct/Tile.elm b/src/battlemap/src/Struct/Tile.elm index 944c561..cf23339 100644 --- a/src/battlemap/src/Struct/Tile.elm +++ b/src/battlemap/src/Struct/Tile.elm @@ -6,7 +6,8 @@ module Struct.Tile exposing get_location, get_icon_id, get_cost, - get_variant_id + get_variant_id, + decoder ) -- Battlemap ------------------------------------------------------------------- diff --git a/src/battlemap/src/Update/HandleServerReply.elm b/src/battlemap/src/Update/HandleServerReply.elm index ec388ee..8f5a066 100644 --- a/src/battlemap/src/Update/HandleServerReply.elm +++ b/src/battlemap/src/Update/HandleServerReply.elm @@ -50,6 +50,16 @@ add_armor ar current_state = (_, (Just _)) -> current_state (model, _) -> ((Struct.Model.add_armor ar model), Nothing) +add_tile : ( + Struct.Tile.Type -> + (Struct.Model.Type, (Maybe Struct.Error.Type)) -> + (Struct.Model.Type, (Maybe Struct.Error.Type)) + ) +add_tile tl current_state = + case current_state of + (_, (Just _)) -> current_state + (model, _) -> ((Struct.Model.add_tile tl model), Nothing) + add_weapon : ( Struct.Weapon.Type -> (Struct.Model.Type, (Maybe Struct.Error.Type)) -> @@ -160,6 +170,9 @@ apply_command command current_state = (Struct.ServerReply.AddArmor ar) -> (add_armor ar current_state) + (Struct.ServerReply.AddTile tl) -> + (add_tile tl current_state) + (Struct.ServerReply.AddCharacter char) -> (add_character char current_state) |