module Rattletrap.Type.Attribute.Float where import Prelude hiding (Float) import qualified Rattletrap.BitGet as BitGet import qualified Rattletrap.BitPut as BitPut import qualified Rattletrap.Schema as Schema import qualified Rattletrap.Type.F32 as F32 import qualified Rattletrap.Utility.Json as Json newtype Float = Float { Float -> F32 value :: F32.F32 } deriving (Float -> Float -> Bool (Float -> Float -> Bool) -> (Float -> Float -> Bool) -> Eq Float forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Float -> Float -> Bool $c/= :: Float -> Float -> Bool == :: Float -> Float -> Bool $c== :: Float -> Float -> Bool Eq, Int -> Float -> ShowS [Float] -> ShowS Float -> String (Int -> Float -> ShowS) -> (Float -> String) -> ([Float] -> ShowS) -> Show Float forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Float] -> ShowS $cshowList :: [Float] -> ShowS show :: Float -> String $cshow :: Float -> String showsPrec :: Int -> Float -> ShowS $cshowsPrec :: Int -> Float -> ShowS Show) instance Json.FromJSON Float where parseJSON :: Value -> Parser Float parseJSON = (F32 -> Float) -> Parser F32 -> Parser Float forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap F32 -> Float Float (Parser F32 -> Parser Float) -> (Value -> Parser F32) -> Value -> Parser Float forall b c a. (b -> c) -> (a -> b) -> a -> c . Value -> Parser F32 forall a. FromJSON a => Value -> Parser a Json.parseJSON instance Json.ToJSON Float where toJSON :: Float -> Value toJSON = F32 -> Value forall a. ToJSON a => a -> Value Json.toJSON (F32 -> Value) -> (Float -> F32) -> Float -> Value forall b c a. (b -> c) -> (a -> b) -> a -> c . Float -> F32 value schema :: Schema.Schema schema :: Schema schema = String -> Value -> Schema Schema.named String "attribute-float" (Value -> Schema) -> Value -> Schema forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema F32.schema bitPut :: Float -> BitPut.BitPut bitPut :: Float -> BitPut bitPut Float floatAttribute = F32 -> BitPut F32.bitPut (Float -> F32 value Float floatAttribute) bitGet :: BitGet.BitGet Float bitGet :: BitGet Float bitGet = String -> BitGet Float -> BitGet Float forall a. String -> BitGet a -> BitGet a BitGet.label String "Float" (BitGet Float -> BitGet Float) -> BitGet Float -> BitGet Float forall a b. (a -> b) -> a -> b $ do F32 value <- String -> BitGet F32 -> BitGet F32 forall a. String -> BitGet a -> BitGet a BitGet.label String "value" BitGet F32 F32.bitGet Float -> BitGet Float forall (f :: * -> *) a. Applicative f => a -> f a pure Float :: F32 -> Float Float { F32 value :: F32 value :: F32 value }