fix door coords

This commit is contained in:
nek0 2019-02-17 15:24:49 +01:00
parent 81edf9bcd2
commit c3bf66ba99

View file

@ -118,6 +118,13 @@ loadMapFork ud ad future progress = do
, "Converting to images"
)))
let !imgmat = convertTileToImg mat
!doors = Prelude.foldl
(\acc coord@(r, c) -> if mat M.! coord == Door
then V2 r c : acc
else acc
)
[]
((,) <$> [1 .. nrows mat] <*> [1 .. ncols mat])
!exits = Prelude.foldl
(\acc coord@(r, c) -> if imgmat M.! coord == Just ImgEmpty
then ReachPoint RoomExit (V2 r c) NE 0 : acc
@ -259,7 +266,7 @@ loadMapFork ud ad future progress = do
( p + increment
, "Registering doors into WorldState"
)))
let doors = Prelude.filter ((\t -> t == RoomExit || t == Elevator) . pointType) rps
-- let doors = Prelude.filter ((\t -> t == RoomExit || t == Elevator) . pointType) rps
mapM_ (\door -> do
let rooms = Prelude.foldl
(\acc coord ->
@ -271,12 +278,8 @@ loadMapFork ud ad future progress = do
)
[]
coords
[coord] = Prelude.filter
(\(V2 r c) -> (Door ==) $ (mat M.! (r, c)))
coords
graph = Types.connects (head gr) ++ tail gr
coords = Prelude.map (pointCoord door +) deltas
dcoords = Prelude.map (coord +) deltas
coords = Prelude.map (door +) deltas
deltas =
[ V2 0 1
, V2 1 0
@ -285,7 +288,7 @@ loadMapFork ud ad future progress = do
]
wall = Prelude.filter
(\delta ->
let V2 r c = coord + delta
let V2 r c = door + delta
in
fromMaybe False (isWall <$> imgmat M.! (r, c)))
deltas
@ -294,7 +297,7 @@ loadMapFork ud ad future progress = do
| head wall == V2 1 0 || head wall == V2 (-1) 0 = NE
| otherwise = error ("strange wall: " ++ show wall)
void $ createEntity $ newEntity
{ pos = Just (fmap ((+ 0.5) . fromIntegral) coord)
{ pos = Just (fmap ((+ 0.5) . fromIntegral) door)
, clearanceLvl = Just (maximum $ 0 : Prelude.map clearance (Prelude.map snd rooms))
, anim = Just $ AnimState (AnimId AnimDoor0 "shut" orientation) 0 1
, obstacle = Just $ case orientation of