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 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 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 = forall a. String -> (Object -> Parser a) -> Value -> Parser a Json.withObject String "TeamPaint" forall a b. (a -> b) -> a -> b $ \Object object -> do U8 team <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "team" U8 primaryColor <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "primary_color" U8 accentColor <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "accent_color" U32 primaryFinish <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "primary_finish" U32 accentFinish <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "accent_finish" forall (f :: * -> *) a. Applicative f => a -> f a pure 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 = [(Key, Value)] -> Value Json.object [ forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "team" forall a b. (a -> b) -> a -> b $ TeamPaint -> U8 team TeamPaint x , forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "primary_color" forall a b. (a -> b) -> a -> b $ TeamPaint -> U8 primaryColor TeamPaint x , forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "accent_color" forall a b. (a -> b) -> a -> b $ TeamPaint -> U8 accentColor TeamPaint x , forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "primary_finish" forall a b. (a -> b) -> a -> b $ TeamPaint -> U32 primaryFinish TeamPaint x , forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "accent_finish" 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" 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 "team" forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema U8.schema, Bool True) , (forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "primary_color" forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema U8.schema, Bool True) , (forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "accent_color" forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema U8.schema, Bool True) , (forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "primary_finish" 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 "accent_finish" 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) forall a. Semigroup a => a -> a -> a <> U8 -> BitPut U8.bitPut (TeamPaint -> U8 primaryColor TeamPaint teamPaintAttribute) forall a. Semigroup a => a -> a -> a <> U8 -> BitPut U8.bitPut (TeamPaint -> U8 accentColor TeamPaint teamPaintAttribute) forall a. Semigroup a => a -> a -> a <> U32 -> BitPut U32.bitPut (TeamPaint -> U32 primaryFinish TeamPaint teamPaintAttribute) forall a. Semigroup a => a -> a -> a <> U32 -> BitPut U32.bitPut (TeamPaint -> U32 accentFinish TeamPaint teamPaintAttribute) bitGet :: BitGet.BitGet TeamPaint bitGet :: BitGet TeamPaint bitGet = forall a. String -> BitGet a -> BitGet a BitGet.label String "TeamPaint" forall a b. (a -> b) -> a -> b $ do U8 team <- forall a. String -> BitGet a -> BitGet a BitGet.label String "team" BitGet U8 U8.bitGet U8 primaryColor <- forall a. String -> BitGet a -> BitGet a BitGet.label String "primaryColor" BitGet U8 U8.bitGet U8 accentColor <- forall a. String -> BitGet a -> BitGet a BitGet.label String "accentColor" BitGet U8 U8.bitGet U32 primaryFinish <- forall a. String -> BitGet a -> BitGet a BitGet.label String "primaryFinish" BitGet U32 U32.bitGet U32 accentFinish <- forall a. String -> BitGet a -> BitGet a BitGet.label String "accentFinish" BitGet U32 U32.bitGet forall (f :: * -> *) a. Applicative f => a -> f a pure 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 }