summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'elm/battlemap/src/Battlemap/Location.elm')
-rw-r--r--elm/battlemap/src/Battlemap/Location.elm44
1 files changed, 44 insertions, 0 deletions
diff --git a/elm/battlemap/src/Battlemap/Location.elm b/elm/battlemap/src/Battlemap/Location.elm
new file mode 100644
index 0000000..36f0c4d
--- /dev/null
+++ b/elm/battlemap/src/Battlemap/Location.elm
@@ -0,0 +1,44 @@
+module Battlemap.Location exposing (..)
+
+import Battlemap.Direction
+
+type alias Type =
+ {
+ x : Int,
+ y : Int
+ }
+
+type alias Ref = (Int, Int)
+
+neighbor : Type -> Battlemap.Direction.Type -> Type
+neighbor loc dir =
+ case dir of
+ Battlemap.Direction.Right -> {loc | x = (loc.x + 1)}
+ Battlemap.Direction.Left -> {loc | x = (loc.x - 1)}
+ Battlemap.Direction.Up -> {loc | y = (loc.y - 1)}
+ Battlemap.Direction.Down -> {loc | y = (loc.y + 1)}
+ Battlemap.Direction.None -> loc
+
+get_ref : Type -> Ref
+get_ref l =
+ (l.x, l.y)
+
+from_ref : Ref -> Type
+from_ref (x, y) =
+ {x = x, y = y}
+
+dist : Type -> Type -> Int
+dist loc_a loc_b =
+ if (loc_a.x > loc_b.x)
+ then
+ if (loc_a.y > loc_b.y)
+ then
+ ((loc_a.x - loc_b.x) + (loc_a.y - loc_b.y))
+ else
+ ((loc_a.x - loc_b.x) + (loc_b.y - loc_a.y))
+ else
+ if (loc_a.y > loc_b.y)
+ then
+ ((loc_b.x - loc_a.x) + (loc_a.y - loc_b.y))
+ else
+ ((loc_b.x - loc_a.x) + (loc_b.y - loc_a.y))