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 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 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 = forall a. String -> (Object -> Parser a) -> Value -> Parser a Json.withObject String "Demolish" forall a b. (a -> b) -> a -> b $ \Object object -> do Bool attackerFlag <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "attacker_flag" U32 attackerActorId <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "attacker_actor_id" Bool victimFlag <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "victim_flag" U32 victimActorId <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "victim_actor_id" Vector attackerVelocity <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "attacker_velocity" Vector victimVelocity <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "victim_velocity" 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 [ forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "attacker_flag" forall a b. (a -> b) -> a -> b $ Demolish -> Bool attackerFlag Demolish x , forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "attacker_actor_id" forall a b. (a -> b) -> a -> b $ Demolish -> U32 attackerActorId Demolish x , forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "victim_flag" forall a b. (a -> b) -> a -> b $ Demolish -> Bool victimFlag Demolish x , forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "victim_actor_id" forall a b. (a -> b) -> a -> b $ Demolish -> U32 victimActorId Demolish x , forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "attacker_velocity" forall a b. (a -> b) -> a -> b $ Demolish -> Vector attackerVelocity Demolish x , forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "victim_velocity" 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" 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 "attacker_flag" forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema Schema.boolean, Bool True) , (forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "attacker_actor_id" 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 "victim_flag" forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema Schema.boolean, Bool True) , (forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "victim_actor_id" 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 "attacker_velocity" forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema Vector.schema, Bool True) , (forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "victim_velocity" 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) forall a. Semigroup a => a -> a -> a <> U32 -> BitPut U32.bitPut (Demolish -> U32 attackerActorId Demolish demolishAttribute) forall a. Semigroup a => a -> a -> a <> Bool -> BitPut BitPut.bool (Demolish -> Bool victimFlag Demolish demolishAttribute) forall a. Semigroup a => a -> a -> a <> U32 -> BitPut U32.bitPut (Demolish -> U32 victimActorId Demolish demolishAttribute) forall a. Semigroup a => a -> a -> a <> Vector -> BitPut Vector.bitPut (Demolish -> Vector attackerVelocity Demolish demolishAttribute) 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 = forall a. String -> BitGet a -> BitGet a BitGet.label String "Demolish" forall a b. (a -> b) -> a -> b $ do Bool attackerFlag <- forall a. String -> BitGet a -> BitGet a BitGet.label String "attackerFlag" BitGet Bool BitGet.bool U32 attackerActorId <- forall a. String -> BitGet a -> BitGet a BitGet.label String "attackerActorId" BitGet U32 U32.bitGet Bool victimFlag <- forall a. String -> BitGet a -> BitGet a BitGet.label String "victimFlag" BitGet Bool BitGet.bool U32 victimActorId <- forall a. String -> BitGet a -> BitGet a BitGet.label String "victimActorId" BitGet U32 U32.bitGet Vector attackerVelocity <- forall a. String -> BitGet a -> BitGet a BitGet.label String "attackerVelocity" forall a b. (a -> b) -> a -> b $ Version -> BitGet Vector Vector.bitGet Version version Vector victimVelocity <- forall a. String -> BitGet a -> BitGet a BitGet.label String "victimVelocity" forall a b. (a -> b) -> a -> b $ Version -> BitGet Vector Vector.bitGet Version version 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 }