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 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: MusicStinger -> MusicStinger -> Bool $c/= :: MusicStinger -> MusicStinger -> Bool == :: MusicStinger -> MusicStinger -> Bool $c== :: MusicStinger -> MusicStinger -> Bool Eq, Int -> MusicStinger -> ShowS [MusicStinger] -> ShowS MusicStinger -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [MusicStinger] -> ShowS $cshowList :: [MusicStinger] -> ShowS show :: MusicStinger -> String $cshow :: MusicStinger -> String showsPrec :: Int -> MusicStinger -> ShowS $cshowsPrec :: Int -> MusicStinger -> ShowS Show) instance Json.FromJSON MusicStinger where parseJSON :: Value -> Parser MusicStinger parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a Json.withObject String "MusicStinger" forall a b. (a -> b) -> a -> b $ \Object object -> do Bool flag <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "flag" U32 cue <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "cue" U8 trigger <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "trigger" 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 [ forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "flag" forall a b. (a -> b) -> a -> b $ MusicStinger -> Bool flag MusicStinger x, forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "cue" forall a b. (a -> b) -> a -> b $ MusicStinger -> U32 cue MusicStinger x, forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "trigger" 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" forall a b. (a -> b) -> a -> b $ [((Key, Value), Bool)] -> Value Schema.object [ (forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "flag" forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema Schema.boolean, Bool True), (forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "cue" forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema U32.schema, Bool True), (forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "trigger" 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) forall a. Semigroup a => a -> a -> a <> U32 -> BitPut U32.bitPut (MusicStinger -> U32 cue MusicStinger musicStingerAttribute) forall a. Semigroup a => a -> a -> a <> U8 -> BitPut U8.bitPut (MusicStinger -> U8 trigger MusicStinger musicStingerAttribute) bitGet :: BitGet.BitGet MusicStinger bitGet :: BitGet MusicStinger bitGet = forall a. String -> BitGet a -> BitGet a BitGet.label String "MusicStinger" forall a b. (a -> b) -> a -> b $ do Bool flag <- forall a. String -> BitGet a -> BitGet a BitGet.label String "flag" BitGet Bool BitGet.bool U32 cue <- forall a. String -> BitGet a -> BitGet a BitGet.label String "cue" BitGet U32 U32.bitGet U8 trigger <- forall a. String -> BitGet a -> BitGet a BitGet.label String "trigger" BitGet U8 U8.bitGet 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}