module Rattletrap.Type.Attribute.Demolish 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.Vector as Vector import qualified Rattletrap.Type.Version as Version import qualified Rattletrap.Utility.Json as Json data Demolish = Demolish { Demolish -> Bool attackerFlag :: Bool, Demolish -> U32 attackerActorId :: U32.U32, Demolish -> Bool victimFlag :: Bool, Demolish -> U32 victimActorId :: U32.U32, Demolish -> Vector attackerVelocity :: Vector.Vector, Demolish -> Vector victimVelocity :: Vector.Vector } deriving (Demolish -> Demolish -> Bool (Demolish -> Demolish -> Bool) -> (Demolish -> Demolish -> Bool) -> Eq Demolish forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: Demolish -> Demolish -> Bool == :: Demolish -> Demolish -> Bool $c/= :: Demolish -> Demolish -> Bool /= :: Demolish -> Demolish -> Bool Eq, Int -> Demolish -> ShowS [Demolish] -> ShowS Demolish -> String (Int -> Demolish -> ShowS) -> (Demolish -> String) -> ([Demolish] -> ShowS) -> Show Demolish forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> Demolish -> ShowS showsPrec :: Int -> Demolish -> ShowS $cshow :: Demolish -> String show :: Demolish -> String $cshowList :: [Demolish] -> ShowS showList :: [Demolish] -> ShowS Show) instance Json.FromJSON Demolish where parseJSON :: Value -> Parser Demolish parseJSON = String -> (Object -> Parser Demolish) -> Value -> Parser Demolish forall a. String -> (Object -> Parser a) -> Value -> Parser a Json.withObject String "Demolish" ((Object -> Parser Demolish) -> Value -> Parser Demolish) -> (Object -> Parser Demolish) -> Value -> Parser Demolish forall a b. (a -> b) -> a -> b $ \Object object -> do Bool attackerFlag <- Object -> String -> Parser Bool forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "attacker_flag" U32 attackerActorId <- Object -> String -> Parser U32 forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "attacker_actor_id" Bool victimFlag <- Object -> String -> Parser Bool forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "victim_flag" U32 victimActorId <- Object -> String -> Parser U32 forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "victim_actor_id" Vector attackerVelocity <- Object -> String -> Parser Vector forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "attacker_velocity" Vector victimVelocity <- Object -> String -> Parser Vector forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "victim_velocity" Demolish -> Parser Demolish forall a. a -> Parser a forall (f :: * -> *) a. Applicative f => a -> f a pure Demolish { Bool attackerFlag :: Bool attackerFlag :: Bool attackerFlag, U32 attackerActorId :: U32 attackerActorId :: U32 attackerActorId, Bool victimFlag :: Bool victimFlag :: Bool victimFlag, U32 victimActorId :: U32 victimActorId :: U32 victimActorId, Vector attackerVelocity :: Vector attackerVelocity :: Vector attackerVelocity, Vector victimVelocity :: Vector victimVelocity :: Vector victimVelocity } instance Json.ToJSON Demolish where toJSON :: Demolish -> Value toJSON Demolish x = [(Key, Value)] -> Value Json.object [ String -> Bool -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "attacker_flag" (Bool -> (Key, Value)) -> Bool -> (Key, Value) forall a b. (a -> b) -> a -> b $ Demolish -> Bool attackerFlag Demolish x, String -> U32 -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "attacker_actor_id" (U32 -> (Key, Value)) -> U32 -> (Key, Value) forall a b. (a -> b) -> a -> b $ Demolish -> U32 attackerActorId Demolish x, String -> Bool -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "victim_flag" (Bool -> (Key, Value)) -> Bool -> (Key, Value) forall a b. (a -> b) -> a -> b $ Demolish -> Bool victimFlag Demolish x, String -> U32 -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "victim_actor_id" (U32 -> (Key, Value)) -> U32 -> (Key, Value) forall a b. (a -> b) -> a -> b $ Demolish -> U32 victimActorId Demolish x, String -> Vector -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "attacker_velocity" (Vector -> (Key, Value)) -> Vector -> (Key, Value) forall a b. (a -> b) -> a -> b $ Demolish -> Vector attackerVelocity Demolish x, String -> Vector -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "victim_velocity" (Vector -> (Key, Value)) -> Vector -> (Key, Value) forall a b. (a -> b) -> a -> b $ Demolish -> Vector victimVelocity Demolish x ] schema :: Schema.Schema schema :: Schema schema = String -> Value -> Schema Schema.named String "attribute-demolish" (Value -> Schema) -> Value -> Schema forall a b. (a -> b) -> a -> b $ [((Key, Value), Bool)] -> Value Schema.object [ (String -> Value -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "attacker_flag" (Value -> (Key, Value)) -> Value -> (Key, Value) forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema Schema.boolean, Bool True), (String -> Value -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "attacker_actor_id" (Value -> (Key, Value)) -> Value -> (Key, Value) forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema U32.schema, Bool True), (String -> Value -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "victim_flag" (Value -> (Key, Value)) -> Value -> (Key, Value) forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema Schema.boolean, Bool True), (String -> Value -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "victim_actor_id" (Value -> (Key, Value)) -> Value -> (Key, Value) forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema U32.schema, Bool True), (String -> Value -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "attacker_velocity" (Value -> (Key, Value)) -> Value -> (Key, Value) forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema Vector.schema, Bool True), (String -> Value -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "victim_velocity" (Value -> (Key, Value)) -> Value -> (Key, Value) forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema Vector.schema, Bool True) ] bitPut :: Demolish -> BitPut.BitPut bitPut :: Demolish -> BitPut bitPut Demolish demolishAttribute = Bool -> BitPut BitPut.bool (Demolish -> Bool attackerFlag Demolish demolishAttribute) BitPut -> BitPut -> BitPut forall a. Semigroup a => a -> a -> a <> U32 -> BitPut U32.bitPut (Demolish -> U32 attackerActorId Demolish demolishAttribute) BitPut -> BitPut -> BitPut forall a. Semigroup a => a -> a -> a <> Bool -> BitPut BitPut.bool (Demolish -> Bool victimFlag Demolish demolishAttribute) BitPut -> BitPut -> BitPut forall a. Semigroup a => a -> a -> a <> U32 -> BitPut U32.bitPut (Demolish -> U32 victimActorId Demolish demolishAttribute) BitPut -> BitPut -> BitPut forall a. Semigroup a => a -> a -> a <> Vector -> BitPut Vector.bitPut (Demolish -> Vector attackerVelocity Demolish demolishAttribute) BitPut -> BitPut -> BitPut forall a. Semigroup a => a -> a -> a <> Vector -> BitPut Vector.bitPut (Demolish -> Vector victimVelocity Demolish demolishAttribute) bitGet :: Version.Version -> BitGet.BitGet Demolish bitGet :: Version -> BitGet Demolish bitGet Version version = String -> BitGet Demolish -> BitGet Demolish forall a. String -> BitGet a -> BitGet a BitGet.label String "Demolish" (BitGet Demolish -> BitGet Demolish) -> BitGet Demolish -> BitGet Demolish forall a b. (a -> b) -> a -> b $ do Bool attackerFlag <- String -> BitGet Bool -> BitGet Bool forall a. String -> BitGet a -> BitGet a BitGet.label String "attackerFlag" BitGet Bool BitGet.bool U32 attackerActorId <- String -> BitGet U32 -> BitGet U32 forall a. String -> BitGet a -> BitGet a BitGet.label String "attackerActorId" BitGet U32 U32.bitGet Bool victimFlag <- String -> BitGet Bool -> BitGet Bool forall a. String -> BitGet a -> BitGet a BitGet.label String "victimFlag" BitGet Bool BitGet.bool U32 victimActorId <- String -> BitGet U32 -> BitGet U32 forall a. String -> BitGet a -> BitGet a BitGet.label String "victimActorId" BitGet U32 U32.bitGet Vector attackerVelocity <- String -> BitGet Vector -> BitGet Vector forall a. String -> BitGet a -> BitGet a BitGet.label String "attackerVelocity" (BitGet Vector -> BitGet Vector) -> BitGet Vector -> BitGet Vector forall a b. (a -> b) -> a -> b $ Version -> BitGet Vector Vector.bitGet Version version Vector victimVelocity <- String -> BitGet Vector -> BitGet Vector forall a. String -> BitGet a -> BitGet a BitGet.label String "victimVelocity" (BitGet Vector -> BitGet Vector) -> BitGet Vector -> BitGet Vector forall a b. (a -> b) -> a -> b $ Version -> BitGet Vector Vector.bitGet Version version Demolish -> BitGet Demolish forall a. a -> Get BitString Identity a forall (f :: * -> *) a. Applicative f => a -> f a pure Demolish { Bool attackerFlag :: Bool attackerFlag :: Bool attackerFlag, U32 attackerActorId :: U32 attackerActorId :: U32 attackerActorId, Bool victimFlag :: Bool victimFlag :: Bool victimFlag, U32 victimActorId :: U32 victimActorId :: U32 victimActorId, Vector attackerVelocity :: Vector attackerVelocity :: Vector attackerVelocity, Vector victimVelocity :: Vector victimVelocity :: Vector victimVelocity }