From 15b4f0e6a73987f9afbc46f46862b5120029e715 Mon Sep 17 00:00:00 2001 From: Griffin Smith Date: Sat, 16 May 2020 18:57:07 -0400 Subject: Stop auto-moving if there's an enemy nearby If at any point during an auto-move there's an enemy in the character's line of sight, cancel the autocommand and send a message --- src/Xanthous/Game/Lenses.hs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/Xanthous/Game/Lenses.hs') diff --git a/src/Xanthous/Game/Lenses.hs b/src/Xanthous/Game/Lenses.hs index 48b7235d2263..5d5e673c5b88 100644 --- a/src/Xanthous/Game/Lenses.hs +++ b/src/Xanthous/Game/Lenses.hs @@ -8,6 +8,7 @@ module Xanthous.Game.Lenses , characterPosition , updateCharacterVision , characterVisiblePositions + , characterVisibleEntities , getInitialState , initialStateFromSeed , entitiesAtCharacter @@ -28,7 +29,8 @@ import Xanthous.Game.State import Xanthous.Data import Xanthous.Data.Levels import qualified Xanthous.Data.EntityMap as EntityMap -import Xanthous.Data.EntityMap.Graphics (visiblePositions) +import Xanthous.Data.EntityMap.Graphics + (visiblePositions, visibleEntities) import Xanthous.Data.VectorBag import Xanthous.Entities.Character (Character, mkCharacter) import {-# SOURCE #-} Xanthous.Entities.Entities () @@ -101,6 +103,11 @@ characterVisiblePositions game = let charPos = game ^. characterPosition in visiblePositions charPos visionRadius $ game ^. entities +characterVisibleEntities :: GameState -> EntityMap.EntityMap SomeEntity +characterVisibleEntities game = + let charPos = game ^. characterPosition + in visibleEntities charPos visionRadius $ game ^. entities + entitiesCollision :: ( Functor f , forall xx. MonoFoldable (f xx) -- cgit 1.4.1