module Rattletrap.Type.Attribute.MusicStinger where import qualified Rattletrap.BitGet as BitGet import qualified Rattletrap.BitPut as BitPut import qualified Rattletrap.Schema as Schema import qualified Rattletrap.Type.U32 as U32 import qualified Rattletrap.Type.U8 as U8 import qualified Rattletrap.Utility.Json as Json data MusicStinger = MusicStinger { MusicStinger -> Bool flag :: Bool, MusicStinger -> U32 cue :: U32.U32, MusicStinger -> U8 trigger :: U8.U8 } deriving (MusicStinger -> MusicStinger -> Bool (MusicStinger -> MusicStinger -> Bool) -> (MusicStinger -> MusicStinger -> Bool) -> Eq MusicStinger forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: MusicStinger -> MusicStinger -> Bool == :: MusicStinger -> MusicStinger -> Bool $c/= :: MusicStinger -> MusicStinger -> Bool /= :: MusicStinger -> MusicStinger -> Bool Eq, Int -> MusicStinger -> ShowS [MusicStinger] -> ShowS MusicStinger -> String (Int -> MusicStinger -> ShowS) -> (MusicStinger -> String) -> ([MusicStinger] -> ShowS) -> Show MusicStinger forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> MusicStinger -> ShowS showsPrec :: Int -> MusicStinger -> ShowS $cshow :: MusicStinger -> String show :: MusicStinger -> String $cshowList :: [MusicStinger] -> ShowS showList :: [MusicStinger] -> ShowS Show) instance Json.FromJSON MusicStinger where parseJSON :: Value -> Parser MusicStinger parseJSON = String -> (Object -> Parser MusicStinger) -> Value -> Parser MusicStinger forall a. String -> (Object -> Parser a) -> Value -> Parser a Json.withObject String "MusicStinger" ((Object -> Parser MusicStinger) -> Value -> Parser MusicStinger) -> (Object -> Parser MusicStinger) -> Value -> Parser MusicStinger forall a b. (a -> b) -> a -> b $ \Object object -> do Bool flag <- Object -> String -> Parser Bool forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "flag" U32 cue <- Object -> String -> Parser U32 forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "cue" U8 trigger <- Object -> String -> Parser U8 forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "trigger" MusicStinger -> Parser MusicStinger forall a. a -> Parser a forall (f :: * -> *) a. Applicative f => a -> f a pure MusicStinger {Bool flag :: Bool flag :: Bool flag, U32 cue :: U32 cue :: U32 cue, U8 trigger :: U8 trigger :: U8 trigger} instance Json.ToJSON MusicStinger where toJSON :: MusicStinger -> Value toJSON MusicStinger x = [(Key, Value)] -> Value Json.object [ String -> Bool -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "flag" (Bool -> (Key, Value)) -> Bool -> (Key, Value) forall a b. (a -> b) -> a -> b $ MusicStinger -> Bool flag MusicStinger x, String -> U32 -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "cue" (U32 -> (Key, Value)) -> U32 -> (Key, Value) forall a b. (a -> b) -> a -> b $ MusicStinger -> U32 cue MusicStinger x, String -> U8 -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "trigger" (U8 -> (Key, Value)) -> U8 -> (Key, Value) forall a b. (a -> b) -> a -> b $ MusicStinger -> U8 trigger MusicStinger x ] schema :: Schema.Schema schema :: Schema schema = String -> Value -> Schema Schema.named String "attribute-music-stinger" (Value -> Schema) -> Value -> Schema forall a b. (a -> b) -> a -> b $ [((Key, Value), Bool)] -> Value Schema.object [ (String -> Value -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "flag" (Value -> (Key, Value)) -> Value -> (Key, Value) forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema Schema.boolean, Bool True), (String -> Value -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "cue" (Value -> (Key, Value)) -> Value -> (Key, Value) forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema U32.schema, Bool True), (String -> Value -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "trigger" (Value -> (Key, Value)) -> Value -> (Key, Value) forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema U8.schema, Bool True) ] bitPut :: MusicStinger -> BitPut.BitPut bitPut :: MusicStinger -> BitPut bitPut MusicStinger musicStingerAttribute = Bool -> BitPut BitPut.bool (MusicStinger -> Bool flag MusicStinger musicStingerAttribute) BitPut -> BitPut -> BitPut forall a. Semigroup a => a -> a -> a <> U32 -> BitPut U32.bitPut (MusicStinger -> U32 cue MusicStinger musicStingerAttribute) BitPut -> BitPut -> BitPut forall a. Semigroup a => a -> a -> a <> U8 -> BitPut U8.bitPut (MusicStinger -> U8 trigger MusicStinger musicStingerAttribute) bitGet :: BitGet.BitGet MusicStinger bitGet :: BitGet MusicStinger bitGet = String -> BitGet MusicStinger -> BitGet MusicStinger forall a. String -> BitGet a -> BitGet a BitGet.label String "MusicStinger" (BitGet MusicStinger -> BitGet MusicStinger) -> BitGet MusicStinger -> BitGet MusicStinger forall a b. (a -> b) -> a -> b $ do Bool flag <- String -> BitGet Bool -> BitGet Bool forall a. String -> BitGet a -> BitGet a BitGet.label String "flag" BitGet Bool BitGet.bool U32 cue <- String -> BitGet U32 -> BitGet U32 forall a. String -> BitGet a -> BitGet a BitGet.label String "cue" BitGet U32 U32.bitGet U8 trigger <- String -> BitGet U8 -> BitGet U8 forall a. String -> BitGet a -> BitGet a BitGet.label String "trigger" BitGet U8 U8.bitGet MusicStinger -> BitGet MusicStinger forall a. a -> Get BitString Identity a forall (f :: * -> *) a. Applicative f => a -> f a pure MusicStinger {Bool flag :: Bool flag :: Bool flag, U32 cue :: U32 cue :: U32 cue, U8 trigger :: U8 trigger :: U8 trigger}