{-# LANGUAGE FunctionalDependencies #-}
module Aztecs.ECS.Query.Dynamic.Class (DynamicQueryF (..)) where
import Aztecs.ECS.Component
import Control.Monad
class (Applicative m, Functor f) => DynamicQueryF m f | f -> m where
adjustDyn :: (Component a) => (b -> a -> a) -> ComponentID -> f b -> f a
adjustDyn_ :: (Component a) => (b -> a -> a) -> ComponentID -> f b -> f ()
adjustDyn_ b -> a -> a
f ComponentID
cId = f a -> f ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (f a -> f ()) -> (f b -> f a) -> f b -> f ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (b -> a -> a) -> ComponentID -> f b -> f a
forall a b.
Component a =>
(b -> a -> a) -> ComponentID -> f b -> f a
forall (m :: * -> *) (f :: * -> *) a b.
(DynamicQueryF m f, Component a) =>
(b -> a -> a) -> ComponentID -> f b -> f a
adjustDyn b -> a -> a
f ComponentID
cId
adjustDynM :: (Monad m, Component a) => (b -> a -> m a) -> ComponentID -> f b -> f a
setDyn :: (Component a) => ComponentID -> f a -> f a