diff options
Diffstat (limited to 'src/Xanthous/Game')
-rw-r--r-- | src/Xanthous/Game/Draw.hs | 9 | ||||
-rw-r--r-- | src/Xanthous/Game/State.hs | 6 |
2 files changed, 11 insertions, 4 deletions
diff --git a/src/Xanthous/Game/Draw.hs b/src/Xanthous/Game/Draw.hs index 24c177513ed1..b7d7a76956ed 100644 --- a/src/Xanthous/Game/Draw.hs +++ b/src/Xanthous/Game/Draw.hs @@ -4,12 +4,12 @@ module Xanthous.Game.Draw ) where -------------------------------------------------------------------------------- import Xanthous.Prelude -import Brick hiding (loc) +import Brick hiding (loc, on) import Brick.Widgets.Border import Brick.Widgets.Border.Style import Brick.Widgets.Edit -------------------------------------------------------------------------------- -import Xanthous.Data (Position'(..), type Position, x, y, loc) +import Xanthous.Data import Xanthous.Data.EntityMap (EntityMap, atPosition) import qualified Xanthous.Data.EntityMap as EntityMap import Xanthous.Entities @@ -68,7 +68,10 @@ drawEntities canRenderPos allEnts | canRenderPos pos = let neighbors = EntityMap.neighbors pos allEnts in maybe (str " ") (drawWithNeighbors neighbors) - $ allEnts ^? atPosition pos . folded + $ maximumByOf + (atPosition pos . folded) + (compare `on` drawPriority) + allEnts | otherwise = str " " drawMap :: GameState -> Widget Name diff --git a/src/Xanthous/Game/State.hs b/src/Xanthous/Game/State.hs index c437f640c091..e3df5c60def2 100644 --- a/src/Xanthous/Game/State.hs +++ b/src/Xanthous/Game/State.hs @@ -58,7 +58,6 @@ import Brick (EventM, Widget) -------------------------------------------------------------------------------- import Xanthous.Data.EntityMap (EntityMap, EntityID) import Xanthous.Data - (Positioned(..), type Position, Neighbors, Ticks(..)) import Xanthous.Orphans () import Xanthous.Game.Prompt import Xanthous.Resource @@ -143,6 +142,10 @@ class Draw a where draw :: a -> Widget n draw = drawWithNeighbors $ pure mempty + -- | higher priority gets drawn on top + drawPriority :: a -> Word + drawPriority = const minBound + instance Draw a => Draw (Positioned a) where drawWithNeighbors ns (Positioned _ a) = drawWithNeighbors ns a draw (Positioned _ a) = draw a @@ -185,6 +188,7 @@ instance Eq SomeEntity where instance Draw SomeEntity where drawWithNeighbors ns (SomeEntity ent) = drawWithNeighbors ns ent + drawPriority (SomeEntity ent) = drawPriority ent instance Brain SomeEntity where step ticks (Positioned pos (SomeEntity ent)) = |