module Rattletrap.Type.Attribute.AppliedDamage where import qualified Rattletrap.BitGet as BitGet import qualified Rattletrap.BitPut as BitPut import qualified Rattletrap.Schema as Schema import qualified Rattletrap.Type.I32 as I32 import qualified Rattletrap.Type.U8 as U8 import qualified Rattletrap.Type.Vector as Vector import qualified Rattletrap.Type.Version as Version import qualified Rattletrap.Utility.Json as Json data AppliedDamage = AppliedDamage { AppliedDamage -> U8 unknown1 :: U8.U8, AppliedDamage -> Vector location :: Vector.Vector, AppliedDamage -> I32 unknown3 :: I32.I32, AppliedDamage -> I32 unknown4 :: I32.I32 } deriving (AppliedDamage -> AppliedDamage -> Bool (AppliedDamage -> AppliedDamage -> Bool) -> (AppliedDamage -> AppliedDamage -> Bool) -> Eq AppliedDamage forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: AppliedDamage -> AppliedDamage -> Bool == :: AppliedDamage -> AppliedDamage -> Bool $c/= :: AppliedDamage -> AppliedDamage -> Bool /= :: AppliedDamage -> AppliedDamage -> Bool Eq, Int -> AppliedDamage -> ShowS [AppliedDamage] -> ShowS AppliedDamage -> String (Int -> AppliedDamage -> ShowS) -> (AppliedDamage -> String) -> ([AppliedDamage] -> ShowS) -> Show AppliedDamage forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> AppliedDamage -> ShowS showsPrec :: Int -> AppliedDamage -> ShowS $cshow :: AppliedDamage -> String show :: AppliedDamage -> String $cshowList :: [AppliedDamage] -> ShowS showList :: [AppliedDamage] -> ShowS Show) instance Json.FromJSON AppliedDamage where parseJSON :: Value -> Parser AppliedDamage parseJSON = String -> (Object -> Parser AppliedDamage) -> Value -> Parser AppliedDamage forall a. String -> (Object -> Parser a) -> Value -> Parser a Json.withObject String "AppliedDamage" ((Object -> Parser AppliedDamage) -> Value -> Parser AppliedDamage) -> (Object -> Parser AppliedDamage) -> Value -> Parser AppliedDamage forall a b. (a -> b) -> a -> b $ \Object object -> do U8 unknown1 <- Object -> String -> Parser U8 forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "unknown1" Vector location <- Object -> String -> Parser Vector forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "location" I32 unknown3 <- Object -> String -> Parser I32 forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "unknown3" I32 unknown4 <- Object -> String -> Parser I32 forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "unknown4" AppliedDamage -> Parser AppliedDamage forall a. a -> Parser a forall (f :: * -> *) a. Applicative f => a -> f a pure AppliedDamage {U8 unknown1 :: U8 unknown1 :: U8 unknown1, Vector location :: Vector location :: Vector location, I32 unknown3 :: I32 unknown3 :: I32 unknown3, I32 unknown4 :: I32 unknown4 :: I32 unknown4} instance Json.ToJSON AppliedDamage where toJSON :: AppliedDamage -> Value toJSON AppliedDamage x = [(Key, Value)] -> Value Json.object [ String -> U8 -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "unknown1" (U8 -> (Key, Value)) -> U8 -> (Key, Value) forall a b. (a -> b) -> a -> b $ AppliedDamage -> U8 unknown1 AppliedDamage x, String -> Vector -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "location" (Vector -> (Key, Value)) -> Vector -> (Key, Value) forall a b. (a -> b) -> a -> b $ AppliedDamage -> Vector location AppliedDamage x, String -> I32 -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "unknown3" (I32 -> (Key, Value)) -> I32 -> (Key, Value) forall a b. (a -> b) -> a -> b $ AppliedDamage -> I32 unknown3 AppliedDamage x, String -> I32 -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "unknown4" (I32 -> (Key, Value)) -> I32 -> (Key, Value) forall a b. (a -> b) -> a -> b $ AppliedDamage -> I32 unknown4 AppliedDamage x ] schema :: Schema.Schema schema :: Schema schema = String -> Value -> Schema Schema.named String "attribute-applied-damage" (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 "unknown1" (Value -> (Key, Value)) -> Value -> (Key, Value) forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema U8.schema, Bool True), (String -> Value -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "location" (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 "unknown3" (Value -> (Key, Value)) -> Value -> (Key, Value) forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema I32.schema, Bool True), (String -> Value -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "unknown4" (Value -> (Key, Value)) -> Value -> (Key, Value) forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema I32.schema, Bool True) ] bitPut :: AppliedDamage -> BitPut.BitPut bitPut :: AppliedDamage -> BitPut bitPut AppliedDamage appliedDamageAttribute = U8 -> BitPut U8.bitPut (AppliedDamage -> U8 unknown1 AppliedDamage appliedDamageAttribute) BitPut -> BitPut -> BitPut forall a. Semigroup a => a -> a -> a <> Vector -> BitPut Vector.bitPut (AppliedDamage -> Vector location AppliedDamage appliedDamageAttribute) BitPut -> BitPut -> BitPut forall a. Semigroup a => a -> a -> a <> I32 -> BitPut I32.bitPut (AppliedDamage -> I32 unknown3 AppliedDamage appliedDamageAttribute) BitPut -> BitPut -> BitPut forall a. Semigroup a => a -> a -> a <> I32 -> BitPut I32.bitPut (AppliedDamage -> I32 unknown4 AppliedDamage appliedDamageAttribute) bitGet :: Version.Version -> BitGet.BitGet AppliedDamage bitGet :: Version -> BitGet AppliedDamage bitGet Version version = String -> BitGet AppliedDamage -> BitGet AppliedDamage forall a. String -> BitGet a -> BitGet a BitGet.label String "AppliedDamage" (BitGet AppliedDamage -> BitGet AppliedDamage) -> BitGet AppliedDamage -> BitGet AppliedDamage forall a b. (a -> b) -> a -> b $ do U8 unknown1 <- String -> BitGet U8 -> BitGet U8 forall a. String -> BitGet a -> BitGet a BitGet.label String "unknown1" BitGet U8 U8.bitGet Vector location <- String -> BitGet Vector -> BitGet Vector forall a. String -> BitGet a -> BitGet a BitGet.label String "location" (BitGet Vector -> BitGet Vector) -> BitGet Vector -> BitGet Vector forall a b. (a -> b) -> a -> b $ Version -> BitGet Vector Vector.bitGet Version version I32 unknown3 <- String -> BitGet I32 -> BitGet I32 forall a. String -> BitGet a -> BitGet a BitGet.label String "unknown3" BitGet I32 I32.bitGet I32 unknown4 <- String -> BitGet I32 -> BitGet I32 forall a. String -> BitGet a -> BitGet a BitGet.label String "unknown4" BitGet I32 I32.bitGet AppliedDamage -> BitGet AppliedDamage forall a. a -> Get BitString Identity a forall (f :: * -> *) a. Applicative f => a -> f a pure AppliedDamage {U8 unknown1 :: U8 unknown1 :: U8 unknown1, Vector location :: Vector location :: Vector location, I32 unknown3 :: I32 unknown3 :: I32 unknown3, I32 unknown4 :: I32 unknown4 :: I32 unknown4}