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