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 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: DamageState -> DamageState -> Bool $c/= :: DamageState -> DamageState -> Bool == :: DamageState -> DamageState -> Bool $c== :: DamageState -> DamageState -> Bool Eq, Int -> DamageState -> ShowS [DamageState] -> ShowS DamageState -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [DamageState] -> ShowS $cshowList :: [DamageState] -> ShowS show :: DamageState -> String $cshow :: DamageState -> String showsPrec :: Int -> DamageState -> ShowS $cshowsPrec :: Int -> DamageState -> ShowS Show) instance Json.FromJSON DamageState where parseJSON :: Value -> Parser DamageState parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a Json.withObject String "DamageState" forall a b. (a -> b) -> a -> b $ \Object object -> do U8 unknown1 <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "unknown1" Bool unknown2 <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "unknown2" I32 unknown3 <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "unknown3" Vector unknown4 <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "unknown4" Bool unknown5 <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "unknown5" Bool unknown6 <- forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "unknown6" 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 [ forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "unknown1" forall a b. (a -> b) -> a -> b $ DamageState -> U8 unknown1 DamageState x , forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "unknown2" forall a b. (a -> b) -> a -> b $ DamageState -> Bool unknown2 DamageState x , forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "unknown3" forall a b. (a -> b) -> a -> b $ DamageState -> I32 unknown3 DamageState x , forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "unknown4" forall a b. (a -> b) -> a -> b $ DamageState -> Vector unknown4 DamageState x , forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "unknown5" forall a b. (a -> b) -> a -> b $ DamageState -> Bool unknown5 DamageState x , forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "unknown6" 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" 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 "unknown1" forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema U8.schema, Bool True) , (forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "unknown2" 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 "unknown3" forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema I32.schema, Bool True) , (forall value pair. (ToJSON value, KeyValue pair) => String -> value -> pair Json.pair String "unknown4" 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 "unknown5" 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 "unknown6" 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) forall a. Semigroup a => a -> a -> a <> Bool -> BitPut BitPut.bool (DamageState -> Bool unknown2 DamageState damageStateAttribute) forall a. Semigroup a => a -> a -> a <> I32 -> BitPut I32.bitPut (DamageState -> I32 unknown3 DamageState damageStateAttribute) forall a. Semigroup a => a -> a -> a <> Vector -> BitPut Vector.bitPut (DamageState -> Vector unknown4 DamageState damageStateAttribute) forall a. Semigroup a => a -> a -> a <> Bool -> BitPut BitPut.bool (DamageState -> Bool unknown5 DamageState damageStateAttribute) 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 = forall a. String -> BitGet a -> BitGet a BitGet.label String "CustomDemolish" forall a b. (a -> b) -> a -> b $ do U8 unknown1 <- forall a. String -> BitGet a -> BitGet a BitGet.label String "unknown1" BitGet U8 U8.bitGet Bool unknown2 <- forall a. String -> BitGet a -> BitGet a BitGet.label String "unknown2" BitGet Bool BitGet.bool I32 unknown3 <- forall a. String -> BitGet a -> BitGet a BitGet.label String "unknown3" BitGet I32 I32.bitGet Vector unknown4 <- forall a. String -> BitGet a -> BitGet a BitGet.label String "unknown4" forall a b. (a -> b) -> a -> b $ Version -> BitGet Vector Vector.bitGet Version version Bool unknown5 <- forall a. String -> BitGet a -> BitGet a BitGet.label String "unknown5" BitGet Bool BitGet.bool Bool unknown6 <- forall a. String -> BitGet a -> BitGet a BitGet.label String "unknown6" BitGet Bool BitGet.bool 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 }