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 unknown1 <- Object -> String -> Parser U8 forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "unknown1" unknown2 <- Json.required object "unknown2" unknown3 <- Json.required object "unknown3" unknown4 <- Json.required object "unknown4" unknown5 <- Json.required object "unknown5" unknown6 <- Json.required object "unknown6" pure DamageState { unknown1, unknown2, unknown3, unknown4, unknown5, 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 "DamageState" (BitGet DamageState -> BitGet DamageState) -> BitGet DamageState -> BitGet DamageState forall a b. (a -> b) -> a -> b $ do unknown1 <- String -> BitGet U8 -> BitGet U8 forall a. String -> BitGet a -> BitGet a BitGet.label String "unknown1" BitGet U8 U8.bitGet unknown2 <- BitGet.label "unknown2" BitGet.bool unknown3 <- BitGet.label "unknown3" I32.bitGet unknown4 <- BitGet.label "unknown4" $ Vector.bitGet version unknown5 <- BitGet.label "unknown5" BitGet.bool unknown6 <- BitGet.label "unknown6" BitGet.bool pure DamageState { unknown1, unknown2, unknown3, unknown4, unknown5, unknown6 }