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 /= :: Demolish -> Demolish -> Bool $c/= :: Demolish -> Demolish -> Bool == :: Demolish -> Demolish -> Bool $c== :: 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 showList :: [Demolish] -> ShowS $cshowList :: [Demolish] -> ShowS show :: Demolish -> String $cshow :: Demolish -> String showsPrec :: Int -> Demolish -> ShowS $cshowsPrec :: Int -> 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 (f :: * -> *) a. Applicative f => a -> f a pure Demolish :: Bool -> U32 -> Bool -> U32 -> Vector -> Vector -> Demolish 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 = [Pair] -> Value Json.object [ String -> Bool -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "attacker_flag" (Bool -> Pair) -> Bool -> Pair forall a b. (a -> b) -> a -> b $ Demolish -> Bool attackerFlag Demolish x , String -> U32 -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "attacker_actor_id" (U32 -> Pair) -> U32 -> Pair forall a b. (a -> b) -> a -> b $ Demolish -> U32 attackerActorId Demolish x , String -> Bool -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "victim_flag" (Bool -> Pair) -> Bool -> Pair forall a b. (a -> b) -> a -> b $ Demolish -> Bool victimFlag Demolish x , String -> U32 -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "victim_actor_id" (U32 -> Pair) -> U32 -> Pair forall a b. (a -> b) -> a -> b $ Demolish -> U32 victimActorId Demolish x , String -> Vector -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "attacker_velocity" (Vector -> Pair) -> Vector -> Pair forall a b. (a -> b) -> a -> b $ Demolish -> Vector attackerVelocity Demolish x , String -> Vector -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "victim_velocity" (Vector -> Pair) -> Vector -> Pair 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 $ [(Pair, Bool)] -> Value Schema.object [ (String -> Value -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "attacker_flag" (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 "attacker_actor_id" (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 "victim_flag" (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 "victim_actor_id" (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 "attacker_velocity" (Value -> Pair) -> Value -> Pair forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema Vector.schema, Bool True) , (String -> Value -> Pair forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "victim_velocity" (Value -> Pair) -> Value -> Pair 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 = Bool -> U32 -> Bool -> U32 -> Vector -> Vector -> Demolish Demolish (Bool -> U32 -> Bool -> U32 -> Vector -> Vector -> Demolish) -> BitGet Bool -> BitGet (U32 -> Bool -> U32 -> Vector -> Vector -> Demolish) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> BitGet Bool BitGet.bool BitGet (U32 -> Bool -> U32 -> Vector -> Vector -> Demolish) -> BitGet U32 -> BitGet (Bool -> U32 -> Vector -> Vector -> Demolish) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> BitGet U32 U32.bitGet BitGet (Bool -> U32 -> Vector -> Vector -> Demolish) -> BitGet Bool -> BitGet (U32 -> Vector -> Vector -> Demolish) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> BitGet Bool BitGet.bool BitGet (U32 -> Vector -> Vector -> Demolish) -> BitGet U32 -> BitGet (Vector -> Vector -> Demolish) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> BitGet U32 U32.bitGet BitGet (Vector -> Vector -> Demolish) -> BitGet Vector -> BitGet (Vector -> Demolish) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Version -> BitGet Vector Vector.bitGet Version version BitGet (Vector -> Demolish) -> BitGet Vector -> BitGet Demolish forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Version -> BitGet Vector Vector.bitGet Version version