module Dodge.Creature.ChooseTarget where import Control.Lens import Dodge.Base import Dodge.Data.World import Linear targetYouLOS :: Creature -> World -> Maybe Creature {-# INLINE targetYouLOS #-} targetYouLOS cr w | hasLOS (cr ^. crPos . _xy) ( you w ^. crPos . _xy) w = Just $ you w | otherwise = Nothing targetYouCognizant :: Creature -> World -> Maybe Creature targetYouCognizant cr w | hasLOS (cr ^. crPos . _xy) (you w ^. crPos . _xy) w && isCog (cr ^? crPerception . cpAwareness . ix 0) = Just $ you w | otherwise = Nothing where isCog x = case x of Just (Cognizant _) -> True _ -> False