module Rattletrap.Type.Attribute.CustomDemolishExtended where import qualified Rattletrap.BitGet as BitGet import qualified Rattletrap.BitPut as BitPut import qualified Rattletrap.Schema as Schema import qualified Rattletrap.Type.Attribute.CustomDemolish as CustomDemolish import qualified Rattletrap.Type.ObjectTarget as ObjectTarget import qualified Rattletrap.Type.Version as Version import qualified Rattletrap.Utility.Json as Json data CustomDemolishExtended = CustomDemolishExtended { CustomDemolishExtended -> ObjectTarget attackerPri :: ObjectTarget.ObjectTarget, CustomDemolishExtended -> ObjectTarget selfDemoFx :: ObjectTarget.ObjectTarget, CustomDemolishExtended -> Bool selfDemolish :: Bool, CustomDemolishExtended -> CustomDemolish customDemolish :: CustomDemolish.CustomDemolish } deriving (CustomDemolishExtended -> CustomDemolishExtended -> Bool (CustomDemolishExtended -> CustomDemolishExtended -> Bool) -> (CustomDemolishExtended -> CustomDemolishExtended -> Bool) -> Eq CustomDemolishExtended forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: CustomDemolishExtended -> CustomDemolishExtended -> Bool == :: CustomDemolishExtended -> CustomDemolishExtended -> Bool $c/= :: CustomDemolishExtended -> CustomDemolishExtended -> Bool /= :: CustomDemolishExtended -> CustomDemolishExtended -> Bool Eq, Int -> CustomDemolishExtended -> ShowS [CustomDemolishExtended] -> ShowS CustomDemolishExtended -> String (Int -> CustomDemolishExtended -> ShowS) -> (CustomDemolishExtended -> String) -> ([CustomDemolishExtended] -> ShowS) -> Show CustomDemolishExtended forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> CustomDemolishExtended -> ShowS showsPrec :: Int -> CustomDemolishExtended -> ShowS $cshow :: CustomDemolishExtended -> String show :: CustomDemolishExtended -> String $cshowList :: [CustomDemolishExtended] -> ShowS showList :: [CustomDemolishExtended] -> ShowS Show) instance Json.FromJSON CustomDemolishExtended where parseJSON :: Value -> Parser CustomDemolishExtended parseJSON = String -> (Object -> Parser CustomDemolishExtended) -> Value -> Parser CustomDemolishExtended forall a. String -> (Object -> Parser a) -> Value -> Parser a Json.withObject String "CustomDemolishExtended" ((Object -> Parser CustomDemolishExtended) -> Value -> Parser CustomDemolishExtended) -> (Object -> Parser CustomDemolishExtended) -> Value -> Parser CustomDemolishExtended forall a b. (a -> b) -> a -> b $ \Object object -> do ObjectTarget attackerPri <- Object -> String -> Parser ObjectTarget forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "attacker_pri" ObjectTarget selfDemoFx <- Object -> String -> Parser ObjectTarget forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "self_demo_fx" Bool selfDemolish <- Object -> String -> Parser Bool forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "self_demolish" CustomDemolish customDemolish <- Object -> String -> Parser CustomDemolish forall value. FromJSON value => Object -> String -> Parser value Json.required Object object String "custom_demolish" CustomDemolishExtended -> Parser CustomDemolishExtended forall a. a -> Parser a forall (f :: * -> *) a. Applicative f => a -> f a pure CustomDemolishExtended { ObjectTarget attackerPri :: ObjectTarget attackerPri :: ObjectTarget attackerPri, ObjectTarget selfDemoFx :: ObjectTarget selfDemoFx :: ObjectTarget selfDemoFx, Bool selfDemolish :: Bool selfDemolish :: Bool selfDemolish, CustomDemolish customDemolish :: CustomDemolish customDemolish :: CustomDemolish customDemolish } instance Json.ToJSON CustomDemolishExtended where toJSON :: CustomDemolishExtended -> Value toJSON CustomDemolishExtended x = [(Key, Value)] -> Value Json.object [ String -> ObjectTarget -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "attacker_pri" (ObjectTarget -> (Key, Value)) -> ObjectTarget -> (Key, Value) forall a b. (a -> b) -> a -> b $ CustomDemolishExtended -> ObjectTarget attackerPri CustomDemolishExtended x, String -> ObjectTarget -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "self_demo_fx" (ObjectTarget -> (Key, Value)) -> ObjectTarget -> (Key, Value) forall a b. (a -> b) -> a -> b $ CustomDemolishExtended -> ObjectTarget selfDemoFx CustomDemolishExtended x, String -> Bool -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "self_demolish" (Bool -> (Key, Value)) -> Bool -> (Key, Value) forall a b. (a -> b) -> a -> b $ CustomDemolishExtended -> Bool selfDemolish CustomDemolishExtended x, String -> CustomDemolish -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "custom_demolish" (CustomDemolish -> (Key, Value)) -> CustomDemolish -> (Key, Value) forall a b. (a -> b) -> a -> b $ CustomDemolishExtended -> CustomDemolish customDemolish CustomDemolishExtended x ] schema :: Schema.Schema schema :: Schema schema = String -> Value -> Schema Schema.named String "attribute-custom-demolish-extended" (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 "attacker_pri" (Value -> (Key, Value)) -> Value -> (Key, Value) forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema ObjectTarget.schema, Bool True), (String -> Value -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "self_demo_fx" (Value -> (Key, Value)) -> Value -> (Key, Value) forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema ObjectTarget.schema, Bool True), (String -> Value -> (Key, Value) forall value e p. (ToJSON value, KeyValue e p) => String -> value -> p Json.pair String "self_demolish" (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 "custom_demolish" (Value -> (Key, Value)) -> Value -> (Key, Value) forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema CustomDemolish.schema, Bool True) ] bitPut :: CustomDemolishExtended -> BitPut.BitPut bitPut :: CustomDemolishExtended -> BitPut bitPut CustomDemolishExtended demolishAttribute = ObjectTarget -> BitPut ObjectTarget.bitPut (CustomDemolishExtended -> ObjectTarget attackerPri CustomDemolishExtended demolishAttribute) BitPut -> BitPut -> BitPut forall a. Semigroup a => a -> a -> a <> ObjectTarget -> BitPut ObjectTarget.bitPut (CustomDemolishExtended -> ObjectTarget selfDemoFx CustomDemolishExtended demolishAttribute) BitPut -> BitPut -> BitPut forall a. Semigroup a => a -> a -> a <> Bool -> BitPut BitPut.bool (CustomDemolishExtended -> Bool selfDemolish CustomDemolishExtended demolishAttribute) BitPut -> BitPut -> BitPut forall a. Semigroup a => a -> a -> a <> CustomDemolish -> BitPut CustomDemolish.bitPut (CustomDemolishExtended -> CustomDemolish customDemolish CustomDemolishExtended demolishAttribute) bitGet :: Version.Version -> BitGet.BitGet CustomDemolishExtended bitGet :: Version -> BitGet CustomDemolishExtended bitGet Version version = String -> BitGet CustomDemolishExtended -> BitGet CustomDemolishExtended forall a. String -> BitGet a -> BitGet a BitGet.label String "CustomDemolishExtended" (BitGet CustomDemolishExtended -> BitGet CustomDemolishExtended) -> BitGet CustomDemolishExtended -> BitGet CustomDemolishExtended forall a b. (a -> b) -> a -> b $ do ObjectTarget attackerPri <- String -> BitGet ObjectTarget -> BitGet ObjectTarget forall a. String -> BitGet a -> BitGet a BitGet.label String "attackerPri" BitGet ObjectTarget ObjectTarget.bitGet ObjectTarget selfDemoFx <- String -> BitGet ObjectTarget -> BitGet ObjectTarget forall a. String -> BitGet a -> BitGet a BitGet.label String "selfDemoFx" BitGet ObjectTarget ObjectTarget.bitGet Bool selfDemolish <- String -> BitGet Bool -> BitGet Bool forall a. String -> BitGet a -> BitGet a BitGet.label String "selfDemolish" BitGet Bool BitGet.bool CustomDemolish customDemolish <- String -> BitGet CustomDemolish -> BitGet CustomDemolish forall a. String -> BitGet a -> BitGet a BitGet.label String "customDemolish" (BitGet CustomDemolish -> BitGet CustomDemolish) -> BitGet CustomDemolish -> BitGet CustomDemolish forall a b. (a -> b) -> a -> b $ Version -> BitGet CustomDemolish CustomDemolish.bitGet Version version CustomDemolishExtended -> BitGet CustomDemolishExtended forall a. a -> Get BitString Identity a forall (f :: * -> *) a. Applicative f => a -> f a pure CustomDemolishExtended { ObjectTarget attackerPri :: ObjectTarget attackerPri :: ObjectTarget attackerPri, ObjectTarget selfDemoFx :: ObjectTarget selfDemoFx :: ObjectTarget selfDemoFx, Bool selfDemolish :: Bool selfDemolish :: Bool selfDemolish, CustomDemolish customDemolish :: CustomDemolish customDemolish :: CustomDemolish customDemolish }