From 84f32efad4ff6d358fdeb985b3b4ac408e753b78 Mon Sep 17 00:00:00 2001 From: Griffin Smith Date: Fri, 3 Jan 2020 18:28:43 -0500 Subject: Track entity collision in the Entity class Rather than having a single function in the Game.Lenses module for determining what collision type if any an entity has, track it in the Entity typeclass itself. This is both more extensible and a better separation of concerns and gets rid of one of the two needs for a circular import. Yay! As part of this, I realized nothing was being done to prevent doors from being placed on tiles that already had walls (since now that was properly causing a collision!) so I've fixed that as well. --- src/Xanthous/Generators/LevelContents.hs | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/Xanthous/Generators/LevelContents.hs') diff --git a/src/Xanthous/Generators/LevelContents.hs b/src/Xanthous/Generators/LevelContents.hs index aaeb4a77fdda..96d64a693774 100644 --- a/src/Xanthous/Generators/LevelContents.hs +++ b/src/Xanthous/Generators/LevelContents.hs @@ -45,6 +45,8 @@ randomDoors cells = do candidateCells = filter doorable $ Arr.indices cells subsetRange = (0.8 :: Double, 1.0) doorable (x, y) = + not (fromMaybe True $ cells ^? ix (x, y)) + && ( fromMaybe True $ cells ^? ix (x - 1, y) -- left , fromMaybe True $ cells ^? ix (x, y - 1) -- top , fromMaybe True $ cells ^? ix (x + 1, y) -- right -- cgit 1.4.1