diff options
author | Griffin Smith <root@gws.fyi> | 2020-02-17T23·01-0500 |
---|---|---|
committer | Griffin Smith <root@gws.fyi> | 2020-02-17T23·01-0500 |
commit | 22b7a9be84b26d3c40d065fc0d699ad1ebcadb3c (patch) | |
tree | 7baa34dcf549b58bfee2eab02ae510ba2acd3789 /src/Xanthous/Data/EntityMap/Graphics.hs | |
parent | 1265155ae43f59c6bbd4b25f2747515cdf416622 (diff) |
Drop Rasterific for non-filled circles
Rasterific appears to generate some pretty surprising, if not completely wrong, circles at especially low sizes - this was resulting in unexpected behavior with vision calculation, including the character never being able to see directly to the left of them, among other things. This moves back to the old midpoint circle algorithm I pulled off of rosetta code, but only for the non-filled circle. The filled circle is still using the wonky algorithm for now, but at some point I'd love to refactor it such that empty circles are eg always a subset of non-filled circles.
Diffstat (limited to 'src/Xanthous/Data/EntityMap/Graphics.hs')
-rw-r--r-- | src/Xanthous/Data/EntityMap/Graphics.hs | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/Xanthous/Data/EntityMap/Graphics.hs b/src/Xanthous/Data/EntityMap/Graphics.hs index 9064855bdbae..d523c0555e4f 100644 --- a/src/Xanthous/Data/EntityMap/Graphics.hs +++ b/src/Xanthous/Data/EntityMap/Graphics.hs @@ -17,8 +17,16 @@ import Xanthous.Game.State import Xanthous.Util.Graphics (circle, line) -------------------------------------------------------------------------------- -visiblePositions :: Entity e => Position -> Word -> EntityMap e -> Set Position -visiblePositions pos radius = setFromList . positions . visibleEntities pos radius +-- | Returns a set of positions that are visible, when taking into account +-- 'blocksVision', from the given position, within the given radius. +visiblePositions + :: Entity e + => Position + -> Word -- ^ Vision radius + -> EntityMap e + -> Set Position +visiblePositions pos radius + = setFromList . positions . visibleEntities pos radius -- | Returns a list of individual lines of sight, each of which is a list of -- entities at positions on that line of sight |