summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/battlemap/src/Comm/AddTile.elm25
-rw-r--r--src/battlemap/src/Comm/Send.elm2
-rw-r--r--src/battlemap/src/Struct/Model.elm30
-rw-r--r--src/battlemap/src/Struct/ServerReply.elm1
-rw-r--r--src/battlemap/src/Struct/Tile.elm3
-rw-r--r--src/battlemap/src/Update/HandleServerReply.elm13
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)