module Mischief.Render.Layers where import Data.Binary (Word32) import Data.Bits (Bits ((.&.)), (.|.)) import Mischief.ECS newtype RenderLayers = RenderLayers Word32 deriving anyclass (Typeable RenderLayers [HookRel RenderLayers] [Hook RenderLayers] Set DefaultComponentType IsExclusive (IsExclusiveRel RenderLayers) (Typeable RenderLayers, IsExclusive (IsExclusiveRel RenderLayers)) => Set DefaultComponentType -> [Hook RenderLayers] -> [Hook RenderLayers] -> [Hook RenderLayers] -> [HookRel RenderLayers] -> [HookRel RenderLayers] -> [HookRel RenderLayers] -> Component RenderLayers forall c. (Typeable c, IsExclusive (IsExclusiveRel c)) => Set DefaultComponentType -> [Hook c] -> [Hook c] -> [Hook c] -> [HookRel c] -> [HookRel c] -> [HookRel c] -> Component c $crequired :: Set DefaultComponentType required :: Set DefaultComponentType $conAdd :: [Hook RenderLayers] onAdd :: [Hook RenderLayers] $conSet :: [Hook RenderLayers] onSet :: [Hook RenderLayers] $conRemove :: [Hook RenderLayers] onRemove :: [Hook RenderLayers] $conAddRel :: [HookRel RenderLayers] onAddRel :: [HookRel RenderLayers] $conSetRel :: [HookRel RenderLayers] onSetRel :: [HookRel RenderLayers] $conRemoveRel :: [HookRel RenderLayers] onRemoveRel :: [HookRel RenderLayers] Component) deriving newtype (RenderLayers -> RenderLayers -> Bool (RenderLayers -> RenderLayers -> Bool) -> (RenderLayers -> RenderLayers -> Bool) -> Eq RenderLayers forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: RenderLayers -> RenderLayers -> Bool == :: RenderLayers -> RenderLayers -> Bool $c/= :: RenderLayers -> RenderLayers -> Bool /= :: RenderLayers -> RenderLayers -> Bool Eq, Int -> RenderLayers -> ShowS [RenderLayers] -> ShowS RenderLayers -> String (Int -> RenderLayers -> ShowS) -> (RenderLayers -> String) -> ([RenderLayers] -> ShowS) -> Show RenderLayers forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> RenderLayers -> ShowS showsPrec :: Int -> RenderLayers -> ShowS $cshow :: RenderLayers -> String show :: RenderLayers -> String $cshowList :: [RenderLayers] -> ShowS showList :: [RenderLayers] -> ShowS Show, Eq RenderLayers RenderLayers Eq RenderLayers => (RenderLayers -> RenderLayers -> RenderLayers) -> (RenderLayers -> RenderLayers -> RenderLayers) -> (RenderLayers -> RenderLayers -> RenderLayers) -> (RenderLayers -> RenderLayers) -> (RenderLayers -> Int -> RenderLayers) -> (RenderLayers -> Int -> RenderLayers) -> RenderLayers -> (Int -> RenderLayers) -> (RenderLayers -> Int -> RenderLayers) -> (RenderLayers -> Int -> RenderLayers) -> (RenderLayers -> Int -> RenderLayers) -> (RenderLayers -> Int -> Bool) -> (RenderLayers -> Maybe Int) -> (RenderLayers -> Int) -> (RenderLayers -> Bool) -> (RenderLayers -> Int -> RenderLayers) -> (RenderLayers -> Int -> RenderLayers) -> (RenderLayers -> Int -> RenderLayers) -> (RenderLayers -> Int -> RenderLayers) -> (RenderLayers -> Int -> RenderLayers) -> (RenderLayers -> Int -> RenderLayers) -> (RenderLayers -> Int) -> Bits RenderLayers Int -> RenderLayers RenderLayers -> Bool RenderLayers -> Int RenderLayers -> Maybe Int RenderLayers -> RenderLayers RenderLayers -> Int -> Bool RenderLayers -> Int -> RenderLayers RenderLayers -> RenderLayers -> RenderLayers forall a. Eq a => (a -> a -> a) -> (a -> a -> a) -> (a -> a -> a) -> (a -> a) -> (a -> Int -> a) -> (a -> Int -> a) -> a -> (Int -> a) -> (a -> Int -> a) -> (a -> Int -> a) -> (a -> Int -> a) -> (a -> Int -> Bool) -> (a -> Maybe Int) -> (a -> Int) -> (a -> Bool) -> (a -> Int -> a) -> (a -> Int -> a) -> (a -> Int -> a) -> (a -> Int -> a) -> (a -> Int -> a) -> (a -> Int -> a) -> (a -> Int) -> Bits a $c.&. :: RenderLayers -> RenderLayers -> RenderLayers .&. :: RenderLayers -> RenderLayers -> RenderLayers $c.|. :: RenderLayers -> RenderLayers -> RenderLayers .|. :: RenderLayers -> RenderLayers -> RenderLayers $cxor :: RenderLayers -> RenderLayers -> RenderLayers xor :: RenderLayers -> RenderLayers -> RenderLayers $ccomplement :: RenderLayers -> RenderLayers complement :: RenderLayers -> RenderLayers $cshift :: RenderLayers -> Int -> RenderLayers shift :: RenderLayers -> Int -> RenderLayers $crotate :: RenderLayers -> Int -> RenderLayers rotate :: RenderLayers -> Int -> RenderLayers $czeroBits :: RenderLayers zeroBits :: RenderLayers $cbit :: Int -> RenderLayers bit :: Int -> RenderLayers $csetBit :: RenderLayers -> Int -> RenderLayers setBit :: RenderLayers -> Int -> RenderLayers $cclearBit :: RenderLayers -> Int -> RenderLayers clearBit :: RenderLayers -> Int -> RenderLayers $ccomplementBit :: RenderLayers -> Int -> RenderLayers complementBit :: RenderLayers -> Int -> RenderLayers $ctestBit :: RenderLayers -> Int -> Bool testBit :: RenderLayers -> Int -> Bool $cbitSizeMaybe :: RenderLayers -> Maybe Int bitSizeMaybe :: RenderLayers -> Maybe Int $cbitSize :: RenderLayers -> Int bitSize :: RenderLayers -> Int $cisSigned :: RenderLayers -> Bool isSigned :: RenderLayers -> Bool $cshiftL :: RenderLayers -> Int -> RenderLayers shiftL :: RenderLayers -> Int -> RenderLayers $cunsafeShiftL :: RenderLayers -> Int -> RenderLayers unsafeShiftL :: RenderLayers -> Int -> RenderLayers $cshiftR :: RenderLayers -> Int -> RenderLayers shiftR :: RenderLayers -> Int -> RenderLayers $cunsafeShiftR :: RenderLayers -> Int -> RenderLayers unsafeShiftR :: RenderLayers -> Int -> RenderLayers $crotateL :: RenderLayers -> Int -> RenderLayers rotateL :: RenderLayers -> Int -> RenderLayers $crotateR :: RenderLayers -> Int -> RenderLayers rotateR :: RenderLayers -> Int -> RenderLayers $cpopCount :: RenderLayers -> Int popCount :: RenderLayers -> Int Bits) new :: Word32 -> RenderLayers new :: Word32 -> RenderLayers new = Word32 -> RenderLayers RenderLayers instance Semigroup RenderLayers where <> :: RenderLayers -> RenderLayers -> RenderLayers (<>) = RenderLayers -> RenderLayers -> RenderLayers union union :: RenderLayers -> RenderLayers -> RenderLayers union :: RenderLayers -> RenderLayers -> RenderLayers union (RenderLayers Word32 a) (RenderLayers Word32 b) = Word32 -> RenderLayers RenderLayers (Word32 -> RenderLayers) -> Word32 -> RenderLayers forall a b. (a -> b) -> a -> b $ Word32 a Word32 -> Word32 -> Word32 forall a. Bits a => a -> a -> a .|. Word32 b intersection :: RenderLayers -> RenderLayers -> RenderLayers intersection :: RenderLayers -> RenderLayers -> RenderLayers intersection (RenderLayers Word32 a) (RenderLayers Word32 b) = Word32 -> RenderLayers RenderLayers (Word32 -> RenderLayers) -> Word32 -> RenderLayers forall a b. (a -> b) -> a -> b $ Word32 a Word32 -> Word32 -> Word32 forall a. Bits a => a -> a -> a .&. Word32 b intersects :: RenderLayers -> RenderLayers -> Bool intersects :: RenderLayers -> RenderLayers -> Bool intersects RenderLayers a RenderLayers b = RenderLayers -> RenderLayers -> RenderLayers intersection RenderLayers a RenderLayers b RenderLayers -> RenderLayers -> Bool forall a. Eq a => a -> a -> Bool /= RenderLayers noLayer instance Default RenderLayers where def :: RenderLayers def = RenderLayers layer0 noLayer :: RenderLayers noLayer :: RenderLayers noLayer = Word32 -> RenderLayers RenderLayers Word32 0 layer0 :: RenderLayers layer0 :: RenderLayers layer0 = Word32 -> RenderLayers RenderLayers Word32 1 layer1 :: RenderLayers layer1 :: RenderLayers layer1 = Word32 -> RenderLayers RenderLayers Word32 2 layer2 :: RenderLayers layer2 :: RenderLayers layer2 = Word32 -> RenderLayers RenderLayers Word32 4 layer3 :: RenderLayers layer3 :: RenderLayers layer3 = Word32 -> RenderLayers RenderLayers Word32 8 layer4 :: RenderLayers layer4 :: RenderLayers layer4 = Word32 -> RenderLayers RenderLayers Word32 16 layer5 :: RenderLayers layer5 :: RenderLayers layer5 = Word32 -> RenderLayers RenderLayers Word32 32 layer6 :: RenderLayers layer6 :: RenderLayers layer6 = Word32 -> RenderLayers RenderLayers Word32 64 layer7 :: RenderLayers layer7 :: RenderLayers layer7 = Word32 -> RenderLayers RenderLayers Word32 128 layer8 :: RenderLayers layer8 :: RenderLayers layer8 = Word32 -> RenderLayers RenderLayers Word32 256 layer9 :: RenderLayers layer9 :: RenderLayers layer9 = Word32 -> RenderLayers RenderLayers Word32 512 layer10 :: RenderLayers layer10 :: RenderLayers layer10 = Word32 -> RenderLayers RenderLayers Word32 1024 layer11 :: RenderLayers layer11 :: RenderLayers layer11 = Word32 -> RenderLayers RenderLayers Word32 2048 layer12 :: RenderLayers layer12 :: RenderLayers layer12 = Word32 -> RenderLayers RenderLayers Word32 4096 layer13 :: RenderLayers layer13 :: RenderLayers layer13 = Word32 -> RenderLayers RenderLayers Word32 8192 layer14 :: RenderLayers layer14 :: RenderLayers layer14 = Word32 -> RenderLayers RenderLayers Word32 16384 layer15 :: RenderLayers layer15 :: RenderLayers layer15 = Word32 -> RenderLayers RenderLayers Word32 32768 layer16 :: RenderLayers layer16 :: RenderLayers layer16 = Word32 -> RenderLayers RenderLayers Word32 65536 layer17 :: RenderLayers layer17 :: RenderLayers layer17 = Word32 -> RenderLayers RenderLayers Word32 131072 layer18 :: RenderLayers layer18 :: RenderLayers layer18 = Word32 -> RenderLayers RenderLayers Word32 262144 layer19 :: RenderLayers layer19 :: RenderLayers layer19 = Word32 -> RenderLayers RenderLayers Word32 524288 layer20 :: RenderLayers layer20 :: RenderLayers layer20 = Word32 -> RenderLayers RenderLayers Word32 1048576 layer21 :: RenderLayers layer21 :: RenderLayers layer21 = Word32 -> RenderLayers RenderLayers Word32 2097152 layer22 :: RenderLayers layer22 :: RenderLayers layer22 = Word32 -> RenderLayers RenderLayers Word32 4194304 layer23 :: RenderLayers layer23 :: RenderLayers layer23 = Word32 -> RenderLayers RenderLayers Word32 8388608 layer24 :: RenderLayers layer24 :: RenderLayers layer24 = Word32 -> RenderLayers RenderLayers Word32 16777216 layer25 :: RenderLayers layer25 :: RenderLayers layer25 = Word32 -> RenderLayers RenderLayers Word32 33554432 layer26 :: RenderLayers layer26 :: RenderLayers layer26 = Word32 -> RenderLayers RenderLayers Word32 67108864 layer27 :: RenderLayers layer27 :: RenderLayers layer27 = Word32 -> RenderLayers RenderLayers Word32 134217728 layer28 :: RenderLayers layer28 :: RenderLayers layer28 = Word32 -> RenderLayers RenderLayers Word32 268435456 layer29 :: RenderLayers layer29 :: RenderLayers layer29 = Word32 -> RenderLayers RenderLayers Word32 536870912 layer30 :: RenderLayers layer30 :: RenderLayers layer30 = Word32 -> RenderLayers RenderLayers Word32 1073741824 layer31 :: RenderLayers layer31 :: RenderLayers layer31 = Word32 -> RenderLayers RenderLayers Word32 2147483648