summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/battlemap')
-rw-r--r--src/battlemap/src/Comm/AddArmor.elm8
-rw-r--r--src/battlemap/src/Comm/AddChar.elm9
-rw-r--r--src/battlemap/src/Comm/AddTile.elm5
-rw-r--r--src/battlemap/src/Comm/AddWeapon.elm6
-rw-r--r--src/battlemap/src/Comm/Send.elm26
-rw-r--r--src/battlemap/src/Comm/SetMap.elm7
-rw-r--r--src/battlemap/src/Struct/Battlemap.elm7
-rw-r--r--src/battlemap/src/Struct/Tile.elm69
-rw-r--r--src/battlemap/src/Struct/UI.elm1
-rw-r--r--src/battlemap/src/Update/HandleServerReply.elm3
-rw-r--r--src/battlemap/src/Update/SendLoadBattlemapRequest.elm2
11 files changed, 79 insertions, 64 deletions
diff --git a/src/battlemap/src/Comm/AddArmor.elm b/src/battlemap/src/Comm/AddArmor.elm
index 7633521..ad9df3e 100644
--- a/src/battlemap/src/Comm/AddArmor.elm
+++ b/src/battlemap/src/Comm/AddArmor.elm
@@ -5,7 +5,6 @@ import Json.Decode
-- Battlemap -------------------------------------------------------------------
import Struct.Armor
-import Struct.Model
import Struct.ServerReply
--------------------------------------------------------------------------------
@@ -16,11 +15,10 @@ import Struct.ServerReply
-- LOCAL -----------------------------------------------------------------------
--------------------------------------------------------------------------------
internal_decoder : Struct.Armor.Type -> Struct.ServerReply.Type
-internal_decoder wp = (Struct.ServerReply.AddArmor wp)
+internal_decoder ar = (Struct.ServerReply.AddArmor ar)
--------------------------------------------------------------------------------
-- EXPORTED --------------------------------------------------------------------
--------------------------------------------------------------------------------
-decode : (Struct.Model.Type -> (Json.Decode.Decoder Struct.ServerReply.Type))
-decode model =
- (Json.Decode.map (internal_decoder) (Struct.Armor.decoder))
+decode : (Json.Decode.Decoder Struct.ServerReply.Type)
+decode = (Json.Decode.map (internal_decoder) (Struct.Armor.decoder))
diff --git a/src/battlemap/src/Comm/AddChar.elm b/src/battlemap/src/Comm/AddChar.elm
index 1b5cacd..ebe8656 100644
--- a/src/battlemap/src/Comm/AddChar.elm
+++ b/src/battlemap/src/Comm/AddChar.elm
@@ -5,7 +5,6 @@ import Json.Decode
-- Battlemap -------------------------------------------------------------------
import Struct.Character
-import Struct.Model
import Struct.ServerReply
--------------------------------------------------------------------------------
@@ -25,9 +24,5 @@ internal_decoder char_and_refs = (Struct.ServerReply.AddCharacter char_and_refs)
--------------------------------------------------------------------------------
-- EXPORTED --------------------------------------------------------------------
--------------------------------------------------------------------------------
-decode : (Struct.Model.Type -> (Json.Decode.Decoder Struct.ServerReply.Type))
-decode model =
- (Json.Decode.map
- (internal_decoder)
- (Struct.Character.decoder)
- )
+decode : (Json.Decode.Decoder Struct.ServerReply.Type)
+decode = (Json.Decode.map (internal_decoder) (Struct.Character.decoder))
diff --git a/src/battlemap/src/Comm/AddTile.elm b/src/battlemap/src/Comm/AddTile.elm
index ff184fd..d0a3ce8 100644
--- a/src/battlemap/src/Comm/AddTile.elm
+++ b/src/battlemap/src/Comm/AddTile.elm
@@ -5,7 +5,6 @@ import Json.Decode
-- Battlemap -------------------------------------------------------------------
import Struct.Tile
-import Struct.Model
import Struct.ServerReply
--------------------------------------------------------------------------------
@@ -21,5 +20,5 @@ 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))
+decode : (Json.Decode.Decoder Struct.ServerReply.Type)
+decode = (Json.Decode.map (internal_decoder) (Struct.Tile.decoder))
diff --git a/src/battlemap/src/Comm/AddWeapon.elm b/src/battlemap/src/Comm/AddWeapon.elm
index 3a5c1f1..b41c054 100644
--- a/src/battlemap/src/Comm/AddWeapon.elm
+++ b/src/battlemap/src/Comm/AddWeapon.elm
@@ -5,7 +5,6 @@ import Json.Decode
-- Battlemap -------------------------------------------------------------------
import Struct.Weapon
-import Struct.Model
import Struct.ServerReply
--------------------------------------------------------------------------------
@@ -21,6 +20,5 @@ internal_decoder wp = (Struct.ServerReply.AddWeapon wp)
--------------------------------------------------------------------------------
-- EXPORTED --------------------------------------------------------------------
--------------------------------------------------------------------------------
-decode : (Struct.Model.Type -> (Json.Decode.Decoder Struct.ServerReply.Type))
-decode model =
- (Json.Decode.map (internal_decoder) (Struct.Weapon.decoder))
+decode : (Json.Decode.Decoder Struct.ServerReply.Type)
+decode = (Json.Decode.map (internal_decoder) (Struct.Weapon.decoder))
diff --git a/src/battlemap/src/Comm/Send.elm b/src/battlemap/src/Comm/Send.elm
index 45be5d0..a6129cd 100644
--- a/src/battlemap/src/Comm/Send.elm
+++ b/src/battlemap/src/Comm/Send.elm
@@ -26,18 +26,14 @@ import Struct.Model
--------------------------------------------------------------------------------
-- LOCAL -----------------------------------------------------------------------
--------------------------------------------------------------------------------
-internal_decoder : (
- Struct.Model.Type ->
- String ->
- (Json.Decode.Decoder Struct.ServerReply.Type)
- )
-internal_decoder model reply_type =
+internal_decoder : String -> (Json.Decode.Decoder Struct.ServerReply.Type)
+internal_decoder 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)
- "set_map" -> (Comm.SetMap.decode model)
+ "add_tile" -> (Comm.AddTile.decode)
+ "add_armor" -> (Comm.AddArmor.decode)
+ "add_char" -> (Comm.AddChar.decode)
+ "add_weapon" -> (Comm.AddWeapon.decode)
+ "set_map" -> (Comm.SetMap.decode)
"turn_results" -> (Comm.TurnResults.decode)
"set_timeline" -> (Comm.SetTimeline.decode)
other ->
@@ -49,10 +45,10 @@ internal_decoder model reply_type =
)
)
-decode : Struct.Model.Type -> (Json.Decode.Decoder Struct.ServerReply.Type)
-decode model =
+decode : (Json.Decode.Decoder Struct.ServerReply.Type)
+decode =
(Json.Decode.field "msg" Json.Decode.string)
- |> (Json.Decode.andThen (internal_decoder model))
+ |> (Json.Decode.andThen (internal_decoder))
--------------------------------------------------------------------------------
-- EXPORTED --------------------------------------------------------------------
@@ -72,7 +68,7 @@ try_sending model recipient try_encoding_fun =
(Http.post
recipient
(Http.jsonBody serial)
- (Json.Decode.list (decode model))
+ (Json.Decode.list (decode))
)
)
)
diff --git a/src/battlemap/src/Comm/SetMap.elm b/src/battlemap/src/Comm/SetMap.elm
index 84e4b5f..dc499cf 100644
--- a/src/battlemap/src/Comm/SetMap.elm
+++ b/src/battlemap/src/Comm/SetMap.elm
@@ -5,7 +5,6 @@ import Json.Decode
-- Battlemap -------------------------------------------------------------------
import Struct.Battlemap
-import Struct.Model
import Struct.ServerReply
import Struct.Tile
@@ -27,7 +26,7 @@ deserialize_tile_instance map_width index id =
(Struct.Tile.new_instance
(index % map_width)
(index // map_width)
- (toString id)
+ id
-1
-1
)
@@ -48,8 +47,8 @@ internal_decoder map_data =
--------------------------------------------------------------------------------
-- EXPORTED --------------------------------------------------------------------
--------------------------------------------------------------------------------
-decode : (Struct.Model.Type -> (Json.Decode.Decoder Struct.ServerReply.Type))
-decode model =
+decode : (Json.Decode.Decoder Struct.ServerReply.Type)
+decode =
(Json.Decode.map
internal_decoder
(Json.Decode.map3 MapData
diff --git a/src/battlemap/src/Struct/Battlemap.elm b/src/battlemap/src/Struct/Battlemap.elm
index 5387039..80de9c3 100644
--- a/src/battlemap/src/Struct/Battlemap.elm
+++ b/src/battlemap/src/Struct/Battlemap.elm
@@ -14,8 +14,6 @@ module Struct.Battlemap exposing
-- Elm -------------------------------------------------------------------------
import Array
-import Dict
-
-- Battlemap -------------------------------------------------------------------
import Struct.Character
import Struct.Tile
@@ -117,9 +115,8 @@ get_movement_cost_function bmap start_loc char_list loc =
else
Constants.Movement.cost_when_out_of_bounds
-solve_tiles : (Dict.Dict Struct.Tile.Ref Struct.Tile.Type) -> Type -> Type
+solve_tiles : (List Struct.Tile.Type) -> Type -> Type
solve_tiles tiles bmap =
{bmap |
- content =
- (Array.map (Struct.Tile.solve_tile_instance tiles) bmap.content)
+ content = (Array.map (Struct.Tile.solve_tile_instance tiles) bmap.content)
}
diff --git a/src/battlemap/src/Struct/Tile.elm b/src/battlemap/src/Struct/Tile.elm
index 3bd2336..405db95 100644
--- a/src/battlemap/src/Struct/Tile.elm
+++ b/src/battlemap/src/Struct/Tile.elm
@@ -20,7 +20,8 @@ module Struct.Tile exposing
)
-- Elm -------------------------------------------------------------------------
-import Dict
+import Debug
+import List
import Json.Decode
import Json.Decode.Pipeline
@@ -57,7 +58,7 @@ type alias Type =
type alias Instance =
{
location : Struct.Location.Type,
- icon_id : String,
+ icon_id : Int,
crossing_cost : Int,
type_id : Int
}
@@ -79,6 +80,25 @@ finish_decoding add_tile =
range_maximum = add_tile.rma
}
+seek_tile_instance_type : Instance -> Type -> (Maybe Type) -> (Maybe Type)
+seek_tile_instance_type instance candidate current_sol =
+ if (current_sol == Nothing)
+ then
+ let
+ icon_id = instance.icon_id
+ in
+ if
+ (
+ (icon_id >= candidate.range_minimum)
+ && (icon_id <= candidate.range_maximum)
+ )
+ then
+ (Just candidate)
+ else
+ current_sol
+ else
+ current_sol
+
--------------------------------------------------------------------------------
-- EXPORTED --------------------------------------------------------------------
--------------------------------------------------------------------------------
@@ -92,7 +112,7 @@ new id name crossing_cost range_minimum range_maximum =
range_maximum = range_maximum
}
-new_instance : Int -> Int -> String -> Int -> Int -> Instance
+new_instance : Int -> Int -> Int -> Int -> Int -> Instance
new_instance x y icon_id crossing_cost type_id =
{
location = {x = x, y = y},
@@ -105,7 +125,7 @@ error_tile_instance : Int -> Int -> Instance
error_tile_instance x y =
{
location = {x = x, y = y},
- icon_id = "error",
+ icon_id = -1,
type_id = -1,
crossing_cost = Constants.Movement.cost_when_out_of_bounds
}
@@ -133,7 +153,7 @@ get_location : Instance -> Struct.Location.Type
get_location tile_inst = tile_inst.location
get_icon_id : Instance -> String
-get_icon_id tile_inst = tile_inst.icon_id
+get_icon_id tile_inst = (toString tile_inst.icon_id)
get_variant_id : Instance -> Int
get_variant_id tile_inst =
@@ -146,20 +166,33 @@ get_variant_id tile_inst =
% Constants.UI.variants_per_tile
)
-solve_tile_instance : (Dict.Dict Ref Type) -> Instance -> Instance
+solve_tile_instance : (List Type) -> Instance -> Instance
solve_tile_instance tiles tile_instance =
- case (Dict.get tile_instance.type_id tiles) of
- (Just tile) ->
- {tile_instance |
- type_id = tile.id,
- crossing_cost = tile.crossing_cost
- }
-
- Nothing ->
- (error_tile_instance
- tile_instance.location.x
- tile_instance.location.y
- )
+ let
+ maybe_type =
+ (List.foldr (seek_tile_instance_type tile_instance) Nothing tiles)
+ in
+ case maybe_type of
+ (Just tile) ->
+ {tile_instance |
+ type_id = tile.id,
+ crossing_cost = tile.crossing_cost
+ }
+
+ Nothing ->
+ (Debug.log
+ (
+ "Couldn't find tile type matching "
+ ++ (toString tile_instance.icon_id)
+ ++ " among "
+ ++ (toString (List.length tiles))
+ ++ " candidates."
+ )
+ (error_tile_instance
+ tile_instance.location.x
+ tile_instance.location.y
+ )
+ )
decoder : (Json.Decode.Decoder Type)
decoder =
diff --git a/src/battlemap/src/Struct/UI.elm b/src/battlemap/src/Struct/UI.elm
index fe1cfe1..447cfc4 100644
--- a/src/battlemap/src/Struct/UI.elm
+++ b/src/battlemap/src/Struct/UI.elm
@@ -27,7 +27,6 @@ module Struct.UI exposing
)
-- Battlemap -------------------------------------------------------------------
-import Struct.Character
import Struct.Location
import Struct.Navigator
diff --git a/src/battlemap/src/Update/HandleServerReply.elm b/src/battlemap/src/Update/HandleServerReply.elm
index 5296f91..27ea1ac 100644
--- a/src/battlemap/src/Update/HandleServerReply.elm
+++ b/src/battlemap/src/Update/HandleServerReply.elm
@@ -105,7 +105,8 @@ set_map map current_state =
(model, _) ->
(
{model |
- battlemap = (Struct.Battlemap.solve_tiles model.tiles map)
+ battlemap =
+ (Struct.Battlemap.solve_tiles (Dict.values model.tiles) map)
},
Nothing
)
diff --git a/src/battlemap/src/Update/SendLoadBattlemapRequest.elm b/src/battlemap/src/Update/SendLoadBattlemapRequest.elm
index e55d60b..bb6ae6b 100644
--- a/src/battlemap/src/Update/SendLoadBattlemapRequest.elm
+++ b/src/battlemap/src/Update/SendLoadBattlemapRequest.elm
@@ -20,7 +20,7 @@ apply_to : (
)
apply_to model =
(
- model,
+ (Struct.Model.full_debug_reset model),
(case (Comm.LoadBattlemap.try model) of
(Just cmd) -> cmd
Nothing -> Cmd.none