module Rattletrap.Type.Attribute.LoadoutsOnline where import qualified Data.Map as Map import qualified Rattletrap.BitGet as BitGet import qualified Rattletrap.BitPut as BitPut import qualified Rattletrap.Schema as Schema import qualified Rattletrap.Type.Attribute.LoadoutOnline as LoadoutOnline import qualified Rattletrap.Type.Str as Str import qualified Rattletrap.Type.U32 as U32 import qualified Rattletrap.Type.Version as Version import qualified Rattletrap.Utility.Json as Json data LoadoutsOnline = LoadoutsOnline { LoadoutsOnline -> LoadoutOnline blue :: LoadoutOnline.LoadoutOnline, LoadoutsOnline -> LoadoutOnline orange :: LoadoutOnline.LoadoutOnline, LoadoutsOnline -> Bool unknown1 :: Bool, LoadoutsOnline -> Bool unknown2 :: Bool } deriving (LoadoutsOnline -> LoadoutsOnline -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: LoadoutsOnline -> LoadoutsOnline -> Bool $c/= :: LoadoutsOnline -> LoadoutsOnline -> Bool == :: LoadoutsOnline -> LoadoutsOnline -> Bool $c== :: LoadoutsOnline -> LoadoutsOnline -> Bool Eq, Int -> LoadoutsOnline -> ShowS [LoadoutsOnline] -> ShowS LoadoutsOnline -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [LoadoutsOnline] -> ShowS $cshowList :: [LoadoutsOnline] -> ShowS show :: LoadoutsOnline -> String $cshow :: LoadoutsOnline -> String showsPrec :: Int -> LoadoutsOnline -> ShowS $cshowsPrec :: Int -> LoadoutsOnline -> ShowS Show) instance Json.FromJSON LoadoutsOnline where parseJSON :: Value -> Parser LoadoutsOnline parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a Json.withObject String "LoadoutsOnline" forall a b. (a -> b) -> a -> b $ \Object object -> do LoadoutOnline blue <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "blue" LoadoutOnline orange <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "orange" Bool unknown1 <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "unknown1" Bool unknown2 <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "unknown2" forall (f :: * -> *) a. Applicative f => a -> f a pure LoadoutsOnline {LoadoutOnline blue :: LoadoutOnline blue :: LoadoutOnline blue, LoadoutOnline orange :: LoadoutOnline orange :: LoadoutOnline orange, Bool unknown1 :: Bool unknown1 :: Bool unknown1, Bool unknown2 :: Bool unknown2 :: Bool unknown2} instance Json.ToJSON LoadoutsOnline where toJSON :: LoadoutsOnline -> Value toJSON LoadoutsOnline x = [(Key, Value)] -> Value Json.object [ forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "blue" forall a b. (a -> b) -> a -> b $ LoadoutsOnline -> LoadoutOnline blue LoadoutsOnline x, forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "orange" forall a b. (a -> b) -> a -> b $ LoadoutsOnline -> LoadoutOnline orange LoadoutsOnline x, forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "unknown1" forall a b. (a -> b) -> a -> b $ LoadoutsOnline -> Bool unknown1 LoadoutsOnline x, forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "unknown2" forall a b. (a -> b) -> a -> b $ LoadoutsOnline -> Bool unknown2 LoadoutsOnline x ] schema :: Schema.Schema schema :: Schema schema = String -> Value -> Schema Schema.named String "attribute-loadouts-online" 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 "blue" forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema LoadoutOnline.schema, Bool True), (forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "orange" forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema LoadoutOnline.schema, Bool True), (forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "unknown1" 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 "unknown2" forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema Schema.boolean, Bool True) ] bitPut :: LoadoutsOnline -> BitPut.BitPut bitPut :: LoadoutsOnline -> BitPut bitPut LoadoutsOnline loadoutsOnlineAttribute = LoadoutOnline -> BitPut LoadoutOnline.bitPut (LoadoutsOnline -> LoadoutOnline blue LoadoutsOnline loadoutsOnlineAttribute) forall a. Semigroup a => a -> a -> a <> LoadoutOnline -> BitPut LoadoutOnline.bitPut (LoadoutsOnline -> LoadoutOnline orange LoadoutsOnline loadoutsOnlineAttribute) forall a. Semigroup a => a -> a -> a <> Bool -> BitPut BitPut.bool (LoadoutsOnline -> Bool unknown1 LoadoutsOnline loadoutsOnlineAttribute) forall a. Semigroup a => a -> a -> a <> Bool -> BitPut BitPut.bool (LoadoutsOnline -> Bool unknown2 LoadoutsOnline loadoutsOnlineAttribute) bitGet :: Version.Version -> Map.Map U32.U32 Str.Str -> BitGet.BitGet LoadoutsOnline bitGet :: Version -> Map U32 Str -> BitGet LoadoutsOnline bitGet Version version Map U32 Str objectMap = forall a. String -> BitGet a -> BitGet a BitGet.label String "LoadoutsOnline" forall a b. (a -> b) -> a -> b $ do LoadoutOnline blue <- forall a. String -> BitGet a -> BitGet a BitGet.label String "blue" forall a b. (a -> b) -> a -> b $ Version -> Map U32 Str -> BitGet LoadoutOnline LoadoutOnline.bitGet Version version Map U32 Str objectMap LoadoutOnline orange <- forall a. String -> BitGet a -> BitGet a BitGet.label String "orange" forall a b. (a -> b) -> a -> b $ Version -> Map U32 Str -> BitGet LoadoutOnline LoadoutOnline.bitGet Version version Map U32 Str objectMap Bool unknown1 <- forall a. String -> BitGet a -> BitGet a BitGet.label String "unknown1" BitGet Bool BitGet.bool Bool unknown2 <- forall a. String -> BitGet a -> BitGet a BitGet.label String "unknown2" BitGet Bool BitGet.bool forall (f :: * -> *) a. Applicative f => a -> f a pure LoadoutsOnline {LoadoutOnline blue :: LoadoutOnline blue :: LoadoutOnline blue, LoadoutOnline orange :: LoadoutOnline orange :: LoadoutOnline orange, Bool unknown1 :: Bool unknown1 :: Bool unknown1, Bool unknown2 :: Bool unknown2 :: Bool unknown2}