module Rattletrap.Type.Attribute.LoadoutsOnline where 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 import qualified Data.Map as Map 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 (LoadoutsOnline -> LoadoutsOnline -> Bool) -> (LoadoutsOnline -> LoadoutsOnline -> Bool) -> Eq LoadoutsOnline 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 (Int -> LoadoutsOnline -> ShowS) -> (LoadoutsOnline -> String) -> ([LoadoutsOnline] -> ShowS) -> Show LoadoutsOnline 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 = String -> (Object -> Parser LoadoutsOnline) -> Value -> Parser LoadoutsOnline forall a. String -> (Object -> Parser a) -> Value -> Parser a Json.withObject String "LoadoutsOnline" ((Object -> Parser LoadoutsOnline) -> Value -> Parser LoadoutsOnline) -> (Object -> Parser LoadoutsOnline) -> Value -> Parser LoadoutsOnline forall a b. (a -> b) -> a -> b $ \Object object -> do LoadoutOnline blue <- Object -> String -> Parser LoadoutOnline forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "blue" LoadoutOnline orange <- Object -> String -> Parser LoadoutOnline forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "orange" Bool unknown1 <- Object -> String -> Parser Bool forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "unknown1" Bool unknown2 <- Object -> String -> Parser Bool forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "unknown2" LoadoutsOnline -> Parser LoadoutsOnline forall (f :: * -> *) a. Applicative f => a -> f a pure LoadoutsOnline :: LoadoutOnline -> LoadoutOnline -> Bool -> Bool -> LoadoutsOnline 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 = [Pair] -> Value Json.object [ String -> LoadoutOnline -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "blue" (LoadoutOnline -> Pair) -> LoadoutOnline -> Pair forall a b. (a -> b) -> a -> b $ LoadoutsOnline -> LoadoutOnline blue LoadoutsOnline x , String -> LoadoutOnline -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "orange" (LoadoutOnline -> Pair) -> LoadoutOnline -> Pair forall a b. (a -> b) -> a -> b $ LoadoutsOnline -> LoadoutOnline orange LoadoutsOnline x , String -> Bool -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "unknown1" (Bool -> Pair) -> Bool -> Pair forall a b. (a -> b) -> a -> b $ LoadoutsOnline -> Bool unknown1 LoadoutsOnline x , String -> Bool -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "unknown2" (Bool -> Pair) -> Bool -> Pair 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" (Value -> Schema) -> Value -> Schema forall a b. (a -> b) -> a -> b $ [(Pair, Bool)] -> Value Schema.object [ (String -> Value -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "blue" (Value -> Pair) -> Value -> Pair forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema LoadoutOnline.schema, Bool True) , (String -> Value -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "orange" (Value -> Pair) -> Value -> Pair forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema LoadoutOnline.schema, Bool True) , (String -> Value -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "unknown1" (Value -> Pair) -> Value -> Pair forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema Schema.boolean, Bool True) , (String -> Value -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "unknown2" (Value -> Pair) -> Value -> Pair 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) BitPut -> BitPut -> BitPut forall a. Semigroup a => a -> a -> a <> LoadoutOnline -> BitPut LoadoutOnline.bitPut (LoadoutsOnline -> LoadoutOnline orange LoadoutsOnline loadoutsOnlineAttribute) BitPut -> BitPut -> BitPut forall a. Semigroup a => a -> a -> a <> Bool -> BitPut BitPut.bool (LoadoutsOnline -> Bool unknown1 LoadoutsOnline loadoutsOnlineAttribute) BitPut -> BitPut -> BitPut 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 = do LoadoutOnline blue <- Version -> Map U32 Str -> BitGet LoadoutOnline LoadoutOnline.bitGet Version version Map U32 Str objectMap LoadoutOnline orange <- Version -> Map U32 Str -> BitGet LoadoutOnline LoadoutOnline.bitGet Version version Map U32 Str objectMap Bool unknown1 <- BitGet Bool BitGet.bool Bool unknown2 <- BitGet Bool BitGet.bool LoadoutsOnline -> BitGet LoadoutsOnline forall (f :: * -> *) a. Applicative f => a -> f a pure LoadoutsOnline :: LoadoutOnline -> LoadoutOnline -> Bool -> Bool -> LoadoutsOnline 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 }