module Aztecs.ECS.Query.Dynamic.Reader.Class (ArrowDynamicQueryReader (..)) where
import Aztecs.ECS.Component
import Aztecs.ECS.Entity (EntityID)
import Control.Arrow (Arrow (..), (>>>))
class (Arrow arr) => ArrowDynamicQueryReader arr where
entity :: arr () EntityID
fetchDyn :: (Component a) => ComponentID -> arr () a
fetchMaybeDyn :: (Component a) => ComponentID -> arr () (Maybe a)
fetchMaybeDyn ComponentID
cId = ComponentID -> arr () a
forall a. Component a => ComponentID -> arr () a
forall (arr :: * -> * -> *) a.
(ArrowDynamicQueryReader arr, Component a) =>
ComponentID -> arr () a
fetchDyn ComponentID
cId arr () a -> arr a (Maybe a) -> arr () (Maybe a)
forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> (a -> Maybe a) -> arr a (Maybe a)
forall b c. (b -> c) -> arr b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr a -> Maybe a
forall a. a -> Maybe a
Just