module Rattletrap.Type.Attribute.TeamPaint 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 TeamPaint = TeamPaint { TeamPaint -> U8 team :: U8.U8 , TeamPaint -> U8 primaryColor :: U8.U8 , TeamPaint -> U8 accentColor :: U8.U8 , TeamPaint -> U32 primaryFinish :: U32.U32 , TeamPaint -> U32 accentFinish :: U32.U32 } deriving (TeamPaint -> TeamPaint -> Bool (TeamPaint -> TeamPaint -> Bool) -> (TeamPaint -> TeamPaint -> Bool) -> Eq TeamPaint forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: TeamPaint -> TeamPaint -> Bool $c/= :: TeamPaint -> TeamPaint -> Bool == :: TeamPaint -> TeamPaint -> Bool $c== :: TeamPaint -> TeamPaint -> Bool Eq, Int -> TeamPaint -> ShowS [TeamPaint] -> ShowS TeamPaint -> String (Int -> TeamPaint -> ShowS) -> (TeamPaint -> String) -> ([TeamPaint] -> ShowS) -> Show TeamPaint forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [TeamPaint] -> ShowS $cshowList :: [TeamPaint] -> ShowS show :: TeamPaint -> String $cshow :: TeamPaint -> String showsPrec :: Int -> TeamPaint -> ShowS $cshowsPrec :: Int -> TeamPaint -> ShowS Show) instance Json.FromJSON TeamPaint where parseJSON :: Value -> Parser TeamPaint parseJSON = String -> (Object -> Parser TeamPaint) -> Value -> Parser TeamPaint forall a. String -> (Object -> Parser a) -> Value -> Parser a Json.withObject String "TeamPaint" ((Object -> Parser TeamPaint) -> Value -> Parser TeamPaint) -> (Object -> Parser TeamPaint) -> Value -> Parser TeamPaint forall a b. (a -> b) -> a -> b $ \Object object -> do U8 team <- Object -> String -> Parser U8 forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "team" U8 primaryColor <- Object -> String -> Parser U8 forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "primary_color" U8 accentColor <- Object -> String -> Parser U8 forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "accent_color" U32 primaryFinish <- Object -> String -> Parser U32 forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "primary_finish" U32 accentFinish <- Object -> String -> Parser U32 forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "accent_finish" TeamPaint -> Parser TeamPaint forall (f :: * -> *) a. Applicative f => a -> f a pure TeamPaint :: U8 -> U8 -> U8 -> U32 -> U32 -> TeamPaint TeamPaint { U8 team :: U8 team :: U8 team , U8 primaryColor :: U8 primaryColor :: U8 primaryColor , U8 accentColor :: U8 accentColor :: U8 accentColor , U32 primaryFinish :: U32 primaryFinish :: U32 primaryFinish , U32 accentFinish :: U32 accentFinish :: U32 accentFinish } instance Json.ToJSON TeamPaint where toJSON :: TeamPaint -> Value toJSON TeamPaint x = [Pair] -> Value Json.object [ String -> U8 -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "team" (U8 -> Pair) -> U8 -> Pair forall a b. (a -> b) -> a -> b $ TeamPaint -> U8 team TeamPaint x , String -> U8 -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "primary_color" (U8 -> Pair) -> U8 -> Pair forall a b. (a -> b) -> a -> b $ TeamPaint -> U8 primaryColor TeamPaint x , String -> U8 -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "accent_color" (U8 -> Pair) -> U8 -> Pair forall a b. (a -> b) -> a -> b $ TeamPaint -> U8 accentColor TeamPaint x , String -> U32 -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "primary_finish" (U32 -> Pair) -> U32 -> Pair forall a b. (a -> b) -> a -> b $ TeamPaint -> U32 primaryFinish TeamPaint x , String -> U32 -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "accent_finish" (U32 -> Pair) -> U32 -> Pair forall a b. (a -> b) -> a -> b $ TeamPaint -> U32 accentFinish TeamPaint x ] schema :: Schema.Schema schema :: Schema schema = String -> Value -> Schema Schema.named String "attribute-team-paint" (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 "team" (Value -> Pair) -> Value -> Pair forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema U8.schema, Bool True) , (String -> Value -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "primary_color" (Value -> Pair) -> Value -> Pair forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema U8.schema, Bool True) , (String -> Value -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "accent_color" (Value -> Pair) -> Value -> Pair forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema U8.schema, Bool True) , (String -> Value -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "primary_finish" (Value -> Pair) -> Value -> Pair forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema U32.schema, Bool True) , (String -> Value -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "accent_finish" (Value -> Pair) -> Value -> Pair forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema U32.schema, Bool True) ] bitPut :: TeamPaint -> BitPut.BitPut bitPut :: TeamPaint -> BitPut bitPut TeamPaint teamPaintAttribute = U8 -> BitPut U8.bitPut (TeamPaint -> U8 team TeamPaint teamPaintAttribute) BitPut -> BitPut -> BitPut forall a. Semigroup a => a -> a -> a <> U8 -> BitPut U8.bitPut (TeamPaint -> U8 primaryColor TeamPaint teamPaintAttribute) BitPut -> BitPut -> BitPut forall a. Semigroup a => a -> a -> a <> U8 -> BitPut U8.bitPut (TeamPaint -> U8 accentColor TeamPaint teamPaintAttribute) BitPut -> BitPut -> BitPut forall a. Semigroup a => a -> a -> a <> U32 -> BitPut U32.bitPut (TeamPaint -> U32 primaryFinish TeamPaint teamPaintAttribute) BitPut -> BitPut -> BitPut forall a. Semigroup a => a -> a -> a <> U32 -> BitPut U32.bitPut (TeamPaint -> U32 accentFinish TeamPaint teamPaintAttribute) bitGet :: BitGet.BitGet TeamPaint bitGet :: BitGet TeamPaint bitGet = do U8 team <- BitGet U8 U8.bitGet U8 primaryColor <- BitGet U8 U8.bitGet U8 accentColor <- BitGet U8 U8.bitGet U32 primaryFinish <- BitGet U32 U32.bitGet U32 accentFinish <- BitGet U32 U32.bitGet TeamPaint -> BitGet TeamPaint forall (f :: * -> *) a. Applicative f => a -> f a pure TeamPaint :: U8 -> U8 -> U8 -> U32 -> U32 -> TeamPaint TeamPaint { U8 team :: U8 team :: U8 team , U8 primaryColor :: U8 primaryColor :: U8 primaryColor , U8 accentColor :: U8 accentColor :: U8 accentColor , U32 primaryFinish :: U32 primaryFinish :: U32 primaryFinish , U32 accentFinish :: U32 accentFinish :: U32 accentFinish }