octane 0.15.0 → 0.16.0
raw patch · 65 files changed
+3437/−1038 lines, 65 filesdep +tasty-quickcheckdep ~binarydep ~binary-bitsdep ~bytestringPVP ok
version bump matches the API change (PVP)
Dependencies added: tasty-quickcheck
Dependency ranges changed: binary, binary-bits, bytestring, containers, text
API changes (from Hackage documentation)
- Octane.Type.Property: ArrayProperty :: Word64 -> List (Dictionary Property) -> ArrayProperty
- Octane.Type.Property: BoolProperty :: Word64 -> Boolean -> BoolProperty
- Octane.Type.Property: ByteProperty :: Word64 -> Text -> Text -> ByteProperty
- Octane.Type.Property: FloatProperty :: Word64 -> Float32 -> FloatProperty
- Octane.Type.Property: IntProperty :: Word64 -> Int32 -> IntProperty
- Octane.Type.Property: NameProperty :: Word64 -> Text -> NameProperty
- Octane.Type.Property: QWordProperty :: Word64 -> Word64 -> QWordProperty
- Octane.Type.Property: StrProperty :: Word64 -> Text -> StrProperty
- Octane.Type.Property: [arrayPropertyContent] :: ArrayProperty -> List (Dictionary Property)
- Octane.Type.Property: [arrayPropertySize] :: ArrayProperty -> Word64
- Octane.Type.Property: [boolPropertyContent] :: BoolProperty -> Boolean
- Octane.Type.Property: [boolPropertySize] :: BoolProperty -> Word64
- Octane.Type.Property: [bytePropertyKey] :: ByteProperty -> Text
- Octane.Type.Property: [bytePropertySize] :: ByteProperty -> Word64
- Octane.Type.Property: [bytePropertyValue] :: ByteProperty -> Text
- Octane.Type.Property: [floatPropertyContent] :: FloatProperty -> Float32
- Octane.Type.Property: [floatPropertySize] :: FloatProperty -> Word64
- Octane.Type.Property: [intPropertyContent] :: IntProperty -> Int32
- Octane.Type.Property: [intPropertySize] :: IntProperty -> Word64
- Octane.Type.Property: [namePropertyContent] :: NameProperty -> Text
- Octane.Type.Property: [namePropertySize] :: NameProperty -> Word64
- Octane.Type.Property: [qWordPropertyContent] :: QWordProperty -> Word64
- Octane.Type.Property: [qWordPropertySize] :: QWordProperty -> Word64
- Octane.Type.Property: [strPropertyContent] :: StrProperty -> Text
- Octane.Type.Property: [strPropertySize] :: StrProperty -> Word64
- Octane.Type.Property: data ArrayProperty
- Octane.Type.Property: data BoolProperty
- Octane.Type.Property: data ByteProperty
- Octane.Type.Property: data FloatProperty
- Octane.Type.Property: data IntProperty
- Octane.Type.Property: data NameProperty
- Octane.Type.Property: data QWordProperty
- Octane.Type.Property: data StrProperty
- Octane.Type.Property: instance Control.DeepSeq.NFData Octane.Type.Property.ArrayProperty
- Octane.Type.Property: instance Control.DeepSeq.NFData Octane.Type.Property.BoolProperty
- Octane.Type.Property: instance Control.DeepSeq.NFData Octane.Type.Property.ByteProperty
- Octane.Type.Property: instance Control.DeepSeq.NFData Octane.Type.Property.FloatProperty
- Octane.Type.Property: instance Control.DeepSeq.NFData Octane.Type.Property.IntProperty
- Octane.Type.Property: instance Control.DeepSeq.NFData Octane.Type.Property.NameProperty
- Octane.Type.Property: instance Control.DeepSeq.NFData Octane.Type.Property.QWordProperty
- Octane.Type.Property: instance Control.DeepSeq.NFData Octane.Type.Property.StrProperty
- Octane.Type.Property: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Property.ArrayProperty
- Octane.Type.Property: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Property.BoolProperty
- Octane.Type.Property: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Property.ByteProperty
- Octane.Type.Property: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Property.FloatProperty
- Octane.Type.Property: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Property.IntProperty
- Octane.Type.Property: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Property.NameProperty
- Octane.Type.Property: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Property.QWordProperty
- Octane.Type.Property: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Property.StrProperty
- Octane.Type.Property: instance Data.Binary.Class.Binary Octane.Type.Property.ArrayProperty
- Octane.Type.Property: instance Data.Binary.Class.Binary Octane.Type.Property.BoolProperty
- Octane.Type.Property: instance Data.Binary.Class.Binary Octane.Type.Property.ByteProperty
- Octane.Type.Property: instance Data.Binary.Class.Binary Octane.Type.Property.FloatProperty
- Octane.Type.Property: instance Data.Binary.Class.Binary Octane.Type.Property.IntProperty
- Octane.Type.Property: instance Data.Binary.Class.Binary Octane.Type.Property.NameProperty
- Octane.Type.Property: instance Data.Binary.Class.Binary Octane.Type.Property.QWordProperty
- Octane.Type.Property: instance Data.Binary.Class.Binary Octane.Type.Property.StrProperty
- Octane.Type.Property: instance Data.OverloadedRecords.HasField "content" Octane.Type.Property.ArrayProperty (Octane.Type.List.List (Octane.Type.Dictionary.Dictionary Octane.Type.Property.Property))
- Octane.Type.Property: instance Data.OverloadedRecords.HasField "content" Octane.Type.Property.BoolProperty Octane.Type.Boolean.Boolean
- Octane.Type.Property: instance Data.OverloadedRecords.HasField "content" Octane.Type.Property.FloatProperty Octane.Type.Float32.Float32
- Octane.Type.Property: instance Data.OverloadedRecords.HasField "content" Octane.Type.Property.IntProperty Octane.Type.Int32.Int32
- Octane.Type.Property: instance Data.OverloadedRecords.HasField "content" Octane.Type.Property.NameProperty Octane.Type.Text.Text
- Octane.Type.Property: instance Data.OverloadedRecords.HasField "content" Octane.Type.Property.QWordProperty Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.HasField "content" Octane.Type.Property.StrProperty Octane.Type.Text.Text
- Octane.Type.Property: instance Data.OverloadedRecords.HasField "key" Octane.Type.Property.ByteProperty Octane.Type.Text.Text
- Octane.Type.Property: instance Data.OverloadedRecords.HasField "size" Octane.Type.Property.ArrayProperty Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.HasField "size" Octane.Type.Property.BoolProperty Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.HasField "size" Octane.Type.Property.ByteProperty Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.HasField "size" Octane.Type.Property.FloatProperty Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.HasField "size" Octane.Type.Property.IntProperty Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.HasField "size" Octane.Type.Property.NameProperty Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.HasField "size" Octane.Type.Property.QWordProperty Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.HasField "size" Octane.Type.Property.StrProperty Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.HasField "value" Octane.Type.Property.ByteProperty Octane.Type.Text.Text
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyField "content" Octane.Type.Property.ArrayProperty Octane.Type.Property.ArrayProperty (Octane.Type.List.List (Octane.Type.Dictionary.Dictionary Octane.Type.Property.Property)) (Octane.Type.List.List (Octane.Type.Dictionary.Dictionary Octane.Type.Property.Property))
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyField "content" Octane.Type.Property.BoolProperty Octane.Type.Property.BoolProperty Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyField "content" Octane.Type.Property.FloatProperty Octane.Type.Property.FloatProperty Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyField "content" Octane.Type.Property.IntProperty Octane.Type.Property.IntProperty Octane.Type.Int32.Int32 Octane.Type.Int32.Int32
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyField "content" Octane.Type.Property.NameProperty Octane.Type.Property.NameProperty Octane.Type.Text.Text Octane.Type.Text.Text
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyField "content" Octane.Type.Property.QWordProperty Octane.Type.Property.QWordProperty Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyField "content" Octane.Type.Property.StrProperty Octane.Type.Property.StrProperty Octane.Type.Text.Text Octane.Type.Text.Text
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyField "key" Octane.Type.Property.ByteProperty Octane.Type.Property.ByteProperty Octane.Type.Text.Text Octane.Type.Text.Text
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyField "size" Octane.Type.Property.ArrayProperty Octane.Type.Property.ArrayProperty Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyField "size" Octane.Type.Property.BoolProperty Octane.Type.Property.BoolProperty Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyField "size" Octane.Type.Property.ByteProperty Octane.Type.Property.ByteProperty Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyField "size" Octane.Type.Property.FloatProperty Octane.Type.Property.FloatProperty Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyField "size" Octane.Type.Property.IntProperty Octane.Type.Property.IntProperty Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyField "size" Octane.Type.Property.NameProperty Octane.Type.Property.NameProperty Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyField "size" Octane.Type.Property.QWordProperty Octane.Type.Property.QWordProperty Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyField "size" Octane.Type.Property.StrProperty Octane.Type.Property.StrProperty Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyField "value" Octane.Type.Property.ByteProperty Octane.Type.Property.ByteProperty Octane.Type.Text.Text Octane.Type.Text.Text
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "content" (Octane.Type.List.List (Octane.Type.Dictionary.Dictionary Octane.Type.Property.Property)) cs0 => Data.OverloadedRecords.HasField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ArrayProperty) (Octane.Type.List.List (Octane.Type.Dictionary.Dictionary Octane.Type.Property.Property))
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "content" (Octane.Type.List.List (Octane.Type.Dictionary.Dictionary Octane.Type.Property.Property)) cs0 => Data.OverloadedRecords.ModifyField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ArrayProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ArrayProperty) (Octane.Type.List.List (Octane.Type.Dictionary.Dictionary Octane.Type.Property.Property)) (Octane.Type.List.List (Octane.Type.Dictionary.Dictionary Octane.Type.Property.Property))
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.BoolProperty) Octane.Type.Boolean.Boolean
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.BoolProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.BoolProperty) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.HasField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.FloatProperty) Octane.Type.Float32.Float32
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.ModifyField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.FloatProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.FloatProperty) Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Int32.Int32 cs0 => Data.OverloadedRecords.HasField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.IntProperty) Octane.Type.Int32.Int32
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Int32.Int32 cs0 => Data.OverloadedRecords.ModifyField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.IntProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.IntProperty) Octane.Type.Int32.Int32 Octane.Type.Int32.Int32
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.HasField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.NameProperty) Octane.Type.Text.Text
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.HasField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.StrProperty) Octane.Type.Text.Text
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.ModifyField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.NameProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.NameProperty) Octane.Type.Text.Text Octane.Type.Text.Text
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.ModifyField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.StrProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.StrProperty) Octane.Type.Text.Text Octane.Type.Text.Text
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.QWordProperty) Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.QWordProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.QWordProperty) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "key" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.HasField "key" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ByteProperty) Octane.Type.Text.Text
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "key" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.ModifyField "key" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ByteProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ByteProperty) Octane.Type.Text.Text Octane.Type.Text.Text
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ArrayProperty) Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.BoolProperty) Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ByteProperty) Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.FloatProperty) Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.IntProperty) Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.NameProperty) Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.QWordProperty) Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.StrProperty) Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ArrayProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ArrayProperty) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.BoolProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.BoolProperty) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ByteProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ByteProperty) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.FloatProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.FloatProperty) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.IntProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.IntProperty) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.NameProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.NameProperty) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.QWordProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.QWordProperty) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.StrProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.StrProperty) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "value" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.HasField "value" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ByteProperty) Octane.Type.Text.Text
- Octane.Type.Property: instance Data.OverloadedRecords.ModifyRec "value" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.ModifyField "value" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ByteProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ByteProperty) Octane.Type.Text.Text Octane.Type.Text.Text
- Octane.Type.Property: instance GHC.Classes.Eq Octane.Type.Property.ArrayProperty
- Octane.Type.Property: instance GHC.Classes.Eq Octane.Type.Property.BoolProperty
- Octane.Type.Property: instance GHC.Classes.Eq Octane.Type.Property.ByteProperty
- Octane.Type.Property: instance GHC.Classes.Eq Octane.Type.Property.FloatProperty
- Octane.Type.Property: instance GHC.Classes.Eq Octane.Type.Property.IntProperty
- Octane.Type.Property: instance GHC.Classes.Eq Octane.Type.Property.NameProperty
- Octane.Type.Property: instance GHC.Classes.Eq Octane.Type.Property.QWordProperty
- Octane.Type.Property: instance GHC.Classes.Eq Octane.Type.Property.StrProperty
- Octane.Type.Property: instance GHC.Generics.Generic Octane.Type.Property.ArrayProperty
- Octane.Type.Property: instance GHC.Generics.Generic Octane.Type.Property.BoolProperty
- Octane.Type.Property: instance GHC.Generics.Generic Octane.Type.Property.ByteProperty
- Octane.Type.Property: instance GHC.Generics.Generic Octane.Type.Property.FloatProperty
- Octane.Type.Property: instance GHC.Generics.Generic Octane.Type.Property.IntProperty
- Octane.Type.Property: instance GHC.Generics.Generic Octane.Type.Property.NameProperty
- Octane.Type.Property: instance GHC.Generics.Generic Octane.Type.Property.QWordProperty
- Octane.Type.Property: instance GHC.Generics.Generic Octane.Type.Property.StrProperty
- Octane.Type.Property: instance GHC.Show.Show Octane.Type.Property.ArrayProperty
- Octane.Type.Property: instance GHC.Show.Show Octane.Type.Property.BoolProperty
- Octane.Type.Property: instance GHC.Show.Show Octane.Type.Property.ByteProperty
- Octane.Type.Property: instance GHC.Show.Show Octane.Type.Property.FloatProperty
- Octane.Type.Property: instance GHC.Show.Show Octane.Type.Property.IntProperty
- Octane.Type.Property: instance GHC.Show.Show Octane.Type.Property.NameProperty
- Octane.Type.Property: instance GHC.Show.Show Octane.Type.Property.QWordProperty
- Octane.Type.Property: instance GHC.Show.Show Octane.Type.Property.StrProperty
- Octane.Type.RemoteId: PlayStationId :: Text -> ByteString -> PlayStationId
- Octane.Type.RemoteId: SplitscreenId :: Maybe Int -> SplitscreenId
- Octane.Type.RemoteId: SteamId :: Word64 -> SteamId
- Octane.Type.RemoteId: XboxId :: Word64 -> XboxId
- Octane.Type.RemoteId: [playStationIdName] :: PlayStationId -> Text
- Octane.Type.RemoteId: [playStationIdUnknown] :: PlayStationId -> ByteString
- Octane.Type.RemoteId: [splitscreenIdUnpack] :: SplitscreenId -> Maybe Int
- Octane.Type.RemoteId: [steamIdUnpack] :: SteamId -> Word64
- Octane.Type.RemoteId: [xboxIdUnpack] :: XboxId -> Word64
- Octane.Type.RemoteId: data PlayStationId
- Octane.Type.RemoteId: instance Control.DeepSeq.NFData Octane.Type.RemoteId.PlayStationId
- Octane.Type.RemoteId: instance Control.DeepSeq.NFData Octane.Type.RemoteId.SplitscreenId
- Octane.Type.RemoteId: instance Control.DeepSeq.NFData Octane.Type.RemoteId.SteamId
- Octane.Type.RemoteId: instance Control.DeepSeq.NFData Octane.Type.RemoteId.XboxId
- Octane.Type.RemoteId: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.RemoteId.PlayStationId
- Octane.Type.RemoteId: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.RemoteId.SplitscreenId
- Octane.Type.RemoteId: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.RemoteId.SteamId
- Octane.Type.RemoteId: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.RemoteId.XboxId
- Octane.Type.RemoteId: instance Data.Binary.Bits.BinaryBit Octane.Type.RemoteId.PlayStationId
- Octane.Type.RemoteId: instance Data.Binary.Bits.BinaryBit Octane.Type.RemoteId.SplitscreenId
- Octane.Type.RemoteId: instance Data.Binary.Bits.BinaryBit Octane.Type.RemoteId.SteamId
- Octane.Type.RemoteId: instance Data.Binary.Bits.BinaryBit Octane.Type.RemoteId.XboxId
- Octane.Type.RemoteId: instance Data.OverloadedRecords.HasField "name" Octane.Type.RemoteId.PlayStationId Octane.Type.Text.Text
- Octane.Type.RemoteId: instance Data.OverloadedRecords.HasField "unknown" Octane.Type.RemoteId.PlayStationId Data.ByteString.Lazy.Internal.ByteString
- Octane.Type.RemoteId: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.RemoteId.SplitscreenId (GHC.Base.Maybe GHC.Types.Int)
- Octane.Type.RemoteId: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.RemoteId.SteamId Octane.Type.Word64.Word64
- Octane.Type.RemoteId: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.RemoteId.XboxId Octane.Type.Word64.Word64
- Octane.Type.RemoteId: instance Data.OverloadedRecords.ModifyField "name" Octane.Type.RemoteId.PlayStationId Octane.Type.RemoteId.PlayStationId Octane.Type.Text.Text Octane.Type.Text.Text
- Octane.Type.RemoteId: instance Data.OverloadedRecords.ModifyField "unknown" Octane.Type.RemoteId.PlayStationId Octane.Type.RemoteId.PlayStationId Data.ByteString.Lazy.Internal.ByteString Data.ByteString.Lazy.Internal.ByteString
- Octane.Type.RemoteId: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.RemoteId.SplitscreenId Octane.Type.RemoteId.SplitscreenId (GHC.Base.Maybe GHC.Types.Int) (GHC.Base.Maybe GHC.Types.Int)
- Octane.Type.RemoteId: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.RemoteId.SteamId Octane.Type.RemoteId.SteamId Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.RemoteId: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.RemoteId.XboxId Octane.Type.RemoteId.XboxId Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.RemoteId: instance Data.OverloadedRecords.ModifyRec "name" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.HasField "name" (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.PlayStationId) Octane.Type.Text.Text
- Octane.Type.RemoteId: instance Data.OverloadedRecords.ModifyRec "name" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.ModifyField "name" (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.PlayStationId) (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.PlayStationId) Octane.Type.Text.Text Octane.Type.Text.Text
- Octane.Type.RemoteId: instance Data.OverloadedRecords.ModifyRec "unknown" Data.ByteString.Lazy.Internal.ByteString cs0 => Data.OverloadedRecords.HasField "unknown" (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.PlayStationId) Data.ByteString.Lazy.Internal.ByteString
- Octane.Type.RemoteId: instance Data.OverloadedRecords.ModifyRec "unknown" Data.ByteString.Lazy.Internal.ByteString cs0 => Data.OverloadedRecords.ModifyField "unknown" (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.PlayStationId) (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.PlayStationId) Data.ByteString.Lazy.Internal.ByteString Data.ByteString.Lazy.Internal.ByteString
- Octane.Type.RemoteId: instance Data.OverloadedRecords.ModifyRec "unpack" (GHC.Base.Maybe GHC.Types.Int) cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.SplitscreenId) (GHC.Base.Maybe GHC.Types.Int)
- Octane.Type.RemoteId: instance Data.OverloadedRecords.ModifyRec "unpack" (GHC.Base.Maybe GHC.Types.Int) cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.SplitscreenId) (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.SplitscreenId) (GHC.Base.Maybe GHC.Types.Int) (GHC.Base.Maybe GHC.Types.Int)
- Octane.Type.RemoteId: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.SteamId) Octane.Type.Word64.Word64
- Octane.Type.RemoteId: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.XboxId) Octane.Type.Word64.Word64
- Octane.Type.RemoteId: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.SteamId) (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.SteamId) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.RemoteId: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.XboxId) (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.XboxId) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.RemoteId: instance GHC.Classes.Eq Octane.Type.RemoteId.PlayStationId
- Octane.Type.RemoteId: instance GHC.Classes.Eq Octane.Type.RemoteId.SplitscreenId
- Octane.Type.RemoteId: instance GHC.Classes.Eq Octane.Type.RemoteId.SteamId
- Octane.Type.RemoteId: instance GHC.Classes.Eq Octane.Type.RemoteId.XboxId
- Octane.Type.RemoteId: instance GHC.Generics.Generic Octane.Type.RemoteId.PlayStationId
- Octane.Type.RemoteId: instance GHC.Generics.Generic Octane.Type.RemoteId.SplitscreenId
- Octane.Type.RemoteId: instance GHC.Generics.Generic Octane.Type.RemoteId.SteamId
- Octane.Type.RemoteId: instance GHC.Generics.Generic Octane.Type.RemoteId.XboxId
- Octane.Type.RemoteId: instance GHC.Show.Show Octane.Type.RemoteId.PlayStationId
- Octane.Type.RemoteId: instance GHC.Show.Show Octane.Type.RemoteId.SplitscreenId
- Octane.Type.RemoteId: instance GHC.Show.Show Octane.Type.RemoteId.SteamId
- Octane.Type.RemoteId: instance GHC.Show.Show Octane.Type.RemoteId.XboxId
- Octane.Type.RemoteId: newtype SplitscreenId
- Octane.Type.RemoteId: newtype SteamId
- Octane.Type.RemoteId: newtype XboxId
- Octane.Type.State: SClosing :: State
- Octane.Type.State: SExisting :: State
- Octane.Type.State: SOpening :: State
- Octane.Type.Value: BooleanValue :: Boolean -> BooleanValue
- Octane.Type.Value: ByteValue :: Word8 -> ByteValue
- Octane.Type.Value: CamSettingsValue :: Float32 -> Float32 -> Float32 -> Float32 -> Float32 -> Float32 -> CamSettingsValue
- Octane.Type.Value: DemolishValue :: Boolean -> Word32 -> Boolean -> Word32 -> Vector Int -> Vector Int -> DemolishValue
- Octane.Type.Value: EnumValue :: Word16 -> Boolean -> EnumValue
- Octane.Type.Value: ExplosionValue :: Boolean -> Maybe Int32 -> Vector Int -> ExplosionValue
- Octane.Type.Value: FlaggedIntValue :: Boolean -> Int32 -> FlaggedIntValue
- Octane.Type.Value: FloatValue :: Float32 -> FloatValue
- Octane.Type.Value: GameModeValue :: Word8 -> GameModeValue
- Octane.Type.Value: IntValue :: Int32 -> IntValue
- Octane.Type.Value: LoadoutOnlineValue :: [[(Word32, CompressedWord)]] -> LoadoutOnlineValue
- Octane.Type.Value: LoadoutValue :: Word8 -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> Maybe Word32 -> LoadoutValue
- Octane.Type.Value: LocationValue :: Vector Int -> LocationValue
- Octane.Type.Value: MusicStingerValue :: Boolean -> Word32 -> Word8 -> MusicStingerValue
- Octane.Type.Value: PickupValue :: Boolean -> Maybe Word32 -> Boolean -> PickupValue
- Octane.Type.Value: PrivateMatchSettingsValue :: Text -> Word32 -> Word32 -> Text -> Text -> Boolean -> PrivateMatchSettingsValue
- Octane.Type.Value: QWordValue :: Word64 -> QWordValue
- Octane.Type.Value: RelativeRotationValue :: Vector Float -> RelativeRotationValue
- Octane.Type.Value: ReservationValue :: CompressedWord -> Word8 -> RemoteId -> Maybe Word8 -> Maybe Text -> Boolean -> Boolean -> ReservationValue
- Octane.Type.Value: RigidBodyStateValue :: Boolean -> Vector Int -> Vector Float -> Maybe (Vector Int) -> Maybe (Vector Int) -> RigidBodyStateValue
- Octane.Type.Value: StringValue :: Text -> StringValue
- Octane.Type.Value: TeamPaintValue :: Word8 -> Word8 -> Word8 -> Word32 -> Word32 -> TeamPaintValue
- Octane.Type.Value: UniqueIdValue :: Word8 -> RemoteId -> Maybe Word8 -> UniqueIdValue
- Octane.Type.Value: [booleanValueUnpack] :: BooleanValue -> Boolean
- Octane.Type.Value: [byteValueUnpack] :: ByteValue -> Word8
- Octane.Type.Value: [camSettingsValueAngle] :: CamSettingsValue -> Float32
- Octane.Type.Value: [camSettingsValueDistance] :: CamSettingsValue -> Float32
- Octane.Type.Value: [camSettingsValueFov] :: CamSettingsValue -> Float32
- Octane.Type.Value: [camSettingsValueHeight] :: CamSettingsValue -> Float32
- Octane.Type.Value: [camSettingsValueStiffness] :: CamSettingsValue -> Float32
- Octane.Type.Value: [camSettingsValueSwivelSpeed] :: CamSettingsValue -> Float32
- Octane.Type.Value: [demolishValueAttackerActorId] :: DemolishValue -> Word32
- Octane.Type.Value: [demolishValueAttackerFlag] :: DemolishValue -> Boolean
- Octane.Type.Value: [demolishValueAttackerVelocity] :: DemolishValue -> Vector Int
- Octane.Type.Value: [demolishValueVictimActorId] :: DemolishValue -> Word32
- Octane.Type.Value: [demolishValueVictimFlag] :: DemolishValue -> Boolean
- Octane.Type.Value: [demolishValueVictimVelocity] :: DemolishValue -> Vector Int
- Octane.Type.Value: [enumValueFlag] :: EnumValue -> Boolean
- Octane.Type.Value: [enumValueValue] :: EnumValue -> Word16
- Octane.Type.Value: [explosionValueActorId] :: ExplosionValue -> Maybe Int32
- Octane.Type.Value: [explosionValueActorless] :: ExplosionValue -> Boolean
- Octane.Type.Value: [explosionValuePosition] :: ExplosionValue -> Vector Int
- Octane.Type.Value: [flaggedIntValueFlag] :: FlaggedIntValue -> Boolean
- Octane.Type.Value: [flaggedIntValueInt] :: FlaggedIntValue -> Int32
- Octane.Type.Value: [floatValueUnpack] :: FloatValue -> Float32
- Octane.Type.Value: [gameModeValueUnpack] :: GameModeValue -> Word8
- Octane.Type.Value: [intValueUnpack] :: IntValue -> Int32
- Octane.Type.Value: [loadoutOnlineValueUnpack] :: LoadoutOnlineValue -> [[(Word32, CompressedWord)]]
- Octane.Type.Value: [loadoutValueAntenna] :: LoadoutValue -> Word32
- Octane.Type.Value: [loadoutValueBody] :: LoadoutValue -> Word32
- Octane.Type.Value: [loadoutValueDecal] :: LoadoutValue -> Word32
- Octane.Type.Value: [loadoutValueRocketTrail] :: LoadoutValue -> Word32
- Octane.Type.Value: [loadoutValueTopper] :: LoadoutValue -> Word32
- Octane.Type.Value: [loadoutValueUnknown1] :: LoadoutValue -> Word32
- Octane.Type.Value: [loadoutValueUnknown2] :: LoadoutValue -> Maybe Word32
- Octane.Type.Value: [loadoutValueVersion] :: LoadoutValue -> Word8
- Octane.Type.Value: [loadoutValueWheels] :: LoadoutValue -> Word32
- Octane.Type.Value: [locationValueUnpack] :: LocationValue -> Vector Int
- Octane.Type.Value: [musicStingerValueCue] :: MusicStingerValue -> Word32
- Octane.Type.Value: [musicStingerValueFlag] :: MusicStingerValue -> Boolean
- Octane.Type.Value: [musicStingerValueTrigger] :: MusicStingerValue -> Word8
- Octane.Type.Value: [pickupValueHasInstigator] :: PickupValue -> Boolean
- Octane.Type.Value: [pickupValueInstigatorId] :: PickupValue -> Maybe Word32
- Octane.Type.Value: [pickupValuePickedUp] :: PickupValue -> Boolean
- Octane.Type.Value: [privateMatchSettingsValueFlag] :: PrivateMatchSettingsValue -> Boolean
- Octane.Type.Value: [privateMatchSettingsValueGameName] :: PrivateMatchSettingsValue -> Text
- Octane.Type.Value: [privateMatchSettingsValueJoinableBy] :: PrivateMatchSettingsValue -> Word32
- Octane.Type.Value: [privateMatchSettingsValueMaxPlayers] :: PrivateMatchSettingsValue -> Word32
- Octane.Type.Value: [privateMatchSettingsValueMutators] :: PrivateMatchSettingsValue -> Text
- Octane.Type.Value: [privateMatchSettingsValuePassword] :: PrivateMatchSettingsValue -> Text
- Octane.Type.Value: [qWordValueUnpack] :: QWordValue -> Word64
- Octane.Type.Value: [relativeRotationValueUnpack] :: RelativeRotationValue -> Vector Float
- Octane.Type.Value: [reservationValueLocalId] :: ReservationValue -> Maybe Word8
- Octane.Type.Value: [reservationValueNumber] :: ReservationValue -> CompressedWord
- Octane.Type.Value: [reservationValuePlayerName] :: ReservationValue -> Maybe Text
- Octane.Type.Value: [reservationValueRemoteId] :: ReservationValue -> RemoteId
- Octane.Type.Value: [reservationValueSystemId] :: ReservationValue -> Word8
- Octane.Type.Value: [reservationValueUnknown1] :: ReservationValue -> Boolean
- Octane.Type.Value: [reservationValueUnknown2] :: ReservationValue -> Boolean
- Octane.Type.Value: [rigidBodyStateValueAngularVelocity] :: RigidBodyStateValue -> Maybe (Vector Int)
- Octane.Type.Value: [rigidBodyStateValueLinearVelocity] :: RigidBodyStateValue -> Maybe (Vector Int)
- Octane.Type.Value: [rigidBodyStateValuePosition] :: RigidBodyStateValue -> Vector Int
- Octane.Type.Value: [rigidBodyStateValueRotation] :: RigidBodyStateValue -> Vector Float
- Octane.Type.Value: [rigidBodyStateValueSleeping] :: RigidBodyStateValue -> Boolean
- Octane.Type.Value: [stringValueUnpack] :: StringValue -> Text
- Octane.Type.Value: [teamPaintValueAccentColor] :: TeamPaintValue -> Word8
- Octane.Type.Value: [teamPaintValueAccentFinish] :: TeamPaintValue -> Word32
- Octane.Type.Value: [teamPaintValuePrimaryColor] :: TeamPaintValue -> Word8
- Octane.Type.Value: [teamPaintValuePrimaryFinish] :: TeamPaintValue -> Word32
- Octane.Type.Value: [teamPaintValueTeam] :: TeamPaintValue -> Word8
- Octane.Type.Value: [uniqueIdValueLocalId] :: UniqueIdValue -> Maybe Word8
- Octane.Type.Value: [uniqueIdValueRemoteId] :: UniqueIdValue -> RemoteId
- Octane.Type.Value: [uniqueIdValueSystemId] :: UniqueIdValue -> Word8
- Octane.Type.Value: data CamSettingsValue
- Octane.Type.Value: data DemolishValue
- Octane.Type.Value: data EnumValue
- Octane.Type.Value: data ExplosionValue
- Octane.Type.Value: data FlaggedIntValue
- Octane.Type.Value: data LoadoutValue
- Octane.Type.Value: data MusicStingerValue
- Octane.Type.Value: data PickupValue
- Octane.Type.Value: data PrivateMatchSettingsValue
- Octane.Type.Value: data ReservationValue
- Octane.Type.Value: data RigidBodyStateValue
- Octane.Type.Value: data TeamPaintValue
- Octane.Type.Value: data UniqueIdValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.BooleanValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.ByteValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.CamSettingsValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.DemolishValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.EnumValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.ExplosionValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.FlaggedIntValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.FloatValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.GameModeValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.IntValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.LoadoutOnlineValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.LoadoutValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.LocationValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.MusicStingerValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.PickupValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.PrivateMatchSettingsValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.QWordValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.RelativeRotationValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.ReservationValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.RigidBodyStateValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.StringValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.TeamPaintValue
- Octane.Type.Value: instance Control.DeepSeq.NFData Octane.Type.Value.UniqueIdValue
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "accentColor" Octane.Type.Value.TeamPaintValue Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "accentFinish" Octane.Type.Value.TeamPaintValue Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "actorId" Octane.Type.Value.ExplosionValue (GHC.Base.Maybe Octane.Type.Int32.Int32)
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "actorless" Octane.Type.Value.ExplosionValue Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "angle" Octane.Type.Value.CamSettingsValue Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "angularVelocity" Octane.Type.Value.RigidBodyStateValue (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int))
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "antenna" Octane.Type.Value.LoadoutValue Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "attackerActorId" Octane.Type.Value.DemolishValue Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "attackerFlag" Octane.Type.Value.DemolishValue Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "attackerVelocity" Octane.Type.Value.DemolishValue (Octane.Type.Vector.Vector GHC.Types.Int)
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "body" Octane.Type.Value.LoadoutValue Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "cue" Octane.Type.Value.MusicStingerValue Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "decal" Octane.Type.Value.LoadoutValue Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "distance" Octane.Type.Value.CamSettingsValue Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "flag" Octane.Type.Value.EnumValue Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "flag" Octane.Type.Value.FlaggedIntValue Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "flag" Octane.Type.Value.MusicStingerValue Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "flag" Octane.Type.Value.PrivateMatchSettingsValue Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "fov" Octane.Type.Value.CamSettingsValue Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "gameName" Octane.Type.Value.PrivateMatchSettingsValue Octane.Type.Text.Text
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "hasInstigator" Octane.Type.Value.PickupValue Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "height" Octane.Type.Value.CamSettingsValue Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "instigatorId" Octane.Type.Value.PickupValue (GHC.Base.Maybe Octane.Type.Word32.Word32)
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "int" Octane.Type.Value.FlaggedIntValue Octane.Type.Int32.Int32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "joinableBy" Octane.Type.Value.PrivateMatchSettingsValue Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "linearVelocity" Octane.Type.Value.RigidBodyStateValue (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int))
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "localId" Octane.Type.Value.ReservationValue (GHC.Base.Maybe Octane.Type.Word8.Word8)
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "localId" Octane.Type.Value.UniqueIdValue (GHC.Base.Maybe Octane.Type.Word8.Word8)
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "maxPlayers" Octane.Type.Value.PrivateMatchSettingsValue Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "mutators" Octane.Type.Value.PrivateMatchSettingsValue Octane.Type.Text.Text
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "number" Octane.Type.Value.ReservationValue Octane.Type.CompressedWord.CompressedWord
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "password" Octane.Type.Value.PrivateMatchSettingsValue Octane.Type.Text.Text
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "pickedUp" Octane.Type.Value.PickupValue Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "playerName" Octane.Type.Value.ReservationValue (GHC.Base.Maybe Octane.Type.Text.Text)
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "position" Octane.Type.Value.ExplosionValue (Octane.Type.Vector.Vector GHC.Types.Int)
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "position" Octane.Type.Value.RigidBodyStateValue (Octane.Type.Vector.Vector GHC.Types.Int)
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "primaryColor" Octane.Type.Value.TeamPaintValue Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "primaryFinish" Octane.Type.Value.TeamPaintValue Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "remoteId" Octane.Type.Value.ReservationValue Octane.Type.RemoteId.RemoteId
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "remoteId" Octane.Type.Value.UniqueIdValue Octane.Type.RemoteId.RemoteId
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "rocketTrail" Octane.Type.Value.LoadoutValue Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "rotation" Octane.Type.Value.RigidBodyStateValue (Octane.Type.Vector.Vector GHC.Types.Float)
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "sleeping" Octane.Type.Value.RigidBodyStateValue Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "stiffness" Octane.Type.Value.CamSettingsValue Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "swivelSpeed" Octane.Type.Value.CamSettingsValue Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "systemId" Octane.Type.Value.ReservationValue Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "systemId" Octane.Type.Value.UniqueIdValue Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "team" Octane.Type.Value.TeamPaintValue Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "topper" Octane.Type.Value.LoadoutValue Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "trigger" Octane.Type.Value.MusicStingerValue Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "unknown1" Octane.Type.Value.LoadoutValue Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "unknown1" Octane.Type.Value.ReservationValue Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "unknown2" Octane.Type.Value.LoadoutValue (GHC.Base.Maybe Octane.Type.Word32.Word32)
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "unknown2" Octane.Type.Value.ReservationValue Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.Value.BooleanValue Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.Value.ByteValue Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.Value.FloatValue Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.Value.GameModeValue Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.Value.IntValue Octane.Type.Int32.Int32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.Value.LoadoutOnlineValue [[(Octane.Type.Word32.Word32, Octane.Type.CompressedWord.CompressedWord)]]
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.Value.LocationValue (Octane.Type.Vector.Vector GHC.Types.Int)
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.Value.QWordValue Octane.Type.Word64.Word64
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.Value.RelativeRotationValue (Octane.Type.Vector.Vector GHC.Types.Float)
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.Value.StringValue Octane.Type.Text.Text
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "value" Octane.Type.Value.EnumValue Octane.Type.Word16.Word16
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "version" Octane.Type.Value.LoadoutValue Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "victimActorId" Octane.Type.Value.DemolishValue Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "victimFlag" Octane.Type.Value.DemolishValue Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "victimVelocity" Octane.Type.Value.DemolishValue (Octane.Type.Vector.Vector GHC.Types.Int)
- Octane.Type.Value: instance Data.OverloadedRecords.HasField "wheels" Octane.Type.Value.LoadoutValue Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "accentColor" Octane.Type.Value.TeamPaintValue Octane.Type.Value.TeamPaintValue Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "accentFinish" Octane.Type.Value.TeamPaintValue Octane.Type.Value.TeamPaintValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "actorId" Octane.Type.Value.ExplosionValue Octane.Type.Value.ExplosionValue (GHC.Base.Maybe Octane.Type.Int32.Int32) (GHC.Base.Maybe Octane.Type.Int32.Int32)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "actorless" Octane.Type.Value.ExplosionValue Octane.Type.Value.ExplosionValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "angle" Octane.Type.Value.CamSettingsValue Octane.Type.Value.CamSettingsValue Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "angularVelocity" Octane.Type.Value.RigidBodyStateValue Octane.Type.Value.RigidBodyStateValue (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int)) (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int))
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "antenna" Octane.Type.Value.LoadoutValue Octane.Type.Value.LoadoutValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "attackerActorId" Octane.Type.Value.DemolishValue Octane.Type.Value.DemolishValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "attackerFlag" Octane.Type.Value.DemolishValue Octane.Type.Value.DemolishValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "attackerVelocity" Octane.Type.Value.DemolishValue Octane.Type.Value.DemolishValue (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "body" Octane.Type.Value.LoadoutValue Octane.Type.Value.LoadoutValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "cue" Octane.Type.Value.MusicStingerValue Octane.Type.Value.MusicStingerValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "decal" Octane.Type.Value.LoadoutValue Octane.Type.Value.LoadoutValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "distance" Octane.Type.Value.CamSettingsValue Octane.Type.Value.CamSettingsValue Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "flag" Octane.Type.Value.EnumValue Octane.Type.Value.EnumValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "flag" Octane.Type.Value.FlaggedIntValue Octane.Type.Value.FlaggedIntValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "flag" Octane.Type.Value.MusicStingerValue Octane.Type.Value.MusicStingerValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "flag" Octane.Type.Value.PrivateMatchSettingsValue Octane.Type.Value.PrivateMatchSettingsValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "fov" Octane.Type.Value.CamSettingsValue Octane.Type.Value.CamSettingsValue Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "gameName" Octane.Type.Value.PrivateMatchSettingsValue Octane.Type.Value.PrivateMatchSettingsValue Octane.Type.Text.Text Octane.Type.Text.Text
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "hasInstigator" Octane.Type.Value.PickupValue Octane.Type.Value.PickupValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "height" Octane.Type.Value.CamSettingsValue Octane.Type.Value.CamSettingsValue Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "instigatorId" Octane.Type.Value.PickupValue Octane.Type.Value.PickupValue (GHC.Base.Maybe Octane.Type.Word32.Word32) (GHC.Base.Maybe Octane.Type.Word32.Word32)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "int" Octane.Type.Value.FlaggedIntValue Octane.Type.Value.FlaggedIntValue Octane.Type.Int32.Int32 Octane.Type.Int32.Int32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "joinableBy" Octane.Type.Value.PrivateMatchSettingsValue Octane.Type.Value.PrivateMatchSettingsValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "linearVelocity" Octane.Type.Value.RigidBodyStateValue Octane.Type.Value.RigidBodyStateValue (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int)) (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int))
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "localId" Octane.Type.Value.ReservationValue Octane.Type.Value.ReservationValue (GHC.Base.Maybe Octane.Type.Word8.Word8) (GHC.Base.Maybe Octane.Type.Word8.Word8)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "localId" Octane.Type.Value.UniqueIdValue Octane.Type.Value.UniqueIdValue (GHC.Base.Maybe Octane.Type.Word8.Word8) (GHC.Base.Maybe Octane.Type.Word8.Word8)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "maxPlayers" Octane.Type.Value.PrivateMatchSettingsValue Octane.Type.Value.PrivateMatchSettingsValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "mutators" Octane.Type.Value.PrivateMatchSettingsValue Octane.Type.Value.PrivateMatchSettingsValue Octane.Type.Text.Text Octane.Type.Text.Text
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "number" Octane.Type.Value.ReservationValue Octane.Type.Value.ReservationValue Octane.Type.CompressedWord.CompressedWord Octane.Type.CompressedWord.CompressedWord
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "password" Octane.Type.Value.PrivateMatchSettingsValue Octane.Type.Value.PrivateMatchSettingsValue Octane.Type.Text.Text Octane.Type.Text.Text
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "pickedUp" Octane.Type.Value.PickupValue Octane.Type.Value.PickupValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "playerName" Octane.Type.Value.ReservationValue Octane.Type.Value.ReservationValue (GHC.Base.Maybe Octane.Type.Text.Text) (GHC.Base.Maybe Octane.Type.Text.Text)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "position" Octane.Type.Value.ExplosionValue Octane.Type.Value.ExplosionValue (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "position" Octane.Type.Value.RigidBodyStateValue Octane.Type.Value.RigidBodyStateValue (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "primaryColor" Octane.Type.Value.TeamPaintValue Octane.Type.Value.TeamPaintValue Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "primaryFinish" Octane.Type.Value.TeamPaintValue Octane.Type.Value.TeamPaintValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "remoteId" Octane.Type.Value.ReservationValue Octane.Type.Value.ReservationValue Octane.Type.RemoteId.RemoteId Octane.Type.RemoteId.RemoteId
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "remoteId" Octane.Type.Value.UniqueIdValue Octane.Type.Value.UniqueIdValue Octane.Type.RemoteId.RemoteId Octane.Type.RemoteId.RemoteId
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "rocketTrail" Octane.Type.Value.LoadoutValue Octane.Type.Value.LoadoutValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "rotation" Octane.Type.Value.RigidBodyStateValue Octane.Type.Value.RigidBodyStateValue (Octane.Type.Vector.Vector GHC.Types.Float) (Octane.Type.Vector.Vector GHC.Types.Float)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "sleeping" Octane.Type.Value.RigidBodyStateValue Octane.Type.Value.RigidBodyStateValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "stiffness" Octane.Type.Value.CamSettingsValue Octane.Type.Value.CamSettingsValue Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "swivelSpeed" Octane.Type.Value.CamSettingsValue Octane.Type.Value.CamSettingsValue Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "systemId" Octane.Type.Value.ReservationValue Octane.Type.Value.ReservationValue Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "systemId" Octane.Type.Value.UniqueIdValue Octane.Type.Value.UniqueIdValue Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "team" Octane.Type.Value.TeamPaintValue Octane.Type.Value.TeamPaintValue Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "topper" Octane.Type.Value.LoadoutValue Octane.Type.Value.LoadoutValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "trigger" Octane.Type.Value.MusicStingerValue Octane.Type.Value.MusicStingerValue Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "unknown1" Octane.Type.Value.LoadoutValue Octane.Type.Value.LoadoutValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "unknown1" Octane.Type.Value.ReservationValue Octane.Type.Value.ReservationValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "unknown2" Octane.Type.Value.LoadoutValue Octane.Type.Value.LoadoutValue (GHC.Base.Maybe Octane.Type.Word32.Word32) (GHC.Base.Maybe Octane.Type.Word32.Word32)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "unknown2" Octane.Type.Value.ReservationValue Octane.Type.Value.ReservationValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.Value.BooleanValue Octane.Type.Value.BooleanValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.Value.ByteValue Octane.Type.Value.ByteValue Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.Value.FloatValue Octane.Type.Value.FloatValue Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.Value.GameModeValue Octane.Type.Value.GameModeValue Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.Value.IntValue Octane.Type.Value.IntValue Octane.Type.Int32.Int32 Octane.Type.Int32.Int32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.Value.LoadoutOnlineValue Octane.Type.Value.LoadoutOnlineValue [[(Octane.Type.Word32.Word32, Octane.Type.CompressedWord.CompressedWord)]] [[(Octane.Type.Word32.Word32, Octane.Type.CompressedWord.CompressedWord)]]
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.Value.LocationValue Octane.Type.Value.LocationValue (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.Value.QWordValue Octane.Type.Value.QWordValue Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.Value.RelativeRotationValue Octane.Type.Value.RelativeRotationValue (Octane.Type.Vector.Vector GHC.Types.Float) (Octane.Type.Vector.Vector GHC.Types.Float)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.Value.StringValue Octane.Type.Value.StringValue Octane.Type.Text.Text Octane.Type.Text.Text
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "value" Octane.Type.Value.EnumValue Octane.Type.Value.EnumValue Octane.Type.Word16.Word16 Octane.Type.Word16.Word16
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "version" Octane.Type.Value.LoadoutValue Octane.Type.Value.LoadoutValue Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "victimActorId" Octane.Type.Value.DemolishValue Octane.Type.Value.DemolishValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "victimFlag" Octane.Type.Value.DemolishValue Octane.Type.Value.DemolishValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "victimVelocity" Octane.Type.Value.DemolishValue Octane.Type.Value.DemolishValue (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyField "wheels" Octane.Type.Value.LoadoutValue Octane.Type.Value.LoadoutValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "accentColor" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.HasField "accentColor" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue) Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "accentColor" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.ModifyField "accentColor" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue) Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "accentFinish" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "accentFinish" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue) Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "accentFinish" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "accentFinish" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "actorId" (GHC.Base.Maybe Octane.Type.Int32.Int32) cs0 => Data.OverloadedRecords.HasField "actorId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ExplosionValue) (GHC.Base.Maybe Octane.Type.Int32.Int32)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "actorId" (GHC.Base.Maybe Octane.Type.Int32.Int32) cs0 => Data.OverloadedRecords.ModifyField "actorId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ExplosionValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ExplosionValue) (GHC.Base.Maybe Octane.Type.Int32.Int32) (GHC.Base.Maybe Octane.Type.Int32.Int32)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "actorless" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "actorless" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ExplosionValue) Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "actorless" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "actorless" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ExplosionValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ExplosionValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "angle" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.HasField "angle" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue) Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "angle" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.ModifyField "angle" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue) Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "angularVelocity" (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int)) cs0 => Data.OverloadedRecords.HasField "angularVelocity" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue) (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int))
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "angularVelocity" (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int)) cs0 => Data.OverloadedRecords.ModifyField "angularVelocity" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue) (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int)) (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int))
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "antenna" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "antenna" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "antenna" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "antenna" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "attackerActorId" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "attackerActorId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue) Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "attackerActorId" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "attackerActorId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "attackerFlag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "attackerFlag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue) Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "attackerFlag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "attackerFlag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "attackerVelocity" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.HasField "attackerVelocity" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue) (Octane.Type.Vector.Vector GHC.Types.Int)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "attackerVelocity" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.ModifyField "attackerVelocity" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue) (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "body" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "body" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "body" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "body" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "cue" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "cue" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.MusicStingerValue) Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "cue" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "cue" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.MusicStingerValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.MusicStingerValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "decal" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "decal" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "decal" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "decal" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "distance" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.HasField "distance" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue) Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "distance" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.ModifyField "distance" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue) Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "flag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "flag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.EnumValue) Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "flag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "flag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.FlaggedIntValue) Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "flag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "flag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.MusicStingerValue) Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "flag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "flag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue) Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "flag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "flag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.EnumValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.EnumValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "flag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "flag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.FlaggedIntValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.FlaggedIntValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "flag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "flag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.MusicStingerValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.MusicStingerValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "flag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "flag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "fov" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.HasField "fov" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue) Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "fov" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.ModifyField "fov" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue) Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "gameName" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.HasField "gameName" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue) Octane.Type.Text.Text
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "gameName" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.ModifyField "gameName" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue) Octane.Type.Text.Text Octane.Type.Text.Text
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "hasInstigator" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "hasInstigator" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PickupValue) Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "hasInstigator" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "hasInstigator" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PickupValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PickupValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "height" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.HasField "height" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue) Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "height" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.ModifyField "height" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue) Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "instigatorId" (GHC.Base.Maybe Octane.Type.Word32.Word32) cs0 => Data.OverloadedRecords.HasField "instigatorId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PickupValue) (GHC.Base.Maybe Octane.Type.Word32.Word32)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "instigatorId" (GHC.Base.Maybe Octane.Type.Word32.Word32) cs0 => Data.OverloadedRecords.ModifyField "instigatorId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PickupValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PickupValue) (GHC.Base.Maybe Octane.Type.Word32.Word32) (GHC.Base.Maybe Octane.Type.Word32.Word32)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "int" Octane.Type.Int32.Int32 cs0 => Data.OverloadedRecords.HasField "int" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.FlaggedIntValue) Octane.Type.Int32.Int32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "int" Octane.Type.Int32.Int32 cs0 => Data.OverloadedRecords.ModifyField "int" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.FlaggedIntValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.FlaggedIntValue) Octane.Type.Int32.Int32 Octane.Type.Int32.Int32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "joinableBy" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "joinableBy" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue) Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "joinableBy" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "joinableBy" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "linearVelocity" (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int)) cs0 => Data.OverloadedRecords.HasField "linearVelocity" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue) (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int))
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "linearVelocity" (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int)) cs0 => Data.OverloadedRecords.ModifyField "linearVelocity" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue) (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int)) (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int))
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "localId" (GHC.Base.Maybe Octane.Type.Word8.Word8) cs0 => Data.OverloadedRecords.HasField "localId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue) (GHC.Base.Maybe Octane.Type.Word8.Word8)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "localId" (GHC.Base.Maybe Octane.Type.Word8.Word8) cs0 => Data.OverloadedRecords.HasField "localId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.UniqueIdValue) (GHC.Base.Maybe Octane.Type.Word8.Word8)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "localId" (GHC.Base.Maybe Octane.Type.Word8.Word8) cs0 => Data.OverloadedRecords.ModifyField "localId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue) (GHC.Base.Maybe Octane.Type.Word8.Word8) (GHC.Base.Maybe Octane.Type.Word8.Word8)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "localId" (GHC.Base.Maybe Octane.Type.Word8.Word8) cs0 => Data.OverloadedRecords.ModifyField "localId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.UniqueIdValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.UniqueIdValue) (GHC.Base.Maybe Octane.Type.Word8.Word8) (GHC.Base.Maybe Octane.Type.Word8.Word8)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "maxPlayers" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "maxPlayers" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue) Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "maxPlayers" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "maxPlayers" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "mutators" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.HasField "mutators" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue) Octane.Type.Text.Text
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "mutators" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.ModifyField "mutators" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue) Octane.Type.Text.Text Octane.Type.Text.Text
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "number" Octane.Type.CompressedWord.CompressedWord cs0 => Data.OverloadedRecords.HasField "number" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue) Octane.Type.CompressedWord.CompressedWord
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "number" Octane.Type.CompressedWord.CompressedWord cs0 => Data.OverloadedRecords.ModifyField "number" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue) Octane.Type.CompressedWord.CompressedWord Octane.Type.CompressedWord.CompressedWord
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "password" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.HasField "password" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue) Octane.Type.Text.Text
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "password" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.ModifyField "password" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue) Octane.Type.Text.Text Octane.Type.Text.Text
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "pickedUp" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "pickedUp" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PickupValue) Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "pickedUp" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "pickedUp" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PickupValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PickupValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "playerName" (GHC.Base.Maybe Octane.Type.Text.Text) cs0 => Data.OverloadedRecords.HasField "playerName" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue) (GHC.Base.Maybe Octane.Type.Text.Text)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "playerName" (GHC.Base.Maybe Octane.Type.Text.Text) cs0 => Data.OverloadedRecords.ModifyField "playerName" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue) (GHC.Base.Maybe Octane.Type.Text.Text) (GHC.Base.Maybe Octane.Type.Text.Text)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "position" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.HasField "position" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ExplosionValue) (Octane.Type.Vector.Vector GHC.Types.Int)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "position" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.HasField "position" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue) (Octane.Type.Vector.Vector GHC.Types.Int)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "position" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.ModifyField "position" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ExplosionValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ExplosionValue) (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "position" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.ModifyField "position" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue) (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "primaryColor" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.HasField "primaryColor" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue) Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "primaryColor" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.ModifyField "primaryColor" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue) Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "primaryFinish" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "primaryFinish" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue) Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "primaryFinish" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "primaryFinish" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "remoteId" Octane.Type.RemoteId.RemoteId cs0 => Data.OverloadedRecords.HasField "remoteId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue) Octane.Type.RemoteId.RemoteId
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "remoteId" Octane.Type.RemoteId.RemoteId cs0 => Data.OverloadedRecords.HasField "remoteId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.UniqueIdValue) Octane.Type.RemoteId.RemoteId
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "remoteId" Octane.Type.RemoteId.RemoteId cs0 => Data.OverloadedRecords.ModifyField "remoteId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue) Octane.Type.RemoteId.RemoteId Octane.Type.RemoteId.RemoteId
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "remoteId" Octane.Type.RemoteId.RemoteId cs0 => Data.OverloadedRecords.ModifyField "remoteId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.UniqueIdValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.UniqueIdValue) Octane.Type.RemoteId.RemoteId Octane.Type.RemoteId.RemoteId
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "rocketTrail" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "rocketTrail" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "rocketTrail" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "rocketTrail" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "rotation" (Octane.Type.Vector.Vector GHC.Types.Float) cs0 => Data.OverloadedRecords.HasField "rotation" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue) (Octane.Type.Vector.Vector GHC.Types.Float)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "rotation" (Octane.Type.Vector.Vector GHC.Types.Float) cs0 => Data.OverloadedRecords.ModifyField "rotation" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue) (Octane.Type.Vector.Vector GHC.Types.Float) (Octane.Type.Vector.Vector GHC.Types.Float)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "sleeping" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "sleeping" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue) Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "sleeping" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "sleeping" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "stiffness" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.HasField "stiffness" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue) Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "stiffness" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.ModifyField "stiffness" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue) Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "swivelSpeed" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.HasField "swivelSpeed" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue) Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "swivelSpeed" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.ModifyField "swivelSpeed" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue) Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "systemId" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.HasField "systemId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue) Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "systemId" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.HasField "systemId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.UniqueIdValue) Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "systemId" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.ModifyField "systemId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue) Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "systemId" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.ModifyField "systemId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.UniqueIdValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.UniqueIdValue) Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "team" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.HasField "team" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue) Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "team" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.ModifyField "team" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue) Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "topper" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "topper" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "topper" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "topper" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "trigger" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.HasField "trigger" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.MusicStingerValue) Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "trigger" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.ModifyField "trigger" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.MusicStingerValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.MusicStingerValue) Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unknown1" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "unknown1" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue) Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unknown1" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "unknown1" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unknown1" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "unknown1" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unknown1" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "unknown1" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unknown2" (GHC.Base.Maybe Octane.Type.Word32.Word32) cs0 => Data.OverloadedRecords.HasField "unknown2" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) (GHC.Base.Maybe Octane.Type.Word32.Word32)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unknown2" (GHC.Base.Maybe Octane.Type.Word32.Word32) cs0 => Data.OverloadedRecords.ModifyField "unknown2" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) (GHC.Base.Maybe Octane.Type.Word32.Word32) (GHC.Base.Maybe Octane.Type.Word32.Word32)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unknown2" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "unknown2" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue) Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unknown2" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "unknown2" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unpack" (Octane.Type.Vector.Vector GHC.Types.Float) cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RelativeRotationValue) (Octane.Type.Vector.Vector GHC.Types.Float)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unpack" (Octane.Type.Vector.Vector GHC.Types.Float) cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RelativeRotationValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RelativeRotationValue) (Octane.Type.Vector.Vector GHC.Types.Float) (Octane.Type.Vector.Vector GHC.Types.Float)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unpack" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LocationValue) (Octane.Type.Vector.Vector GHC.Types.Int)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unpack" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LocationValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LocationValue) (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.BooleanValue) Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.BooleanValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.BooleanValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.FloatValue) Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.FloatValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.FloatValue) Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Int32.Int32 cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.IntValue) Octane.Type.Int32.Int32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Int32.Int32 cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.IntValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.IntValue) Octane.Type.Int32.Int32 Octane.Type.Int32.Int32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.StringValue) Octane.Type.Text.Text
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.StringValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.StringValue) Octane.Type.Text.Text Octane.Type.Text.Text
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.QWordValue) Octane.Type.Word64.Word64
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.QWordValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.QWordValue) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ByteValue) Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.GameModeValue) Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ByteValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ByteValue) Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.GameModeValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.GameModeValue) Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unpack" [[(Octane.Type.Word32.Word32, Octane.Type.CompressedWord.CompressedWord)]] cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutOnlineValue) [[(Octane.Type.Word32.Word32, Octane.Type.CompressedWord.CompressedWord)]]
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "unpack" [[(Octane.Type.Word32.Word32, Octane.Type.CompressedWord.CompressedWord)]] cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutOnlineValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutOnlineValue) [[(Octane.Type.Word32.Word32, Octane.Type.CompressedWord.CompressedWord)]] [[(Octane.Type.Word32.Word32, Octane.Type.CompressedWord.CompressedWord)]]
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "value" Octane.Type.Word16.Word16 cs0 => Data.OverloadedRecords.HasField "value" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.EnumValue) Octane.Type.Word16.Word16
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "value" Octane.Type.Word16.Word16 cs0 => Data.OverloadedRecords.ModifyField "value" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.EnumValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.EnumValue) Octane.Type.Word16.Word16 Octane.Type.Word16.Word16
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "version" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.HasField "version" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "version" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.ModifyField "version" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "victimActorId" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "victimActorId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue) Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "victimActorId" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "victimActorId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "victimFlag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "victimFlag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue) Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "victimFlag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "victimFlag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "victimVelocity" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.HasField "victimVelocity" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue) (Octane.Type.Vector.Vector GHC.Types.Int)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "victimVelocity" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.ModifyField "victimVelocity" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue) (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "wheels" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "wheels" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) Octane.Type.Word32.Word32
- Octane.Type.Value: instance Data.OverloadedRecords.ModifyRec "wheels" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "wheels" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.BooleanValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.ByteValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.CamSettingsValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.DemolishValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.EnumValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.ExplosionValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.FlaggedIntValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.FloatValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.GameModeValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.IntValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.LoadoutOnlineValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.LoadoutValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.LocationValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.MusicStingerValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.PickupValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.PrivateMatchSettingsValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.QWordValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.RelativeRotationValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.ReservationValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.RigidBodyStateValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.StringValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.TeamPaintValue
- Octane.Type.Value: instance GHC.Classes.Eq Octane.Type.Value.UniqueIdValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.BooleanValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.ByteValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.CamSettingsValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.DemolishValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.EnumValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.ExplosionValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.FlaggedIntValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.FloatValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.GameModeValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.IntValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.LoadoutOnlineValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.LoadoutValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.LocationValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.MusicStingerValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.PickupValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.PrivateMatchSettingsValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.QWordValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.RelativeRotationValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.ReservationValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.RigidBodyStateValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.StringValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.TeamPaintValue
- Octane.Type.Value: instance GHC.Generics.Generic Octane.Type.Value.UniqueIdValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.BooleanValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.ByteValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.CamSettingsValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.DemolishValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.EnumValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.ExplosionValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.FlaggedIntValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.FloatValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.GameModeValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.IntValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.LoadoutOnlineValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.LoadoutValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.LocationValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.MusicStingerValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.PickupValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.PrivateMatchSettingsValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.QWordValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.RelativeRotationValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.ReservationValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.RigidBodyStateValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.StringValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.TeamPaintValue
- Octane.Type.Value: instance GHC.Show.Show Octane.Type.Value.UniqueIdValue
- Octane.Type.Value: newtype BooleanValue
- Octane.Type.Value: newtype ByteValue
- Octane.Type.Value: newtype FloatValue
- Octane.Type.Value: newtype GameModeValue
- Octane.Type.Value: newtype IntValue
- Octane.Type.Value: newtype LoadoutOnlineValue
- Octane.Type.Value: newtype LocationValue
- Octane.Type.Value: newtype QWordValue
- Octane.Type.Value: newtype RelativeRotationValue
- Octane.Type.Value: newtype StringValue
+ Octane.Type.Int32: instance GHC.Enum.Enum Octane.Type.Int32.Int32
+ Octane.Type.Property.ArrayProperty: ArrayProperty :: Word64 -> List (Dictionary a) -> ArrayProperty a
+ Octane.Type.Property.ArrayProperty: [arrayPropertyContent] :: ArrayProperty a -> List (Dictionary a)
+ Octane.Type.Property.ArrayProperty: [arrayPropertySize] :: ArrayProperty a -> Word64
+ Octane.Type.Property.ArrayProperty: data ArrayProperty a
+ Octane.Type.Property.ArrayProperty: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Octane.Type.Property.ArrayProperty.ArrayProperty a)
+ Octane.Type.Property.ArrayProperty: instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (Octane.Type.Property.ArrayProperty.ArrayProperty a)
+ Octane.Type.Property.ArrayProperty: instance Data.Binary.Class.Binary a => Data.Binary.Class.Binary (Octane.Type.Property.ArrayProperty.ArrayProperty a)
+ Octane.Type.Property.ArrayProperty: instance Data.OverloadedRecords.HasField "content" (Octane.Type.Property.ArrayProperty.ArrayProperty a0) (Octane.Type.List.List (Octane.Type.Dictionary.Dictionary a0))
+ Octane.Type.Property.ArrayProperty: instance Data.OverloadedRecords.HasField "size" (Octane.Type.Property.ArrayProperty.ArrayProperty a0) Octane.Type.Word64.Word64
+ Octane.Type.Property.ArrayProperty: instance Data.OverloadedRecords.ModifyField "content" (Octane.Type.Property.ArrayProperty.ArrayProperty a0) (Octane.Type.Property.ArrayProperty.ArrayProperty a0) (Octane.Type.List.List (Octane.Type.Dictionary.Dictionary a0)) (Octane.Type.List.List (Octane.Type.Dictionary.Dictionary a0))
+ Octane.Type.Property.ArrayProperty: instance Data.OverloadedRecords.ModifyField "size" (Octane.Type.Property.ArrayProperty.ArrayProperty a0) (Octane.Type.Property.ArrayProperty.ArrayProperty a0) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.Property.ArrayProperty: instance Data.OverloadedRecords.ModifyRec "content" (Octane.Type.List.List (Octane.Type.Dictionary.Dictionary a0)) cs0 => Data.OverloadedRecords.HasField "content" (Data.OverloadedRecords.Rec cs0 (Octane.Type.Property.ArrayProperty.ArrayProperty a0)) (Octane.Type.List.List (Octane.Type.Dictionary.Dictionary a0))
+ Octane.Type.Property.ArrayProperty: instance Data.OverloadedRecords.ModifyRec "content" (Octane.Type.List.List (Octane.Type.Dictionary.Dictionary a0)) cs0 => Data.OverloadedRecords.ModifyField "content" (Data.OverloadedRecords.Rec cs0 (Octane.Type.Property.ArrayProperty.ArrayProperty a0)) (Data.OverloadedRecords.Rec cs0 (Octane.Type.Property.ArrayProperty.ArrayProperty a0)) (Octane.Type.List.List (Octane.Type.Dictionary.Dictionary a0)) (Octane.Type.List.List (Octane.Type.Dictionary.Dictionary a0))
+ Octane.Type.Property.ArrayProperty: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "size" (Data.OverloadedRecords.Rec cs0 (Octane.Type.Property.ArrayProperty.ArrayProperty a0)) Octane.Type.Word64.Word64
+ Octane.Type.Property.ArrayProperty: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "size" (Data.OverloadedRecords.Rec cs0 (Octane.Type.Property.ArrayProperty.ArrayProperty a0)) (Data.OverloadedRecords.Rec cs0 (Octane.Type.Property.ArrayProperty.ArrayProperty a0)) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.Property.ArrayProperty: instance GHC.Classes.Eq a => GHC.Classes.Eq (Octane.Type.Property.ArrayProperty.ArrayProperty a)
+ Octane.Type.Property.ArrayProperty: instance GHC.Generics.Generic (Octane.Type.Property.ArrayProperty.ArrayProperty a)
+ Octane.Type.Property.ArrayProperty: instance GHC.Show.Show a => GHC.Show.Show (Octane.Type.Property.ArrayProperty.ArrayProperty a)
+ Octane.Type.Property.BoolProperty: BoolProperty :: Word64 -> Boolean -> BoolProperty
+ Octane.Type.Property.BoolProperty: [boolPropertyContent] :: BoolProperty -> Boolean
+ Octane.Type.Property.BoolProperty: [boolPropertySize] :: BoolProperty -> Word64
+ Octane.Type.Property.BoolProperty: data BoolProperty
+ Octane.Type.Property.BoolProperty: instance Control.DeepSeq.NFData Octane.Type.Property.BoolProperty.BoolProperty
+ Octane.Type.Property.BoolProperty: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Property.BoolProperty.BoolProperty
+ Octane.Type.Property.BoolProperty: instance Data.Binary.Class.Binary Octane.Type.Property.BoolProperty.BoolProperty
+ Octane.Type.Property.BoolProperty: instance Data.OverloadedRecords.HasField "content" Octane.Type.Property.BoolProperty.BoolProperty Octane.Type.Boolean.Boolean
+ Octane.Type.Property.BoolProperty: instance Data.OverloadedRecords.HasField "size" Octane.Type.Property.BoolProperty.BoolProperty Octane.Type.Word64.Word64
+ Octane.Type.Property.BoolProperty: instance Data.OverloadedRecords.ModifyField "content" Octane.Type.Property.BoolProperty.BoolProperty Octane.Type.Property.BoolProperty.BoolProperty Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Property.BoolProperty: instance Data.OverloadedRecords.ModifyField "size" Octane.Type.Property.BoolProperty.BoolProperty Octane.Type.Property.BoolProperty.BoolProperty Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.Property.BoolProperty: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.BoolProperty.BoolProperty) Octane.Type.Boolean.Boolean
+ Octane.Type.Property.BoolProperty: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.BoolProperty.BoolProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.BoolProperty.BoolProperty) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Property.BoolProperty: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.BoolProperty.BoolProperty) Octane.Type.Word64.Word64
+ Octane.Type.Property.BoolProperty: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.BoolProperty.BoolProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.BoolProperty.BoolProperty) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.Property.BoolProperty: instance GHC.Classes.Eq Octane.Type.Property.BoolProperty.BoolProperty
+ Octane.Type.Property.BoolProperty: instance GHC.Generics.Generic Octane.Type.Property.BoolProperty.BoolProperty
+ Octane.Type.Property.BoolProperty: instance GHC.Show.Show Octane.Type.Property.BoolProperty.BoolProperty
+ Octane.Type.Property.ByteProperty: ByteProperty :: Word64 -> Text -> Text -> ByteProperty
+ Octane.Type.Property.ByteProperty: [bytePropertyKey] :: ByteProperty -> Text
+ Octane.Type.Property.ByteProperty: [bytePropertySize] :: ByteProperty -> Word64
+ Octane.Type.Property.ByteProperty: [bytePropertyValue] :: ByteProperty -> Text
+ Octane.Type.Property.ByteProperty: data ByteProperty
+ Octane.Type.Property.ByteProperty: instance Control.DeepSeq.NFData Octane.Type.Property.ByteProperty.ByteProperty
+ Octane.Type.Property.ByteProperty: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Property.ByteProperty.ByteProperty
+ Octane.Type.Property.ByteProperty: instance Data.Binary.Class.Binary Octane.Type.Property.ByteProperty.ByteProperty
+ Octane.Type.Property.ByteProperty: instance Data.OverloadedRecords.HasField "key" Octane.Type.Property.ByteProperty.ByteProperty Octane.Type.Text.Text
+ Octane.Type.Property.ByteProperty: instance Data.OverloadedRecords.HasField "size" Octane.Type.Property.ByteProperty.ByteProperty Octane.Type.Word64.Word64
+ Octane.Type.Property.ByteProperty: instance Data.OverloadedRecords.HasField "value" Octane.Type.Property.ByteProperty.ByteProperty Octane.Type.Text.Text
+ Octane.Type.Property.ByteProperty: instance Data.OverloadedRecords.ModifyField "key" Octane.Type.Property.ByteProperty.ByteProperty Octane.Type.Property.ByteProperty.ByteProperty Octane.Type.Text.Text Octane.Type.Text.Text
+ Octane.Type.Property.ByteProperty: instance Data.OverloadedRecords.ModifyField "size" Octane.Type.Property.ByteProperty.ByteProperty Octane.Type.Property.ByteProperty.ByteProperty Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.Property.ByteProperty: instance Data.OverloadedRecords.ModifyField "value" Octane.Type.Property.ByteProperty.ByteProperty Octane.Type.Property.ByteProperty.ByteProperty Octane.Type.Text.Text Octane.Type.Text.Text
+ Octane.Type.Property.ByteProperty: instance Data.OverloadedRecords.ModifyRec "key" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.HasField "key" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ByteProperty.ByteProperty) Octane.Type.Text.Text
+ Octane.Type.Property.ByteProperty: instance Data.OverloadedRecords.ModifyRec "key" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.ModifyField "key" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ByteProperty.ByteProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ByteProperty.ByteProperty) Octane.Type.Text.Text Octane.Type.Text.Text
+ Octane.Type.Property.ByteProperty: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ByteProperty.ByteProperty) Octane.Type.Word64.Word64
+ Octane.Type.Property.ByteProperty: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ByteProperty.ByteProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ByteProperty.ByteProperty) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.Property.ByteProperty: instance Data.OverloadedRecords.ModifyRec "value" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.HasField "value" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ByteProperty.ByteProperty) Octane.Type.Text.Text
+ Octane.Type.Property.ByteProperty: instance Data.OverloadedRecords.ModifyRec "value" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.ModifyField "value" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ByteProperty.ByteProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.ByteProperty.ByteProperty) Octane.Type.Text.Text Octane.Type.Text.Text
+ Octane.Type.Property.ByteProperty: instance GHC.Classes.Eq Octane.Type.Property.ByteProperty.ByteProperty
+ Octane.Type.Property.ByteProperty: instance GHC.Generics.Generic Octane.Type.Property.ByteProperty.ByteProperty
+ Octane.Type.Property.ByteProperty: instance GHC.Show.Show Octane.Type.Property.ByteProperty.ByteProperty
+ Octane.Type.Property.FloatProperty: FloatProperty :: Word64 -> Float32 -> FloatProperty
+ Octane.Type.Property.FloatProperty: [floatPropertyContent] :: FloatProperty -> Float32
+ Octane.Type.Property.FloatProperty: [floatPropertySize] :: FloatProperty -> Word64
+ Octane.Type.Property.FloatProperty: data FloatProperty
+ Octane.Type.Property.FloatProperty: instance Control.DeepSeq.NFData Octane.Type.Property.FloatProperty.FloatProperty
+ Octane.Type.Property.FloatProperty: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Property.FloatProperty.FloatProperty
+ Octane.Type.Property.FloatProperty: instance Data.Binary.Class.Binary Octane.Type.Property.FloatProperty.FloatProperty
+ Octane.Type.Property.FloatProperty: instance Data.OverloadedRecords.HasField "content" Octane.Type.Property.FloatProperty.FloatProperty Octane.Type.Float32.Float32
+ Octane.Type.Property.FloatProperty: instance Data.OverloadedRecords.HasField "size" Octane.Type.Property.FloatProperty.FloatProperty Octane.Type.Word64.Word64
+ Octane.Type.Property.FloatProperty: instance Data.OverloadedRecords.ModifyField "content" Octane.Type.Property.FloatProperty.FloatProperty Octane.Type.Property.FloatProperty.FloatProperty Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
+ Octane.Type.Property.FloatProperty: instance Data.OverloadedRecords.ModifyField "size" Octane.Type.Property.FloatProperty.FloatProperty Octane.Type.Property.FloatProperty.FloatProperty Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.Property.FloatProperty: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.HasField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.FloatProperty.FloatProperty) Octane.Type.Float32.Float32
+ Octane.Type.Property.FloatProperty: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.ModifyField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.FloatProperty.FloatProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.FloatProperty.FloatProperty) Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
+ Octane.Type.Property.FloatProperty: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.FloatProperty.FloatProperty) Octane.Type.Word64.Word64
+ Octane.Type.Property.FloatProperty: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.FloatProperty.FloatProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.FloatProperty.FloatProperty) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.Property.FloatProperty: instance GHC.Classes.Eq Octane.Type.Property.FloatProperty.FloatProperty
+ Octane.Type.Property.FloatProperty: instance GHC.Generics.Generic Octane.Type.Property.FloatProperty.FloatProperty
+ Octane.Type.Property.FloatProperty: instance GHC.Show.Show Octane.Type.Property.FloatProperty.FloatProperty
+ Octane.Type.Property.IntProperty: IntProperty :: Word64 -> Int32 -> IntProperty
+ Octane.Type.Property.IntProperty: [intPropertyContent] :: IntProperty -> Int32
+ Octane.Type.Property.IntProperty: [intPropertySize] :: IntProperty -> Word64
+ Octane.Type.Property.IntProperty: data IntProperty
+ Octane.Type.Property.IntProperty: instance Control.DeepSeq.NFData Octane.Type.Property.IntProperty.IntProperty
+ Octane.Type.Property.IntProperty: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Property.IntProperty.IntProperty
+ Octane.Type.Property.IntProperty: instance Data.Binary.Class.Binary Octane.Type.Property.IntProperty.IntProperty
+ Octane.Type.Property.IntProperty: instance Data.OverloadedRecords.HasField "content" Octane.Type.Property.IntProperty.IntProperty Octane.Type.Int32.Int32
+ Octane.Type.Property.IntProperty: instance Data.OverloadedRecords.HasField "size" Octane.Type.Property.IntProperty.IntProperty Octane.Type.Word64.Word64
+ Octane.Type.Property.IntProperty: instance Data.OverloadedRecords.ModifyField "content" Octane.Type.Property.IntProperty.IntProperty Octane.Type.Property.IntProperty.IntProperty Octane.Type.Int32.Int32 Octane.Type.Int32.Int32
+ Octane.Type.Property.IntProperty: instance Data.OverloadedRecords.ModifyField "size" Octane.Type.Property.IntProperty.IntProperty Octane.Type.Property.IntProperty.IntProperty Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.Property.IntProperty: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Int32.Int32 cs0 => Data.OverloadedRecords.HasField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.IntProperty.IntProperty) Octane.Type.Int32.Int32
+ Octane.Type.Property.IntProperty: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Int32.Int32 cs0 => Data.OverloadedRecords.ModifyField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.IntProperty.IntProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.IntProperty.IntProperty) Octane.Type.Int32.Int32 Octane.Type.Int32.Int32
+ Octane.Type.Property.IntProperty: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.IntProperty.IntProperty) Octane.Type.Word64.Word64
+ Octane.Type.Property.IntProperty: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.IntProperty.IntProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.IntProperty.IntProperty) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.Property.IntProperty: instance GHC.Classes.Eq Octane.Type.Property.IntProperty.IntProperty
+ Octane.Type.Property.IntProperty: instance GHC.Generics.Generic Octane.Type.Property.IntProperty.IntProperty
+ Octane.Type.Property.IntProperty: instance GHC.Show.Show Octane.Type.Property.IntProperty.IntProperty
+ Octane.Type.Property.NameProperty: NameProperty :: Word64 -> Text -> NameProperty
+ Octane.Type.Property.NameProperty: [namePropertyContent] :: NameProperty -> Text
+ Octane.Type.Property.NameProperty: [namePropertySize] :: NameProperty -> Word64
+ Octane.Type.Property.NameProperty: data NameProperty
+ Octane.Type.Property.NameProperty: instance Control.DeepSeq.NFData Octane.Type.Property.NameProperty.NameProperty
+ Octane.Type.Property.NameProperty: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Property.NameProperty.NameProperty
+ Octane.Type.Property.NameProperty: instance Data.Binary.Class.Binary Octane.Type.Property.NameProperty.NameProperty
+ Octane.Type.Property.NameProperty: instance Data.OverloadedRecords.HasField "content" Octane.Type.Property.NameProperty.NameProperty Octane.Type.Text.Text
+ Octane.Type.Property.NameProperty: instance Data.OverloadedRecords.HasField "size" Octane.Type.Property.NameProperty.NameProperty Octane.Type.Word64.Word64
+ Octane.Type.Property.NameProperty: instance Data.OverloadedRecords.ModifyField "content" Octane.Type.Property.NameProperty.NameProperty Octane.Type.Property.NameProperty.NameProperty Octane.Type.Text.Text Octane.Type.Text.Text
+ Octane.Type.Property.NameProperty: instance Data.OverloadedRecords.ModifyField "size" Octane.Type.Property.NameProperty.NameProperty Octane.Type.Property.NameProperty.NameProperty Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.Property.NameProperty: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.HasField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.NameProperty.NameProperty) Octane.Type.Text.Text
+ Octane.Type.Property.NameProperty: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.ModifyField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.NameProperty.NameProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.NameProperty.NameProperty) Octane.Type.Text.Text Octane.Type.Text.Text
+ Octane.Type.Property.NameProperty: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.NameProperty.NameProperty) Octane.Type.Word64.Word64
+ Octane.Type.Property.NameProperty: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.NameProperty.NameProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.NameProperty.NameProperty) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.Property.NameProperty: instance GHC.Classes.Eq Octane.Type.Property.NameProperty.NameProperty
+ Octane.Type.Property.NameProperty: instance GHC.Generics.Generic Octane.Type.Property.NameProperty.NameProperty
+ Octane.Type.Property.NameProperty: instance GHC.Show.Show Octane.Type.Property.NameProperty.NameProperty
+ Octane.Type.Property.QWordProperty: QWordProperty :: Word64 -> Word64 -> QWordProperty
+ Octane.Type.Property.QWordProperty: [qWordPropertyContent] :: QWordProperty -> Word64
+ Octane.Type.Property.QWordProperty: [qWordPropertySize] :: QWordProperty -> Word64
+ Octane.Type.Property.QWordProperty: data QWordProperty
+ Octane.Type.Property.QWordProperty: instance Control.DeepSeq.NFData Octane.Type.Property.QWordProperty.QWordProperty
+ Octane.Type.Property.QWordProperty: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Property.QWordProperty.QWordProperty
+ Octane.Type.Property.QWordProperty: instance Data.Binary.Class.Binary Octane.Type.Property.QWordProperty.QWordProperty
+ Octane.Type.Property.QWordProperty: instance Data.OverloadedRecords.HasField "content" Octane.Type.Property.QWordProperty.QWordProperty Octane.Type.Word64.Word64
+ Octane.Type.Property.QWordProperty: instance Data.OverloadedRecords.HasField "size" Octane.Type.Property.QWordProperty.QWordProperty Octane.Type.Word64.Word64
+ Octane.Type.Property.QWordProperty: instance Data.OverloadedRecords.ModifyField "content" Octane.Type.Property.QWordProperty.QWordProperty Octane.Type.Property.QWordProperty.QWordProperty Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.Property.QWordProperty: instance Data.OverloadedRecords.ModifyField "size" Octane.Type.Property.QWordProperty.QWordProperty Octane.Type.Property.QWordProperty.QWordProperty Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.Property.QWordProperty: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.QWordProperty.QWordProperty) Octane.Type.Word64.Word64
+ Octane.Type.Property.QWordProperty: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.QWordProperty.QWordProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.QWordProperty.QWordProperty) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.Property.QWordProperty: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.QWordProperty.QWordProperty) Octane.Type.Word64.Word64
+ Octane.Type.Property.QWordProperty: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.QWordProperty.QWordProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.QWordProperty.QWordProperty) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.Property.QWordProperty: instance GHC.Classes.Eq Octane.Type.Property.QWordProperty.QWordProperty
+ Octane.Type.Property.QWordProperty: instance GHC.Generics.Generic Octane.Type.Property.QWordProperty.QWordProperty
+ Octane.Type.Property.QWordProperty: instance GHC.Show.Show Octane.Type.Property.QWordProperty.QWordProperty
+ Octane.Type.Property.StrProperty: StrProperty :: Word64 -> Text -> StrProperty
+ Octane.Type.Property.StrProperty: [strPropertyContent] :: StrProperty -> Text
+ Octane.Type.Property.StrProperty: [strPropertySize] :: StrProperty -> Word64
+ Octane.Type.Property.StrProperty: data StrProperty
+ Octane.Type.Property.StrProperty: instance Control.DeepSeq.NFData Octane.Type.Property.StrProperty.StrProperty
+ Octane.Type.Property.StrProperty: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Property.StrProperty.StrProperty
+ Octane.Type.Property.StrProperty: instance Data.Binary.Class.Binary Octane.Type.Property.StrProperty.StrProperty
+ Octane.Type.Property.StrProperty: instance Data.OverloadedRecords.HasField "content" Octane.Type.Property.StrProperty.StrProperty Octane.Type.Text.Text
+ Octane.Type.Property.StrProperty: instance Data.OverloadedRecords.HasField "size" Octane.Type.Property.StrProperty.StrProperty Octane.Type.Word64.Word64
+ Octane.Type.Property.StrProperty: instance Data.OverloadedRecords.ModifyField "content" Octane.Type.Property.StrProperty.StrProperty Octane.Type.Property.StrProperty.StrProperty Octane.Type.Text.Text Octane.Type.Text.Text
+ Octane.Type.Property.StrProperty: instance Data.OverloadedRecords.ModifyField "size" Octane.Type.Property.StrProperty.StrProperty Octane.Type.Property.StrProperty.StrProperty Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.Property.StrProperty: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.HasField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.StrProperty.StrProperty) Octane.Type.Text.Text
+ Octane.Type.Property.StrProperty: instance Data.OverloadedRecords.ModifyRec "content" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.ModifyField "content" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.StrProperty.StrProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.StrProperty.StrProperty) Octane.Type.Text.Text Octane.Type.Text.Text
+ Octane.Type.Property.StrProperty: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.StrProperty.StrProperty) Octane.Type.Word64.Word64
+ Octane.Type.Property.StrProperty: instance Data.OverloadedRecords.ModifyRec "size" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "size" (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.StrProperty.StrProperty) (Data.OverloadedRecords.Rec cs0 Octane.Type.Property.StrProperty.StrProperty) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.Property.StrProperty: instance GHC.Classes.Eq Octane.Type.Property.StrProperty.StrProperty
+ Octane.Type.Property.StrProperty: instance GHC.Generics.Generic Octane.Type.Property.StrProperty.StrProperty
+ Octane.Type.Property.StrProperty: instance GHC.Show.Show Octane.Type.Property.StrProperty.StrProperty
+ Octane.Type.RemoteId.PlayStationId: PlayStationId :: Text -> ByteString -> PlayStationId
+ Octane.Type.RemoteId.PlayStationId: [playStationIdName] :: PlayStationId -> Text
+ Octane.Type.RemoteId.PlayStationId: [playStationIdUnknown] :: PlayStationId -> ByteString
+ Octane.Type.RemoteId.PlayStationId: data PlayStationId
+ Octane.Type.RemoteId.PlayStationId: instance Control.DeepSeq.NFData Octane.Type.RemoteId.PlayStationId.PlayStationId
+ Octane.Type.RemoteId.PlayStationId: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.RemoteId.PlayStationId.PlayStationId
+ Octane.Type.RemoteId.PlayStationId: instance Data.Binary.Bits.BinaryBit Octane.Type.RemoteId.PlayStationId.PlayStationId
+ Octane.Type.RemoteId.PlayStationId: instance Data.OverloadedRecords.HasField "name" Octane.Type.RemoteId.PlayStationId.PlayStationId Octane.Type.Text.Text
+ Octane.Type.RemoteId.PlayStationId: instance Data.OverloadedRecords.HasField "unknown" Octane.Type.RemoteId.PlayStationId.PlayStationId Data.ByteString.Lazy.Internal.ByteString
+ Octane.Type.RemoteId.PlayStationId: instance Data.OverloadedRecords.ModifyField "name" Octane.Type.RemoteId.PlayStationId.PlayStationId Octane.Type.RemoteId.PlayStationId.PlayStationId Octane.Type.Text.Text Octane.Type.Text.Text
+ Octane.Type.RemoteId.PlayStationId: instance Data.OverloadedRecords.ModifyField "unknown" Octane.Type.RemoteId.PlayStationId.PlayStationId Octane.Type.RemoteId.PlayStationId.PlayStationId Data.ByteString.Lazy.Internal.ByteString Data.ByteString.Lazy.Internal.ByteString
+ Octane.Type.RemoteId.PlayStationId: instance Data.OverloadedRecords.ModifyRec "name" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.HasField "name" (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.PlayStationId.PlayStationId) Octane.Type.Text.Text
+ Octane.Type.RemoteId.PlayStationId: instance Data.OverloadedRecords.ModifyRec "name" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.ModifyField "name" (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.PlayStationId.PlayStationId) (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.PlayStationId.PlayStationId) Octane.Type.Text.Text Octane.Type.Text.Text
+ Octane.Type.RemoteId.PlayStationId: instance Data.OverloadedRecords.ModifyRec "unknown" Data.ByteString.Lazy.Internal.ByteString cs0 => Data.OverloadedRecords.HasField "unknown" (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.PlayStationId.PlayStationId) Data.ByteString.Lazy.Internal.ByteString
+ Octane.Type.RemoteId.PlayStationId: instance Data.OverloadedRecords.ModifyRec "unknown" Data.ByteString.Lazy.Internal.ByteString cs0 => Data.OverloadedRecords.ModifyField "unknown" (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.PlayStationId.PlayStationId) (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.PlayStationId.PlayStationId) Data.ByteString.Lazy.Internal.ByteString Data.ByteString.Lazy.Internal.ByteString
+ Octane.Type.RemoteId.PlayStationId: instance GHC.Classes.Eq Octane.Type.RemoteId.PlayStationId.PlayStationId
+ Octane.Type.RemoteId.PlayStationId: instance GHC.Generics.Generic Octane.Type.RemoteId.PlayStationId.PlayStationId
+ Octane.Type.RemoteId.PlayStationId: instance GHC.Show.Show Octane.Type.RemoteId.PlayStationId.PlayStationId
+ Octane.Type.RemoteId.SplitscreenId: SplitscreenId :: Maybe Int -> SplitscreenId
+ Octane.Type.RemoteId.SplitscreenId: [splitscreenIdUnpack] :: SplitscreenId -> Maybe Int
+ Octane.Type.RemoteId.SplitscreenId: instance Control.DeepSeq.NFData Octane.Type.RemoteId.SplitscreenId.SplitscreenId
+ Octane.Type.RemoteId.SplitscreenId: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.RemoteId.SplitscreenId.SplitscreenId
+ Octane.Type.RemoteId.SplitscreenId: instance Data.Binary.Bits.BinaryBit Octane.Type.RemoteId.SplitscreenId.SplitscreenId
+ Octane.Type.RemoteId.SplitscreenId: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.RemoteId.SplitscreenId.SplitscreenId (GHC.Base.Maybe GHC.Types.Int)
+ Octane.Type.RemoteId.SplitscreenId: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.RemoteId.SplitscreenId.SplitscreenId Octane.Type.RemoteId.SplitscreenId.SplitscreenId (GHC.Base.Maybe GHC.Types.Int) (GHC.Base.Maybe GHC.Types.Int)
+ Octane.Type.RemoteId.SplitscreenId: instance Data.OverloadedRecords.ModifyRec "unpack" (GHC.Base.Maybe GHC.Types.Int) cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.SplitscreenId.SplitscreenId) (GHC.Base.Maybe GHC.Types.Int)
+ Octane.Type.RemoteId.SplitscreenId: instance Data.OverloadedRecords.ModifyRec "unpack" (GHC.Base.Maybe GHC.Types.Int) cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.SplitscreenId.SplitscreenId) (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.SplitscreenId.SplitscreenId) (GHC.Base.Maybe GHC.Types.Int) (GHC.Base.Maybe GHC.Types.Int)
+ Octane.Type.RemoteId.SplitscreenId: instance GHC.Classes.Eq Octane.Type.RemoteId.SplitscreenId.SplitscreenId
+ Octane.Type.RemoteId.SplitscreenId: instance GHC.Generics.Generic Octane.Type.RemoteId.SplitscreenId.SplitscreenId
+ Octane.Type.RemoteId.SplitscreenId: instance GHC.Show.Show Octane.Type.RemoteId.SplitscreenId.SplitscreenId
+ Octane.Type.RemoteId.SplitscreenId: newtype SplitscreenId
+ Octane.Type.RemoteId.SteamId: SteamId :: Word64 -> SteamId
+ Octane.Type.RemoteId.SteamId: [steamIdUnpack] :: SteamId -> Word64
+ Octane.Type.RemoteId.SteamId: instance Control.DeepSeq.NFData Octane.Type.RemoteId.SteamId.SteamId
+ Octane.Type.RemoteId.SteamId: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.RemoteId.SteamId.SteamId
+ Octane.Type.RemoteId.SteamId: instance Data.Binary.Bits.BinaryBit Octane.Type.RemoteId.SteamId.SteamId
+ Octane.Type.RemoteId.SteamId: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.RemoteId.SteamId.SteamId Octane.Type.Word64.Word64
+ Octane.Type.RemoteId.SteamId: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.RemoteId.SteamId.SteamId Octane.Type.RemoteId.SteamId.SteamId Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.RemoteId.SteamId: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.SteamId.SteamId) Octane.Type.Word64.Word64
+ Octane.Type.RemoteId.SteamId: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.SteamId.SteamId) (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.SteamId.SteamId) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.RemoteId.SteamId: instance GHC.Classes.Eq Octane.Type.RemoteId.SteamId.SteamId
+ Octane.Type.RemoteId.SteamId: instance GHC.Generics.Generic Octane.Type.RemoteId.SteamId.SteamId
+ Octane.Type.RemoteId.SteamId: instance GHC.Show.Show Octane.Type.RemoteId.SteamId.SteamId
+ Octane.Type.RemoteId.SteamId: newtype SteamId
+ Octane.Type.RemoteId.XboxId: XboxId :: Word64 -> XboxId
+ Octane.Type.RemoteId.XboxId: [xboxIdUnpack] :: XboxId -> Word64
+ Octane.Type.RemoteId.XboxId: instance Control.DeepSeq.NFData Octane.Type.RemoteId.XboxId.XboxId
+ Octane.Type.RemoteId.XboxId: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.RemoteId.XboxId.XboxId
+ Octane.Type.RemoteId.XboxId: instance Data.Binary.Bits.BinaryBit Octane.Type.RemoteId.XboxId.XboxId
+ Octane.Type.RemoteId.XboxId: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.RemoteId.XboxId.XboxId Octane.Type.Word64.Word64
+ Octane.Type.RemoteId.XboxId: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.RemoteId.XboxId.XboxId Octane.Type.RemoteId.XboxId.XboxId Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.RemoteId.XboxId: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.XboxId.XboxId) Octane.Type.Word64.Word64
+ Octane.Type.RemoteId.XboxId: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.XboxId.XboxId) (Data.OverloadedRecords.Rec cs0 Octane.Type.RemoteId.XboxId.XboxId) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.RemoteId.XboxId: instance GHC.Classes.Eq Octane.Type.RemoteId.XboxId.XboxId
+ Octane.Type.RemoteId.XboxId: instance GHC.Generics.Generic Octane.Type.RemoteId.XboxId.XboxId
+ Octane.Type.RemoteId.XboxId: instance GHC.Show.Show Octane.Type.RemoteId.XboxId.XboxId
+ Octane.Type.RemoteId.XboxId: newtype XboxId
+ Octane.Type.State: Closing :: State
+ Octane.Type.State: Existing :: State
+ Octane.Type.State: Opening :: State
+ Octane.Type.State: isClosing :: State -> Bool
+ Octane.Type.State: isExisting :: State -> Bool
+ Octane.Type.State: isOpening :: State -> Bool
+ Octane.Type.Value: ValueLoadouts :: LoadoutsValue -> Value
+ Octane.Type.Value: ValueLoadoutsOnline :: LoadoutsOnlineValue -> Value
+ Octane.Type.Value: ValueWeldedInfo :: WeldedInfoValue -> Value
+ Octane.Type.Value.BooleanValue: BooleanValue :: Boolean -> BooleanValue
+ Octane.Type.Value.BooleanValue: [booleanValueUnpack] :: BooleanValue -> Boolean
+ Octane.Type.Value.BooleanValue: instance Control.DeepSeq.NFData Octane.Type.Value.BooleanValue.BooleanValue
+ Octane.Type.Value.BooleanValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.BooleanValue.BooleanValue
+ Octane.Type.Value.BooleanValue: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.Value.BooleanValue.BooleanValue Octane.Type.Boolean.Boolean
+ Octane.Type.Value.BooleanValue: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.Value.BooleanValue.BooleanValue Octane.Type.Value.BooleanValue.BooleanValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.BooleanValue: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.BooleanValue.BooleanValue) Octane.Type.Boolean.Boolean
+ Octane.Type.Value.BooleanValue: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.BooleanValue.BooleanValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.BooleanValue.BooleanValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.BooleanValue: instance GHC.Classes.Eq Octane.Type.Value.BooleanValue.BooleanValue
+ Octane.Type.Value.BooleanValue: instance GHC.Generics.Generic Octane.Type.Value.BooleanValue.BooleanValue
+ Octane.Type.Value.BooleanValue: instance GHC.Show.Show Octane.Type.Value.BooleanValue.BooleanValue
+ Octane.Type.Value.BooleanValue: newtype BooleanValue
+ Octane.Type.Value.ByteValue: ByteValue :: Word8 -> ByteValue
+ Octane.Type.Value.ByteValue: [byteValueUnpack] :: ByteValue -> Word8
+ Octane.Type.Value.ByteValue: instance Control.DeepSeq.NFData Octane.Type.Value.ByteValue.ByteValue
+ Octane.Type.Value.ByteValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.ByteValue.ByteValue
+ Octane.Type.Value.ByteValue: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.Value.ByteValue.ByteValue Octane.Type.Word8.Word8
+ Octane.Type.Value.ByteValue: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.Value.ByteValue.ByteValue Octane.Type.Value.ByteValue.ByteValue Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
+ Octane.Type.Value.ByteValue: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ByteValue.ByteValue) Octane.Type.Word8.Word8
+ Octane.Type.Value.ByteValue: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ByteValue.ByteValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ByteValue.ByteValue) Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
+ Octane.Type.Value.ByteValue: instance GHC.Classes.Eq Octane.Type.Value.ByteValue.ByteValue
+ Octane.Type.Value.ByteValue: instance GHC.Generics.Generic Octane.Type.Value.ByteValue.ByteValue
+ Octane.Type.Value.ByteValue: instance GHC.Show.Show Octane.Type.Value.ByteValue.ByteValue
+ Octane.Type.Value.ByteValue: newtype ByteValue
+ Octane.Type.Value.CamSettingsValue: CamSettingsValue :: Float32 -> Float32 -> Float32 -> Float32 -> Float32 -> Float32 -> CamSettingsValue
+ Octane.Type.Value.CamSettingsValue: [camSettingsValueAngle] :: CamSettingsValue -> Float32
+ Octane.Type.Value.CamSettingsValue: [camSettingsValueDistance] :: CamSettingsValue -> Float32
+ Octane.Type.Value.CamSettingsValue: [camSettingsValueFov] :: CamSettingsValue -> Float32
+ Octane.Type.Value.CamSettingsValue: [camSettingsValueHeight] :: CamSettingsValue -> Float32
+ Octane.Type.Value.CamSettingsValue: [camSettingsValueStiffness] :: CamSettingsValue -> Float32
+ Octane.Type.Value.CamSettingsValue: [camSettingsValueSwivelSpeed] :: CamSettingsValue -> Float32
+ Octane.Type.Value.CamSettingsValue: data CamSettingsValue
+ Octane.Type.Value.CamSettingsValue: instance Control.DeepSeq.NFData Octane.Type.Value.CamSettingsValue.CamSettingsValue
+ Octane.Type.Value.CamSettingsValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.CamSettingsValue.CamSettingsValue
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.HasField "angle" Octane.Type.Value.CamSettingsValue.CamSettingsValue Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.HasField "distance" Octane.Type.Value.CamSettingsValue.CamSettingsValue Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.HasField "fov" Octane.Type.Value.CamSettingsValue.CamSettingsValue Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.HasField "height" Octane.Type.Value.CamSettingsValue.CamSettingsValue Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.HasField "stiffness" Octane.Type.Value.CamSettingsValue.CamSettingsValue Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.HasField "swivelSpeed" Octane.Type.Value.CamSettingsValue.CamSettingsValue Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.ModifyField "angle" Octane.Type.Value.CamSettingsValue.CamSettingsValue Octane.Type.Value.CamSettingsValue.CamSettingsValue Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.ModifyField "distance" Octane.Type.Value.CamSettingsValue.CamSettingsValue Octane.Type.Value.CamSettingsValue.CamSettingsValue Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.ModifyField "fov" Octane.Type.Value.CamSettingsValue.CamSettingsValue Octane.Type.Value.CamSettingsValue.CamSettingsValue Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.ModifyField "height" Octane.Type.Value.CamSettingsValue.CamSettingsValue Octane.Type.Value.CamSettingsValue.CamSettingsValue Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.ModifyField "stiffness" Octane.Type.Value.CamSettingsValue.CamSettingsValue Octane.Type.Value.CamSettingsValue.CamSettingsValue Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.ModifyField "swivelSpeed" Octane.Type.Value.CamSettingsValue.CamSettingsValue Octane.Type.Value.CamSettingsValue.CamSettingsValue Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.ModifyRec "angle" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.HasField "angle" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue.CamSettingsValue) Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.ModifyRec "angle" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.ModifyField "angle" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue.CamSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue.CamSettingsValue) Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.ModifyRec "distance" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.HasField "distance" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue.CamSettingsValue) Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.ModifyRec "distance" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.ModifyField "distance" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue.CamSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue.CamSettingsValue) Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.ModifyRec "fov" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.HasField "fov" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue.CamSettingsValue) Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.ModifyRec "fov" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.ModifyField "fov" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue.CamSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue.CamSettingsValue) Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.ModifyRec "height" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.HasField "height" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue.CamSettingsValue) Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.ModifyRec "height" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.ModifyField "height" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue.CamSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue.CamSettingsValue) Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.ModifyRec "stiffness" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.HasField "stiffness" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue.CamSettingsValue) Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.ModifyRec "stiffness" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.ModifyField "stiffness" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue.CamSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue.CamSettingsValue) Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.ModifyRec "swivelSpeed" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.HasField "swivelSpeed" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue.CamSettingsValue) Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance Data.OverloadedRecords.ModifyRec "swivelSpeed" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.ModifyField "swivelSpeed" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue.CamSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.CamSettingsValue.CamSettingsValue) Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
+ Octane.Type.Value.CamSettingsValue: instance GHC.Classes.Eq Octane.Type.Value.CamSettingsValue.CamSettingsValue
+ Octane.Type.Value.CamSettingsValue: instance GHC.Generics.Generic Octane.Type.Value.CamSettingsValue.CamSettingsValue
+ Octane.Type.Value.CamSettingsValue: instance GHC.Show.Show Octane.Type.Value.CamSettingsValue.CamSettingsValue
+ Octane.Type.Value.DemolishValue: DemolishValue :: Boolean -> Word32 -> Boolean -> Word32 -> Vector Int -> Vector Int -> DemolishValue
+ Octane.Type.Value.DemolishValue: [demolishValueAttackerActorId] :: DemolishValue -> Word32
+ Octane.Type.Value.DemolishValue: [demolishValueAttackerFlag] :: DemolishValue -> Boolean
+ Octane.Type.Value.DemolishValue: [demolishValueAttackerVelocity] :: DemolishValue -> Vector Int
+ Octane.Type.Value.DemolishValue: [demolishValueVictimActorId] :: DemolishValue -> Word32
+ Octane.Type.Value.DemolishValue: [demolishValueVictimFlag] :: DemolishValue -> Boolean
+ Octane.Type.Value.DemolishValue: [demolishValueVictimVelocity] :: DemolishValue -> Vector Int
+ Octane.Type.Value.DemolishValue: data DemolishValue
+ Octane.Type.Value.DemolishValue: instance Control.DeepSeq.NFData Octane.Type.Value.DemolishValue.DemolishValue
+ Octane.Type.Value.DemolishValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.DemolishValue.DemolishValue
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.HasField "attackerActorId" Octane.Type.Value.DemolishValue.DemolishValue Octane.Type.Word32.Word32
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.HasField "attackerFlag" Octane.Type.Value.DemolishValue.DemolishValue Octane.Type.Boolean.Boolean
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.HasField "attackerVelocity" Octane.Type.Value.DemolishValue.DemolishValue (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.HasField "victimActorId" Octane.Type.Value.DemolishValue.DemolishValue Octane.Type.Word32.Word32
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.HasField "victimFlag" Octane.Type.Value.DemolishValue.DemolishValue Octane.Type.Boolean.Boolean
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.HasField "victimVelocity" Octane.Type.Value.DemolishValue.DemolishValue (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.ModifyField "attackerActorId" Octane.Type.Value.DemolishValue.DemolishValue Octane.Type.Value.DemolishValue.DemolishValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.ModifyField "attackerFlag" Octane.Type.Value.DemolishValue.DemolishValue Octane.Type.Value.DemolishValue.DemolishValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.ModifyField "attackerVelocity" Octane.Type.Value.DemolishValue.DemolishValue Octane.Type.Value.DemolishValue.DemolishValue (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.ModifyField "victimActorId" Octane.Type.Value.DemolishValue.DemolishValue Octane.Type.Value.DemolishValue.DemolishValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.ModifyField "victimFlag" Octane.Type.Value.DemolishValue.DemolishValue Octane.Type.Value.DemolishValue.DemolishValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.ModifyField "victimVelocity" Octane.Type.Value.DemolishValue.DemolishValue Octane.Type.Value.DemolishValue.DemolishValue (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.ModifyRec "attackerActorId" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "attackerActorId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue.DemolishValue) Octane.Type.Word32.Word32
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.ModifyRec "attackerActorId" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "attackerActorId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue.DemolishValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue.DemolishValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.ModifyRec "attackerFlag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "attackerFlag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue.DemolishValue) Octane.Type.Boolean.Boolean
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.ModifyRec "attackerFlag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "attackerFlag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue.DemolishValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue.DemolishValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.ModifyRec "attackerVelocity" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.HasField "attackerVelocity" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue.DemolishValue) (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.ModifyRec "attackerVelocity" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.ModifyField "attackerVelocity" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue.DemolishValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue.DemolishValue) (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.ModifyRec "victimActorId" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "victimActorId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue.DemolishValue) Octane.Type.Word32.Word32
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.ModifyRec "victimActorId" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "victimActorId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue.DemolishValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue.DemolishValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.ModifyRec "victimFlag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "victimFlag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue.DemolishValue) Octane.Type.Boolean.Boolean
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.ModifyRec "victimFlag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "victimFlag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue.DemolishValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue.DemolishValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.ModifyRec "victimVelocity" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.HasField "victimVelocity" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue.DemolishValue) (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.DemolishValue: instance Data.OverloadedRecords.ModifyRec "victimVelocity" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.ModifyField "victimVelocity" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue.DemolishValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.DemolishValue.DemolishValue) (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.DemolishValue: instance GHC.Classes.Eq Octane.Type.Value.DemolishValue.DemolishValue
+ Octane.Type.Value.DemolishValue: instance GHC.Generics.Generic Octane.Type.Value.DemolishValue.DemolishValue
+ Octane.Type.Value.DemolishValue: instance GHC.Show.Show Octane.Type.Value.DemolishValue.DemolishValue
+ Octane.Type.Value.EnumValue: EnumValue :: Word16 -> Boolean -> EnumValue
+ Octane.Type.Value.EnumValue: [enumValueFlag] :: EnumValue -> Boolean
+ Octane.Type.Value.EnumValue: [enumValueValue] :: EnumValue -> Word16
+ Octane.Type.Value.EnumValue: data EnumValue
+ Octane.Type.Value.EnumValue: instance Control.DeepSeq.NFData Octane.Type.Value.EnumValue.EnumValue
+ Octane.Type.Value.EnumValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.EnumValue.EnumValue
+ Octane.Type.Value.EnumValue: instance Data.OverloadedRecords.HasField "flag" Octane.Type.Value.EnumValue.EnumValue Octane.Type.Boolean.Boolean
+ Octane.Type.Value.EnumValue: instance Data.OverloadedRecords.HasField "value" Octane.Type.Value.EnumValue.EnumValue Octane.Type.Word16.Word16
+ Octane.Type.Value.EnumValue: instance Data.OverloadedRecords.ModifyField "flag" Octane.Type.Value.EnumValue.EnumValue Octane.Type.Value.EnumValue.EnumValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.EnumValue: instance Data.OverloadedRecords.ModifyField "value" Octane.Type.Value.EnumValue.EnumValue Octane.Type.Value.EnumValue.EnumValue Octane.Type.Word16.Word16 Octane.Type.Word16.Word16
+ Octane.Type.Value.EnumValue: instance Data.OverloadedRecords.ModifyRec "flag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "flag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.EnumValue.EnumValue) Octane.Type.Boolean.Boolean
+ Octane.Type.Value.EnumValue: instance Data.OverloadedRecords.ModifyRec "flag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "flag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.EnumValue.EnumValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.EnumValue.EnumValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.EnumValue: instance Data.OverloadedRecords.ModifyRec "value" Octane.Type.Word16.Word16 cs0 => Data.OverloadedRecords.HasField "value" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.EnumValue.EnumValue) Octane.Type.Word16.Word16
+ Octane.Type.Value.EnumValue: instance Data.OverloadedRecords.ModifyRec "value" Octane.Type.Word16.Word16 cs0 => Data.OverloadedRecords.ModifyField "value" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.EnumValue.EnumValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.EnumValue.EnumValue) Octane.Type.Word16.Word16 Octane.Type.Word16.Word16
+ Octane.Type.Value.EnumValue: instance GHC.Classes.Eq Octane.Type.Value.EnumValue.EnumValue
+ Octane.Type.Value.EnumValue: instance GHC.Generics.Generic Octane.Type.Value.EnumValue.EnumValue
+ Octane.Type.Value.EnumValue: instance GHC.Show.Show Octane.Type.Value.EnumValue.EnumValue
+ Octane.Type.Value.ExplosionValue: ExplosionValue :: Boolean -> Maybe Int32 -> Vector Int -> ExplosionValue
+ Octane.Type.Value.ExplosionValue: [explosionValueActorId] :: ExplosionValue -> Maybe Int32
+ Octane.Type.Value.ExplosionValue: [explosionValueActorless] :: ExplosionValue -> Boolean
+ Octane.Type.Value.ExplosionValue: [explosionValuePosition] :: ExplosionValue -> Vector Int
+ Octane.Type.Value.ExplosionValue: data ExplosionValue
+ Octane.Type.Value.ExplosionValue: instance Control.DeepSeq.NFData Octane.Type.Value.ExplosionValue.ExplosionValue
+ Octane.Type.Value.ExplosionValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.ExplosionValue.ExplosionValue
+ Octane.Type.Value.ExplosionValue: instance Data.OverloadedRecords.HasField "actorId" Octane.Type.Value.ExplosionValue.ExplosionValue (GHC.Base.Maybe Octane.Type.Int32.Int32)
+ Octane.Type.Value.ExplosionValue: instance Data.OverloadedRecords.HasField "actorless" Octane.Type.Value.ExplosionValue.ExplosionValue Octane.Type.Boolean.Boolean
+ Octane.Type.Value.ExplosionValue: instance Data.OverloadedRecords.HasField "position" Octane.Type.Value.ExplosionValue.ExplosionValue (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.ExplosionValue: instance Data.OverloadedRecords.ModifyField "actorId" Octane.Type.Value.ExplosionValue.ExplosionValue Octane.Type.Value.ExplosionValue.ExplosionValue (GHC.Base.Maybe Octane.Type.Int32.Int32) (GHC.Base.Maybe Octane.Type.Int32.Int32)
+ Octane.Type.Value.ExplosionValue: instance Data.OverloadedRecords.ModifyField "actorless" Octane.Type.Value.ExplosionValue.ExplosionValue Octane.Type.Value.ExplosionValue.ExplosionValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.ExplosionValue: instance Data.OverloadedRecords.ModifyField "position" Octane.Type.Value.ExplosionValue.ExplosionValue Octane.Type.Value.ExplosionValue.ExplosionValue (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.ExplosionValue: instance Data.OverloadedRecords.ModifyRec "actorId" (GHC.Base.Maybe Octane.Type.Int32.Int32) cs0 => Data.OverloadedRecords.HasField "actorId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ExplosionValue.ExplosionValue) (GHC.Base.Maybe Octane.Type.Int32.Int32)
+ Octane.Type.Value.ExplosionValue: instance Data.OverloadedRecords.ModifyRec "actorId" (GHC.Base.Maybe Octane.Type.Int32.Int32) cs0 => Data.OverloadedRecords.ModifyField "actorId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ExplosionValue.ExplosionValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ExplosionValue.ExplosionValue) (GHC.Base.Maybe Octane.Type.Int32.Int32) (GHC.Base.Maybe Octane.Type.Int32.Int32)
+ Octane.Type.Value.ExplosionValue: instance Data.OverloadedRecords.ModifyRec "actorless" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "actorless" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ExplosionValue.ExplosionValue) Octane.Type.Boolean.Boolean
+ Octane.Type.Value.ExplosionValue: instance Data.OverloadedRecords.ModifyRec "actorless" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "actorless" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ExplosionValue.ExplosionValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ExplosionValue.ExplosionValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.ExplosionValue: instance Data.OverloadedRecords.ModifyRec "position" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.HasField "position" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ExplosionValue.ExplosionValue) (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.ExplosionValue: instance Data.OverloadedRecords.ModifyRec "position" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.ModifyField "position" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ExplosionValue.ExplosionValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ExplosionValue.ExplosionValue) (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.ExplosionValue: instance GHC.Classes.Eq Octane.Type.Value.ExplosionValue.ExplosionValue
+ Octane.Type.Value.ExplosionValue: instance GHC.Generics.Generic Octane.Type.Value.ExplosionValue.ExplosionValue
+ Octane.Type.Value.ExplosionValue: instance GHC.Show.Show Octane.Type.Value.ExplosionValue.ExplosionValue
+ Octane.Type.Value.FlaggedIntValue: FlaggedIntValue :: Boolean -> Int32 -> FlaggedIntValue
+ Octane.Type.Value.FlaggedIntValue: [flaggedIntValueFlag] :: FlaggedIntValue -> Boolean
+ Octane.Type.Value.FlaggedIntValue: [flaggedIntValueInt] :: FlaggedIntValue -> Int32
+ Octane.Type.Value.FlaggedIntValue: data FlaggedIntValue
+ Octane.Type.Value.FlaggedIntValue: instance Control.DeepSeq.NFData Octane.Type.Value.FlaggedIntValue.FlaggedIntValue
+ Octane.Type.Value.FlaggedIntValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.FlaggedIntValue.FlaggedIntValue
+ Octane.Type.Value.FlaggedIntValue: instance Data.OverloadedRecords.HasField "flag" Octane.Type.Value.FlaggedIntValue.FlaggedIntValue Octane.Type.Boolean.Boolean
+ Octane.Type.Value.FlaggedIntValue: instance Data.OverloadedRecords.HasField "int" Octane.Type.Value.FlaggedIntValue.FlaggedIntValue Octane.Type.Int32.Int32
+ Octane.Type.Value.FlaggedIntValue: instance Data.OverloadedRecords.ModifyField "flag" Octane.Type.Value.FlaggedIntValue.FlaggedIntValue Octane.Type.Value.FlaggedIntValue.FlaggedIntValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.FlaggedIntValue: instance Data.OverloadedRecords.ModifyField "int" Octane.Type.Value.FlaggedIntValue.FlaggedIntValue Octane.Type.Value.FlaggedIntValue.FlaggedIntValue Octane.Type.Int32.Int32 Octane.Type.Int32.Int32
+ Octane.Type.Value.FlaggedIntValue: instance Data.OverloadedRecords.ModifyRec "flag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "flag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.FlaggedIntValue.FlaggedIntValue) Octane.Type.Boolean.Boolean
+ Octane.Type.Value.FlaggedIntValue: instance Data.OverloadedRecords.ModifyRec "flag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "flag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.FlaggedIntValue.FlaggedIntValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.FlaggedIntValue.FlaggedIntValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.FlaggedIntValue: instance Data.OverloadedRecords.ModifyRec "int" Octane.Type.Int32.Int32 cs0 => Data.OverloadedRecords.HasField "int" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.FlaggedIntValue.FlaggedIntValue) Octane.Type.Int32.Int32
+ Octane.Type.Value.FlaggedIntValue: instance Data.OverloadedRecords.ModifyRec "int" Octane.Type.Int32.Int32 cs0 => Data.OverloadedRecords.ModifyField "int" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.FlaggedIntValue.FlaggedIntValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.FlaggedIntValue.FlaggedIntValue) Octane.Type.Int32.Int32 Octane.Type.Int32.Int32
+ Octane.Type.Value.FlaggedIntValue: instance GHC.Classes.Eq Octane.Type.Value.FlaggedIntValue.FlaggedIntValue
+ Octane.Type.Value.FlaggedIntValue: instance GHC.Generics.Generic Octane.Type.Value.FlaggedIntValue.FlaggedIntValue
+ Octane.Type.Value.FlaggedIntValue: instance GHC.Show.Show Octane.Type.Value.FlaggedIntValue.FlaggedIntValue
+ Octane.Type.Value.FloatValue: FloatValue :: Float32 -> FloatValue
+ Octane.Type.Value.FloatValue: [floatValueUnpack] :: FloatValue -> Float32
+ Octane.Type.Value.FloatValue: instance Control.DeepSeq.NFData Octane.Type.Value.FloatValue.FloatValue
+ Octane.Type.Value.FloatValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.FloatValue.FloatValue
+ Octane.Type.Value.FloatValue: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.Value.FloatValue.FloatValue Octane.Type.Float32.Float32
+ Octane.Type.Value.FloatValue: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.Value.FloatValue.FloatValue Octane.Type.Value.FloatValue.FloatValue Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
+ Octane.Type.Value.FloatValue: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.FloatValue.FloatValue) Octane.Type.Float32.Float32
+ Octane.Type.Value.FloatValue: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.FloatValue.FloatValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.FloatValue.FloatValue) Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
+ Octane.Type.Value.FloatValue: instance GHC.Classes.Eq Octane.Type.Value.FloatValue.FloatValue
+ Octane.Type.Value.FloatValue: instance GHC.Generics.Generic Octane.Type.Value.FloatValue.FloatValue
+ Octane.Type.Value.FloatValue: instance GHC.Show.Show Octane.Type.Value.FloatValue.FloatValue
+ Octane.Type.Value.FloatValue: newtype FloatValue
+ Octane.Type.Value.GameModeValue: GameModeValue :: Word8 -> GameModeValue
+ Octane.Type.Value.GameModeValue: [gameModeValueUnpack] :: GameModeValue -> Word8
+ Octane.Type.Value.GameModeValue: instance Control.DeepSeq.NFData Octane.Type.Value.GameModeValue.GameModeValue
+ Octane.Type.Value.GameModeValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.GameModeValue.GameModeValue
+ Octane.Type.Value.GameModeValue: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.Value.GameModeValue.GameModeValue Octane.Type.Word8.Word8
+ Octane.Type.Value.GameModeValue: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.Value.GameModeValue.GameModeValue Octane.Type.Value.GameModeValue.GameModeValue Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
+ Octane.Type.Value.GameModeValue: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.GameModeValue.GameModeValue) Octane.Type.Word8.Word8
+ Octane.Type.Value.GameModeValue: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.GameModeValue.GameModeValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.GameModeValue.GameModeValue) Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
+ Octane.Type.Value.GameModeValue: instance GHC.Classes.Eq Octane.Type.Value.GameModeValue.GameModeValue
+ Octane.Type.Value.GameModeValue: instance GHC.Generics.Generic Octane.Type.Value.GameModeValue.GameModeValue
+ Octane.Type.Value.GameModeValue: instance GHC.Show.Show Octane.Type.Value.GameModeValue.GameModeValue
+ Octane.Type.Value.GameModeValue: newtype GameModeValue
+ Octane.Type.Value.IntValue: IntValue :: Int32 -> IntValue
+ Octane.Type.Value.IntValue: [intValueUnpack] :: IntValue -> Int32
+ Octane.Type.Value.IntValue: instance Control.DeepSeq.NFData Octane.Type.Value.IntValue.IntValue
+ Octane.Type.Value.IntValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.IntValue.IntValue
+ Octane.Type.Value.IntValue: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.Value.IntValue.IntValue Octane.Type.Int32.Int32
+ Octane.Type.Value.IntValue: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.Value.IntValue.IntValue Octane.Type.Value.IntValue.IntValue Octane.Type.Int32.Int32 Octane.Type.Int32.Int32
+ Octane.Type.Value.IntValue: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Int32.Int32 cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.IntValue.IntValue) Octane.Type.Int32.Int32
+ Octane.Type.Value.IntValue: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Int32.Int32 cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.IntValue.IntValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.IntValue.IntValue) Octane.Type.Int32.Int32 Octane.Type.Int32.Int32
+ Octane.Type.Value.IntValue: instance GHC.Classes.Eq Octane.Type.Value.IntValue.IntValue
+ Octane.Type.Value.IntValue: instance GHC.Generics.Generic Octane.Type.Value.IntValue.IntValue
+ Octane.Type.Value.IntValue: instance GHC.Show.Show Octane.Type.Value.IntValue.IntValue
+ Octane.Type.Value.IntValue: newtype IntValue
+ Octane.Type.Value.LoadoutOnlineValue: LoadoutOnlineValue :: [[(Word32, CompressedWord)]] -> LoadoutOnlineValue
+ Octane.Type.Value.LoadoutOnlineValue: [loadoutOnlineValueUnpack] :: LoadoutOnlineValue -> [[(Word32, CompressedWord)]]
+ Octane.Type.Value.LoadoutOnlineValue: instance Control.DeepSeq.NFData Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue
+ Octane.Type.Value.LoadoutOnlineValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue
+ Octane.Type.Value.LoadoutOnlineValue: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue [[(Octane.Type.Word32.Word32, Octane.Type.CompressedWord.CompressedWord)]]
+ Octane.Type.Value.LoadoutOnlineValue: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue [[(Octane.Type.Word32.Word32, Octane.Type.CompressedWord.CompressedWord)]] [[(Octane.Type.Word32.Word32, Octane.Type.CompressedWord.CompressedWord)]]
+ Octane.Type.Value.LoadoutOnlineValue: instance Data.OverloadedRecords.ModifyRec "unpack" [[(Octane.Type.Word32.Word32, Octane.Type.CompressedWord.CompressedWord)]] cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue) [[(Octane.Type.Word32.Word32, Octane.Type.CompressedWord.CompressedWord)]]
+ Octane.Type.Value.LoadoutOnlineValue: instance Data.OverloadedRecords.ModifyRec "unpack" [[(Octane.Type.Word32.Word32, Octane.Type.CompressedWord.CompressedWord)]] cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue) [[(Octane.Type.Word32.Word32, Octane.Type.CompressedWord.CompressedWord)]] [[(Octane.Type.Word32.Word32, Octane.Type.CompressedWord.CompressedWord)]]
+ Octane.Type.Value.LoadoutOnlineValue: instance GHC.Classes.Eq Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue
+ Octane.Type.Value.LoadoutOnlineValue: instance GHC.Generics.Generic Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue
+ Octane.Type.Value.LoadoutOnlineValue: instance GHC.Show.Show Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue
+ Octane.Type.Value.LoadoutOnlineValue: newtype LoadoutOnlineValue
+ Octane.Type.Value.LoadoutValue: LoadoutValue :: Word8 -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> Maybe Word32 -> LoadoutValue
+ Octane.Type.Value.LoadoutValue: [loadoutValueAntenna] :: LoadoutValue -> Word32
+ Octane.Type.Value.LoadoutValue: [loadoutValueBody] :: LoadoutValue -> Word32
+ Octane.Type.Value.LoadoutValue: [loadoutValueDecal] :: LoadoutValue -> Word32
+ Octane.Type.Value.LoadoutValue: [loadoutValueRocketTrail] :: LoadoutValue -> Word32
+ Octane.Type.Value.LoadoutValue: [loadoutValueTopper] :: LoadoutValue -> Word32
+ Octane.Type.Value.LoadoutValue: [loadoutValueUnknown1] :: LoadoutValue -> Word32
+ Octane.Type.Value.LoadoutValue: [loadoutValueUnknown2] :: LoadoutValue -> Maybe Word32
+ Octane.Type.Value.LoadoutValue: [loadoutValueVersion] :: LoadoutValue -> Word8
+ Octane.Type.Value.LoadoutValue: [loadoutValueWheels] :: LoadoutValue -> Word32
+ Octane.Type.Value.LoadoutValue: data LoadoutValue
+ Octane.Type.Value.LoadoutValue: instance Control.DeepSeq.NFData Octane.Type.Value.LoadoutValue.LoadoutValue
+ Octane.Type.Value.LoadoutValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.LoadoutValue.LoadoutValue
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.HasField "antenna" Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.HasField "body" Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.HasField "decal" Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.HasField "rocketTrail" Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.HasField "topper" Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.HasField "unknown1" Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.HasField "unknown2" Octane.Type.Value.LoadoutValue.LoadoutValue (GHC.Base.Maybe Octane.Type.Word32.Word32)
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.HasField "version" Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Word8.Word8
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.HasField "wheels" Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyField "antenna" Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyField "body" Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyField "decal" Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyField "rocketTrail" Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyField "topper" Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyField "unknown1" Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyField "unknown2" Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Value.LoadoutValue.LoadoutValue (GHC.Base.Maybe Octane.Type.Word32.Word32) (GHC.Base.Maybe Octane.Type.Word32.Word32)
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyField "version" Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyField "wheels" Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyRec "antenna" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "antenna" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyRec "antenna" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "antenna" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyRec "body" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "body" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyRec "body" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "body" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyRec "decal" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "decal" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyRec "decal" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "decal" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyRec "rocketTrail" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "rocketTrail" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyRec "rocketTrail" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "rocketTrail" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyRec "topper" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "topper" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyRec "topper" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "topper" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyRec "unknown1" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "unknown1" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyRec "unknown1" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "unknown1" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyRec "unknown2" (GHC.Base.Maybe Octane.Type.Word32.Word32) cs0 => Data.OverloadedRecords.HasField "unknown2" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) (GHC.Base.Maybe Octane.Type.Word32.Word32)
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyRec "unknown2" (GHC.Base.Maybe Octane.Type.Word32.Word32) cs0 => Data.OverloadedRecords.ModifyField "unknown2" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) (GHC.Base.Maybe Octane.Type.Word32.Word32) (GHC.Base.Maybe Octane.Type.Word32.Word32)
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyRec "version" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.HasField "version" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) Octane.Type.Word8.Word8
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyRec "version" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.ModifyField "version" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyRec "wheels" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "wheels" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance Data.OverloadedRecords.ModifyRec "wheels" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "wheels" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutValue.LoadoutValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.LoadoutValue: instance GHC.Classes.Eq Octane.Type.Value.LoadoutValue.LoadoutValue
+ Octane.Type.Value.LoadoutValue: instance GHC.Generics.Generic Octane.Type.Value.LoadoutValue.LoadoutValue
+ Octane.Type.Value.LoadoutValue: instance GHC.Show.Show Octane.Type.Value.LoadoutValue.LoadoutValue
+ Octane.Type.Value.LoadoutsOnlineValue: LoadoutsOnlineValue :: LoadoutOnlineValue -> LoadoutOnlineValue -> Boolean -> Boolean -> LoadoutsOnlineValue
+ Octane.Type.Value.LoadoutsOnlineValue: [loadoutsOnlineValueLoadout1] :: LoadoutsOnlineValue -> LoadoutOnlineValue
+ Octane.Type.Value.LoadoutsOnlineValue: [loadoutsOnlineValueLoadout2] :: LoadoutsOnlineValue -> LoadoutOnlineValue
+ Octane.Type.Value.LoadoutsOnlineValue: [loadoutsOnlineValueUnknown1] :: LoadoutsOnlineValue -> Boolean
+ Octane.Type.Value.LoadoutsOnlineValue: [loadoutsOnlineValueUnknown2] :: LoadoutsOnlineValue -> Boolean
+ Octane.Type.Value.LoadoutsOnlineValue: data LoadoutsOnlineValue
+ Octane.Type.Value.LoadoutsOnlineValue: instance Control.DeepSeq.NFData Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue
+ Octane.Type.Value.LoadoutsOnlineValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue
+ Octane.Type.Value.LoadoutsOnlineValue: instance Data.OverloadedRecords.HasField "loadout1" Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue
+ Octane.Type.Value.LoadoutsOnlineValue: instance Data.OverloadedRecords.HasField "loadout2" Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue
+ Octane.Type.Value.LoadoutsOnlineValue: instance Data.OverloadedRecords.HasField "unknown1" Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue Octane.Type.Boolean.Boolean
+ Octane.Type.Value.LoadoutsOnlineValue: instance Data.OverloadedRecords.HasField "unknown2" Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue Octane.Type.Boolean.Boolean
+ Octane.Type.Value.LoadoutsOnlineValue: instance Data.OverloadedRecords.ModifyField "loadout1" Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue
+ Octane.Type.Value.LoadoutsOnlineValue: instance Data.OverloadedRecords.ModifyField "loadout2" Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue
+ Octane.Type.Value.LoadoutsOnlineValue: instance Data.OverloadedRecords.ModifyField "unknown1" Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.LoadoutsOnlineValue: instance Data.OverloadedRecords.ModifyField "unknown2" Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.LoadoutsOnlineValue: instance Data.OverloadedRecords.ModifyRec "loadout1" Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue cs0 => Data.OverloadedRecords.HasField "loadout1" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue) Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue
+ Octane.Type.Value.LoadoutsOnlineValue: instance Data.OverloadedRecords.ModifyRec "loadout1" Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue cs0 => Data.OverloadedRecords.ModifyField "loadout1" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue) Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue
+ Octane.Type.Value.LoadoutsOnlineValue: instance Data.OverloadedRecords.ModifyRec "loadout2" Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue cs0 => Data.OverloadedRecords.HasField "loadout2" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue) Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue
+ Octane.Type.Value.LoadoutsOnlineValue: instance Data.OverloadedRecords.ModifyRec "loadout2" Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue cs0 => Data.OverloadedRecords.ModifyField "loadout2" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue) Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue Octane.Type.Value.LoadoutOnlineValue.LoadoutOnlineValue
+ Octane.Type.Value.LoadoutsOnlineValue: instance Data.OverloadedRecords.ModifyRec "unknown1" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "unknown1" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue) Octane.Type.Boolean.Boolean
+ Octane.Type.Value.LoadoutsOnlineValue: instance Data.OverloadedRecords.ModifyRec "unknown1" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "unknown1" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.LoadoutsOnlineValue: instance Data.OverloadedRecords.ModifyRec "unknown2" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "unknown2" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue) Octane.Type.Boolean.Boolean
+ Octane.Type.Value.LoadoutsOnlineValue: instance Data.OverloadedRecords.ModifyRec "unknown2" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "unknown2" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.LoadoutsOnlineValue: instance GHC.Classes.Eq Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue
+ Octane.Type.Value.LoadoutsOnlineValue: instance GHC.Generics.Generic Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue
+ Octane.Type.Value.LoadoutsOnlineValue: instance GHC.Show.Show Octane.Type.Value.LoadoutsOnlineValue.LoadoutsOnlineValue
+ Octane.Type.Value.LoadoutsValue: LoadoutsValue :: LoadoutValue -> LoadoutValue -> LoadoutsValue
+ Octane.Type.Value.LoadoutsValue: [loadoutsValueLoadout1] :: LoadoutsValue -> LoadoutValue
+ Octane.Type.Value.LoadoutsValue: [loadoutsValueLoadout2] :: LoadoutsValue -> LoadoutValue
+ Octane.Type.Value.LoadoutsValue: data LoadoutsValue
+ Octane.Type.Value.LoadoutsValue: instance Control.DeepSeq.NFData Octane.Type.Value.LoadoutsValue.LoadoutsValue
+ Octane.Type.Value.LoadoutsValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.LoadoutsValue.LoadoutsValue
+ Octane.Type.Value.LoadoutsValue: instance Data.OverloadedRecords.HasField "loadout1" Octane.Type.Value.LoadoutsValue.LoadoutsValue Octane.Type.Value.LoadoutValue.LoadoutValue
+ Octane.Type.Value.LoadoutsValue: instance Data.OverloadedRecords.HasField "loadout2" Octane.Type.Value.LoadoutsValue.LoadoutsValue Octane.Type.Value.LoadoutValue.LoadoutValue
+ Octane.Type.Value.LoadoutsValue: instance Data.OverloadedRecords.ModifyField "loadout1" Octane.Type.Value.LoadoutsValue.LoadoutsValue Octane.Type.Value.LoadoutsValue.LoadoutsValue Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Value.LoadoutValue.LoadoutValue
+ Octane.Type.Value.LoadoutsValue: instance Data.OverloadedRecords.ModifyField "loadout2" Octane.Type.Value.LoadoutsValue.LoadoutsValue Octane.Type.Value.LoadoutsValue.LoadoutsValue Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Value.LoadoutValue.LoadoutValue
+ Octane.Type.Value.LoadoutsValue: instance Data.OverloadedRecords.ModifyRec "loadout1" Octane.Type.Value.LoadoutValue.LoadoutValue cs0 => Data.OverloadedRecords.HasField "loadout1" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutsValue.LoadoutsValue) Octane.Type.Value.LoadoutValue.LoadoutValue
+ Octane.Type.Value.LoadoutsValue: instance Data.OverloadedRecords.ModifyRec "loadout1" Octane.Type.Value.LoadoutValue.LoadoutValue cs0 => Data.OverloadedRecords.ModifyField "loadout1" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutsValue.LoadoutsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutsValue.LoadoutsValue) Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Value.LoadoutValue.LoadoutValue
+ Octane.Type.Value.LoadoutsValue: instance Data.OverloadedRecords.ModifyRec "loadout2" Octane.Type.Value.LoadoutValue.LoadoutValue cs0 => Data.OverloadedRecords.HasField "loadout2" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutsValue.LoadoutsValue) Octane.Type.Value.LoadoutValue.LoadoutValue
+ Octane.Type.Value.LoadoutsValue: instance Data.OverloadedRecords.ModifyRec "loadout2" Octane.Type.Value.LoadoutValue.LoadoutValue cs0 => Data.OverloadedRecords.ModifyField "loadout2" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutsValue.LoadoutsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LoadoutsValue.LoadoutsValue) Octane.Type.Value.LoadoutValue.LoadoutValue Octane.Type.Value.LoadoutValue.LoadoutValue
+ Octane.Type.Value.LoadoutsValue: instance GHC.Classes.Eq Octane.Type.Value.LoadoutsValue.LoadoutsValue
+ Octane.Type.Value.LoadoutsValue: instance GHC.Generics.Generic Octane.Type.Value.LoadoutsValue.LoadoutsValue
+ Octane.Type.Value.LoadoutsValue: instance GHC.Show.Show Octane.Type.Value.LoadoutsValue.LoadoutsValue
+ Octane.Type.Value.LocationValue: LocationValue :: Vector Int -> LocationValue
+ Octane.Type.Value.LocationValue: [locationValueUnpack] :: LocationValue -> Vector Int
+ Octane.Type.Value.LocationValue: instance Control.DeepSeq.NFData Octane.Type.Value.LocationValue.LocationValue
+ Octane.Type.Value.LocationValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.LocationValue.LocationValue
+ Octane.Type.Value.LocationValue: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.Value.LocationValue.LocationValue (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.LocationValue: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.Value.LocationValue.LocationValue Octane.Type.Value.LocationValue.LocationValue (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.LocationValue: instance Data.OverloadedRecords.ModifyRec "unpack" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LocationValue.LocationValue) (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.LocationValue: instance Data.OverloadedRecords.ModifyRec "unpack" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LocationValue.LocationValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.LocationValue.LocationValue) (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.LocationValue: instance GHC.Classes.Eq Octane.Type.Value.LocationValue.LocationValue
+ Octane.Type.Value.LocationValue: instance GHC.Generics.Generic Octane.Type.Value.LocationValue.LocationValue
+ Octane.Type.Value.LocationValue: instance GHC.Show.Show Octane.Type.Value.LocationValue.LocationValue
+ Octane.Type.Value.LocationValue: newtype LocationValue
+ Octane.Type.Value.MusicStingerValue: MusicStingerValue :: Boolean -> Word32 -> Word8 -> MusicStingerValue
+ Octane.Type.Value.MusicStingerValue: [musicStingerValueCue] :: MusicStingerValue -> Word32
+ Octane.Type.Value.MusicStingerValue: [musicStingerValueFlag] :: MusicStingerValue -> Boolean
+ Octane.Type.Value.MusicStingerValue: [musicStingerValueTrigger] :: MusicStingerValue -> Word8
+ Octane.Type.Value.MusicStingerValue: data MusicStingerValue
+ Octane.Type.Value.MusicStingerValue: instance Control.DeepSeq.NFData Octane.Type.Value.MusicStingerValue.MusicStingerValue
+ Octane.Type.Value.MusicStingerValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.MusicStingerValue.MusicStingerValue
+ Octane.Type.Value.MusicStingerValue: instance Data.OverloadedRecords.HasField "cue" Octane.Type.Value.MusicStingerValue.MusicStingerValue Octane.Type.Word32.Word32
+ Octane.Type.Value.MusicStingerValue: instance Data.OverloadedRecords.HasField "flag" Octane.Type.Value.MusicStingerValue.MusicStingerValue Octane.Type.Boolean.Boolean
+ Octane.Type.Value.MusicStingerValue: instance Data.OverloadedRecords.HasField "trigger" Octane.Type.Value.MusicStingerValue.MusicStingerValue Octane.Type.Word8.Word8
+ Octane.Type.Value.MusicStingerValue: instance Data.OverloadedRecords.ModifyField "cue" Octane.Type.Value.MusicStingerValue.MusicStingerValue Octane.Type.Value.MusicStingerValue.MusicStingerValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.MusicStingerValue: instance Data.OverloadedRecords.ModifyField "flag" Octane.Type.Value.MusicStingerValue.MusicStingerValue Octane.Type.Value.MusicStingerValue.MusicStingerValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.MusicStingerValue: instance Data.OverloadedRecords.ModifyField "trigger" Octane.Type.Value.MusicStingerValue.MusicStingerValue Octane.Type.Value.MusicStingerValue.MusicStingerValue Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
+ Octane.Type.Value.MusicStingerValue: instance Data.OverloadedRecords.ModifyRec "cue" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "cue" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.MusicStingerValue.MusicStingerValue) Octane.Type.Word32.Word32
+ Octane.Type.Value.MusicStingerValue: instance Data.OverloadedRecords.ModifyRec "cue" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "cue" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.MusicStingerValue.MusicStingerValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.MusicStingerValue.MusicStingerValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.MusicStingerValue: instance Data.OverloadedRecords.ModifyRec "flag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "flag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.MusicStingerValue.MusicStingerValue) Octane.Type.Boolean.Boolean
+ Octane.Type.Value.MusicStingerValue: instance Data.OverloadedRecords.ModifyRec "flag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "flag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.MusicStingerValue.MusicStingerValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.MusicStingerValue.MusicStingerValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.MusicStingerValue: instance Data.OverloadedRecords.ModifyRec "trigger" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.HasField "trigger" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.MusicStingerValue.MusicStingerValue) Octane.Type.Word8.Word8
+ Octane.Type.Value.MusicStingerValue: instance Data.OverloadedRecords.ModifyRec "trigger" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.ModifyField "trigger" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.MusicStingerValue.MusicStingerValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.MusicStingerValue.MusicStingerValue) Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
+ Octane.Type.Value.MusicStingerValue: instance GHC.Classes.Eq Octane.Type.Value.MusicStingerValue.MusicStingerValue
+ Octane.Type.Value.MusicStingerValue: instance GHC.Generics.Generic Octane.Type.Value.MusicStingerValue.MusicStingerValue
+ Octane.Type.Value.MusicStingerValue: instance GHC.Show.Show Octane.Type.Value.MusicStingerValue.MusicStingerValue
+ Octane.Type.Value.PickupValue: PickupValue :: Boolean -> Maybe Word32 -> Boolean -> PickupValue
+ Octane.Type.Value.PickupValue: [pickupValueHasInstigator] :: PickupValue -> Boolean
+ Octane.Type.Value.PickupValue: [pickupValueInstigatorId] :: PickupValue -> Maybe Word32
+ Octane.Type.Value.PickupValue: [pickupValuePickedUp] :: PickupValue -> Boolean
+ Octane.Type.Value.PickupValue: data PickupValue
+ Octane.Type.Value.PickupValue: instance Control.DeepSeq.NFData Octane.Type.Value.PickupValue.PickupValue
+ Octane.Type.Value.PickupValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.PickupValue.PickupValue
+ Octane.Type.Value.PickupValue: instance Data.OverloadedRecords.HasField "hasInstigator" Octane.Type.Value.PickupValue.PickupValue Octane.Type.Boolean.Boolean
+ Octane.Type.Value.PickupValue: instance Data.OverloadedRecords.HasField "instigatorId" Octane.Type.Value.PickupValue.PickupValue (GHC.Base.Maybe Octane.Type.Word32.Word32)
+ Octane.Type.Value.PickupValue: instance Data.OverloadedRecords.HasField "pickedUp" Octane.Type.Value.PickupValue.PickupValue Octane.Type.Boolean.Boolean
+ Octane.Type.Value.PickupValue: instance Data.OverloadedRecords.ModifyField "hasInstigator" Octane.Type.Value.PickupValue.PickupValue Octane.Type.Value.PickupValue.PickupValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.PickupValue: instance Data.OverloadedRecords.ModifyField "instigatorId" Octane.Type.Value.PickupValue.PickupValue Octane.Type.Value.PickupValue.PickupValue (GHC.Base.Maybe Octane.Type.Word32.Word32) (GHC.Base.Maybe Octane.Type.Word32.Word32)
+ Octane.Type.Value.PickupValue: instance Data.OverloadedRecords.ModifyField "pickedUp" Octane.Type.Value.PickupValue.PickupValue Octane.Type.Value.PickupValue.PickupValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.PickupValue: instance Data.OverloadedRecords.ModifyRec "hasInstigator" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "hasInstigator" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PickupValue.PickupValue) Octane.Type.Boolean.Boolean
+ Octane.Type.Value.PickupValue: instance Data.OverloadedRecords.ModifyRec "hasInstigator" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "hasInstigator" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PickupValue.PickupValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PickupValue.PickupValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.PickupValue: instance Data.OverloadedRecords.ModifyRec "instigatorId" (GHC.Base.Maybe Octane.Type.Word32.Word32) cs0 => Data.OverloadedRecords.HasField "instigatorId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PickupValue.PickupValue) (GHC.Base.Maybe Octane.Type.Word32.Word32)
+ Octane.Type.Value.PickupValue: instance Data.OverloadedRecords.ModifyRec "instigatorId" (GHC.Base.Maybe Octane.Type.Word32.Word32) cs0 => Data.OverloadedRecords.ModifyField "instigatorId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PickupValue.PickupValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PickupValue.PickupValue) (GHC.Base.Maybe Octane.Type.Word32.Word32) (GHC.Base.Maybe Octane.Type.Word32.Word32)
+ Octane.Type.Value.PickupValue: instance Data.OverloadedRecords.ModifyRec "pickedUp" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "pickedUp" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PickupValue.PickupValue) Octane.Type.Boolean.Boolean
+ Octane.Type.Value.PickupValue: instance Data.OverloadedRecords.ModifyRec "pickedUp" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "pickedUp" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PickupValue.PickupValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PickupValue.PickupValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.PickupValue: instance GHC.Classes.Eq Octane.Type.Value.PickupValue.PickupValue
+ Octane.Type.Value.PickupValue: instance GHC.Generics.Generic Octane.Type.Value.PickupValue.PickupValue
+ Octane.Type.Value.PickupValue: instance GHC.Show.Show Octane.Type.Value.PickupValue.PickupValue
+ Octane.Type.Value.PrivateMatchSettingsValue: PrivateMatchSettingsValue :: Text -> Word32 -> Word32 -> Text -> Text -> Boolean -> PrivateMatchSettingsValue
+ Octane.Type.Value.PrivateMatchSettingsValue: [privateMatchSettingsValueFlag] :: PrivateMatchSettingsValue -> Boolean
+ Octane.Type.Value.PrivateMatchSettingsValue: [privateMatchSettingsValueGameName] :: PrivateMatchSettingsValue -> Text
+ Octane.Type.Value.PrivateMatchSettingsValue: [privateMatchSettingsValueJoinableBy] :: PrivateMatchSettingsValue -> Word32
+ Octane.Type.Value.PrivateMatchSettingsValue: [privateMatchSettingsValueMaxPlayers] :: PrivateMatchSettingsValue -> Word32
+ Octane.Type.Value.PrivateMatchSettingsValue: [privateMatchSettingsValueMutators] :: PrivateMatchSettingsValue -> Text
+ Octane.Type.Value.PrivateMatchSettingsValue: [privateMatchSettingsValuePassword] :: PrivateMatchSettingsValue -> Text
+ Octane.Type.Value.PrivateMatchSettingsValue: data PrivateMatchSettingsValue
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Control.DeepSeq.NFData Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.HasField "flag" Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue Octane.Type.Boolean.Boolean
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.HasField "gameName" Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue Octane.Type.Text.Text
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.HasField "joinableBy" Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue Octane.Type.Word32.Word32
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.HasField "maxPlayers" Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue Octane.Type.Word32.Word32
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.HasField "mutators" Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue Octane.Type.Text.Text
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.HasField "password" Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue Octane.Type.Text.Text
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.ModifyField "flag" Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.ModifyField "gameName" Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue Octane.Type.Text.Text Octane.Type.Text.Text
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.ModifyField "joinableBy" Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.ModifyField "maxPlayers" Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.ModifyField "mutators" Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue Octane.Type.Text.Text Octane.Type.Text.Text
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.ModifyField "password" Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue Octane.Type.Text.Text Octane.Type.Text.Text
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.ModifyRec "flag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "flag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue) Octane.Type.Boolean.Boolean
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.ModifyRec "flag" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "flag" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.ModifyRec "gameName" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.HasField "gameName" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue) Octane.Type.Text.Text
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.ModifyRec "gameName" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.ModifyField "gameName" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue) Octane.Type.Text.Text Octane.Type.Text.Text
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.ModifyRec "joinableBy" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "joinableBy" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue) Octane.Type.Word32.Word32
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.ModifyRec "joinableBy" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "joinableBy" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.ModifyRec "maxPlayers" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "maxPlayers" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue) Octane.Type.Word32.Word32
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.ModifyRec "maxPlayers" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "maxPlayers" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.ModifyRec "mutators" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.HasField "mutators" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue) Octane.Type.Text.Text
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.ModifyRec "mutators" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.ModifyField "mutators" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue) Octane.Type.Text.Text Octane.Type.Text.Text
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.ModifyRec "password" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.HasField "password" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue) Octane.Type.Text.Text
+ Octane.Type.Value.PrivateMatchSettingsValue: instance Data.OverloadedRecords.ModifyRec "password" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.ModifyField "password" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue) Octane.Type.Text.Text Octane.Type.Text.Text
+ Octane.Type.Value.PrivateMatchSettingsValue: instance GHC.Classes.Eq Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue
+ Octane.Type.Value.PrivateMatchSettingsValue: instance GHC.Generics.Generic Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue
+ Octane.Type.Value.PrivateMatchSettingsValue: instance GHC.Show.Show Octane.Type.Value.PrivateMatchSettingsValue.PrivateMatchSettingsValue
+ Octane.Type.Value.QWordValue: QWordValue :: Word64 -> QWordValue
+ Octane.Type.Value.QWordValue: [qWordValueUnpack] :: QWordValue -> Word64
+ Octane.Type.Value.QWordValue: instance Control.DeepSeq.NFData Octane.Type.Value.QWordValue.QWordValue
+ Octane.Type.Value.QWordValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.QWordValue.QWordValue
+ Octane.Type.Value.QWordValue: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.Value.QWordValue.QWordValue Octane.Type.Word64.Word64
+ Octane.Type.Value.QWordValue: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.Value.QWordValue.QWordValue Octane.Type.Value.QWordValue.QWordValue Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.Value.QWordValue: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.QWordValue.QWordValue) Octane.Type.Word64.Word64
+ Octane.Type.Value.QWordValue: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Word64.Word64 cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.QWordValue.QWordValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.QWordValue.QWordValue) Octane.Type.Word64.Word64 Octane.Type.Word64.Word64
+ Octane.Type.Value.QWordValue: instance GHC.Classes.Eq Octane.Type.Value.QWordValue.QWordValue
+ Octane.Type.Value.QWordValue: instance GHC.Generics.Generic Octane.Type.Value.QWordValue.QWordValue
+ Octane.Type.Value.QWordValue: instance GHC.Show.Show Octane.Type.Value.QWordValue.QWordValue
+ Octane.Type.Value.QWordValue: newtype QWordValue
+ Octane.Type.Value.RelativeRotationValue: RelativeRotationValue :: Vector Float -> RelativeRotationValue
+ Octane.Type.Value.RelativeRotationValue: [relativeRotationValueUnpack] :: RelativeRotationValue -> Vector Float
+ Octane.Type.Value.RelativeRotationValue: instance Control.DeepSeq.NFData Octane.Type.Value.RelativeRotationValue.RelativeRotationValue
+ Octane.Type.Value.RelativeRotationValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.RelativeRotationValue.RelativeRotationValue
+ Octane.Type.Value.RelativeRotationValue: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.Value.RelativeRotationValue.RelativeRotationValue (Octane.Type.Vector.Vector GHC.Types.Float)
+ Octane.Type.Value.RelativeRotationValue: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.Value.RelativeRotationValue.RelativeRotationValue Octane.Type.Value.RelativeRotationValue.RelativeRotationValue (Octane.Type.Vector.Vector GHC.Types.Float) (Octane.Type.Vector.Vector GHC.Types.Float)
+ Octane.Type.Value.RelativeRotationValue: instance Data.OverloadedRecords.ModifyRec "unpack" (Octane.Type.Vector.Vector GHC.Types.Float) cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RelativeRotationValue.RelativeRotationValue) (Octane.Type.Vector.Vector GHC.Types.Float)
+ Octane.Type.Value.RelativeRotationValue: instance Data.OverloadedRecords.ModifyRec "unpack" (Octane.Type.Vector.Vector GHC.Types.Float) cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RelativeRotationValue.RelativeRotationValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RelativeRotationValue.RelativeRotationValue) (Octane.Type.Vector.Vector GHC.Types.Float) (Octane.Type.Vector.Vector GHC.Types.Float)
+ Octane.Type.Value.RelativeRotationValue: instance GHC.Classes.Eq Octane.Type.Value.RelativeRotationValue.RelativeRotationValue
+ Octane.Type.Value.RelativeRotationValue: instance GHC.Generics.Generic Octane.Type.Value.RelativeRotationValue.RelativeRotationValue
+ Octane.Type.Value.RelativeRotationValue: instance GHC.Show.Show Octane.Type.Value.RelativeRotationValue.RelativeRotationValue
+ Octane.Type.Value.RelativeRotationValue: newtype RelativeRotationValue
+ Octane.Type.Value.ReservationValue: ReservationValue :: CompressedWord -> Word8 -> RemoteId -> Maybe Word8 -> Maybe Text -> Boolean -> Boolean -> ReservationValue
+ Octane.Type.Value.ReservationValue: [reservationValueLocalId] :: ReservationValue -> Maybe Word8
+ Octane.Type.Value.ReservationValue: [reservationValueNumber] :: ReservationValue -> CompressedWord
+ Octane.Type.Value.ReservationValue: [reservationValuePlayerName] :: ReservationValue -> Maybe Text
+ Octane.Type.Value.ReservationValue: [reservationValueRemoteId] :: ReservationValue -> RemoteId
+ Octane.Type.Value.ReservationValue: [reservationValueSystemId] :: ReservationValue -> Word8
+ Octane.Type.Value.ReservationValue: [reservationValueUnknown1] :: ReservationValue -> Boolean
+ Octane.Type.Value.ReservationValue: [reservationValueUnknown2] :: ReservationValue -> Boolean
+ Octane.Type.Value.ReservationValue: data ReservationValue
+ Octane.Type.Value.ReservationValue: instance Control.DeepSeq.NFData Octane.Type.Value.ReservationValue.ReservationValue
+ Octane.Type.Value.ReservationValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.ReservationValue.ReservationValue
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.HasField "localId" Octane.Type.Value.ReservationValue.ReservationValue (GHC.Base.Maybe Octane.Type.Word8.Word8)
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.HasField "number" Octane.Type.Value.ReservationValue.ReservationValue Octane.Type.CompressedWord.CompressedWord
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.HasField "playerName" Octane.Type.Value.ReservationValue.ReservationValue (GHC.Base.Maybe Octane.Type.Text.Text)
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.HasField "remoteId" Octane.Type.Value.ReservationValue.ReservationValue Octane.Type.RemoteId.RemoteId
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.HasField "systemId" Octane.Type.Value.ReservationValue.ReservationValue Octane.Type.Word8.Word8
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.HasField "unknown1" Octane.Type.Value.ReservationValue.ReservationValue Octane.Type.Boolean.Boolean
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.HasField "unknown2" Octane.Type.Value.ReservationValue.ReservationValue Octane.Type.Boolean.Boolean
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.ModifyField "localId" Octane.Type.Value.ReservationValue.ReservationValue Octane.Type.Value.ReservationValue.ReservationValue (GHC.Base.Maybe Octane.Type.Word8.Word8) (GHC.Base.Maybe Octane.Type.Word8.Word8)
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.ModifyField "number" Octane.Type.Value.ReservationValue.ReservationValue Octane.Type.Value.ReservationValue.ReservationValue Octane.Type.CompressedWord.CompressedWord Octane.Type.CompressedWord.CompressedWord
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.ModifyField "playerName" Octane.Type.Value.ReservationValue.ReservationValue Octane.Type.Value.ReservationValue.ReservationValue (GHC.Base.Maybe Octane.Type.Text.Text) (GHC.Base.Maybe Octane.Type.Text.Text)
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.ModifyField "remoteId" Octane.Type.Value.ReservationValue.ReservationValue Octane.Type.Value.ReservationValue.ReservationValue Octane.Type.RemoteId.RemoteId Octane.Type.RemoteId.RemoteId
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.ModifyField "systemId" Octane.Type.Value.ReservationValue.ReservationValue Octane.Type.Value.ReservationValue.ReservationValue Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.ModifyField "unknown1" Octane.Type.Value.ReservationValue.ReservationValue Octane.Type.Value.ReservationValue.ReservationValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.ModifyField "unknown2" Octane.Type.Value.ReservationValue.ReservationValue Octane.Type.Value.ReservationValue.ReservationValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.ModifyRec "localId" (GHC.Base.Maybe Octane.Type.Word8.Word8) cs0 => Data.OverloadedRecords.HasField "localId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue.ReservationValue) (GHC.Base.Maybe Octane.Type.Word8.Word8)
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.ModifyRec "localId" (GHC.Base.Maybe Octane.Type.Word8.Word8) cs0 => Data.OverloadedRecords.ModifyField "localId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue.ReservationValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue.ReservationValue) (GHC.Base.Maybe Octane.Type.Word8.Word8) (GHC.Base.Maybe Octane.Type.Word8.Word8)
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.ModifyRec "number" Octane.Type.CompressedWord.CompressedWord cs0 => Data.OverloadedRecords.HasField "number" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue.ReservationValue) Octane.Type.CompressedWord.CompressedWord
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.ModifyRec "number" Octane.Type.CompressedWord.CompressedWord cs0 => Data.OverloadedRecords.ModifyField "number" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue.ReservationValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue.ReservationValue) Octane.Type.CompressedWord.CompressedWord Octane.Type.CompressedWord.CompressedWord
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.ModifyRec "playerName" (GHC.Base.Maybe Octane.Type.Text.Text) cs0 => Data.OverloadedRecords.HasField "playerName" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue.ReservationValue) (GHC.Base.Maybe Octane.Type.Text.Text)
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.ModifyRec "playerName" (GHC.Base.Maybe Octane.Type.Text.Text) cs0 => Data.OverloadedRecords.ModifyField "playerName" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue.ReservationValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue.ReservationValue) (GHC.Base.Maybe Octane.Type.Text.Text) (GHC.Base.Maybe Octane.Type.Text.Text)
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.ModifyRec "remoteId" Octane.Type.RemoteId.RemoteId cs0 => Data.OverloadedRecords.HasField "remoteId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue.ReservationValue) Octane.Type.RemoteId.RemoteId
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.ModifyRec "remoteId" Octane.Type.RemoteId.RemoteId cs0 => Data.OverloadedRecords.ModifyField "remoteId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue.ReservationValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue.ReservationValue) Octane.Type.RemoteId.RemoteId Octane.Type.RemoteId.RemoteId
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.ModifyRec "systemId" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.HasField "systemId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue.ReservationValue) Octane.Type.Word8.Word8
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.ModifyRec "systemId" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.ModifyField "systemId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue.ReservationValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue.ReservationValue) Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.ModifyRec "unknown1" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "unknown1" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue.ReservationValue) Octane.Type.Boolean.Boolean
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.ModifyRec "unknown1" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "unknown1" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue.ReservationValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue.ReservationValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.ModifyRec "unknown2" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "unknown2" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue.ReservationValue) Octane.Type.Boolean.Boolean
+ Octane.Type.Value.ReservationValue: instance Data.OverloadedRecords.ModifyRec "unknown2" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "unknown2" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue.ReservationValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.ReservationValue.ReservationValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.ReservationValue: instance GHC.Classes.Eq Octane.Type.Value.ReservationValue.ReservationValue
+ Octane.Type.Value.ReservationValue: instance GHC.Generics.Generic Octane.Type.Value.ReservationValue.ReservationValue
+ Octane.Type.Value.ReservationValue: instance GHC.Show.Show Octane.Type.Value.ReservationValue.ReservationValue
+ Octane.Type.Value.RigidBodyStateValue: RigidBodyStateValue :: Boolean -> Vector Int -> Vector Float -> Maybe (Vector Int) -> Maybe (Vector Int) -> RigidBodyStateValue
+ Octane.Type.Value.RigidBodyStateValue: [rigidBodyStateValueAngularVelocity] :: RigidBodyStateValue -> Maybe (Vector Int)
+ Octane.Type.Value.RigidBodyStateValue: [rigidBodyStateValueLinearVelocity] :: RigidBodyStateValue -> Maybe (Vector Int)
+ Octane.Type.Value.RigidBodyStateValue: [rigidBodyStateValuePosition] :: RigidBodyStateValue -> Vector Int
+ Octane.Type.Value.RigidBodyStateValue: [rigidBodyStateValueRotation] :: RigidBodyStateValue -> Vector Float
+ Octane.Type.Value.RigidBodyStateValue: [rigidBodyStateValueSleeping] :: RigidBodyStateValue -> Boolean
+ Octane.Type.Value.RigidBodyStateValue: data RigidBodyStateValue
+ Octane.Type.Value.RigidBodyStateValue: instance Control.DeepSeq.NFData Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue
+ Octane.Type.Value.RigidBodyStateValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue
+ Octane.Type.Value.RigidBodyStateValue: instance Data.OverloadedRecords.HasField "angularVelocity" Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int))
+ Octane.Type.Value.RigidBodyStateValue: instance Data.OverloadedRecords.HasField "linearVelocity" Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int))
+ Octane.Type.Value.RigidBodyStateValue: instance Data.OverloadedRecords.HasField "position" Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.RigidBodyStateValue: instance Data.OverloadedRecords.HasField "rotation" Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue (Octane.Type.Vector.Vector GHC.Types.Float)
+ Octane.Type.Value.RigidBodyStateValue: instance Data.OverloadedRecords.HasField "sleeping" Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue Octane.Type.Boolean.Boolean
+ Octane.Type.Value.RigidBodyStateValue: instance Data.OverloadedRecords.ModifyField "angularVelocity" Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int)) (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int))
+ Octane.Type.Value.RigidBodyStateValue: instance Data.OverloadedRecords.ModifyField "linearVelocity" Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int)) (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int))
+ Octane.Type.Value.RigidBodyStateValue: instance Data.OverloadedRecords.ModifyField "position" Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.RigidBodyStateValue: instance Data.OverloadedRecords.ModifyField "rotation" Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue (Octane.Type.Vector.Vector GHC.Types.Float) (Octane.Type.Vector.Vector GHC.Types.Float)
+ Octane.Type.Value.RigidBodyStateValue: instance Data.OverloadedRecords.ModifyField "sleeping" Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.RigidBodyStateValue: instance Data.OverloadedRecords.ModifyRec "angularVelocity" (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int)) cs0 => Data.OverloadedRecords.HasField "angularVelocity" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue) (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int))
+ Octane.Type.Value.RigidBodyStateValue: instance Data.OverloadedRecords.ModifyRec "angularVelocity" (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int)) cs0 => Data.OverloadedRecords.ModifyField "angularVelocity" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue) (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int)) (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int))
+ Octane.Type.Value.RigidBodyStateValue: instance Data.OverloadedRecords.ModifyRec "linearVelocity" (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int)) cs0 => Data.OverloadedRecords.HasField "linearVelocity" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue) (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int))
+ Octane.Type.Value.RigidBodyStateValue: instance Data.OverloadedRecords.ModifyRec "linearVelocity" (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int)) cs0 => Data.OverloadedRecords.ModifyField "linearVelocity" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue) (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int)) (GHC.Base.Maybe (Octane.Type.Vector.Vector GHC.Types.Int))
+ Octane.Type.Value.RigidBodyStateValue: instance Data.OverloadedRecords.ModifyRec "position" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.HasField "position" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue) (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.RigidBodyStateValue: instance Data.OverloadedRecords.ModifyRec "position" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.ModifyField "position" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue) (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.RigidBodyStateValue: instance Data.OverloadedRecords.ModifyRec "rotation" (Octane.Type.Vector.Vector GHC.Types.Float) cs0 => Data.OverloadedRecords.HasField "rotation" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue) (Octane.Type.Vector.Vector GHC.Types.Float)
+ Octane.Type.Value.RigidBodyStateValue: instance Data.OverloadedRecords.ModifyRec "rotation" (Octane.Type.Vector.Vector GHC.Types.Float) cs0 => Data.OverloadedRecords.ModifyField "rotation" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue) (Octane.Type.Vector.Vector GHC.Types.Float) (Octane.Type.Vector.Vector GHC.Types.Float)
+ Octane.Type.Value.RigidBodyStateValue: instance Data.OverloadedRecords.ModifyRec "sleeping" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "sleeping" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue) Octane.Type.Boolean.Boolean
+ Octane.Type.Value.RigidBodyStateValue: instance Data.OverloadedRecords.ModifyRec "sleeping" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "sleeping" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.RigidBodyStateValue: instance GHC.Classes.Eq Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue
+ Octane.Type.Value.RigidBodyStateValue: instance GHC.Generics.Generic Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue
+ Octane.Type.Value.RigidBodyStateValue: instance GHC.Show.Show Octane.Type.Value.RigidBodyStateValue.RigidBodyStateValue
+ Octane.Type.Value.StringValue: StringValue :: Text -> StringValue
+ Octane.Type.Value.StringValue: [stringValueUnpack] :: StringValue -> Text
+ Octane.Type.Value.StringValue: instance Control.DeepSeq.NFData Octane.Type.Value.StringValue.StringValue
+ Octane.Type.Value.StringValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.StringValue.StringValue
+ Octane.Type.Value.StringValue: instance Data.OverloadedRecords.HasField "unpack" Octane.Type.Value.StringValue.StringValue Octane.Type.Text.Text
+ Octane.Type.Value.StringValue: instance Data.OverloadedRecords.ModifyField "unpack" Octane.Type.Value.StringValue.StringValue Octane.Type.Value.StringValue.StringValue Octane.Type.Text.Text Octane.Type.Text.Text
+ Octane.Type.Value.StringValue: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.HasField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.StringValue.StringValue) Octane.Type.Text.Text
+ Octane.Type.Value.StringValue: instance Data.OverloadedRecords.ModifyRec "unpack" Octane.Type.Text.Text cs0 => Data.OverloadedRecords.ModifyField "unpack" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.StringValue.StringValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.StringValue.StringValue) Octane.Type.Text.Text Octane.Type.Text.Text
+ Octane.Type.Value.StringValue: instance GHC.Classes.Eq Octane.Type.Value.StringValue.StringValue
+ Octane.Type.Value.StringValue: instance GHC.Generics.Generic Octane.Type.Value.StringValue.StringValue
+ Octane.Type.Value.StringValue: instance GHC.Show.Show Octane.Type.Value.StringValue.StringValue
+ Octane.Type.Value.StringValue: newtype StringValue
+ Octane.Type.Value.TeamPaintValue: TeamPaintValue :: Word8 -> Word8 -> Word8 -> Word32 -> Word32 -> TeamPaintValue
+ Octane.Type.Value.TeamPaintValue: [teamPaintValueAccentColor] :: TeamPaintValue -> Word8
+ Octane.Type.Value.TeamPaintValue: [teamPaintValueAccentFinish] :: TeamPaintValue -> Word32
+ Octane.Type.Value.TeamPaintValue: [teamPaintValuePrimaryColor] :: TeamPaintValue -> Word8
+ Octane.Type.Value.TeamPaintValue: [teamPaintValuePrimaryFinish] :: TeamPaintValue -> Word32
+ Octane.Type.Value.TeamPaintValue: [teamPaintValueTeam] :: TeamPaintValue -> Word8
+ Octane.Type.Value.TeamPaintValue: data TeamPaintValue
+ Octane.Type.Value.TeamPaintValue: instance Control.DeepSeq.NFData Octane.Type.Value.TeamPaintValue.TeamPaintValue
+ Octane.Type.Value.TeamPaintValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.TeamPaintValue.TeamPaintValue
+ Octane.Type.Value.TeamPaintValue: instance Data.OverloadedRecords.HasField "accentColor" Octane.Type.Value.TeamPaintValue.TeamPaintValue Octane.Type.Word8.Word8
+ Octane.Type.Value.TeamPaintValue: instance Data.OverloadedRecords.HasField "accentFinish" Octane.Type.Value.TeamPaintValue.TeamPaintValue Octane.Type.Word32.Word32
+ Octane.Type.Value.TeamPaintValue: instance Data.OverloadedRecords.HasField "primaryColor" Octane.Type.Value.TeamPaintValue.TeamPaintValue Octane.Type.Word8.Word8
+ Octane.Type.Value.TeamPaintValue: instance Data.OverloadedRecords.HasField "primaryFinish" Octane.Type.Value.TeamPaintValue.TeamPaintValue Octane.Type.Word32.Word32
+ Octane.Type.Value.TeamPaintValue: instance Data.OverloadedRecords.HasField "team" Octane.Type.Value.TeamPaintValue.TeamPaintValue Octane.Type.Word8.Word8
+ Octane.Type.Value.TeamPaintValue: instance Data.OverloadedRecords.ModifyField "accentColor" Octane.Type.Value.TeamPaintValue.TeamPaintValue Octane.Type.Value.TeamPaintValue.TeamPaintValue Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
+ Octane.Type.Value.TeamPaintValue: instance Data.OverloadedRecords.ModifyField "accentFinish" Octane.Type.Value.TeamPaintValue.TeamPaintValue Octane.Type.Value.TeamPaintValue.TeamPaintValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.TeamPaintValue: instance Data.OverloadedRecords.ModifyField "primaryColor" Octane.Type.Value.TeamPaintValue.TeamPaintValue Octane.Type.Value.TeamPaintValue.TeamPaintValue Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
+ Octane.Type.Value.TeamPaintValue: instance Data.OverloadedRecords.ModifyField "primaryFinish" Octane.Type.Value.TeamPaintValue.TeamPaintValue Octane.Type.Value.TeamPaintValue.TeamPaintValue Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.TeamPaintValue: instance Data.OverloadedRecords.ModifyField "team" Octane.Type.Value.TeamPaintValue.TeamPaintValue Octane.Type.Value.TeamPaintValue.TeamPaintValue Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
+ Octane.Type.Value.TeamPaintValue: instance Data.OverloadedRecords.ModifyRec "accentColor" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.HasField "accentColor" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue.TeamPaintValue) Octane.Type.Word8.Word8
+ Octane.Type.Value.TeamPaintValue: instance Data.OverloadedRecords.ModifyRec "accentColor" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.ModifyField "accentColor" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue.TeamPaintValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue.TeamPaintValue) Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
+ Octane.Type.Value.TeamPaintValue: instance Data.OverloadedRecords.ModifyRec "accentFinish" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "accentFinish" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue.TeamPaintValue) Octane.Type.Word32.Word32
+ Octane.Type.Value.TeamPaintValue: instance Data.OverloadedRecords.ModifyRec "accentFinish" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "accentFinish" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue.TeamPaintValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue.TeamPaintValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.TeamPaintValue: instance Data.OverloadedRecords.ModifyRec "primaryColor" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.HasField "primaryColor" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue.TeamPaintValue) Octane.Type.Word8.Word8
+ Octane.Type.Value.TeamPaintValue: instance Data.OverloadedRecords.ModifyRec "primaryColor" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.ModifyField "primaryColor" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue.TeamPaintValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue.TeamPaintValue) Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
+ Octane.Type.Value.TeamPaintValue: instance Data.OverloadedRecords.ModifyRec "primaryFinish" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.HasField "primaryFinish" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue.TeamPaintValue) Octane.Type.Word32.Word32
+ Octane.Type.Value.TeamPaintValue: instance Data.OverloadedRecords.ModifyRec "primaryFinish" Octane.Type.Word32.Word32 cs0 => Data.OverloadedRecords.ModifyField "primaryFinish" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue.TeamPaintValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue.TeamPaintValue) Octane.Type.Word32.Word32 Octane.Type.Word32.Word32
+ Octane.Type.Value.TeamPaintValue: instance Data.OverloadedRecords.ModifyRec "team" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.HasField "team" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue.TeamPaintValue) Octane.Type.Word8.Word8
+ Octane.Type.Value.TeamPaintValue: instance Data.OverloadedRecords.ModifyRec "team" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.ModifyField "team" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue.TeamPaintValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.TeamPaintValue.TeamPaintValue) Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
+ Octane.Type.Value.TeamPaintValue: instance GHC.Classes.Eq Octane.Type.Value.TeamPaintValue.TeamPaintValue
+ Octane.Type.Value.TeamPaintValue: instance GHC.Generics.Generic Octane.Type.Value.TeamPaintValue.TeamPaintValue
+ Octane.Type.Value.TeamPaintValue: instance GHC.Show.Show Octane.Type.Value.TeamPaintValue.TeamPaintValue
+ Octane.Type.Value.UniqueIdValue: UniqueIdValue :: Word8 -> RemoteId -> Maybe Word8 -> UniqueIdValue
+ Octane.Type.Value.UniqueIdValue: [uniqueIdValueLocalId] :: UniqueIdValue -> Maybe Word8
+ Octane.Type.Value.UniqueIdValue: [uniqueIdValueRemoteId] :: UniqueIdValue -> RemoteId
+ Octane.Type.Value.UniqueIdValue: [uniqueIdValueSystemId] :: UniqueIdValue -> Word8
+ Octane.Type.Value.UniqueIdValue: data UniqueIdValue
+ Octane.Type.Value.UniqueIdValue: instance Control.DeepSeq.NFData Octane.Type.Value.UniqueIdValue.UniqueIdValue
+ Octane.Type.Value.UniqueIdValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.UniqueIdValue.UniqueIdValue
+ Octane.Type.Value.UniqueIdValue: instance Data.OverloadedRecords.HasField "localId" Octane.Type.Value.UniqueIdValue.UniqueIdValue (GHC.Base.Maybe Octane.Type.Word8.Word8)
+ Octane.Type.Value.UniqueIdValue: instance Data.OverloadedRecords.HasField "remoteId" Octane.Type.Value.UniqueIdValue.UniqueIdValue Octane.Type.RemoteId.RemoteId
+ Octane.Type.Value.UniqueIdValue: instance Data.OverloadedRecords.HasField "systemId" Octane.Type.Value.UniqueIdValue.UniqueIdValue Octane.Type.Word8.Word8
+ Octane.Type.Value.UniqueIdValue: instance Data.OverloadedRecords.ModifyField "localId" Octane.Type.Value.UniqueIdValue.UniqueIdValue Octane.Type.Value.UniqueIdValue.UniqueIdValue (GHC.Base.Maybe Octane.Type.Word8.Word8) (GHC.Base.Maybe Octane.Type.Word8.Word8)
+ Octane.Type.Value.UniqueIdValue: instance Data.OverloadedRecords.ModifyField "remoteId" Octane.Type.Value.UniqueIdValue.UniqueIdValue Octane.Type.Value.UniqueIdValue.UniqueIdValue Octane.Type.RemoteId.RemoteId Octane.Type.RemoteId.RemoteId
+ Octane.Type.Value.UniqueIdValue: instance Data.OverloadedRecords.ModifyField "systemId" Octane.Type.Value.UniqueIdValue.UniqueIdValue Octane.Type.Value.UniqueIdValue.UniqueIdValue Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
+ Octane.Type.Value.UniqueIdValue: instance Data.OverloadedRecords.ModifyRec "localId" (GHC.Base.Maybe Octane.Type.Word8.Word8) cs0 => Data.OverloadedRecords.HasField "localId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.UniqueIdValue.UniqueIdValue) (GHC.Base.Maybe Octane.Type.Word8.Word8)
+ Octane.Type.Value.UniqueIdValue: instance Data.OverloadedRecords.ModifyRec "localId" (GHC.Base.Maybe Octane.Type.Word8.Word8) cs0 => Data.OverloadedRecords.ModifyField "localId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.UniqueIdValue.UniqueIdValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.UniqueIdValue.UniqueIdValue) (GHC.Base.Maybe Octane.Type.Word8.Word8) (GHC.Base.Maybe Octane.Type.Word8.Word8)
+ Octane.Type.Value.UniqueIdValue: instance Data.OverloadedRecords.ModifyRec "remoteId" Octane.Type.RemoteId.RemoteId cs0 => Data.OverloadedRecords.HasField "remoteId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.UniqueIdValue.UniqueIdValue) Octane.Type.RemoteId.RemoteId
+ Octane.Type.Value.UniqueIdValue: instance Data.OverloadedRecords.ModifyRec "remoteId" Octane.Type.RemoteId.RemoteId cs0 => Data.OverloadedRecords.ModifyField "remoteId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.UniqueIdValue.UniqueIdValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.UniqueIdValue.UniqueIdValue) Octane.Type.RemoteId.RemoteId Octane.Type.RemoteId.RemoteId
+ Octane.Type.Value.UniqueIdValue: instance Data.OverloadedRecords.ModifyRec "systemId" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.HasField "systemId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.UniqueIdValue.UniqueIdValue) Octane.Type.Word8.Word8
+ Octane.Type.Value.UniqueIdValue: instance Data.OverloadedRecords.ModifyRec "systemId" Octane.Type.Word8.Word8 cs0 => Data.OverloadedRecords.ModifyField "systemId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.UniqueIdValue.UniqueIdValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.UniqueIdValue.UniqueIdValue) Octane.Type.Word8.Word8 Octane.Type.Word8.Word8
+ Octane.Type.Value.UniqueIdValue: instance GHC.Classes.Eq Octane.Type.Value.UniqueIdValue.UniqueIdValue
+ Octane.Type.Value.UniqueIdValue: instance GHC.Generics.Generic Octane.Type.Value.UniqueIdValue.UniqueIdValue
+ Octane.Type.Value.UniqueIdValue: instance GHC.Show.Show Octane.Type.Value.UniqueIdValue.UniqueIdValue
+ Octane.Type.Value.WeldedInfoValue: WeldedInfoValue :: Boolean -> Int32 -> Vector Int -> Float32 -> Vector Int8 -> WeldedInfoValue
+ Octane.Type.Value.WeldedInfoValue: [weldedInfoValueActive] :: WeldedInfoValue -> Boolean
+ Octane.Type.Value.WeldedInfoValue: [weldedInfoValueActorId] :: WeldedInfoValue -> Int32
+ Octane.Type.Value.WeldedInfoValue: [weldedInfoValueMass] :: WeldedInfoValue -> Float32
+ Octane.Type.Value.WeldedInfoValue: [weldedInfoValueOffset] :: WeldedInfoValue -> Vector Int
+ Octane.Type.Value.WeldedInfoValue: [weldedInfoValueRotation] :: WeldedInfoValue -> Vector Int8
+ Octane.Type.Value.WeldedInfoValue: data WeldedInfoValue
+ Octane.Type.Value.WeldedInfoValue: instance Control.DeepSeq.NFData Octane.Type.Value.WeldedInfoValue.WeldedInfoValue
+ Octane.Type.Value.WeldedInfoValue: instance Data.Aeson.Types.ToJSON.ToJSON Octane.Type.Value.WeldedInfoValue.WeldedInfoValue
+ Octane.Type.Value.WeldedInfoValue: instance Data.OverloadedRecords.HasField "active" Octane.Type.Value.WeldedInfoValue.WeldedInfoValue Octane.Type.Boolean.Boolean
+ Octane.Type.Value.WeldedInfoValue: instance Data.OverloadedRecords.HasField "actorId" Octane.Type.Value.WeldedInfoValue.WeldedInfoValue Octane.Type.Int32.Int32
+ Octane.Type.Value.WeldedInfoValue: instance Data.OverloadedRecords.HasField "mass" Octane.Type.Value.WeldedInfoValue.WeldedInfoValue Octane.Type.Float32.Float32
+ Octane.Type.Value.WeldedInfoValue: instance Data.OverloadedRecords.HasField "offset" Octane.Type.Value.WeldedInfoValue.WeldedInfoValue (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.WeldedInfoValue: instance Data.OverloadedRecords.HasField "rotation" Octane.Type.Value.WeldedInfoValue.WeldedInfoValue (Octane.Type.Vector.Vector Octane.Type.Int8.Int8)
+ Octane.Type.Value.WeldedInfoValue: instance Data.OverloadedRecords.ModifyField "active" Octane.Type.Value.WeldedInfoValue.WeldedInfoValue Octane.Type.Value.WeldedInfoValue.WeldedInfoValue Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.WeldedInfoValue: instance Data.OverloadedRecords.ModifyField "actorId" Octane.Type.Value.WeldedInfoValue.WeldedInfoValue Octane.Type.Value.WeldedInfoValue.WeldedInfoValue Octane.Type.Int32.Int32 Octane.Type.Int32.Int32
+ Octane.Type.Value.WeldedInfoValue: instance Data.OverloadedRecords.ModifyField "mass" Octane.Type.Value.WeldedInfoValue.WeldedInfoValue Octane.Type.Value.WeldedInfoValue.WeldedInfoValue Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
+ Octane.Type.Value.WeldedInfoValue: instance Data.OverloadedRecords.ModifyField "offset" Octane.Type.Value.WeldedInfoValue.WeldedInfoValue Octane.Type.Value.WeldedInfoValue.WeldedInfoValue (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.WeldedInfoValue: instance Data.OverloadedRecords.ModifyField "rotation" Octane.Type.Value.WeldedInfoValue.WeldedInfoValue Octane.Type.Value.WeldedInfoValue.WeldedInfoValue (Octane.Type.Vector.Vector Octane.Type.Int8.Int8) (Octane.Type.Vector.Vector Octane.Type.Int8.Int8)
+ Octane.Type.Value.WeldedInfoValue: instance Data.OverloadedRecords.ModifyRec "active" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.HasField "active" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.WeldedInfoValue.WeldedInfoValue) Octane.Type.Boolean.Boolean
+ Octane.Type.Value.WeldedInfoValue: instance Data.OverloadedRecords.ModifyRec "active" Octane.Type.Boolean.Boolean cs0 => Data.OverloadedRecords.ModifyField "active" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.WeldedInfoValue.WeldedInfoValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.WeldedInfoValue.WeldedInfoValue) Octane.Type.Boolean.Boolean Octane.Type.Boolean.Boolean
+ Octane.Type.Value.WeldedInfoValue: instance Data.OverloadedRecords.ModifyRec "actorId" Octane.Type.Int32.Int32 cs0 => Data.OverloadedRecords.HasField "actorId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.WeldedInfoValue.WeldedInfoValue) Octane.Type.Int32.Int32
+ Octane.Type.Value.WeldedInfoValue: instance Data.OverloadedRecords.ModifyRec "actorId" Octane.Type.Int32.Int32 cs0 => Data.OverloadedRecords.ModifyField "actorId" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.WeldedInfoValue.WeldedInfoValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.WeldedInfoValue.WeldedInfoValue) Octane.Type.Int32.Int32 Octane.Type.Int32.Int32
+ Octane.Type.Value.WeldedInfoValue: instance Data.OverloadedRecords.ModifyRec "mass" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.HasField "mass" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.WeldedInfoValue.WeldedInfoValue) Octane.Type.Float32.Float32
+ Octane.Type.Value.WeldedInfoValue: instance Data.OverloadedRecords.ModifyRec "mass" Octane.Type.Float32.Float32 cs0 => Data.OverloadedRecords.ModifyField "mass" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.WeldedInfoValue.WeldedInfoValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.WeldedInfoValue.WeldedInfoValue) Octane.Type.Float32.Float32 Octane.Type.Float32.Float32
+ Octane.Type.Value.WeldedInfoValue: instance Data.OverloadedRecords.ModifyRec "offset" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.HasField "offset" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.WeldedInfoValue.WeldedInfoValue) (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.WeldedInfoValue: instance Data.OverloadedRecords.ModifyRec "offset" (Octane.Type.Vector.Vector GHC.Types.Int) cs0 => Data.OverloadedRecords.ModifyField "offset" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.WeldedInfoValue.WeldedInfoValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.WeldedInfoValue.WeldedInfoValue) (Octane.Type.Vector.Vector GHC.Types.Int) (Octane.Type.Vector.Vector GHC.Types.Int)
+ Octane.Type.Value.WeldedInfoValue: instance Data.OverloadedRecords.ModifyRec "rotation" (Octane.Type.Vector.Vector Octane.Type.Int8.Int8) cs0 => Data.OverloadedRecords.HasField "rotation" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.WeldedInfoValue.WeldedInfoValue) (Octane.Type.Vector.Vector Octane.Type.Int8.Int8)
+ Octane.Type.Value.WeldedInfoValue: instance Data.OverloadedRecords.ModifyRec "rotation" (Octane.Type.Vector.Vector Octane.Type.Int8.Int8) cs0 => Data.OverloadedRecords.ModifyField "rotation" (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.WeldedInfoValue.WeldedInfoValue) (Data.OverloadedRecords.Rec cs0 Octane.Type.Value.WeldedInfoValue.WeldedInfoValue) (Octane.Type.Vector.Vector Octane.Type.Int8.Int8) (Octane.Type.Vector.Vector Octane.Type.Int8.Int8)
+ Octane.Type.Value.WeldedInfoValue: instance GHC.Classes.Eq Octane.Type.Value.WeldedInfoValue.WeldedInfoValue
+ Octane.Type.Value.WeldedInfoValue: instance GHC.Generics.Generic Octane.Type.Value.WeldedInfoValue.WeldedInfoValue
+ Octane.Type.Value.WeldedInfoValue: instance GHC.Show.Show Octane.Type.Value.WeldedInfoValue.WeldedInfoValue
+ Octane.Type.Vector: putFloatVector :: Vector Float -> BitPut ()
+ Octane.Type.Word32: instance GHC.Enum.Enum Octane.Type.Word32.Word32
+ Octane.Utility.Generator: instance Data.OverloadedRecords.HasField "classPropertyMap" Octane.Utility.Generator.Context (Data.Map.Base.Map Data.Text.Internal.Text (Data.Map.Base.Map Data.Text.Internal.Text Octane.Type.CompressedWord.CompressedWord))
+ Octane.Utility.Generator: instance Data.OverloadedRecords.HasField "objectMap" Octane.Utility.Generator.Context (Data.Map.Base.Map Data.Text.Internal.Text Octane.Type.Int32.Int32)
+ Octane.Utility.Generator: instance Data.OverloadedRecords.ModifyField "classPropertyMap" Octane.Utility.Generator.Context Octane.Utility.Generator.Context (Data.Map.Base.Map Data.Text.Internal.Text (Data.Map.Base.Map Data.Text.Internal.Text Octane.Type.CompressedWord.CompressedWord)) (Data.Map.Base.Map Data.Text.Internal.Text (Data.Map.Base.Map Data.Text.Internal.Text Octane.Type.CompressedWord.CompressedWord))
+ Octane.Utility.Generator: instance Data.OverloadedRecords.ModifyField "objectMap" Octane.Utility.Generator.Context Octane.Utility.Generator.Context (Data.Map.Base.Map Data.Text.Internal.Text Octane.Type.Int32.Int32) (Data.Map.Base.Map Data.Text.Internal.Text Octane.Type.Int32.Int32)
+ Octane.Utility.Generator: instance Data.OverloadedRecords.ModifyRec "classPropertyMap" (Data.Map.Base.Map Data.Text.Internal.Text (Data.Map.Base.Map Data.Text.Internal.Text Octane.Type.CompressedWord.CompressedWord)) cs0 => Data.OverloadedRecords.HasField "classPropertyMap" (Data.OverloadedRecords.Rec cs0 Octane.Utility.Generator.Context) (Data.Map.Base.Map Data.Text.Internal.Text (Data.Map.Base.Map Data.Text.Internal.Text Octane.Type.CompressedWord.CompressedWord))
+ Octane.Utility.Generator: instance Data.OverloadedRecords.ModifyRec "classPropertyMap" (Data.Map.Base.Map Data.Text.Internal.Text (Data.Map.Base.Map Data.Text.Internal.Text Octane.Type.CompressedWord.CompressedWord)) cs0 => Data.OverloadedRecords.ModifyField "classPropertyMap" (Data.OverloadedRecords.Rec cs0 Octane.Utility.Generator.Context) (Data.OverloadedRecords.Rec cs0 Octane.Utility.Generator.Context) (Data.Map.Base.Map Data.Text.Internal.Text (Data.Map.Base.Map Data.Text.Internal.Text Octane.Type.CompressedWord.CompressedWord)) (Data.Map.Base.Map Data.Text.Internal.Text (Data.Map.Base.Map Data.Text.Internal.Text Octane.Type.CompressedWord.CompressedWord))
+ Octane.Utility.Generator: instance Data.OverloadedRecords.ModifyRec "objectMap" (Data.Map.Base.Map Data.Text.Internal.Text Octane.Type.Int32.Int32) cs0 => Data.OverloadedRecords.HasField "objectMap" (Data.OverloadedRecords.Rec cs0 Octane.Utility.Generator.Context) (Data.Map.Base.Map Data.Text.Internal.Text Octane.Type.Int32.Int32)
+ Octane.Utility.Generator: instance Data.OverloadedRecords.ModifyRec "objectMap" (Data.Map.Base.Map Data.Text.Internal.Text Octane.Type.Int32.Int32) cs0 => Data.OverloadedRecords.ModifyField "objectMap" (Data.OverloadedRecords.Rec cs0 Octane.Utility.Generator.Context) (Data.OverloadedRecords.Rec cs0 Octane.Utility.Generator.Context) (Data.Map.Base.Map Data.Text.Internal.Text Octane.Type.Int32.Int32) (Data.Map.Base.Map Data.Text.Internal.Text Octane.Type.Int32.Int32)
- Octane.Type.Property: PropertyArray :: ArrayProperty -> Property
+ Octane.Type.Property: PropertyArray :: (ArrayProperty Property) -> Property
Files
- data/classes-with-location.json +12/−0
- data/classes.json +14/−0
- data/properties.json +19/−0
- library/Octane/Type.hs +2/−0
- library/Octane/Type/CompressedWord.hs +24/−11
- library/Octane/Type/Frame.hs +3/−3
- library/Octane/Type/Initialization.hs +1/−3
- library/Octane/Type/Int32.hs +1/−1
- library/Octane/Type/Property.hs +25/−253
- library/Octane/Type/Property/ArrayProperty.hs +57/−0
- library/Octane/Type/Property/BoolProperty.hs +53/−0
- library/Octane/Type/Property/ByteProperty.hs +59/−0
- library/Octane/Type/Property/FloatProperty.hs +56/−0
- library/Octane/Type/Property/IntProperty.hs +56/−0
- library/Octane/Type/Property/NameProperty.hs +52/−0
- library/Octane/Type/Property/QWordProperty.hs +55/−0
- library/Octane/Type/Property/StrProperty.hs +49/−0
- library/Octane/Type/RawReplay.hs +8/−1
- library/Octane/Type/RemoteId.hs +12/−137
- library/Octane/Type/RemoteId/PlayStationId.hs +78/−0
- library/Octane/Type/RemoteId/SplitscreenId.hs +52/−0
- library/Octane/Type/RemoteId/SteamId.hs +45/−0
- library/Octane/Type/RemoteId/XboxId.hs +45/−0
- library/Octane/Type/Replay.hs +107/−51
- library/Octane/Type/State.hs +15/−3
- library/Octane/Type/Text.hs +5/−1
- library/Octane/Type/Value.hs +82/−413
- library/Octane/Type/Value/BooleanValue.hs +36/−0
- library/Octane/Type/Value/ByteValue.hs +35/−0
- library/Octane/Type/Value/CamSettingsValue.hs +52/−0
- library/Octane/Type/Value/DemolishValue.hs +54/−0
- library/Octane/Type/Value/EnumValue.hs +41/−0
- library/Octane/Type/Value/ExplosionValue.hs +48/−0
- library/Octane/Type/Value/FlaggedIntValue.hs +41/−0
- library/Octane/Type/Value/FloatValue.hs +35/−0
- library/Octane/Type/Value/GameModeValue.hs +44/−0
- library/Octane/Type/Value/IntValue.hs +35/−0
- library/Octane/Type/Value/LoadoutOnlineValue.hs +37/−0
- library/Octane/Type/Value/LoadoutValue.hs +71/−0
- library/Octane/Type/Value/LoadoutsOnlineValue.hs +50/−0
- library/Octane/Type/Value/LoadoutsValue.hs +41/−0
- library/Octane/Type/Value/LocationValue.hs +36/−0
- library/Octane/Type/Value/MusicStingerValue.hs +45/−0
- library/Octane/Type/Value/PickupValue.hs +47/−0
- library/Octane/Type/Value/PrivateMatchSettingsValue.hs +54/−0
- library/Octane/Type/Value/QWordValue.hs +35/−0
- library/Octane/Type/Value/RelativeRotationValue.hs +36/−0
- library/Octane/Type/Value/ReservationValue.hs +58/−0
- library/Octane/Type/Value/RigidBodyStateValue.hs +51/−0
- library/Octane/Type/Value/StringValue.hs +35/−0
- library/Octane/Type/Value/TeamPaintValue.hs +62/−0
- library/Octane/Type/Value/UniqueIdValue.hs +53/−0
- library/Octane/Type/Value/WeldedInfoValue.hs +54/−0
- library/Octane/Type/Vector.hs +57/−13
- library/Octane/Type/Word32.hs +1/−1
- library/Octane/Utility/CRC.hs +4/−1
- library/Octane/Utility/ClassPropertyMap.hs +42/−41
- library/Octane/Utility/Embed.hs +2/−1
- library/Octane/Utility/Generator.hs +354/−26
- library/Octane/Utility/Optimizer.hs +49/−51
- library/Octane/Utility/Parser.hs +103/−24
- octane.cabal +45/−1
- package.yaml +7/−1
- stack.yaml +6/−0
- test-suite/OctaneSpec.hs +594/−1
data/classes-with-location.json view
@@ -14,5 +14,17 @@ "TAGame.GameEvent_SoccarSplitscreen_TA", "TAGame.GRI_TA", "TAGame.PRI_TA",+ "TAGame.SpecialPickup_BallCarSpring_TA",+ "TAGame.SpecialPickup_BallFreeze_TA",+ "TAGame.SpecialPickup_BallGravity_TA",+ "TAGame.SpecialPickup_BallGravity_TA",+ "TAGame.SpecialPickup_BallLasso_TA",+ "TAGame.SpecialPickup_BallVelcro_TA",+ "TAGame.SpecialPickup_Batarang_TA",+ "TAGame.SpecialPickup_BoostOverride_TA",+ "TAGame.SpecialPickup_GrapplingHook_TA",+ "TAGame.SpecialPickup_HitForce_TA",+ "TAGame.SpecialPickup_Swapper_TA",+ "TAGame.SpecialPickup_Tornado_TA", "TAGame.Team_Soccar_TA" ]
data/classes.json view
@@ -14,15 +14,29 @@ "Archetypes.GameEvent.GameEvent_BasketballSplitscreen": "TAGame.GameEvent_SoccarSplitscreen_TA", "Archetypes.GameEvent.GameEvent_HockeyPrivate": "TAGame.GameEvent_SoccarPrivate_TA", "Archetypes.GameEvent.GameEvent_HockeySplitscreen": "TAGame.GameEvent_SoccarSplitscreen_TA",+ "Archetypes.GameEvent.GameEvent_Items": "TAGame.GameEvent_Soccar_TA", "Archetypes.GameEvent.GameEvent_Season:CarArchetype": "TAGame.Car_TA", "Archetypes.GameEvent.GameEvent_Season": "TAGame.GameEvent_Season_TA", "Archetypes.GameEvent.GameEvent_Soccar": "TAGame.GameEvent_Soccar_TA", "Archetypes.GameEvent.GameEvent_SoccarPrivate": "TAGame.GameEvent_SoccarPrivate_TA", "Archetypes.GameEvent.GameEvent_SoccarSplitscreen": "TAGame.GameEvent_SoccarSplitscreen_TA",+ "Archetypes.SpecialPickups.SpecialPickup_BallFreeze": "TAGame.SpecialPickup_BallFreeze_TA",+ "Archetypes.SpecialPickups.SpecialPickup_BallGrapplingHook": "TAGame.SpecialPickup_GrapplingHook_TA",+ "Archetypes.SpecialPickups.SpecialPickup_BallLasso": "TAGame.SpecialPickup_BallLasso_TA",+ "Archetypes.SpecialPickups.SpecialPickup_BallSpring": "TAGame.SpecialPickup_BallCarSpring_TA",+ "Archetypes.SpecialPickups.SpecialPickup_BallVelcro": "TAGame.SpecialPickup_BallVelcro_TA",+ "Archetypes.SpecialPickups.SpecialPickup_Batarang": "TAGame.SpecialPickup_Batarang_TA",+ "Archetypes.SpecialPickups.SpecialPickup_BoostOverride": "TAGame.SpecialPickup_BoostOverride_TA",+ "Archetypes.SpecialPickups.SpecialPickup_CarSpring": "TAGame.SpecialPickup_BallCarSpring_TA",+ "Archetypes.SpecialPickups.SpecialPickup_GravityWell": "TAGame.SpecialPickup_BallGravity_TA",+ "Archetypes.SpecialPickups.SpecialPickup_StrongHit": "TAGame.SpecialPickup_HitForce_TA",+ "Archetypes.SpecialPickups.SpecialPickup_Swapper": "TAGame.SpecialPickup_Swapper_TA",+ "Archetypes.SpecialPickups.SpecialPickup_Tornado": "TAGame.SpecialPickup_Tornado_TA", "Archetypes.Teams.Team0": "TAGame.Team_Soccar_TA", "Archetypes.Teams.Team1": "TAGame.Team_Soccar_TA", "GameInfo_Basketball.GameInfo.GameInfo_Basketball:GameReplicationInfoArchetype": "TAGame.GRI_TA", "Gameinfo_Hockey.GameInfo.Gameinfo_Hockey:GameReplicationInfoArchetype": "TAGame.GRI_TA",+ "GameInfo_Items.GameInfo.GameInfo_Items:GameReplicationInfoArchetype": "TAGame.GRI_TA", "GameInfo_Season.GameInfo.GameInfo_Season:GameReplicationInfoArchetype": "TAGame.GRI_TA", "GameInfo_Soccar.GameInfo.GameInfo_Soccar:GameReplicationInfoArchetype": "TAGame.GRI_TA", "TAGame.CameraSettingsActor_TA:PRI": "TAGame.CameraSettingsActor_TA",
data/properties.json view
@@ -55,6 +55,9 @@ "TAGame.CameraSettingsActor_TA:CameraYaw": "byte", "TAGame.CameraSettingsActor_TA:PRI": "flagged_int", "TAGame.CameraSettingsActor_TA:ProfileSettings": "cam_settings",+ "TAGame.Car_TA:AddedBallForceMultiplier": "float",+ "TAGame.Car_TA:AddedCarForceMultiplier": "float",+ "TAGame.Car_TA:AttachedPickup": "flagged_int", "TAGame.Car_TA:ReplicatedDemolish": "demolish", "TAGame.Car_TA:TeamPaint": "team_paint", "TAGame.CarComponent_Boost_TA:bNoBoost": "boolean",@@ -63,15 +66,18 @@ "TAGame.CarComponent_Boost_TA:RechargeDelay": "float", "TAGame.CarComponent_Boost_TA:RechargeRate": "float", "TAGame.CarComponent_Boost_TA:ReplicatedBoostAmount": "byte",+ "TAGame.CarComponent_Boost_TA:UnlimitedBoostRefCount": "int", "TAGame.CarComponent_Dodge_TA:DodgeTorque": "location", "TAGame.CarComponent_FlipCar_TA:bFlipRight": "boolean", "TAGame.CarComponent_FlipCar_TA:FlipCarTime": "float", "TAGame.CarComponent_TA:ReplicatedActive": "byte",+ "TAGame.CarComponent_TA:ReplicatedActivityTime": "float", "TAGame.CarComponent_TA:Vehicle": "flagged_int", "TAGame.CrowdActor_TA:GameEvent": "flagged_int", "TAGame.CrowdActor_TA:ModifiedNoise": "float", "TAGame.CrowdActor_TA:ReplicatedCountDownNumber": "int", "TAGame.CrowdActor_TA:ReplicatedOneShotSound": "flagged_int",+ "TAGame.CrowdActor_TA:ReplicatedRoundCountDownNumber": "int", "TAGame.CrowdManager_TA:GameEvent": "flagged_int", "TAGame.CrowdManager_TA:ReplicatedGlobalOneShotSound": "flagged_int", "TAGame.GameEvent_Soccar_TA:bBallHasBeenHit": "boolean",@@ -80,10 +86,12 @@ "TAGame.GameEvent_Soccar_TA:ReplicatedScoredOnTeam": "byte", "TAGame.GameEvent_Soccar_TA:RoundNum": "int", "TAGame.GameEvent_Soccar_TA:SecondsRemaining": "int",+ "TAGame.GameEvent_Soccar_TA:SubRulesArchetype": "flagged_int", "TAGame.GameEvent_SoccarPrivate_TA:MatchSettings": "private_match_settings", "TAGame.GameEvent_TA:bHasLeaveMatchPenalty": "boolean", "TAGame.GameEvent_TA:BotSkill": "int", "TAGame.GameEvent_TA:GameMode": "game_mode",+ "TAGame.GameEvent_TA:MatchTypeClass": "flagged_int", "TAGame.GameEvent_TA:ReplicatedGameStateTimeRemaining": "int", "TAGame.GameEvent_TA:ReplicatedStateIndex": "byte", "TAGame.GameEvent_TA:ReplicatedStateName": "int",@@ -93,6 +101,7 @@ "TAGame.PRI_TA:bIsInSplitScreen": "boolean", "TAGame.PRI_TA:bMatchMVP": "boolean", "TAGame.PRI_TA:bOnlineLoadoutSet": "boolean",+ "TAGame.PRI_TA:bOnlineLoadoutsSet": "boolean", "TAGame.PRI_TA:bReady": "boolean", "TAGame.PRI_TA:bUsingBehindView": "boolean", "TAGame.PRI_TA:bUsingFreecam": "boolean",@@ -103,6 +112,8 @@ "TAGame.PRI_TA:CameraYaw": "byte", "TAGame.PRI_TA:ClientLoadout": "loadout", "TAGame.PRI_TA:ClientLoadoutOnline": "loadout_online",+ "TAGame.PRI_TA:ClientLoadouts": "loadouts",+ "TAGame.PRI_TA:ClientLoadoutsOnline": "loadouts_online", "TAGame.PRI_TA:MatchAssists": "int", "TAGame.PRI_TA:MatchGoals": "int", "TAGame.PRI_TA:MatchSaves": "int",@@ -115,8 +126,16 @@ "TAGame.PRI_TA:Title": "int", "TAGame.PRI_TA:TotalXP": "int", "TAGame.RBActor_TA:bFrozen": "boolean",+ "TAGame.RBActor_TA:bIgnoreSyncing": "boolean", "TAGame.RBActor_TA:bReplayActor": "boolean", "TAGame.RBActor_TA:ReplicatedRBState": "rigid_body_state",+ "TAGame.RBActor_TA:WeldedInfo": "welded_info",+ "TAGame.SpecialPickup_BallFreeze_TA:RepOrigSpeed": "float",+ "TAGame.SpecialPickup_BallVelcro_TA:AttachTime": "float",+ "TAGame.SpecialPickup_BallVelcro_TA:bBroken": "boolean",+ "TAGame.SpecialPickup_BallVelcro_TA:bHit": "boolean",+ "TAGame.SpecialPickup_BallVelcro_TA:BreakTime": "float",+ "TAGame.SpecialPickup_Targeted_TA:Targeted": "flagged_int", "TAGame.Team_Soccar_TA:GameScore": "int", "TAGame.Team_TA:CustomTeamName": "string", "TAGame.Team_TA:GameEvent": "flagged_int",
library/Octane/Type.hs view
@@ -3,6 +3,7 @@ , module Octane.Type.CacheItem , module Octane.Type.CacheProperty , module Octane.Type.ClassItem+ , module Octane.Type.CompressedWord , module Octane.Type.Dictionary , module Octane.Type.Float32 , module Octane.Type.Frame@@ -36,6 +37,7 @@ import Octane.Type.CacheItem import Octane.Type.CacheProperty import Octane.Type.ClassItem+import Octane.Type.CompressedWord import Octane.Type.Dictionary import Octane.Type.Float32 import Octane.Type.Frame
library/Octane/Type/CompressedWord.hs view
@@ -22,7 +22,6 @@ import qualified Data.Aeson as Aeson import qualified Data.Binary.Bits as BinaryBit import qualified Data.Binary.Bits.Get as BinaryBit-import qualified Data.Binary.Bits.Put as BinaryBit import qualified Data.Bits as Bits import qualified Data.Default.Class as Default import qualified Data.OverloadedRecords.TH as OverloadedRecords@@ -47,16 +46,30 @@ value <- getStep limit (bitSize limit) 0 0 pure (CompressedWord limit value) putBits _ compressedWord = do- let limit = fromIntegral (#limit compressedWord)- let value = fromIntegral (#value compressedWord)+ let limit = compressedWord & #limit+ let value = compressedWord & #value+ if value > limit+ then fail ("value " ++ show value ++ " > limit " ++ show limit)+ else pure () let maxBits = bitSize limit- let upper = (2 ^ (maxBits - 1)) - 1- let lower = limit - upper- let numBits =- if lower > value || value > upper- then maxBits- else maxBits - 1- BinaryBit.putWord64be numBits value+ let go position soFar = do+ if position < maxBits+ then do+ let x = Bits.shiftL 1 position+ if maxBits > 1 && position == maxBits - 1 && soFar + x > limit+ then do+ pure ()+ else do+ let bit = position & Bits.testBit value+ bit & Boolean.Boolean & BinaryBit.putBits 0+ let delta =+ if bit+ then x+ else 0+ go (position + 1) (soFar + delta)+ else do+ pure ()+ go 0 0 instance DeepSeq.NFData CompressedWord @@ -76,7 +89,7 @@ bitSize :: (Integral a, Integral b) => a -> b-bitSize x = x & fromIntegral & logBase (2 :: Double) & ceiling+bitSize x = x & fromIntegral & logBase (2 :: Double) & ceiling & max 1 getStep :: Word -> Word -> Word -> Word -> BinaryBit.BitGet Word getStep limit maxBits position value = do
library/Octane/Type/Frame.hs view
@@ -81,7 +81,7 @@ Aeson.toJSON getSpawned :: [Replication.Replication] -> Spawned-getSpawned xs = xs & filter (\x -> x & #state & (== State.SOpening)) & Spawned+getSpawned xs = xs & filter (\x -> x & #state & State.isOpening) & Spawned newtype Updated = Updated [Replication.Replication]@@ -99,7 +99,7 @@ getUpdated :: [Replication.Replication] -> Updated getUpdated xs =- xs & filter (\x -> x & #state & (== State.SExisting)) &+ xs & filter (\x -> x & #state & State.isExisting) & filter (\x -> x & #properties & null & not) & Updated @@ -110,4 +110,4 @@ toJSON (Destroyed xs) = xs & map #actorId & map #value & Aeson.toJSON getDestroyed :: [Replication.Replication] -> Destroyed-getDestroyed xs = xs & filter (\x -> x & #state & (== State.SClosing)) & Destroyed+getDestroyed xs = xs & filter (\x -> x & #state & State.isClosing) & Destroyed
library/Octane/Type/Initialization.hs view
@@ -54,9 +54,7 @@ else pure Nothing pure Initialization- { initializationLocation = location- , initializationRotation = rotation- }+ {initializationLocation = location, initializationRotation = rotation} -- | Puts the 'Initialization'. Note that unlike 'getInitialization', this does -- not require the class name.
library/Octane/Type/Int32.hs view
@@ -34,7 +34,7 @@ -- | A 32-bit signed integer. newtype Int32 = Int32 { int32Unpack :: Int.Int32- } deriving (Eq, Generics.Generic, Num, Ord)+ } deriving (Enum, Eq, Generics.Generic, Num, Ord) $(OverloadedRecords.overloadedRecord Default.def ''Int32)
library/Octane/Type/Property.hs view
@@ -1,256 +1,40 @@-{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedLabels #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE StrictData #-}-{-# LANGUAGE TemplateHaskell #-}-{-# LANGUAGE TypeFamilies #-} module Octane.Type.Property ( Property(..)- , ArrayProperty(..)- , BoolProperty(..)- , ByteProperty(..)- , FloatProperty(..)- , IntProperty(..)- , NameProperty(..)- , QWordProperty(..)- , StrProperty(..)+ , module Octane.Type.Property.ArrayProperty+ , module Octane.Type.Property.BoolProperty+ , module Octane.Type.Property.ByteProperty+ , module Octane.Type.Property.FloatProperty+ , module Octane.Type.Property.IntProperty+ , module Octane.Type.Property.NameProperty+ , module Octane.Type.Property.QWordProperty+ , module Octane.Type.Property.StrProperty ) where -import Data.Aeson ((.=))-import Data.Function ((&))+import Octane.Type.Property.ArrayProperty+import Octane.Type.Property.BoolProperty+import Octane.Type.Property.ByteProperty+import Octane.Type.Property.FloatProperty+import Octane.Type.Property.IntProperty+import Octane.Type.Property.NameProperty+import Octane.Type.Property.QWordProperty+import Octane.Type.Property.StrProperty import qualified Control.DeepSeq as DeepSeq import qualified Data.Aeson as Aeson import qualified Data.Binary as Binary-import qualified Data.Default.Class as Default-import qualified Data.OverloadedRecords.TH as OverloadedRecords import qualified GHC.Generics as Generics-import qualified Octane.Type.Boolean as Boolean-import qualified Octane.Type.Dictionary as Dictionary-import qualified Octane.Type.Float32 as Float32-import qualified Octane.Type.Int32 as Int32-import qualified Octane.Type.List as List import qualified Octane.Type.Text as Text-import qualified Octane.Type.Word64 as Word64 -data ArrayProperty = ArrayProperty- { arrayPropertySize :: Word64.Word64- , arrayPropertyContent :: List.List (Dictionary.Dictionary Property)- } deriving (Eq, Generics.Generic, Show)--instance Binary.Binary ArrayProperty where- get = do- size <- Binary.get- content <- Binary.get- pure (ArrayProperty size content)- put array = do- array & #size & Binary.put- array & #content & Binary.put--instance DeepSeq.NFData ArrayProperty--instance Aeson.ToJSON ArrayProperty where- toJSON array =- Aeson.object- [ "Type" .= ("Array" :: Text.Text)- , "Size" .= #size array- , "Value" .= #content array- ]--data BoolProperty = BoolProperty- { boolPropertySize :: Word64.Word64- , boolPropertyContent :: Boolean.Boolean- } deriving (Eq, Generics.Generic, Show)--instance Binary.Binary BoolProperty where- get = do- size <- Binary.get- content <- Binary.get- pure (BoolProperty size content)- put bool = do- bool & #size & Binary.put- bool & #content & Binary.put--instance DeepSeq.NFData BoolProperty--instance Aeson.ToJSON BoolProperty where- toJSON bool =- Aeson.object- [ "Type" .= ("Bool" :: Text.Text)- , "Size" .= #size bool- , "Value" .= #content bool- ]--data ByteProperty = ByteProperty- { bytePropertySize :: Word64.Word64- , bytePropertyKey :: Text.Text- , bytePropertyValue :: Text.Text- } deriving (Eq, Generics.Generic, Show)--instance Binary.Binary ByteProperty where- get = do- size <- Binary.get- key <- Binary.get- if key == "OnlinePlatform_Steam"- then do- pure (ByteProperty size "OnlinePlatform" key)- else do- value <- Binary.get- pure (ByteProperty size key value)- put byte = do- byte & #size & Binary.put- byte & #key & Binary.put- byte & #value & Binary.put--instance DeepSeq.NFData ByteProperty--instance Aeson.ToJSON ByteProperty where- toJSON byte =- Aeson.object- [ "Type" .= ("Byte" :: Text.Text)- , "Size" .= #size byte- , "Value" .= (#key byte, #value byte)- ]--data FloatProperty = FloatProperty- { floatPropertySize :: Word64.Word64- , floatPropertyContent :: Float32.Float32- } deriving (Eq, Generics.Generic, Show)--instance Binary.Binary FloatProperty where- get = do- size <- Binary.get- content <-- case #unpack size of- 4 -> Binary.get- x -> fail ("unknown FloatProperty size " ++ show x)- pure (FloatProperty size content)- put float = do- float & #size & Binary.put- float & #content & Binary.put--instance DeepSeq.NFData FloatProperty--instance Aeson.ToJSON FloatProperty where- toJSON float =- Aeson.object- [ "Type" .= ("Float" :: Text.Text)- , "Size" .= #size float- , "Value" .= #content float- ]--data IntProperty = IntProperty- { intPropertySize :: Word64.Word64- , intPropertyContent :: Int32.Int32- } deriving (Eq, Generics.Generic, Show)--instance Binary.Binary IntProperty where- get = do- size <- Binary.get- content <-- case #unpack size of- 4 -> Binary.get- x -> fail ("unknown IntProperty size " ++ show x)- pure (IntProperty size content)- put int = do- int & #size & Binary.put- int & #content & Binary.put--instance DeepSeq.NFData IntProperty--instance Aeson.ToJSON IntProperty where- toJSON int =- Aeson.object- [ "Type" .= ("Int" :: Text.Text)- , "Size" .= #size int- , "Value" .= #content int- ]--data NameProperty = NameProperty- { namePropertySize :: Word64.Word64- , namePropertyContent :: Text.Text- } deriving (Eq, Generics.Generic, Show)--instance Binary.Binary NameProperty where- get = do- size <- Binary.get- content <- Binary.get- pure (NameProperty size content)- put name = do- name & #size & Binary.put- name & #content & Binary.put--instance DeepSeq.NFData NameProperty--instance Aeson.ToJSON NameProperty where- toJSON name =- Aeson.object- [ "Type" .= ("Name" :: Text.Text)- , "Size" .= #size name- , "Value" .= #content name- ]--data QWordProperty = QWordProperty- { qWordPropertySize :: Word64.Word64- , qWordPropertyContent :: Word64.Word64- } deriving (Eq, Generics.Generic, Show)--instance Binary.Binary QWordProperty where- get = do- size <- Binary.get- content <-- case #unpack size of- 8 -> Binary.get- x -> fail ("unknown QWordProperty size " ++ show x)- pure (QWordProperty size content)- put qWord = do- qWord & #size & Binary.put- qWord & #content & Binary.put--instance DeepSeq.NFData QWordProperty--instance Aeson.ToJSON QWordProperty where- toJSON qWord =- Aeson.object- [ "Type" .= ("QWord" :: Text.Text)- , "Size" .= #size qWord- , "Value" .= #content qWord- ]--data StrProperty = StrProperty- { strPropertySize :: Word64.Word64- , strPropertyContent :: Text.Text- } deriving (Eq, Generics.Generic, Show)--instance Binary.Binary StrProperty where- get = do- size <- Binary.get- content <- Binary.get- pure (StrProperty size content)- put str = do- str & #size & Binary.put- str & #content & Binary.put--instance DeepSeq.NFData StrProperty--instance Aeson.ToJSON StrProperty where- toJSON str =- Aeson.object- [ "Type" .= ("Str" :: Text.Text)- , "Size" .= #size str- , "Value" .= #content str- ]- -- | A metadata property. All properties have a size, but only some actually -- use it. The value stored in the property can be an array, a boolean, and -- so on. data Property- = PropertyArray ArrayProperty+ = PropertyArray (ArrayProperty Property) | PropertyBool BoolProperty | PropertyByte ByteProperty | PropertyFloat FloatProperty@@ -260,18 +44,6 @@ | PropertyStr StrProperty deriving (Eq, Generics.Generic, Show) -$(OverloadedRecords.overloadedRecords- Default.def- [ ''ArrayProperty- , ''BoolProperty- , ''ByteProperty- , ''FloatProperty- , ''IntProperty- , ''NameProperty- , ''QWordProperty- , ''StrProperty- ])- -- | Stored with the size first, then the value. instance Binary.Binary Property where get = do@@ -342,14 +114,14 @@ instance Aeson.ToJSON Property where toJSON property = case property of- PropertyArray array -> Aeson.toJSON array- PropertyBool bool -> Aeson.toJSON bool- PropertyByte byte -> Aeson.toJSON byte- PropertyFloat float -> Aeson.toJSON float- PropertyInt int -> Aeson.toJSON int- PropertyName name -> Aeson.toJSON name- PropertyQWord qWord -> Aeson.toJSON qWord- PropertyStr str -> Aeson.toJSON str+ PropertyArray x -> Aeson.toJSON x+ PropertyBool x -> Aeson.toJSON x+ PropertyByte x -> Aeson.toJSON x+ PropertyFloat x -> Aeson.toJSON x+ PropertyInt x -> Aeson.toJSON x+ PropertyName x -> Aeson.toJSON x+ PropertyQWord x -> Aeson.toJSON x+ PropertyStr x -> Aeson.toJSON x arrayProperty :: Text.Text arrayProperty = "ArrayProperty"
+ library/Octane/Type/Property/ArrayProperty.hs view
@@ -0,0 +1,57 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Property.ArrayProperty+ ( ArrayProperty(..)+ ) where++import Data.Aeson ((.=))+import Data.Function ((&))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Binary as Binary+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified GHC.Generics as Generics+import qualified Octane.Type.Dictionary as Dictionary+import qualified Octane.Type.List as List+import qualified Octane.Type.Text as Text+import qualified Octane.Type.Word64 as Word64++data ArrayProperty a = ArrayProperty+ { arrayPropertySize :: Word64.Word64+ , arrayPropertyContent :: List.List (Dictionary.Dictionary a)+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''ArrayProperty)++instance (Binary.Binary a) =>+ Binary.Binary (ArrayProperty a) where+ get = do+ size <- Binary.get+ content <- Binary.get+ pure (ArrayProperty size content)+ put array = do+ array & #size & Binary.put+ array & #content & Binary.put++instance (DeepSeq.NFData a) =>+ DeepSeq.NFData (ArrayProperty a)++instance (Aeson.ToJSON a) =>+ Aeson.ToJSON (ArrayProperty a) where+ toJSON array =+ Aeson.object+ [ "Type" .= ("Array" :: Text.Text)+ , "Size" .= #size array+ , "Value" .= #content array+ ]
+ library/Octane/Type/Property/BoolProperty.hs view
@@ -0,0 +1,53 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Property.BoolProperty+ ( BoolProperty(..)+ ) where++import Data.Aeson ((.=))+import Data.Function ((&))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Binary as Binary+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified GHC.Generics as Generics+import qualified Octane.Type.Boolean as Boolean+import qualified Octane.Type.Text as Text+import qualified Octane.Type.Word64 as Word64++data BoolProperty = BoolProperty+ { boolPropertySize :: Word64.Word64+ , boolPropertyContent :: Boolean.Boolean+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''BoolProperty)++instance Binary.Binary BoolProperty where+ get = do+ size <- Binary.get+ content <- Binary.get+ pure (BoolProperty size content)+ put bool = do+ bool & #size & Binary.put+ bool & #content & Binary.put++instance DeepSeq.NFData BoolProperty++instance Aeson.ToJSON BoolProperty where+ toJSON bool =+ Aeson.object+ [ "Type" .= ("Bool" :: Text.Text)+ , "Size" .= #size bool+ , "Value" .= #content bool+ ]
+ library/Octane/Type/Property/ByteProperty.hs view
@@ -0,0 +1,59 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Property.ByteProperty+ ( ByteProperty(..)+ ) where++import Data.Aeson ((.=))+import Data.Function ((&))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Binary as Binary+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified GHC.Generics as Generics+import qualified Octane.Type.Text as Text+import qualified Octane.Type.Word64 as Word64++data ByteProperty = ByteProperty+ { bytePropertySize :: Word64.Word64+ , bytePropertyKey :: Text.Text+ , bytePropertyValue :: Text.Text+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''ByteProperty)++instance Binary.Binary ByteProperty where+ get = do+ size <- Binary.get+ key <- Binary.get+ if key == "OnlinePlatform_Steam"+ then do+ pure (ByteProperty size "OnlinePlatform" key)+ else do+ value <- Binary.get+ pure (ByteProperty size key value)+ put byte = do+ byte & #size & Binary.put+ byte & #key & Binary.put+ byte & #value & Binary.put++instance DeepSeq.NFData ByteProperty++instance Aeson.ToJSON ByteProperty where+ toJSON byte =+ Aeson.object+ [ "Type" .= ("Byte" :: Text.Text)+ , "Size" .= #size byte+ , "Value" .= (#key byte, #value byte)+ ]
+ library/Octane/Type/Property/FloatProperty.hs view
@@ -0,0 +1,56 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Property.FloatProperty+ ( FloatProperty(..)+ ) where++import Data.Aeson ((.=))+import Data.Function ((&))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Binary as Binary+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified GHC.Generics as Generics+import qualified Octane.Type.Float32 as Float32+import qualified Octane.Type.Text as Text+import qualified Octane.Type.Word64 as Word64++data FloatProperty = FloatProperty+ { floatPropertySize :: Word64.Word64+ , floatPropertyContent :: Float32.Float32+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''FloatProperty)++instance Binary.Binary FloatProperty where+ get = do+ size <- Binary.get+ content <-+ case #unpack size of+ 4 -> Binary.get+ x -> fail ("unknown FloatProperty size " ++ show x)+ pure (FloatProperty size content)+ put float = do+ float & #size & Binary.put+ float & #content & Binary.put++instance DeepSeq.NFData FloatProperty++instance Aeson.ToJSON FloatProperty where+ toJSON float =+ Aeson.object+ [ "Type" .= ("Float" :: Text.Text)+ , "Size" .= #size float+ , "Value" .= #content float+ ]
+ library/Octane/Type/Property/IntProperty.hs view
@@ -0,0 +1,56 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Property.IntProperty+ ( IntProperty(..)+ ) where++import Data.Aeson ((.=))+import Data.Function ((&))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Binary as Binary+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified GHC.Generics as Generics+import qualified Octane.Type.Int32 as Int32+import qualified Octane.Type.Text as Text+import qualified Octane.Type.Word64 as Word64++data IntProperty = IntProperty+ { intPropertySize :: Word64.Word64+ , intPropertyContent :: Int32.Int32+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''IntProperty)++instance Binary.Binary IntProperty where+ get = do+ size <- Binary.get+ content <-+ case #unpack size of+ 4 -> Binary.get+ x -> fail ("unknown IntProperty size " ++ show x)+ pure (IntProperty size content)+ put int = do+ int & #size & Binary.put+ int & #content & Binary.put++instance DeepSeq.NFData IntProperty++instance Aeson.ToJSON IntProperty where+ toJSON int =+ Aeson.object+ [ "Type" .= ("Int" :: Text.Text)+ , "Size" .= #size int+ , "Value" .= #content int+ ]
+ library/Octane/Type/Property/NameProperty.hs view
@@ -0,0 +1,52 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Property.NameProperty+ ( NameProperty(..)+ ) where++import Data.Aeson ((.=))+import Data.Function ((&))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Binary as Binary+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified GHC.Generics as Generics+import qualified Octane.Type.Text as Text+import qualified Octane.Type.Word64 as Word64++data NameProperty = NameProperty+ { namePropertySize :: Word64.Word64+ , namePropertyContent :: Text.Text+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''NameProperty)++instance Binary.Binary NameProperty where+ get = do+ size <- Binary.get+ content <- Binary.get+ pure (NameProperty size content)+ put name = do+ name & #size & Binary.put+ name & #content & Binary.put++instance DeepSeq.NFData NameProperty++instance Aeson.ToJSON NameProperty where+ toJSON name =+ Aeson.object+ [ "Type" .= ("Name" :: Text.Text)+ , "Size" .= #size name+ , "Value" .= #content name+ ]
+ library/Octane/Type/Property/QWordProperty.hs view
@@ -0,0 +1,55 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Property.QWordProperty+ ( QWordProperty(..)+ ) where++import Data.Aeson ((.=))+import Data.Function ((&))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Binary as Binary+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified GHC.Generics as Generics+import qualified Octane.Type.Text as Text+import qualified Octane.Type.Word64 as Word64++data QWordProperty = QWordProperty+ { qWordPropertySize :: Word64.Word64+ , qWordPropertyContent :: Word64.Word64+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''QWordProperty)++instance Binary.Binary QWordProperty where+ get = do+ size <- Binary.get+ content <-+ case #unpack size of+ 8 -> Binary.get+ x -> fail ("unknown QWordProperty size " ++ show x)+ pure (QWordProperty size content)+ put qWord = do+ qWord & #size & Binary.put+ qWord & #content & Binary.put++instance DeepSeq.NFData QWordProperty++instance Aeson.ToJSON QWordProperty where+ toJSON qWord =+ Aeson.object+ [ "Type" .= ("QWord" :: Text.Text)+ , "Size" .= #size qWord+ , "Value" .= #content qWord+ ]
+ library/Octane/Type/Property/StrProperty.hs view
@@ -0,0 +1,49 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Property.StrProperty+ ( StrProperty(..)+ ) where++import Data.Aeson ((.=))+import Data.Function ((&))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Binary as Binary+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified GHC.Generics as Generics+import qualified Octane.Type.Text as Text+import qualified Octane.Type.Word64 as Word64++data StrProperty = StrProperty+ { strPropertySize :: Word64.Word64+ , strPropertyContent :: Text.Text+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''StrProperty)++instance Binary.Binary StrProperty where+ get = do+ size <- Binary.get+ content <- Binary.get+ pure (StrProperty size content)+ put str = do+ str & #size & Binary.put+ str & #content & Binary.put++instance DeepSeq.NFData StrProperty++instance Aeson.ToJSON StrProperty where+ toJSON x =+ Aeson.object+ ["Type" .= ("Str" :: Text.Text), "Size" .= #size x, "Value" .= #content x]
library/Octane/Type/RawReplay.hs view
@@ -65,7 +65,14 @@ checkCRC contentCRC content footer <- Binary.getRemainingLazyByteString pure- (RawReplay headerSize headerCRC header contentSize contentCRC content footer)+ (RawReplay+ headerSize+ headerCRC+ header+ contentSize+ contentCRC+ content+ footer) put replay = do Binary.put (#headerSize replay) Binary.put (#headerCRC replay)
library/Octane/Type/RemoteId.hs view
@@ -1,135 +1,23 @@-{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedLabels #-}-{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE StrictData #-}-{-# LANGUAGE TemplateHaskell #-}-{-# LANGUAGE TypeFamilies #-} module Octane.Type.RemoteId ( RemoteId(..)- , SteamId(..)- , PlayStationId(..)- , SplitscreenId(..)- , XboxId(..)+ , module Octane.Type.RemoteId.PlayStationId+ , module Octane.Type.RemoteId.SplitscreenId+ , module Octane.Type.RemoteId.SteamId+ , module Octane.Type.RemoteId.XboxId ) where -import Data.Aeson ((.=))-import Data.Function ((&))+import Octane.Type.RemoteId.PlayStationId+import Octane.Type.RemoteId.SplitscreenId+import Octane.Type.RemoteId.SteamId+import Octane.Type.RemoteId.XboxId import qualified Control.DeepSeq as DeepSeq import qualified Data.Aeson as Aeson-import qualified Data.Binary.Bits as BinaryBit-import qualified Data.Binary.Bits.Get as BinaryBit-import qualified Data.Binary.Bits.Put as BinaryBit-import qualified Data.ByteString.Lazy as LazyBytes-import qualified Data.Default.Class as Default-import qualified Data.OverloadedRecords.TH as OverloadedRecords-import qualified Data.Text as StrictText-import qualified Data.Text.Encoding as Encoding import qualified GHC.Generics as Generics-import qualified Octane.Type.Text as Text-import qualified Octane.Type.Word64 as Word64-import qualified Octane.Utility.Endian as Endian-import qualified Text.Printf as Printf -data PlayStationId = PlayStationId- { playStationIdName :: Text.Text- , playStationIdUnknown :: LazyBytes.ByteString- } deriving (Eq, Generics.Generic, Show)---- | Each part is stored as exactly 16 bits.-instance BinaryBit.BinaryBit PlayStationId where- getBits _ = do- nameBytes <- BinaryBit.getByteString 16- let name =- nameBytes & Endian.reverseBitsInStrictBytes & Encoding.decodeLatin1 &- StrictText.dropWhileEnd (== '\0') &- Text.Text- unknownBytes <- BinaryBit.getByteString 16- let unknown = unknownBytes & Endian.reverseBitsInStrictBytes & LazyBytes.fromStrict- pure (PlayStationId name unknown)- putBits _ playStationId = do- playStationId & #name & #unpack & StrictText.justifyLeft 16 '\x00' &- StrictText.take 16 &- Text.encodeLatin1 &- Endian.reverseBitsInStrictBytes &- BinaryBit.putByteString- playStationId & #unknown & LazyBytes.toStrict & Endian.reverseBitsInStrictBytes &- BinaryBit.putByteString--instance DeepSeq.NFData PlayStationId--instance Aeson.ToJSON PlayStationId where- toJSON playStationId =- Aeson.object- [ "Name" .= #name playStationId- , "Unknown" .=- (playStationId & #unknown & LazyBytes.unpack &- concatMap (Printf.printf "%02x") &- ("0x" ++) &- StrictText.pack)- ]--newtype SplitscreenId = SplitscreenId- { splitscreenIdUnpack :: Maybe Int- } deriving (Eq, Generics.Generic, Show)---- | Stored as a bare byte string.-instance BinaryBit.BinaryBit SplitscreenId where- getBits _ = do- bytes <- BinaryBit.getByteString 3- case bytes of- "\x00\x00\x00" -> do- pure (SplitscreenId (Just 0))- _ -> do- fail ("Unexpected SplitscreenId value " ++ show bytes)- putBits _ _splitscreenId = do- BinaryBit.putByteString "\x00\x00\x00"--instance DeepSeq.NFData SplitscreenId---- | Encoded as an optional number.-instance Aeson.ToJSON SplitscreenId where- toJSON splitscreenId = splitscreenId & #unpack & Aeson.toJSON--newtype SteamId = SteamId- { steamIdUnpack :: Word64.Word64- } deriving (Eq, Generics.Generic, Show)---- | Stored as a plain 'Word64.Word64'.-instance BinaryBit.BinaryBit SteamId where- getBits _ = do- steamId <- BinaryBit.getBits 0- pure (SteamId steamId)- putBits _ steamId = steamId & #unpack & BinaryBit.putBits 0--instance DeepSeq.NFData SteamId---- | Encoded directly as a number.-instance Aeson.ToJSON SteamId where- toJSON steamId = steamId & #unpack & Aeson.toJSON--newtype XboxId = XboxId- { xboxIdUnpack :: Word64.Word64- } deriving (Eq, Generics.Generic, Show)---- | Stored as a plain 'Word64.Word64'.-instance BinaryBit.BinaryBit XboxId where- getBits _ = do- xboxId <- BinaryBit.getBits 0- pure (XboxId xboxId)- putBits _ xboxId = xboxId & #unpack & BinaryBit.putBits 0--instance DeepSeq.NFData XboxId---- | Encoded directly as a number.-instance Aeson.ToJSON XboxId where- toJSON xboxId = xboxId & #unpack & Aeson.toJSON- -- | A player's canonical remote ID. This is the best way to uniquely identify -- players data RemoteId@@ -139,25 +27,12 @@ | RemoteXboxId XboxId deriving (Eq, Generics.Generic, Show) -$(OverloadedRecords.overloadedRecords- Default.def- [''PlayStationId, ''SplitscreenId, ''SteamId, ''XboxId])- instance DeepSeq.NFData RemoteId --- | Encodes the remote ID as an object with "Type" and "Value" keys. instance Aeson.ToJSON RemoteId where toJSON remoteId = case remoteId of- RemotePlayStationId x ->- Aeson.object- ["Type" .= ("PlayStation" :: Text.Text), "Value" .= Aeson.toJSON x]- RemoteSplitscreenId x ->- Aeson.object- ["Type" .= ("Splitscreen" :: Text.Text), "Value" .= Aeson.toJSON x]- RemoteSteamId x ->- Aeson.object- ["Type" .= ("Steam" :: Text.Text), "Value" .= Aeson.toJSON x]- RemoteXboxId x ->- Aeson.object- ["Type" .= ("Xbox" :: Text.Text), "Value" .= Aeson.toJSON x]+ RemotePlayStationId x -> Aeson.toJSON x+ RemoteSplitscreenId x -> Aeson.toJSON x+ RemoteSteamId x -> Aeson.toJSON x+ RemoteXboxId x -> Aeson.toJSON x
+ library/Octane/Type/RemoteId/PlayStationId.hs view
@@ -0,0 +1,78 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.RemoteId.PlayStationId+ ( PlayStationId(..)+ ) where++import Data.Aeson ((.=))+import Data.Function ((&))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Binary.Bits as BinaryBit+import qualified Data.Binary.Bits.Get as BinaryBit+import qualified Data.Binary.Bits.Put as BinaryBit+import qualified Data.ByteString.Lazy as LazyBytes+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified Data.Text.Encoding as Encoding+import qualified GHC.Generics as Generics+import qualified Octane.Type.Text as Text+import qualified Octane.Utility.Endian as Endian+import qualified Text.Printf as Printf++data PlayStationId = PlayStationId+ { playStationIdName :: Text.Text+ , playStationIdUnknown :: LazyBytes.ByteString+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''PlayStationId)++-- | Each part is stored as exactly 16 bits.+instance BinaryBit.BinaryBit PlayStationId where+ getBits _ = do+ nameBytes <- BinaryBit.getByteString 16+ let name =+ nameBytes & Endian.reverseBitsInStrictBytes & Encoding.decodeLatin1 &+ StrictText.dropWhileEnd (== '\0') &+ Text.Text+ unknownBytes <- BinaryBit.getByteString 16+ let unknown =+ unknownBytes & Endian.reverseBitsInStrictBytes & LazyBytes.fromStrict+ pure (PlayStationId name unknown)+ putBits _ playStationId = do+ playStationId & #name & #unpack & StrictText.justifyLeft 16 '\x00' &+ StrictText.take 16 &+ Text.encodeLatin1 &+ Endian.reverseBitsInStrictBytes &+ BinaryBit.putByteString+ playStationId & #unknown & LazyBytes.toStrict &+ Endian.reverseBitsInStrictBytes &+ BinaryBit.putByteString++instance DeepSeq.NFData PlayStationId++instance Aeson.ToJSON PlayStationId where+ toJSON playStationId =+ Aeson.object+ [ "Type" .= ("PlayStation" :: StrictText.Text)+ , "Value" .=+ Aeson.object+ [ "Name" .= #name playStationId+ , "Unknown" .=+ (playStationId & #unknown & LazyBytes.unpack &+ concatMap (Printf.printf "%02x") &+ ("0x" ++) &+ StrictText.pack)+ ]+ ]
+ library/Octane/Type/RemoteId/SplitscreenId.hs view
@@ -0,0 +1,52 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.RemoteId.SplitscreenId+ ( SplitscreenId(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Binary.Bits as BinaryBit+import qualified Data.Binary.Bits.Get as BinaryBit+import qualified Data.Binary.Bits.Put as BinaryBit+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics++newtype SplitscreenId = SplitscreenId+ { splitscreenIdUnpack :: Maybe Int+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''SplitscreenId)++-- | Stored as a bare byte string.+instance BinaryBit.BinaryBit SplitscreenId where+ getBits _ = do+ bytes <- BinaryBit.getByteString 3+ case bytes of+ "\x00\x00\x00" -> do+ pure (SplitscreenId (Just 0))+ _ -> do+ fail ("Unexpected SplitscreenId value " ++ show bytes)+ putBits _ _splitscreenId = do+ BinaryBit.putByteString "\x00\x00\x00"++instance DeepSeq.NFData SplitscreenId++instance Aeson.ToJSON SplitscreenId where+ toJSON splitscreenId =+ Aeson.object+ [ "Type" .= ("Splitscreen" :: StrictText.Text)+ , "Value" .= #unpack splitscreenId+ ]
+ library/Octane/Type/RemoteId/SteamId.hs view
@@ -0,0 +1,45 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.RemoteId.SteamId+ ( SteamId(..)+ ) where++import Data.Aeson ((.=))+import Data.Function ((&))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Binary.Bits as BinaryBit+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Word64 as Word64++newtype SteamId = SteamId+ { steamIdUnpack :: Word64.Word64+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''SteamId)++-- | Stored as a plain 'Word64.Word64'.+instance BinaryBit.BinaryBit SteamId where+ getBits _ = do+ steamId <- BinaryBit.getBits 0+ pure (SteamId steamId)+ putBits _ steamId = steamId & #unpack & BinaryBit.putBits 0++instance DeepSeq.NFData SteamId++instance Aeson.ToJSON SteamId where+ toJSON steamId =+ Aeson.object+ ["Type" .= ("Steam" :: StrictText.Text), "Value" .= #unpack steamId]
+ library/Octane/Type/RemoteId/XboxId.hs view
@@ -0,0 +1,45 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.RemoteId.XboxId+ ( XboxId(..)+ ) where++import Data.Aeson ((.=))+import Data.Function ((&))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Binary.Bits as BinaryBit+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Word64 as Word64++newtype XboxId = XboxId+ { xboxIdUnpack :: Word64.Word64+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''XboxId)++-- | Stored as a plain 'Word64.Word64'.+instance BinaryBit.BinaryBit XboxId where+ getBits _ = do+ xboxId <- BinaryBit.getBits 0+ pure (XboxId xboxId)+ putBits _ xboxId = xboxId & #unpack & BinaryBit.putBits 0++instance DeepSeq.NFData XboxId++instance Aeson.ToJSON XboxId where+ toJSON xboxId =+ Aeson.object+ ["Type" .= ("Xbox" :: StrictText.Text), "Value" .= #unpack xboxId]
library/Octane/Type/Replay.hs view
@@ -24,9 +24,13 @@ import qualified Data.Default.Class as Default import qualified Data.Map.Strict as Map import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Set as Set import qualified Data.Text as StrictText import qualified Data.Version as Version import qualified GHC.Generics as Generics+import qualified Octane.Type.CacheItem as CacheItem+import qualified Octane.Type.CacheProperty as CacheProperty+import qualified Octane.Type.ClassItem as ClassItem import qualified Octane.Type.Dictionary as Dictionary import qualified Octane.Type.Frame as Frame import qualified Octane.Type.KeyFrame as KeyFrame@@ -123,26 +127,28 @@ pure Replay { replayVersion =- [#version1 optimizedReplay, #version2 optimizedReplay] & map Word32.fromWord32 &- Version.makeVersion- , replayMetadata = optimizedReplay & #properties & #unpack & Map.mapKeys #unpack+ [#version1 optimizedReplay, #version2 optimizedReplay] &+ map Word32.fromWord32 &+ Version.makeVersion+ , replayMetadata =+ optimizedReplay & #properties & #unpack & Map.mapKeys #unpack , replayLevels = optimizedReplay & #levels & #unpack & map #unpack , replayMessages =- optimizedReplay & #messages & #unpack &- map- (\message -> do- let key = message & #frame & #unpack & show & StrictText.pack- let value = message & #content & #unpack- (key, value)) &- Map.fromList+ optimizedReplay & #messages & #unpack &+ map+ (\message -> do+ let key = message & #frame & #unpack & show & StrictText.pack+ let value = message & #content & #unpack+ (key, value)) &+ Map.fromList , replayTickMarks =- optimizedReplay & #marks & #unpack &- map- (\mark -> do- let key = mark & #frame & #unpack & show & StrictText.pack- let value = mark & #label & #unpack- (key, value)) &- Map.fromList+ optimizedReplay & #marks & #unpack &+ map+ (\mark -> do+ let key = mark & #frame & #unpack & show & StrictText.pack+ let value = mark & #label & #unpack+ (key, value)) &+ Map.fromList , replayPackages = optimizedReplay & #packages & #unpack & map #unpack , replayFrames = optimizedReplay & #frames }@@ -157,52 +163,102 @@ replay & #version & Version.versionBranch & map Word32.toWord32 -- Key frames aren't important for replays. Mark the first frame as a key -- frame and the rest as regular frames.- let frames_ =+ let frames = replay & #frames & zip [0 :: Int ..] &+ map (\(index, frame) -> frame {Frame.frameIsKeyFrame = index == 0})+ let objectNames = frames & concatMap #replications & map #objectName+ let classNames = frames & concatMap #replications & map #className+ let propertyNames =+ frames & concatMap #replications & map #properties & concatMap Map.keys+ let objects =+ [objectNames, classNames, propertyNames] & concat & Set.fromList &+ Set.toAscList &+ map Text.Text &+ List.List+ let objectsToPosition = objects & #unpack & flip zip [0 ..] & Map.fromList+ classes <-+ frames & concatMap #replications & map #className & Set.fromList &+ Set.toAscList &+ map Text.Text &+ mapM+ (\className ->+ case Map.lookup className objectsToPosition of+ Nothing ->+ fail+ ("class " ++ show className ++ " not found in list of objects")+ Just position -> pure (ClassItem.ClassItem className position)) &+ fmap List.List+ let numClasses = classes & #unpack & length & fromIntegral+ classesToProperties <-+ frames & concatMap #replications &+ concatMap+ (\replication ->+ zip+ (replication & #className & repeat)+ (replication & #properties & Map.keys & map Text.Text)) &+ zip [numClasses ..] &+ mapM+ (\(streamId, (className, propertyName)) -> do+ case Map.lookup propertyName objectsToPosition of+ Nothing ->+ fail+ ("property " +++ show propertyName ++ " not found in list of objects")+ Just propertyId ->+ pure (className, [CacheProperty.CacheProperty propertyId streamId])) &+ fmap (Map.fromListWith (++))+ let cache =+ classes & #unpack & zip [0 ..] & map- (\(index, frame) ->- frame- { Frame.frameIsKeyFrame = index == 0- })+ (\(index, classItem) -> do+ let classId = #streamId classItem+ let parentCacheId = index+ let cacheId = index+ let properties =+ classesToProperties &+ Map.findWithDefault [] (classItem & #name & #unpack) &+ List.List+ CacheItem.CacheItem classId parentCacheId cacheId properties) &+ List.List pure OptimizedReplay.OptimizedReplay { OptimizedReplay.optimizedReplayVersion1 = version1 , OptimizedReplay.optimizedReplayVersion2 = version2 , OptimizedReplay.optimizedReplayLabel = "TAGame.Replay_Soccar_TA" , OptimizedReplay.optimizedReplayProperties =- replay & #metadata & Map.mapKeys Text.Text & Dictionary.Dictionary+ replay & #metadata & Map.mapKeys Text.Text & Dictionary.Dictionary , OptimizedReplay.optimizedReplayLevels =- replay & #levels & map Text.Text & List.List+ replay & #levels & map Text.Text & List.List , OptimizedReplay.optimizedReplayKeyFrames =- frames_ & filter #isKeyFrame &- map- (\frame ->- KeyFrame.KeyFrame- (#time frame)- (frame & #number & Word32.toWord32)- 0) &- List.List- , OptimizedReplay.optimizedReplayFrames = frames_+ frames & filter #isKeyFrame &+ map+ (\frame ->+ KeyFrame.KeyFrame+ (#time frame)+ (frame & #number & Word32.toWord32)+ 0) &+ List.List+ , OptimizedReplay.optimizedReplayFrames = frames , OptimizedReplay.optimizedReplayMessages =- replay & #messages & Map.toList &- map- (\(key, value) -> do- let frame = key & StrictText.unpack & read & Word32.Word32- let content = value & Text.Text- Message.Message frame "" content) &- List.List+ replay & #messages & Map.toList &+ map+ (\(key, value) -> do+ let frame = key & StrictText.unpack & read & Word32.Word32+ let content = value & Text.Text+ Message.Message frame "" content) &+ List.List , OptimizedReplay.optimizedReplayMarks =- replay & #tickMarks & Map.toList &- map- (\(key, value) -> do- let label = value & Text.Text- let frame = key & StrictText.unpack & read & Word32.Word32- Mark.Mark label frame) &- List.List+ replay & #tickMarks & Map.toList &+ map+ (\(key, value) -> do+ let label = value & Text.Text+ let frame = key & StrictText.unpack & read & Word32.Word32+ Mark.Mark label frame) &+ List.List , OptimizedReplay.optimizedReplayPackages =- replay & #packages & map Text.Text & List.List- , OptimizedReplay.optimizedReplayObjects = List.List [] -- TODO+ replay & #packages & map Text.Text & List.List+ , OptimizedReplay.optimizedReplayObjects = objects , OptimizedReplay.optimizedReplayNames = List.List [] -- TODO- , OptimizedReplay.optimizedReplayClasses = List.List [] -- TODO- , OptimizedReplay.optimizedReplayCache = List.List [] -- TODO+ , OptimizedReplay.optimizedReplayClasses = classes+ , OptimizedReplay.optimizedReplayCache = cache }
library/Octane/Type/State.hs view
@@ -2,6 +2,9 @@ module Octane.Type.State ( State(..)+ , isOpening+ , isExisting+ , isClosing ) where import qualified Control.DeepSeq as DeepSeq@@ -9,12 +12,21 @@ -- | The state of an actor in a replication. data State- = SOpening+ = Opening -- ^ This is a new actor that we have not seen before.- | SExisting+ | Existing -- ^ We have seen this actor before.- | SClosing+ | Closing -- ^ This actor is going away. deriving (Eq, Generics.Generic, Show) instance DeepSeq.NFData State++isOpening :: State -> Bool+isOpening state = state == Opening++isExisting :: State -> Bool+isExisting state = state == Existing++isClosing :: State -> Bool+isClosing state = state == Closing
library/Octane/Type/Text.hs view
@@ -49,7 +49,11 @@ -- | Both length-prefixed and null-terminated. The bits in each byte are -- reversed. instance BinaryBit.BinaryBit Text where- getBits _ = getText (BinaryBit.getBits 32) BinaryBit.getByteString Endian.reverseBitsInStrictBytes+ getBits _ =+ getText+ (BinaryBit.getBits 32)+ BinaryBit.getByteString+ Endian.reverseBitsInStrictBytes putBits _ text = putText (BinaryBit.putBits 32)
library/Octane/Type/Value.hs view
@@ -1,248 +1,67 @@-{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedLabels #-}-{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE StrictData #-}-{-# LANGUAGE TemplateHaskell #-}-{-# LANGUAGE TypeFamilies #-} module Octane.Type.Value ( Value(..)- , BooleanValue(..)- , ByteValue(..)- , CamSettingsValue(..)- , DemolishValue(..)- , EnumValue(..)- , ExplosionValue(..)- , FlaggedIntValue(..)- , FloatValue(..)- , GameModeValue(..)- , IntValue(..)- , LoadoutValue(..)- , LoadoutOnlineValue(..)- , LocationValue(..)- , MusicStingerValue(..)- , PickupValue(..)- , PrivateMatchSettingsValue(..)- , QWordValue(..)- , RelativeRotationValue(..)- , ReservationValue(..)- , RigidBodyStateValue(..)- , StringValue(..)- , TeamPaintValue(..)- , UniqueIdValue(..)+ , module Octane.Type.Value.BooleanValue+ , module Octane.Type.Value.ByteValue+ , module Octane.Type.Value.CamSettingsValue+ , module Octane.Type.Value.DemolishValue+ , module Octane.Type.Value.EnumValue+ , module Octane.Type.Value.ExplosionValue+ , module Octane.Type.Value.FlaggedIntValue+ , module Octane.Type.Value.FloatValue+ , module Octane.Type.Value.GameModeValue+ , module Octane.Type.Value.IntValue+ , module Octane.Type.Value.LoadoutOnlineValue+ , module Octane.Type.Value.LoadoutsOnlineValue+ , module Octane.Type.Value.LoadoutsValue+ , module Octane.Type.Value.LoadoutValue+ , module Octane.Type.Value.LocationValue+ , module Octane.Type.Value.MusicStingerValue+ , module Octane.Type.Value.PickupValue+ , module Octane.Type.Value.PrivateMatchSettingsValue+ , module Octane.Type.Value.QWordValue+ , module Octane.Type.Value.RelativeRotationValue+ , module Octane.Type.Value.ReservationValue+ , module Octane.Type.Value.RigidBodyStateValue+ , module Octane.Type.Value.StringValue+ , module Octane.Type.Value.TeamPaintValue+ , module Octane.Type.Value.UniqueIdValue+ , module Octane.Type.Value.WeldedInfoValue ) where -import Data.Aeson ((.=))+import Octane.Type.Value.BooleanValue+import Octane.Type.Value.ByteValue+import Octane.Type.Value.CamSettingsValue+import Octane.Type.Value.DemolishValue+import Octane.Type.Value.EnumValue+import Octane.Type.Value.ExplosionValue+import Octane.Type.Value.FlaggedIntValue+import Octane.Type.Value.FloatValue+import Octane.Type.Value.GameModeValue+import Octane.Type.Value.IntValue+import Octane.Type.Value.LoadoutOnlineValue+import Octane.Type.Value.LoadoutsOnlineValue+import Octane.Type.Value.LoadoutsValue+import Octane.Type.Value.LoadoutValue+import Octane.Type.Value.LocationValue+import Octane.Type.Value.MusicStingerValue+import Octane.Type.Value.PickupValue+import Octane.Type.Value.PrivateMatchSettingsValue+import Octane.Type.Value.QWordValue+import Octane.Type.Value.RelativeRotationValue+import Octane.Type.Value.ReservationValue+import Octane.Type.Value.RigidBodyStateValue+import Octane.Type.Value.StringValue+import Octane.Type.Value.TeamPaintValue+import Octane.Type.Value.UniqueIdValue+import Octane.Type.Value.WeldedInfoValue import qualified Control.DeepSeq as DeepSeq import qualified Data.Aeson as Aeson-import qualified Data.Bimap as Bimap-import qualified Data.Default.Class as Default-import qualified Data.OverloadedRecords.TH as OverloadedRecords-import qualified Data.Text as StrictText import qualified GHC.Generics as Generics-import qualified Octane.Data as Data-import qualified Octane.Type.Boolean as Boolean-import qualified Octane.Type.CompressedWord as CompressedWord-import qualified Octane.Type.Float32 as Float32-import qualified Octane.Type.Int32 as Int32-import qualified Octane.Type.RemoteId as RemoteId-import qualified Octane.Type.Text as Text-import qualified Octane.Type.Vector as Vector-import qualified Octane.Type.Word16 as Word16-import qualified Octane.Type.Word32 as Word32-import qualified Octane.Type.Word64 as Word64-import qualified Octane.Type.Word8 as Word8 -newtype BooleanValue = BooleanValue- { booleanValueUnpack :: Boolean.Boolean- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData BooleanValue--newtype ByteValue = ByteValue- { byteValueUnpack :: Word8.Word8- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData ByteValue--data CamSettingsValue = CamSettingsValue- { camSettingsValueFov :: Float32.Float32- , camSettingsValueHeight :: Float32.Float32- , camSettingsValueAngle :: Float32.Float32- , camSettingsValueDistance :: Float32.Float32- , camSettingsValueStiffness :: Float32.Float32- , camSettingsValueSwivelSpeed :: Float32.Float32- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData CamSettingsValue--data DemolishValue = DemolishValue- { demolishValueAttackerFlag :: Boolean.Boolean- , demolishValueAttackerActorId :: Word32.Word32- , demolishValueVictimFlag :: Boolean.Boolean- , demolishValueVictimActorId :: Word32.Word32- , demolishValueAttackerVelocity :: Vector.Vector Int- , demolishValueVictimVelocity :: Vector.Vector Int- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData DemolishValue--data EnumValue = EnumValue- { enumValueValue :: Word16.Word16- , enumValueFlag :: Boolean.Boolean- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData EnumValue--data ExplosionValue = ExplosionValue- { explosionValueActorless :: Boolean.Boolean- , explosionValueActorId :: Maybe Int32.Int32- , explosionValuePosition :: Vector.Vector Int- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData ExplosionValue--data FlaggedIntValue = FlaggedIntValue- { flaggedIntValueFlag :: Boolean.Boolean- , flaggedIntValueInt :: Int32.Int32- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData FlaggedIntValue--newtype FloatValue = FloatValue- { floatValueUnpack :: Float32.Float32- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData FloatValue--newtype GameModeValue = GameModeValue- { gameModeValueUnpack :: Word8.Word8- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData GameModeValue--newtype IntValue = IntValue- { intValueUnpack :: Int32.Int32- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData IntValue--data LoadoutValue = LoadoutValue- { loadoutValueVersion :: Word8.Word8- , loadoutValueBody :: Word32.Word32- , loadoutValueDecal :: Word32.Word32- , loadoutValueWheels :: Word32.Word32- , loadoutValueRocketTrail :: Word32.Word32- , loadoutValueAntenna :: Word32.Word32- , loadoutValueTopper :: Word32.Word32- , loadoutValueUnknown1 :: Word32.Word32- , loadoutValueUnknown2 :: Maybe Word32.Word32- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData LoadoutValue--newtype LoadoutOnlineValue = LoadoutOnlineValue- { loadoutOnlineValueUnpack :: [[(Word32.Word32, CompressedWord.CompressedWord)]]- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData LoadoutOnlineValue--newtype LocationValue = LocationValue- { locationValueUnpack :: Vector.Vector Int- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData LocationValue--data MusicStingerValue = MusicStingerValue- { musicStingerValueFlag :: Boolean.Boolean- , musicStingerValueCue :: Word32.Word32- , musicStingerValueTrigger :: Word8.Word8- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData MusicStingerValue--data PickupValue = PickupValue- { pickupValueHasInstigator :: Boolean.Boolean- , pickupValueInstigatorId :: Maybe Word32.Word32- , pickupValuePickedUp :: Boolean.Boolean- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData PickupValue--data PrivateMatchSettingsValue = PrivateMatchSettingsValue- { privateMatchSettingsValueMutators :: Text.Text- , privateMatchSettingsValueJoinableBy :: Word32.Word32- , privateMatchSettingsValueMaxPlayers :: Word32.Word32- , privateMatchSettingsValueGameName :: Text.Text- , privateMatchSettingsValuePassword :: Text.Text- , privateMatchSettingsValueFlag :: Boolean.Boolean- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData PrivateMatchSettingsValue--newtype QWordValue = QWordValue- { qWordValueUnpack :: Word64.Word64- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData QWordValue--newtype RelativeRotationValue = RelativeRotationValue- { relativeRotationValueUnpack :: Vector.Vector Float- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData RelativeRotationValue--data ReservationValue = ReservationValue- { reservationValueNumber :: CompressedWord.CompressedWord- , reservationValueSystemId :: Word8.Word8- , reservationValueRemoteId :: RemoteId.RemoteId- , reservationValueLocalId :: Maybe Word8.Word8- , reservationValuePlayerName :: Maybe Text.Text- , reservationValueUnknown1 :: Boolean.Boolean- , reservationValueUnknown2 :: Boolean.Boolean- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData ReservationValue--data RigidBodyStateValue = RigidBodyStateValue- { rigidBodyStateValueSleeping :: Boolean.Boolean- , rigidBodyStateValuePosition :: Vector.Vector Int- , rigidBodyStateValueRotation :: Vector.Vector Float- , rigidBodyStateValueLinearVelocity :: Maybe (Vector.Vector Int)- , rigidBodyStateValueAngularVelocity :: Maybe (Vector.Vector Int)- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData RigidBodyStateValue--newtype StringValue = StringValue- { stringValueUnpack :: Text.Text- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData StringValue--data TeamPaintValue = TeamPaintValue- { teamPaintValueTeam :: Word8.Word8- , teamPaintValuePrimaryColor :: Word8.Word8- , teamPaintValueAccentColor :: Word8.Word8- , teamPaintValuePrimaryFinish :: Word32.Word32- , teamPaintValueAccentFinish :: Word32.Word32- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData TeamPaintValue--data UniqueIdValue = UniqueIdValue- { uniqueIdValueSystemId :: Word8.Word8- , uniqueIdValueRemoteId :: RemoteId.RemoteId- , uniqueIdValueLocalId :: Maybe Word8.Word8- } deriving (Eq, Generics.Generic, Show)--instance DeepSeq.NFData UniqueIdValue- -- | A replicated property's value. data Value = ValueBoolean BooleanValue@@ -257,6 +76,8 @@ | ValueInt IntValue | ValueLoadout LoadoutValue | ValueLoadoutOnline LoadoutOnlineValue+ | ValueLoadouts LoadoutsValue+ | ValueLoadoutsOnline LoadoutsOnlineValue | ValueLocation LocationValue | ValueMusicStinger MusicStingerValue | ValuePickup PickupValue@@ -268,189 +89,37 @@ | ValueString StringValue | ValueTeamPaint TeamPaintValue | ValueUniqueId UniqueIdValue+ | ValueWeldedInfo WeldedInfoValue deriving (Eq, Generics.Generic, Show) -$(OverloadedRecords.overloadedRecords- Default.def- [ ''BooleanValue- , ''ByteValue- , ''CamSettingsValue- , ''DemolishValue- , ''EnumValue- , ''ExplosionValue- , ''FlaggedIntValue- , ''FloatValue- , ''GameModeValue- , ''IntValue- , ''LoadoutValue- , ''LoadoutOnlineValue- , ''LocationValue- , ''MusicStingerValue- , ''PickupValue- , ''PrivateMatchSettingsValue- , ''QWordValue- , ''RelativeRotationValue- , ''ReservationValue- , ''RigidBodyStateValue- , ''StringValue- , ''TeamPaintValue- , ''UniqueIdValue- ])- instance DeepSeq.NFData Value instance Aeson.ToJSON Value where toJSON value =- Aeson.object ["Type" .= typeName value, "Value" .= jsonValue value]--typeName :: Value -> StrictText.Text-typeName value =- case value of- ValueBoolean _ -> "Boolean"- ValueByte _ -> "Byte"- ValueCamSettings _ -> "CameraSettings"- ValueDemolish _ -> "Demolition"- ValueEnum _ -> "Enum"- ValueExplosion _ -> "Explosion"- ValueFlaggedInt _ -> "FlaggedInt"- ValueFloat _ -> "Float"- ValueGameMode _ -> "GameMode"- ValueInt _ -> "Int"- ValueLoadout _ -> "Loadout"- ValueLoadoutOnline _ -> "OnlineLoadout"- ValueLocation _ -> "Position"- ValueMusicStinger _ -> "MusicStinger"- ValuePickup _ -> "Pickup"- ValuePrivateMatchSettings _ -> "PrivateMatchSettings"- ValueQWord _ -> "QWord"- ValueRelativeRotation _ -> "RelativeRotation"- ValueReservation _ -> "Reservation"- ValueRigidBodyState _ -> "RigidBodyState"- ValueString _ -> "String"- ValueTeamPaint _ -> "Paint"- ValueUniqueId _ -> "UniqueId"--jsonValue :: Value -> Aeson.Value-jsonValue value =- case value of- ValueBoolean x -> Aeson.toJSON (#unpack x)- ValueByte x -> Aeson.toJSON (#unpack x)- ValueCamSettings x ->- Aeson.object- [ "FOV" .= #fov x- , "Height" .= #height x- , "Angle" .= #angle x- , "Distance" .= #distance x- , "Stiffness" .= #stiffness x- , "SwivelSpeed" .= #swivelSpeed x- ]- ValueDemolish x ->- Aeson.object- [ "AttackerFlag" .= #attackerFlag x- , "AttackerActorId" .= #attackerActorId x- , "VictimFlag" .= #victimFlag x- , "VictimActorId" .= #victimActorId x- , "AttackerVelocity" .= #attackerVelocity x- , "VictimVelocity" .= #victimVelocity x- ]- ValueEnum x -> Aeson.object ["Value" .= #value x, "Flag" .= #flag x]- ValueExplosion x ->- Aeson.object- [ "Actorless" .= #actorless x- , "ActorId" .= #actorId x- , "Position" .= #position x- ]- ValueFlaggedInt x -> Aeson.object ["Flag" .= #flag x, "Int" .= #int x]- ValueFloat x -> Aeson.toJSON (#unpack x)- ValueGameMode x ->- Aeson.object ["Id" .= #unpack x, "Name" .= getGameMode (#unpack x)]- ValueInt x -> Aeson.toJSON (#unpack x)- ValueLoadout x ->- Aeson.object- [ "Version" .= #version x- , "Body" .=- Aeson.object ["Id" .= #body x, "Name" .= getProduct (#body x)]- , "Decal" .=- Aeson.object ["Id" .= #decal x, "Name" .= getProduct (#decal x)]- , "Wheels" .=- Aeson.object ["Id" .= #wheels x, "Name" .= getProduct (#wheels x)]- , "RocketTrail" .=- Aeson.object- ["Id" .= #rocketTrail x, "Name" .= getProduct (#rocketTrail x)]- , "Antenna" .=- Aeson.object ["Id" .= #antenna x, "Name" .= getProduct (#antenna x)]- , "Topper" .=- Aeson.object ["Id" .= #topper x, "Name" .= getProduct (#topper x)]- , "Unknown1" .= #unknown1 x- , "Unknown2" .= #unknown2 x- ]- ValueLoadoutOnline x -> Aeson.toJSON (#unpack x)- ValueLocation x -> Aeson.toJSON (#unpack x)- ValueMusicStinger x ->- Aeson.object ["Flag" .= #flag x, "Cue" .= #cue x, "Trigger" .= #trigger x]- ValuePickup x ->- Aeson.object- [ "HasInstigator" .= #hasInstigator x- , "InstigatorId" .= #instigatorId x- , "PickedUp" .= #pickedUp x- ]- ValuePrivateMatchSettings x ->- Aeson.object- [ "Mutators" .= #mutators x- , "JoinableBy" .= #joinableBy x- , "MaxPlayers" .= #maxPlayers x- , "Name" .= #gameName x- , "Password" .= #password x- , "Unknown" .= #flag x- ]- ValueQWord x -> Aeson.toJSON (#unpack x)- ValueRelativeRotation x -> Aeson.toJSON (#unpack x)- ValueReservation x ->- Aeson.object- [ "Number" .= #number x- , "SystemId" .= #systemId x- , "RemoteId" .= #remoteId x- , "LocalId" .= #localId x- , "Name" .= #playerName x- , "Unknown1" .= #unknown1 x- , "Unknown2" .= #unknown2 x- ]- ValueRigidBodyState x ->- Aeson.object- [ "Sleeping" .= #sleeping x- , "Position" .= #position x- , "Rotation" .= #rotation x- , "LinearVelocity" .= #linearVelocity x- , "AngularVelocity" .= #angularVelocity x- ]- ValueString x -> Aeson.toJSON (#unpack x)- ValueTeamPaint x ->- Aeson.object- [ "Team" .= #team x- , "PrimaryColor" .= #primaryColor x- , "AccentColor" .= #accentColor x- , "PrimaryFinish" .=- Aeson.object- ["Id" .= #primaryFinish x, "Name" .= getProduct (#primaryFinish x)]- , "AccentFinish" .=- Aeson.object- ["Id" .= #accentFinish x, "Name" .= getProduct (#accentFinish x)]- ]- ValueUniqueId x ->- Aeson.object- [ "System" .=- case #systemId x of- 0 -> "Local"- 1 -> "Steam"- 2 -> "PlayStation"- 4 -> "Xbox"- y -> "Unknown system " ++ show y- , "Remote" .= #remoteId x- , "Local" .= #localId x- ]--getGameMode :: Word8.Word8 -> Maybe StrictText.Text-getGameMode x = Bimap.lookup (Word8.fromWord8 x) Data.gameModes--getProduct :: Word32.Word32 -> Maybe StrictText.Text-getProduct x = Bimap.lookup (Word32.fromWord32 x) Data.products+ case value of+ ValueBoolean x -> Aeson.toJSON x+ ValueByte x -> Aeson.toJSON x+ ValueCamSettings x -> Aeson.toJSON x+ ValueDemolish x -> Aeson.toJSON x+ ValueEnum x -> Aeson.toJSON x+ ValueExplosion x -> Aeson.toJSON x+ ValueFlaggedInt x -> Aeson.toJSON x+ ValueFloat x -> Aeson.toJSON x+ ValueGameMode x -> Aeson.toJSON x+ ValueInt x -> Aeson.toJSON x+ ValueLoadout x -> Aeson.toJSON x+ ValueLoadoutOnline x -> Aeson.toJSON x+ ValueLoadouts x -> Aeson.toJSON x+ ValueLoadoutsOnline x -> Aeson.toJSON x+ ValueLocation x -> Aeson.toJSON x+ ValueMusicStinger x -> Aeson.toJSON x+ ValuePickup x -> Aeson.toJSON x+ ValuePrivateMatchSettings x -> Aeson.toJSON x+ ValueQWord x -> Aeson.toJSON x+ ValueRelativeRotation x -> Aeson.toJSON x+ ValueReservation x -> Aeson.toJSON x+ ValueRigidBodyState x -> Aeson.toJSON x+ ValueString x -> Aeson.toJSON x+ ValueTeamPaint x -> Aeson.toJSON x+ ValueUniqueId x -> Aeson.toJSON x+ ValueWeldedInfo x -> Aeson.toJSON x
+ library/Octane/Type/Value/BooleanValue.hs view
@@ -0,0 +1,36 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.BooleanValue+ ( BooleanValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Boolean as Boolean++newtype BooleanValue = BooleanValue+ { booleanValueUnpack :: Boolean.Boolean+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''BooleanValue)++instance DeepSeq.NFData BooleanValue++instance Aeson.ToJSON BooleanValue where+ toJSON x =+ Aeson.object+ ["Type" .= ("Boolean" :: StrictText.Text), "Value" .= #unpack x]
+ library/Octane/Type/Value/ByteValue.hs view
@@ -0,0 +1,35 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.ByteValue+ ( ByteValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Word8 as Word8++newtype ByteValue = ByteValue+ { byteValueUnpack :: Word8.Word8+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''ByteValue)++instance DeepSeq.NFData ByteValue++instance Aeson.ToJSON ByteValue where+ toJSON x =+ Aeson.object ["Type" .= ("Byte" :: StrictText.Text), "Value" .= #unpack x]
+ library/Octane/Type/Value/CamSettingsValue.hs view
@@ -0,0 +1,52 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.CamSettingsValue+ ( CamSettingsValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Float32 as Float32++data CamSettingsValue = CamSettingsValue+ { camSettingsValueFov :: Float32.Float32+ , camSettingsValueHeight :: Float32.Float32+ , camSettingsValueAngle :: Float32.Float32+ , camSettingsValueDistance :: Float32.Float32+ , camSettingsValueStiffness :: Float32.Float32+ , camSettingsValueSwivelSpeed :: Float32.Float32+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''CamSettingsValue)++instance DeepSeq.NFData CamSettingsValue++instance Aeson.ToJSON CamSettingsValue where+ toJSON x =+ Aeson.object+ [ "Type" .= ("CameraSettings" :: StrictText.Text)+ , "Value" .=+ Aeson.object+ [ "FOV" .= #fov x+ , "Height" .= #height x+ , "Angle" .= #angle x+ , "Distance" .= #distance x+ , "Stiffness" .= #stiffness x+ , "SwivelSpeed" .= #swivelSpeed x+ ]+ ]
+ library/Octane/Type/Value/DemolishValue.hs view
@@ -0,0 +1,54 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.DemolishValue+ ( DemolishValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Boolean as Boolean+import qualified Octane.Type.Vector as Vector+import qualified Octane.Type.Word32 as Word32++data DemolishValue = DemolishValue+ { demolishValueAttackerFlag :: Boolean.Boolean+ , demolishValueAttackerActorId :: Word32.Word32+ , demolishValueVictimFlag :: Boolean.Boolean+ , demolishValueVictimActorId :: Word32.Word32+ , demolishValueAttackerVelocity :: Vector.Vector Int+ , demolishValueVictimVelocity :: Vector.Vector Int+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''DemolishValue)++instance DeepSeq.NFData DemolishValue++instance Aeson.ToJSON DemolishValue where+ toJSON x =+ Aeson.object+ [ "Type" .= ("Demolition" :: StrictText.Text)+ , "Value" .=+ Aeson.object+ [ "AttackerFlag" .= #attackerFlag x+ , "AttackerActorId" .= #attackerActorId x+ , "VictimFlag" .= #victimFlag x+ , "VictimActorId" .= #victimActorId x+ , "AttackerVelocity" .= #attackerVelocity x+ , "VictimVelocity" .= #victimVelocity x+ ]+ ]
+ library/Octane/Type/Value/EnumValue.hs view
@@ -0,0 +1,41 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.EnumValue+ ( EnumValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Boolean as Boolean+import qualified Octane.Type.Word16 as Word16++data EnumValue = EnumValue+ { enumValueValue :: Word16.Word16+ , enumValueFlag :: Boolean.Boolean+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''EnumValue)++instance DeepSeq.NFData EnumValue++instance Aeson.ToJSON EnumValue where+ toJSON x =+ Aeson.object+ [ "Type" .= ("Enum" :: StrictText.Text)+ , "Value" .= Aeson.object ["Value" .= #value x, "Flag" .= #flag x]+ ]
+ library/Octane/Type/Value/ExplosionValue.hs view
@@ -0,0 +1,48 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.ExplosionValue+ ( ExplosionValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Boolean as Boolean+import qualified Octane.Type.Int32 as Int32+import qualified Octane.Type.Vector as Vector++data ExplosionValue = ExplosionValue+ { explosionValueActorless :: Boolean.Boolean+ , explosionValueActorId :: Maybe Int32.Int32+ , explosionValuePosition :: Vector.Vector Int+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''ExplosionValue)++instance DeepSeq.NFData ExplosionValue++instance Aeson.ToJSON ExplosionValue where+ toJSON x =+ Aeson.object+ [ "Type" .= ("Explosion" :: StrictText.Text)+ , "Value" .=+ Aeson.object+ [ "Actorless" .= #actorless x+ , "ActorId" .= #actorId x+ , "Position" .= #position x+ ]+ ]
+ library/Octane/Type/Value/FlaggedIntValue.hs view
@@ -0,0 +1,41 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.FlaggedIntValue+ ( FlaggedIntValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Boolean as Boolean+import qualified Octane.Type.Int32 as Int32++data FlaggedIntValue = FlaggedIntValue+ { flaggedIntValueFlag :: Boolean.Boolean+ , flaggedIntValueInt :: Int32.Int32+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''FlaggedIntValue)++instance DeepSeq.NFData FlaggedIntValue++instance Aeson.ToJSON FlaggedIntValue where+ toJSON x =+ Aeson.object+ [ "Type" .= ("FlaggedInt" :: StrictText.Text)+ , "Value" .= Aeson.object ["Flag" .= #flag x, "Int" .= #int x]+ ]
+ library/Octane/Type/Value/FloatValue.hs view
@@ -0,0 +1,35 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.FloatValue+ ( FloatValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Float32 as Float32++newtype FloatValue = FloatValue+ { floatValueUnpack :: Float32.Float32+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''FloatValue)++instance DeepSeq.NFData FloatValue++instance Aeson.ToJSON FloatValue where+ toJSON x =+ Aeson.object ["Type" .= ("Float" :: StrictText.Text), "Value" .= #unpack x]
+ library/Octane/Type/Value/GameModeValue.hs view
@@ -0,0 +1,44 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.GameModeValue+ ( GameModeValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Bimap as Bimap+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Data as Data+import qualified Octane.Type.Word8 as Word8++getGameMode :: Word8.Word8 -> Maybe StrictText.Text+getGameMode x = Bimap.lookup (Word8.fromWord8 x) Data.gameModes++newtype GameModeValue = GameModeValue+ { gameModeValueUnpack :: Word8.Word8+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''GameModeValue)++instance DeepSeq.NFData GameModeValue++instance Aeson.ToJSON GameModeValue where+ toJSON x =+ Aeson.object+ [ "Type" .= ("GameMode" :: StrictText.Text)+ , "Value" .=+ Aeson.object ["Id" .= #unpack x, "Name" .= getGameMode (#unpack x)]+ ]
+ library/Octane/Type/Value/IntValue.hs view
@@ -0,0 +1,35 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.IntValue+ ( IntValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Int32 as Int32++newtype IntValue = IntValue+ { intValueUnpack :: Int32.Int32+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''IntValue)++instance DeepSeq.NFData IntValue++instance Aeson.ToJSON IntValue where+ toJSON x =+ Aeson.object ["Type" .= ("Int" :: StrictText.Text), "Value" .= #unpack x]
+ library/Octane/Type/Value/LoadoutOnlineValue.hs view
@@ -0,0 +1,37 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.LoadoutOnlineValue+ ( LoadoutOnlineValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.CompressedWord as CompressedWord+import qualified Octane.Type.Word32 as Word32++newtype LoadoutOnlineValue = LoadoutOnlineValue+ { loadoutOnlineValueUnpack :: [[(Word32.Word32, CompressedWord.CompressedWord)]]+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''LoadoutOnlineValue)++instance DeepSeq.NFData LoadoutOnlineValue++instance Aeson.ToJSON LoadoutOnlineValue where+ toJSON x =+ Aeson.object+ ["Type" .= ("OnlineLoadout" :: StrictText.Text), "Value" .= #unpack x]
+ library/Octane/Type/Value/LoadoutValue.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.LoadoutValue+ ( LoadoutValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Bimap as Bimap+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Data as Data+import qualified Octane.Type.Word32 as Word32+import qualified Octane.Type.Word8 as Word8++getProduct :: Word32.Word32 -> Maybe StrictText.Text+getProduct x = Bimap.lookup (Word32.fromWord32 x) Data.products++data LoadoutValue = LoadoutValue+ { loadoutValueVersion :: Word8.Word8+ , loadoutValueBody :: Word32.Word32+ , loadoutValueDecal :: Word32.Word32+ , loadoutValueWheels :: Word32.Word32+ , loadoutValueRocketTrail :: Word32.Word32+ , loadoutValueAntenna :: Word32.Word32+ , loadoutValueTopper :: Word32.Word32+ , loadoutValueUnknown1 :: Word32.Word32+ , loadoutValueUnknown2 :: Maybe Word32.Word32+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''LoadoutValue)++instance DeepSeq.NFData LoadoutValue++instance Aeson.ToJSON LoadoutValue where+ toJSON x =+ Aeson.object+ [ "Type" .= ("Loadout" :: StrictText.Text)+ , "Value" .=+ Aeson.object+ [ "Version" .= #version x+ , "Body" .=+ Aeson.object ["Id" .= #body x, "Name" .= getProduct (#body x)]+ , "Decal" .=+ Aeson.object ["Id" .= #decal x, "Name" .= getProduct (#decal x)]+ , "Wheels" .=+ Aeson.object ["Id" .= #wheels x, "Name" .= getProduct (#wheels x)]+ , "RocketTrail" .=+ Aeson.object+ ["Id" .= #rocketTrail x, "Name" .= getProduct (#rocketTrail x)]+ , "Antenna" .=+ Aeson.object ["Id" .= #antenna x, "Name" .= getProduct (#antenna x)]+ , "Topper" .=+ Aeson.object ["Id" .= #topper x, "Name" .= getProduct (#topper x)]+ , "Unknown1" .= #unknown1 x+ , "Unknown2" .= #unknown2 x+ ]+ ]
+ library/Octane/Type/Value/LoadoutsOnlineValue.hs view
@@ -0,0 +1,50 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.LoadoutsOnlineValue+ ( LoadoutsOnlineValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Boolean as Boolean+import qualified Octane.Type.Value.LoadoutOnlineValue+ as LoadoutOnlineValue++data LoadoutsOnlineValue = LoadoutsOnlineValue+ { loadoutsOnlineValueLoadout1 :: LoadoutOnlineValue.LoadoutOnlineValue+ , loadoutsOnlineValueLoadout2 :: LoadoutOnlineValue.LoadoutOnlineValue+ , loadoutsOnlineValueUnknown1 :: Boolean.Boolean+ , loadoutsOnlineValueUnknown2 :: Boolean.Boolean+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''LoadoutsOnlineValue)++instance DeepSeq.NFData LoadoutsOnlineValue++instance Aeson.ToJSON LoadoutsOnlineValue where+ toJSON x =+ Aeson.object+ [ "Type" .= ("LoadoutsOnline" :: StrictText.Text)+ , "Value" .=+ Aeson.object+ [ "Loadout1" .= #loadout1 x+ , "Loadout2" .= #loadout2 x+ , "Unknown1" .= #unknown1 x+ , "Unknown2" .= #unknown2 x+ ]+ ]
+ library/Octane/Type/Value/LoadoutsValue.hs view
@@ -0,0 +1,41 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.LoadoutsValue+ ( LoadoutsValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Value.LoadoutValue as LoadoutValue++data LoadoutsValue = LoadoutsValue+ { loadoutsValueLoadout1 :: LoadoutValue.LoadoutValue+ , loadoutsValueLoadout2 :: LoadoutValue.LoadoutValue+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''LoadoutsValue)++instance DeepSeq.NFData LoadoutsValue++instance Aeson.ToJSON LoadoutsValue where+ toJSON x =+ Aeson.object+ [ "Type" .= ("Loadouts" :: StrictText.Text)+ , "Value" .=+ Aeson.object ["Loadout1" .= #loadout1 x, "Loadout2" .= #loadout2 x]+ ]
+ library/Octane/Type/Value/LocationValue.hs view
@@ -0,0 +1,36 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.LocationValue+ ( LocationValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Vector as Vector++newtype LocationValue = LocationValue+ { locationValueUnpack :: Vector.Vector Int+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''LocationValue)++instance DeepSeq.NFData LocationValue++instance Aeson.ToJSON LocationValue where+ toJSON x =+ Aeson.object+ ["Type" .= ("Position" :: StrictText.Text), "Value" .= #unpack x]
+ library/Octane/Type/Value/MusicStingerValue.hs view
@@ -0,0 +1,45 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.MusicStingerValue+ ( MusicStingerValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Boolean as Boolean+import qualified Octane.Type.Word32 as Word32+import qualified Octane.Type.Word8 as Word8++data MusicStingerValue = MusicStingerValue+ { musicStingerValueFlag :: Boolean.Boolean+ , musicStingerValueCue :: Word32.Word32+ , musicStingerValueTrigger :: Word8.Word8+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''MusicStingerValue)++instance DeepSeq.NFData MusicStingerValue++instance Aeson.ToJSON MusicStingerValue where+ toJSON x =+ Aeson.object+ [ "Type" .= ("MusicStinger" :: StrictText.Text)+ , "Value" .=+ Aeson.object+ ["Flag" .= #flag x, "Cue" .= #cue x, "Trigger" .= #trigger x]+ ]
+ library/Octane/Type/Value/PickupValue.hs view
@@ -0,0 +1,47 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.PickupValue+ ( PickupValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Boolean as Boolean+import qualified Octane.Type.Word32 as Word32++data PickupValue = PickupValue+ { pickupValueHasInstigator :: Boolean.Boolean+ , pickupValueInstigatorId :: Maybe Word32.Word32+ , pickupValuePickedUp :: Boolean.Boolean+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''PickupValue)++instance DeepSeq.NFData PickupValue++instance Aeson.ToJSON PickupValue where+ toJSON x =+ Aeson.object+ [ "Type" .= ("Pickup" :: StrictText.Text)+ , "Value" .=+ Aeson.object+ [ "HasInstigator" .= #hasInstigator x+ , "InstigatorId" .= #instigatorId x+ , "PickedUp" .= #pickedUp x+ ]+ ]
+ library/Octane/Type/Value/PrivateMatchSettingsValue.hs view
@@ -0,0 +1,54 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.PrivateMatchSettingsValue+ ( PrivateMatchSettingsValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Boolean as Boolean+import qualified Octane.Type.Text as Text+import qualified Octane.Type.Word32 as Word32++data PrivateMatchSettingsValue = PrivateMatchSettingsValue+ { privateMatchSettingsValueMutators :: Text.Text+ , privateMatchSettingsValueJoinableBy :: Word32.Word32+ , privateMatchSettingsValueMaxPlayers :: Word32.Word32+ , privateMatchSettingsValueGameName :: Text.Text+ , privateMatchSettingsValuePassword :: Text.Text+ , privateMatchSettingsValueFlag :: Boolean.Boolean+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''PrivateMatchSettingsValue)++instance DeepSeq.NFData PrivateMatchSettingsValue++instance Aeson.ToJSON PrivateMatchSettingsValue where+ toJSON x =+ Aeson.object+ [ "Type" .= ("PrivateMatchSettings" :: StrictText.Text)+ , "Value" .=+ Aeson.object+ [ "Mutators" .= #mutators x+ , "JoinableBy" .= #joinableBy x+ , "MaxPlayers" .= #maxPlayers x+ , "Name" .= #gameName x+ , "Password" .= #password x+ , "Unknown" .= #flag x+ ]+ ]
+ library/Octane/Type/Value/QWordValue.hs view
@@ -0,0 +1,35 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.QWordValue+ ( QWordValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Word64 as Word64++newtype QWordValue = QWordValue+ { qWordValueUnpack :: Word64.Word64+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''QWordValue)++instance DeepSeq.NFData QWordValue++instance Aeson.ToJSON QWordValue where+ toJSON x =+ Aeson.object ["Type" .= ("QWord" :: StrictText.Text), "Value" .= #unpack x]
+ library/Octane/Type/Value/RelativeRotationValue.hs view
@@ -0,0 +1,36 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.RelativeRotationValue+ ( RelativeRotationValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Vector as Vector++newtype RelativeRotationValue = RelativeRotationValue+ { relativeRotationValueUnpack :: Vector.Vector Float+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''RelativeRotationValue)++instance DeepSeq.NFData RelativeRotationValue++instance Aeson.ToJSON RelativeRotationValue where+ toJSON x =+ Aeson.object+ ["Type" .= ("RelativeRotation" :: StrictText.Text), "Value" .= #unpack x]
+ library/Octane/Type/Value/ReservationValue.hs view
@@ -0,0 +1,58 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.ReservationValue+ ( ReservationValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Boolean as Boolean+import qualified Octane.Type.CompressedWord as CompressedWord+import qualified Octane.Type.RemoteId as RemoteId+import qualified Octane.Type.Text as Text+import qualified Octane.Type.Word8 as Word8++data ReservationValue = ReservationValue+ { reservationValueNumber :: CompressedWord.CompressedWord+ , reservationValueSystemId :: Word8.Word8+ , reservationValueRemoteId :: RemoteId.RemoteId+ , reservationValueLocalId :: Maybe Word8.Word8+ , reservationValuePlayerName :: Maybe Text.Text+ , reservationValueUnknown1 :: Boolean.Boolean+ , reservationValueUnknown2 :: Boolean.Boolean+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''ReservationValue)++instance DeepSeq.NFData ReservationValue++instance Aeson.ToJSON ReservationValue where+ toJSON x =+ Aeson.object+ [ "Type" .= ("Reservation" :: StrictText.Text)+ , "Value" .=+ Aeson.object+ [ "Number" .= #number x+ , "SystemId" .= #systemId x+ , "RemoteId" .= #remoteId x+ , "LocalId" .= #localId x+ , "Name" .= #playerName x+ , "Unknown1" .= #unknown1 x+ , "Unknown2" .= #unknown2 x+ ]+ ]
+ library/Octane/Type/Value/RigidBodyStateValue.hs view
@@ -0,0 +1,51 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.RigidBodyStateValue+ ( RigidBodyStateValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Boolean as Boolean+import qualified Octane.Type.Vector as Vector++data RigidBodyStateValue = RigidBodyStateValue+ { rigidBodyStateValueSleeping :: Boolean.Boolean+ , rigidBodyStateValuePosition :: Vector.Vector Int+ , rigidBodyStateValueRotation :: Vector.Vector Float+ , rigidBodyStateValueLinearVelocity :: Maybe (Vector.Vector Int)+ , rigidBodyStateValueAngularVelocity :: Maybe (Vector.Vector Int)+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''RigidBodyStateValue)++instance DeepSeq.NFData RigidBodyStateValue++instance Aeson.ToJSON RigidBodyStateValue where+ toJSON x =+ Aeson.object+ [ "Type" .= ("RigidBodyState" :: StrictText.Text)+ , "Value" .=+ Aeson.object+ [ "Sleeping" .= #sleeping x+ , "Position" .= #position x+ , "Rotation" .= #rotation x+ , "LinearVelocity" .= #linearVelocity x+ , "AngularVelocity" .= #angularVelocity x+ ]+ ]
+ library/Octane/Type/Value/StringValue.hs view
@@ -0,0 +1,35 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.StringValue+ ( StringValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Text as Text++newtype StringValue = StringValue+ { stringValueUnpack :: Text.Text+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''StringValue)++instance DeepSeq.NFData StringValue++instance Aeson.ToJSON StringValue where+ toJSON x =+ Aeson.object ["Type" .= ("String" :: StrictText.Text), "Value" .= #unpack x]
+ library/Octane/Type/Value/TeamPaintValue.hs view
@@ -0,0 +1,62 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.TeamPaintValue+ ( TeamPaintValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Bimap as Bimap+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Data as Data+import qualified Octane.Type.Word32 as Word32+import qualified Octane.Type.Word8 as Word8++getProduct :: Word32.Word32 -> Maybe StrictText.Text+getProduct x = Bimap.lookup (Word32.fromWord32 x) Data.products++data TeamPaintValue = TeamPaintValue+ { teamPaintValueTeam :: Word8.Word8+ , teamPaintValuePrimaryColor :: Word8.Word8+ , teamPaintValueAccentColor :: Word8.Word8+ , teamPaintValuePrimaryFinish :: Word32.Word32+ , teamPaintValueAccentFinish :: Word32.Word32+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''TeamPaintValue)++instance DeepSeq.NFData TeamPaintValue++instance Aeson.ToJSON TeamPaintValue where+ toJSON x =+ Aeson.object+ [ "Type" .= ("Paint" :: StrictText.Text)+ , "Value" .=+ Aeson.object+ [ "Team" .= #team x+ , "PrimaryColor" .= #primaryColor x+ , "AccentColor" .= #accentColor x+ , "PrimaryFinish" .=+ Aeson.object+ [ "Id" .= #primaryFinish x+ , "Name" .= getProduct (#primaryFinish x)+ ]+ , "AccentFinish" .=+ Aeson.object+ ["Id" .= #accentFinish x, "Name" .= getProduct (#accentFinish x)]+ ]+ ]
+ library/Octane/Type/Value/UniqueIdValue.hs view
@@ -0,0 +1,53 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.UniqueIdValue+ ( UniqueIdValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.RemoteId as RemoteId+import qualified Octane.Type.Word8 as Word8++data UniqueIdValue = UniqueIdValue+ { uniqueIdValueSystemId :: Word8.Word8+ , uniqueIdValueRemoteId :: RemoteId.RemoteId+ , uniqueIdValueLocalId :: Maybe Word8.Word8+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''UniqueIdValue)++instance DeepSeq.NFData UniqueIdValue++instance Aeson.ToJSON UniqueIdValue where+ toJSON x =+ Aeson.object+ [ "Type" .= ("UniqueId" :: StrictText.Text)+ , "Value" .=+ Aeson.object+ [ "System" .=+ case #systemId x of+ 0 -> "Local"+ 1 -> "Steam"+ 2 -> "PlayStation"+ 4 -> "Xbox"+ y -> "Unknown system " ++ show y+ , "Remote" .= #remoteId x+ , "Local" .= #localId x+ ]+ ]
+ library/Octane/Type/Value/WeldedInfoValue.hs view
@@ -0,0 +1,54 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}++module Octane.Type.Value.WeldedInfoValue+ ( WeldedInfoValue(..)+ ) where++import Data.Aeson ((.=))++import qualified Control.DeepSeq as DeepSeq+import qualified Data.Aeson as Aeson+import qualified Data.Default.Class as Default+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified GHC.Generics as Generics+import qualified Octane.Type.Boolean as Boolean+import qualified Octane.Type.Float32 as Float32+import qualified Octane.Type.Int32 as Int32+import qualified Octane.Type.Int8 as Int8+import qualified Octane.Type.Vector as Vector++data WeldedInfoValue = WeldedInfoValue+ { weldedInfoValueActive :: Boolean.Boolean+ , weldedInfoValueActorId :: Int32.Int32+ , weldedInfoValueOffset :: Vector.Vector Int+ , weldedInfoValueMass :: Float32.Float32+ , weldedInfoValueRotation :: Vector.Vector Int8.Int8+ } deriving (Eq, Generics.Generic, Show)++$(OverloadedRecords.overloadedRecord Default.def ''WeldedInfoValue)++instance DeepSeq.NFData WeldedInfoValue++instance Aeson.ToJSON WeldedInfoValue where+ toJSON x =+ Aeson.object+ [ "Type" .= ("WeldedInfo" :: StrictText.Text)+ , "Value" .=+ Aeson.object+ [ "Active" .= #active x+ , "ActorId" .= #actorId x+ , "Offset" .= #offset x+ , "Mass" .= #mass x+ , "Rotation" .= #rotation x+ ]+ ]
library/Octane/Type/Vector.hs view
@@ -14,17 +14,21 @@ , getFloatVector , getInt8Vector , getIntVector+ , putFloatVector , putInt8Vector , putIntVector ) where +import Data.Function ((&))+ import qualified Control.DeepSeq as DeepSeq import qualified Data.Aeson as Aeson-import qualified Data.Bits as Bits import qualified Data.Binary.Bits as BinaryBit import qualified Data.Binary.Bits.Get as BinaryBit import qualified Data.Binary.Bits.Put as BinaryBit+import qualified Data.Bits as Bits import qualified Data.Default.Class as Default+import qualified Data.Foldable as Foldable import qualified Data.OverloadedRecords.TH as OverloadedRecords import qualified GHC.Generics as Generics import qualified Octane.Type.Boolean as Boolean@@ -73,14 +77,12 @@ let serIntMax = Bits.shiftL 1 numBits delta <- fmap CompressedWord.fromCompressedWord (BinaryBit.getBits serIntMax) let unscaledValue = (delta :: Int) - bias- if maxValue > maxBitValue- then do- let invScale = fromIntegral maxValue / fromIntegral maxBitValue- pure (fromIntegral unscaledValue * invScale)- else do- let scale = fromIntegral maxBitValue / fromIntegral maxValue- let invScale = 1.0 / scale- pure (fromIntegral unscaledValue * invScale)+ let invScale =+ if maxValue > maxBitValue+ then fromIntegral maxValue / fromIntegral maxBitValue+ else 1.0 / (fromIntegral maxBitValue / fromIntegral maxValue)+ let value = fromIntegral unscaledValue * invScale+ pure value -- | Gets a 'Vector' full of 'Int8's. getInt8Vector :: BinaryBit.BitGet (Vector Int8.Int8)@@ -114,12 +116,54 @@ dz <- fmap CompressedWord.fromCompressedWord (BinaryBit.getBits maxValue) pure (Vector (dx - bias) (dy - bias) (dz - bias)) +-- | Puts a 'Vector' full of 'Float's.+putFloatVector :: Vector Float -> BinaryBit.BitPut ()+putFloatVector vector = do+ let maxValue = 1+ let numBits = 16+ [#x, #y, #z] & map (\field -> field vector) &+ mapM_ (\value -> putFloat maxValue numBits value)++putFloat :: Int -> Int -> Float -> BinaryBit.BitPut ()+putFloat maxValue numBits value = do+ let serIntMax = Bits.shiftL 1 numBits+ let bias = Bits.shiftL 1 (numBits - 1)+ let maxBitValue = (Bits.shiftL 1 (numBits - 1)) - 1+ let invScale =+ if maxValue > maxBitValue+ then fromIntegral maxValue / fromIntegral maxBitValue+ else 1.0 / (fromIntegral maxBitValue / fromIntegral maxValue)+ if abs value > fromIntegral maxValue * (invScale + 1)+ then fail ("value " ++ show value ++ " > max value " ++ show maxValue)+ else do+ let unscaledValue = value / invScale+ let delta = ceiling (unscaledValue + fromIntegral (bias :: Int))+ BinaryBit.putBits 0 (CompressedWord.CompressedWord serIntMax delta)+ -- | Puts a 'Vector' full of 'Int8's. putInt8Vector :: Vector Int8.Int8 -> BinaryBit.BitPut ()-putInt8Vector _ = do- pure () -- TODO+putInt8Vector vector = do+ Foldable.for_+ [#x, #y, #z]+ (\field -> do+ case field vector of+ 0 -> BinaryBit.putBits 0 (Boolean.Boolean False)+ value -> do+ BinaryBit.putBits 0 (Boolean.Boolean True)+ BinaryBit.putBits 0 value) -- | Puts a 'Vector' full of 'Int's. putIntVector :: Vector Int -> BinaryBit.BitPut ()-putIntVector _ = do- pure () -- TODO+putIntVector vector = do+ let maxNumBits = 19+ let numBits = 18 -- TODO+ BinaryBit.putBits 0 (CompressedWord.CompressedWord maxNumBits numBits)+ let bias = Bits.shiftL 1 (fromIntegral numBits + 1)+ let maxBits = numBits + 2+ let maxValue = 2 ^ maxBits+ let dx = vector & #x & (+ bias) & fromIntegral+ let dy = vector & #y & (+ bias) & fromIntegral+ let dz = vector & #z & (+ bias) & fromIntegral+ BinaryBit.putBits 0 (CompressedWord.CompressedWord maxValue dx)+ BinaryBit.putBits 0 (CompressedWord.CompressedWord maxValue dy)+ BinaryBit.putBits 0 (CompressedWord.CompressedWord maxValue dz)
library/Octane/Type/Word32.hs view
@@ -35,7 +35,7 @@ -- | A 32-bit unsigned integer. newtype Word32 = Word32 { word32Unpack :: Word.Word32- } deriving (Eq, Generics.Generic, Num, Ord)+ } deriving (Enum, Eq, Generics.Generic, Num, Ord) $(OverloadedRecords.overloadedRecord Default.def ''Word32)
library/Octane/Utility/CRC.hs view
@@ -16,7 +16,10 @@ let crc = LazyBytes.foldl update initial bytes Bits.complement crc -crc32Update :: Vector.Vector Word.Word32 -> Word.Word32 -> Word.Word8 -> Word.Word32+crc32Update :: Vector.Vector Word.Word32+ -> Word.Word32+ -> Word.Word8+ -> Word.Word32 crc32Update table crc byte = do let toWord8 = fromIntegral :: (Integral a) =>
library/Octane/Utility/ClassPropertyMap.hs view
@@ -32,23 +32,23 @@ in replay & getClassIds & map (\classId ->- let ownProperties =- case IntMap.lookup classId basicClassPropertyMap of- Nothing -> IntMap.empty- Just x -> x- parentProperties =- case IntMap.lookup classId classMap of- Nothing -> IntMap.empty- Just parentClassIds ->- parentClassIds &- map- (\parentClassId ->- case IntMap.lookup parentClassId basicClassPropertyMap of- Nothing -> IntMap.empty- Just x -> x) &- IntMap.unions- properties = IntMap.union ownProperties parentProperties- in (classId, properties)) &+ let ownProperties =+ case IntMap.lookup classId basicClassPropertyMap of+ Nothing -> IntMap.empty+ Just x -> x+ parentProperties =+ case IntMap.lookup classId classMap of+ Nothing -> IntMap.empty+ Just parentClassIds ->+ parentClassIds &+ map+ (\parentClassId ->+ case IntMap.lookup parentClassId basicClassPropertyMap of+ Nothing -> IntMap.empty+ Just x -> x) &+ IntMap.unions+ properties = IntMap.union ownProperties parentProperties+ in (classId, properties)) & IntMap.fromList -- | The class cache is a list of 3-tuples where the first element is a class@@ -58,9 +58,9 @@ replay & #cache & #unpack & map (\x ->- ( x & #classId & Word32.fromWord32- , x & #cacheId & Word32.fromWord32- , x & #parentCacheId & Word32.fromWord32))+ ( x & #classId & Word32.fromWord32+ , x & #cacheId & Word32.fromWord32+ , x & #parentCacheId & Word32.fromWord32)) -- | The class IDs in a replay. Comes from the class cache. getClassIds :: Replay.ReplayWithoutFrames -> [Int]@@ -86,11 +86,11 @@ replay & getClassCache & reverse & List.tails & Maybe.mapMaybe (\xs ->- case xs of- [] -> Nothing- (classId, _, parentCacheId):ys -> do- parentClassId <- getParentClassId parentCacheId ys- pure (classId, parentClassId)) &+ case xs of+ [] -> Nothing+ (classId, _, parentCacheId):ys -> do+ parentClassId <- getParentClassId parentCacheId ys+ pure (classId, parentClassId)) & IntMap.fromList -- | Given a naive mapping from class ID to its parent class ID, pure all of@@ -99,7 +99,8 @@ getParentClassIds classId basicClassMap = case IntMap.lookup classId basicClassMap of Nothing -> []- Just parentClassId -> parentClassId : getParentClassIds parentClassId basicClassMap+ Just parentClassId ->+ parentClassId : getParentClassIds parentClassId basicClassMap -- | The class map is a mapping from a class ID to all of its parent class IDs. getClassMap :: Replay.ReplayWithoutFrames -> IntMap.IntMap [Int]@@ -124,18 +125,18 @@ in replay & #cache & #unpack & map (\x ->- let classId = x & #classId & Word32.fromWord32- properties =- x & #properties & #unpack &- Maybe.mapMaybe- (\y ->- let streamId = y & #streamId & Word32.fromWord32- propertyId = y & #objectId & Word32.fromWord32- in case IntMap.lookup propertyId propertyMap of- Nothing -> Nothing- Just name -> Just (streamId, name)) &- IntMap.fromList- in (classId, properties)) &+ let classId = x & #classId & Word32.fromWord32+ properties =+ x & #properties & #unpack &+ Maybe.mapMaybe+ (\y ->+ let streamId = y & #streamId & Word32.fromWord32+ propertyId = y & #objectId & Word32.fromWord32+ in case IntMap.lookup propertyId propertyMap of+ Nothing -> Nothing+ Just name -> Just (streamId, name)) &+ IntMap.fromList+ in (classId, properties)) & IntMap.fromList -- | The actor map is a mapping from class names to their IDs.@@ -144,9 +145,9 @@ replay & #classes & #unpack & map (\x ->- let className = x & #name & #unpack- classId = x & #streamId & Word32.fromWord32- in (className, classId)) &+ let className = x & #name & #unpack+ classId = x & #streamId & Word32.fromWord32+ in (className, classId)) & Map.fromList -- | Gets the class ID and name for a given property ID.
library/Octane/Utility/Embed.hs view
@@ -23,7 +23,8 @@ :: (Aeson.FromJSON (Map.Map b a), Ord a, Ord b) => StrictBytes.ByteString -> Bimap.Bimap a b decodeBimap bytes =- bytes & Aeson.decodeStrict & Maybe.fromMaybe Map.empty & Map.toList & Bimap.fromList &+ bytes & Aeson.decodeStrict & Maybe.fromMaybe Map.empty & Map.toList &+ Bimap.fromList & Bimap.twist -- | Decodes some bytes into a map. The bytes are assumed to be a JSON object
library/Octane/Utility/Generator.hs view
@@ -1,4 +1,10 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-} module Octane.Utility.Generator ( generateStream@@ -6,20 +12,43 @@ import Data.Function ((&)) +import qualified Control.Monad as Monad import qualified Data.Binary.Bits as BinaryBit import qualified Data.Binary.Bits.Put as BinaryBit import qualified Data.Binary.Put as Binary+import qualified Data.Default.Class as Default+import qualified Data.Map.Strict as Map+import qualified Data.OverloadedRecords.TH as OverloadedRecords+import qualified Data.Text as StrictText+import qualified Data.Tuple as Tuple import qualified Octane.Type.Boolean as Boolean import qualified Octane.Type.CacheItem as CacheItem import qualified Octane.Type.ClassItem as ClassItem+import qualified Octane.Type.CompressedWord as CompressedWord import qualified Octane.Type.Frame as Frame import qualified Octane.Type.Initialization as Initialization+import qualified Octane.Type.Int32 as Int32 import qualified Octane.Type.List as List+import qualified Octane.Type.RemoteId as RemoteId import qualified Octane.Type.Replication as Replication import qualified Octane.Type.State as State import qualified Octane.Type.Stream as Stream import qualified Octane.Type.Text as Text+import qualified Octane.Type.Value as Value+import qualified Octane.Type.Vector as Vector+import qualified Octane.Type.Word16 as Word16+import qualified Octane.Type.Word32 as Word32+import qualified Octane.Type.Word8 as Word8 +data Context = Context+ { contextObjectMap :: Map.Map StrictText.Text Int32.Int32+ -- ^ { object name => object id }+ , contextClassPropertyMap :: Map.Map StrictText.Text (Map.Map StrictText.Text CompressedWord.CompressedWord)+ -- ^ { class name => { property name => property id } }+ }++$(OverloadedRecords.overloadedRecord Default.def ''Context)+ -- | Generates a network stream. generateStream :: [Frame.Frame]@@ -28,60 +57,359 @@ -> List.List ClassItem.ClassItem -> List.List CacheItem.CacheItem -> Stream.Stream-generateStream frames _objects _names _classes _cache = do- let bitPut = putFrames frames+generateStream frames objects _names _classes cache = do+ let context = makeContext objects cache+ let bitPut = putFrames context frames let bytePut = BinaryBit.runBitPut bitPut let bytes = Binary.runPut bytePut Stream.Stream bytes -putFrames :: [Frame.Frame] -> BinaryBit.BitPut ()-putFrames frames = do+makeContext :: List.List Text.Text -> List.List CacheItem.CacheItem -> Context+makeContext objects cache = do+ let objectMap =+ objects & #unpack & map #unpack & zip [0 ..] & map Tuple.swap &+ Map.fromList+ let classPropertyMap =+ cache & #unpack &+ map+ (\cacheItem -> do+ let className =+ case objectMap & Map.assocs & map Tuple.swap & Map.fromList &+ Map.lookup+ (cacheItem & #classId & Word32.fromWord32 &+ (\x -> x :: Int) &+ Int32.toInt32) of+ Nothing ->+ error ("could not find class id for " ++ show className)+ Just name -> name+ let maxPropertyId =+ cacheItem & #properties & #unpack & map #streamId &+ map Word32.fromWord32 &+ (0 :) &+ maximum+ let properties =+ cacheItem & #properties & #unpack &+ map+ (\cacheProperty -> do+ let propertyName =+ case objectMap & Map.assocs & map Tuple.swap &+ Map.fromList &+ Map.lookup+ (cacheProperty & #objectId &+ Word32.fromWord32 &+ (\x -> x :: Int) &+ Int32.toInt32) of+ Nothing ->+ error+ ("coult not find property name for " +++ show cacheProperty)+ Just name -> name+ let propertyId =+ cacheProperty & #streamId & Word32.fromWord32 &+ CompressedWord.CompressedWord maxPropertyId+ (propertyName, propertyId)) &+ Map.fromList+ (className, properties)) &+ Map.fromList+ Context objectMap classPropertyMap++putFrames :: Context -> [Frame.Frame] -> BinaryBit.BitPut ()+putFrames context frames = do case frames of [] -> pure () frame:rest -> do- putFrame frame- putFrames rest+ putFrame context frame+ putFrames context rest -putFrame :: Frame.Frame -> BinaryBit.BitPut ()-putFrame frame = do+putFrame :: Context -> Frame.Frame -> BinaryBit.BitPut ()+putFrame context frame = do frame & #time & BinaryBit.putBits 32 frame & #delta & BinaryBit.putBits 32- frame & #replications & putReplications+ frame & #replications & putReplications context -putReplications :: [Replication.Replication] -> BinaryBit.BitPut ()-putReplications replications = do+putReplications :: Context -> [Replication.Replication] -> BinaryBit.BitPut ()+putReplications context replications = do case replications of [] -> do False & Boolean.Boolean & BinaryBit.putBits 1 replication:rest -> do True & Boolean.Boolean & BinaryBit.putBits 1- putReplication replication- putReplications rest+ putReplication context replication+ putReplications context rest -putReplication :: Replication.Replication -> BinaryBit.BitPut ()-putReplication replication = do+putReplication :: Context -> Replication.Replication -> BinaryBit.BitPut ()+putReplication context replication = do replication & #actorId & BinaryBit.putBits 0 case #state replication of- State.SOpening -> putNewReplication replication- State.SExisting -> putExistingReplication replication- State.SClosing -> putClosedReplication replication+ State.Opening -> putNewReplication context replication+ State.Existing -> putExistingReplication context replication+ State.Closing -> putClosedReplication -putNewReplication :: Replication.Replication -> BinaryBit.BitPut ()-putNewReplication replication = do+putNewReplication :: Context -> Replication.Replication -> BinaryBit.BitPut ()+putNewReplication context replication = do True & Boolean.Boolean & BinaryBit.putBits 1 -- open True & Boolean.Boolean & BinaryBit.putBits 1 -- new False & Boolean.Boolean & BinaryBit.putBits 1 -- unknown- pure () -- TODO: convert object name into ID and put it+ let objectName = #objectName replication+ case Map.lookup objectName (#objectMap context) of+ Nothing -> fail ("could not find object id for name " ++ show objectName)+ Just objectId -> BinaryBit.putBits 0 objectId case #initialization replication of Nothing -> pure () Just x -> Initialization.putInitialization x -putExistingReplication :: Replication.Replication -> BinaryBit.BitPut ()-putExistingReplication _replication = do+putExistingReplication :: Context+ -> Replication.Replication+ -> BinaryBit.BitPut ()+putExistingReplication context replication = do True & Boolean.Boolean & BinaryBit.putBits 1 -- open False & Boolean.Boolean & BinaryBit.putBits 1 -- existing- pure () -- TODO: put props+ let className = #className replication+ let properties = replication & #properties & Map.toAscList+ mapM_ (putProperty context className) properties -putClosedReplication :: Replication.Replication -> BinaryBit.BitPut ()-putClosedReplication _replication = do+putClosedReplication :: BinaryBit.BitPut ()+putClosedReplication = do False & Boolean.Boolean & BinaryBit.putBits 1 -- closed++putProperty+ :: Context+ -> StrictText.Text+ -> (StrictText.Text, Value.Value)+ -> BinaryBit.BitPut ()+putProperty context className (propertyName, value) = do+ True & Boolean.Boolean & BinaryBit.putBits 1 -- has property+ case Map.lookup className (#classPropertyMap context) of+ Nothing -> fail ("could not find properties for class " ++ show className)+ Just properties ->+ case Map.lookup propertyName properties of+ Nothing ->+ fail+ ("could not find property id for name " +++ show propertyName ++ " in class " ++ show className)+ Just propertyId -> BinaryBit.putBits 0 propertyId+ putValue value++putValue :: Value.Value -> BinaryBit.BitPut ()+putValue value =+ case value of+ Value.ValueBoolean x -> putBooleanValue x+ Value.ValueByte x -> putByteValue x+ Value.ValueCamSettings x -> putCamSettingsValue x+ Value.ValueDemolish x -> putDemolishValue x+ Value.ValueEnum x -> putEnumValue x+ Value.ValueExplosion x -> putExplosionValue x+ Value.ValueFlaggedInt x -> putFlaggedIntValue x+ Value.ValueFloat x -> putFloatValue x+ Value.ValueGameMode x -> putGameModeValue x+ Value.ValueInt x -> putIntValue x+ Value.ValueLoadout x -> putLoadoutValue x+ Value.ValueLoadoutOnline x -> putLoadoutOnlineValue x+ Value.ValueLoadouts x -> putLoadoutsValue x+ Value.ValueLoadoutsOnline x -> putLoadoutsOnlineValue x+ Value.ValueLocation x -> putLocationValue x+ Value.ValueMusicStinger x -> putMusicStingerValue x+ Value.ValuePickup x -> putPickupValue x+ Value.ValuePrivateMatchSettings x -> putPrivateMatchSettingsValue x+ Value.ValueQWord x -> putQWordValue x+ Value.ValueRelativeRotation x -> putRelativeRotationValue x+ Value.ValueReservation x -> putReservationValue x+ Value.ValueRigidBodyState x -> putRigidBodyStateValue x+ Value.ValueString x -> putStringValue x+ Value.ValueTeamPaint x -> putTeamPaintValue x+ Value.ValueUniqueId x -> putUniqueIdValue x+ Value.ValueWeldedInfo x -> putWeldedInfoValue x++putBooleanValue :: Value.BooleanValue -> BinaryBit.BitPut ()+putBooleanValue value = do+ value & #unpack & BinaryBit.putBits 0++putByteValue :: Value.ByteValue -> BinaryBit.BitPut ()+putByteValue value = do+ value & #unpack & BinaryBit.putBits 0++putCamSettingsValue :: Value.CamSettingsValue -> BinaryBit.BitPut ()+putCamSettingsValue value = do+ value & #fov & BinaryBit.putBits 0+ value & #height & BinaryBit.putBits 0+ value & #angle & BinaryBit.putBits 0+ value & #distance & BinaryBit.putBits 0+ value & #stiffness & BinaryBit.putBits 0+ value & #swivelSpeed & BinaryBit.putBits 0++putDemolishValue :: Value.DemolishValue -> BinaryBit.BitPut ()+putDemolishValue value = do+ value & #attackerFlag & BinaryBit.putBits 0+ value & #attackerActorId & BinaryBit.putBits 0+ value & #victimFlag & BinaryBit.putBits 0+ value & #victimActorId & BinaryBit.putBits 0+ value & #attackerVelocity & Vector.putIntVector+ value & #victimVelocity & Vector.putIntVector++putEnumValue :: Value.EnumValue -> BinaryBit.BitPut ()+putEnumValue value = do+ value & #value & Word16.fromWord16 & BinaryBit.putWord16be 10+ value & #flag & BinaryBit.putBits 0++putExplosionValue :: Value.ExplosionValue -> BinaryBit.BitPut ()+putExplosionValue value = do+ value & #actorless & BinaryBit.putBits 0+ value & #actorId & maybePutBits 0+ value & #position & Vector.putIntVector++putFlaggedIntValue :: Value.FlaggedIntValue -> BinaryBit.BitPut ()+putFlaggedIntValue value = do+ value & #flag & BinaryBit.putBits 0+ value & #int & BinaryBit.putBits 0++putFloatValue :: Value.FloatValue -> BinaryBit.BitPut ()+putFloatValue value = do+ value & #unpack & BinaryBit.putBits 0++putGameModeValue :: Value.GameModeValue -> BinaryBit.BitPut ()+putGameModeValue value+ -- The parser only reads 2 bits for older replays. This generator only makes+ -- replays that work with the latest version, so it always writes 8 bits.+ = do+ value & #unpack & BinaryBit.putBits 0++putIntValue :: Value.IntValue -> BinaryBit.BitPut ()+putIntValue value = do+ value & #unpack & BinaryBit.putBits 0++putLoadoutValue :: Value.LoadoutValue -> BinaryBit.BitPut ()+putLoadoutValue value = do+ value & #version & BinaryBit.putBits 0+ value & #body & BinaryBit.putBits 0+ value & #decal & BinaryBit.putBits 0+ value & #wheels & BinaryBit.putBits 0+ value & #rocketTrail & BinaryBit.putBits 0+ value & #antenna & BinaryBit.putBits 0+ value & #topper & BinaryBit.putBits 0+ value & #unknown1 & BinaryBit.putBits 0+ value & #unknown2 & maybePutBits 0++putLoadoutsValue :: Value.LoadoutsValue -> BinaryBit.BitPut ()+putLoadoutsValue value = do+ value & #loadout1 & putLoadoutValue+ value & #loadout2 & putLoadoutValue++putLoadoutOnlineValue :: Value.LoadoutOnlineValue -> BinaryBit.BitPut ()+putLoadoutOnlineValue value = do+ value & #unpack & length & Word8.toWord8 & BinaryBit.putBits 0+ Monad.forM_+ (#unpack value)+ (\tuples -> do+ tuples & length & Word8.toWord8 & BinaryBit.putBits 0+ Monad.forM_+ tuples+ (\(k, v) -> do+ BinaryBit.putBits 0 k+ BinaryBit.putBits 0 v))++putLoadoutsOnlineValue :: Value.LoadoutsOnlineValue -> BinaryBit.BitPut ()+putLoadoutsOnlineValue value = do+ value & #loadout1 & putLoadoutOnlineValue+ value & #loadout2 & putLoadoutOnlineValue+ value & #unknown1 & BinaryBit.putBits 0+ value & #unknown2 & BinaryBit.putBits 0++putLocationValue :: Value.LocationValue -> BinaryBit.BitPut ()+putLocationValue value = do+ value & #unpack & Vector.putIntVector++putMusicStingerValue :: Value.MusicStingerValue -> BinaryBit.BitPut ()+putMusicStingerValue value = do+ value & #flag & BinaryBit.putBits 0+ value & #cue & BinaryBit.putBits 0+ value & #trigger & BinaryBit.putBits 0++putPickupValue :: Value.PickupValue -> BinaryBit.BitPut ()+putPickupValue value = do+ value & #hasInstigator & BinaryBit.putBits 0+ value & #instigatorId & maybePutBits 0+ value & #pickedUp & BinaryBit.putBits 0++putPrivateMatchSettingsValue :: Value.PrivateMatchSettingsValue+ -> BinaryBit.BitPut ()+putPrivateMatchSettingsValue value = do+ value & #mutators & BinaryBit.putBits 0+ value & #joinableBy & BinaryBit.putBits 0+ value & #maxPlayers & BinaryBit.putBits 0+ value & #gameName & BinaryBit.putBits 0+ value & #password & BinaryBit.putBits 0+ value & #flag & BinaryBit.putBits 0++putQWordValue :: Value.QWordValue -> BinaryBit.BitPut ()+putQWordValue value = do+ value & #unpack & BinaryBit.putBits 0++putRelativeRotationValue :: Value.RelativeRotationValue -> BinaryBit.BitPut ()+putRelativeRotationValue value = do+ value & #unpack & Vector.putFloatVector++putReservationValue :: Value.ReservationValue -> BinaryBit.BitPut ()+putReservationValue value = do+ value & #number & BinaryBit.putBits 0+ Value.UniqueIdValue (#systemId value) (#remoteId value) (#localId value) &+ putUniqueIdValue+ value & #playerName & maybePutBits 0+ value & #unknown1 & BinaryBit.putBits 0+ value & #unknown2 & BinaryBit.putBits 0+ -- The parser only reads 6 bits for newer replays. This generator only makes+ -- replays that work with the latest version, so it always writes 6 bits.+ BinaryBit.putWord8 6 0++putRigidBodyStateValue :: Value.RigidBodyStateValue -> BinaryBit.BitPut ()+putRigidBodyStateValue value = do+ value & #sleeping & BinaryBit.putBits 0+ value & #position & Vector.putIntVector+ value & #rotation & Vector.putFloatVector+ case #linearVelocity value of+ Nothing -> pure ()+ Just linearVelocity -> Vector.putIntVector linearVelocity+ case #angularVelocity value of+ Nothing -> pure ()+ Just angularVelocity -> Vector.putIntVector angularVelocity++putStringValue :: Value.StringValue -> BinaryBit.BitPut ()+putStringValue value = do+ value & #unpack & BinaryBit.putBits 0++putTeamPaintValue :: Value.TeamPaintValue -> BinaryBit.BitPut ()+putTeamPaintValue value = do+ value & #team & BinaryBit.putBits 0+ value & #primaryColor & BinaryBit.putBits 0+ value & #accentColor & BinaryBit.putBits 0+ value & #primaryFinish & BinaryBit.putBits 0+ value & #accentFinish & BinaryBit.putBits 0++putUniqueIdValue :: Value.UniqueIdValue -> BinaryBit.BitPut ()+putUniqueIdValue value = do+ value & #systemId & BinaryBit.putBits 0+ value & #remoteId & putRemoteId+ value & #localId & maybePutBits 0++putWeldedInfoValue :: Value.WeldedInfoValue -> BinaryBit.BitPut ()+putWeldedInfoValue value = do+ value & #active & BinaryBit.putBits 0+ value & #actorId & BinaryBit.putBits 0+ value & #offset & Vector.putIntVector+ value & #mass & BinaryBit.putBits 0+ value & #rotation & Vector.putInt8Vector++maybePutBits+ :: (BinaryBit.BinaryBit a)+ => Int -> Maybe a -> BinaryBit.BitPut ()+maybePutBits n mx =+ case mx of+ Nothing -> pure ()+ Just x -> BinaryBit.putBits n x++putRemoteId :: RemoteId.RemoteId -> BinaryBit.BitPut ()+putRemoteId remoteId =+ case remoteId of+ RemoteId.RemoteSplitscreenId x -> BinaryBit.putBits 0 x+ RemoteId.RemoteSteamId x -> BinaryBit.putBits 0 x+ RemoteId.RemotePlayStationId x -> BinaryBit.putBits 0 x+ RemoteId.RemoteXboxId x -> BinaryBit.putBits 0 x
library/Octane/Utility/Optimizer.hs view
@@ -23,9 +23,9 @@ frames & Foldable.foldl' (\(state, fs) f ->- let newState = updateState f state- minimalFrame = getDelta state f- in (newState, minimalFrame : fs))+ let newState = updateState f state+ minimalFrame = getDelta state f+ in (newState, minimalFrame : fs)) (initialState, []) & snd & reverse@@ -40,7 +40,7 @@ updateState frame state1 = let spawned = frame & #replications &- filter (\replication -> replication & #state & (== State.SOpening)) &+ filter (\replication -> replication & #state & State.isOpening) & map #actorId & map CompressedWord.fromCompressedWord state2 =@@ -48,14 +48,14 @@ foldr (IntMap.alter (\maybeValue ->- Just- (case maybeValue of- Nothing -> (True, Map.empty)- Just (_, properties) -> (True, properties))))+ Just+ (case maybeValue of+ Nothing -> (True, Map.empty)+ Just (_, properties) -> (True, properties)))) state1 destroyed = frame & #replications &- filter (\replication -> replication & #state & (== State.SClosing)) &+ filter (\replication -> replication & #state & State.isClosing) & map #actorId & map CompressedWord.fromCompressedWord state3 =@@ -63,26 +63,26 @@ foldr (IntMap.alter (\maybeValue ->- Just- (case maybeValue of- Nothing -> (False, Map.empty)- Just (_, properties) -> (False, properties))))+ Just+ (case maybeValue of+ Nothing -> (False, Map.empty)+ Just (_, properties) -> (False, properties)))) state2 updated = frame & #replications &- filter (\replication -> replication & #state & (== State.SExisting))+ filter (\replication -> replication & #state & State.isExisting) state4 = updated & foldr (\replication ->- IntMap.alter- (\maybeValue ->- Just- (case maybeValue of- Nothing -> (True, #properties replication)- Just (alive, properties) ->- (alive, Map.union (#properties replication) properties)))- (replication & #actorId & CompressedWord.fromCompressedWord))+ IntMap.alter+ (\maybeValue ->+ Just+ (case maybeValue of+ Nothing -> (True, #properties replication)+ Just (alive, properties) ->+ (alive, Map.union (#properties replication) properties)))+ (replication & #actorId & CompressedWord.fromCompressedWord)) state3 in state4 @@ -92,37 +92,35 @@ frame & #replications & reject (\replication ->- let isOpening = #state replication == State.SOpening- actorId = #actorId replication- currentState =- IntMap.lookup (CompressedWord.fromCompressedWord actorId) state- isAlive = fmap fst currentState- wasAlreadyAlive = isAlive == Just True- in isOpening && wasAlreadyAlive) &+ let isOpening = replication & #state & State.isOpening+ actorId = #actorId replication+ currentState =+ IntMap.lookup+ (CompressedWord.fromCompressedWord actorId)+ state+ isAlive = fmap fst currentState+ wasAlreadyAlive = isAlive == Just True+ in isOpening && wasAlreadyAlive) & map (\replication ->- if #state replication == State.SExisting- then let actorId = #actorId replication- currentState =- IntMap.findWithDefault- (True, Map.empty)- (CompressedWord.fromCompressedWord actorId)- state- currentProperties = snd currentState- newProperties = #properties replication- changes =- newProperties &- Map.filterWithKey- (\name newValue ->- let oldValue = Map.lookup name currentProperties- in Just newValue /= oldValue)- in replication- { Replication.replicationProperties = changes- }- else replication)- in frame- { Frame.frameReplications = newReplications- }+ if replication & #state & State.isExisting+ then let actorId = #actorId replication+ currentState =+ IntMap.findWithDefault+ (True, Map.empty)+ (CompressedWord.fromCompressedWord actorId)+ state+ currentProperties = snd currentState+ newProperties = #properties replication+ changes =+ newProperties &+ Map.filterWithKey+ (\name newValue ->+ let oldValue = Map.lookup name currentProperties+ in Just newValue /= oldValue)+ in replication {Replication.replicationProperties = changes}+ else replication)+ in frame {Frame.frameReplications = newReplications} reject :: (a -> Bool) -> [a] -> [a] reject p xs = filter (\x -> not (p x)) xs
library/Octane/Utility/Parser.hs view
@@ -5,6 +5,7 @@ {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-}@@ -27,6 +28,7 @@ import qualified Data.Set as Set import qualified Data.Text as StrictText import qualified Data.Version as Version+import qualified Debug.Trace as Trace import qualified GHC.Generics as Generics import qualified Octane.Data as Data import qualified Octane.Type.Boolean as Boolean@@ -48,8 +50,19 @@ import qualified Octane.Type.Word64 as Word64 import qualified Octane.Type.Word8 as Word8 import qualified Octane.Utility.ClassPropertyMap as CPM+import qualified System.Environment as Environment+import qualified System.IO.Unsafe as Unsafe import qualified Text.Printf as Printf +debug :: Bool+debug =+ Unsafe.unsafePerformIO (Environment.lookupEnv "OCTANE_DEBUG") == Just "1"++trace+ :: (Applicative m)+ => String -> m ()+trace message = Monad.when debug (Trace.traceM message)+ -- Data types -- { class stream id => { property stream id => name } } type ClassPropertyMap = IntMap.IntMap (IntMap.IntMap StrictText.Text)@@ -104,21 +117,25 @@ -- | Parses the network stream and returns a list of frames. parseStream :: Replay.ReplayWithoutFrames -> [Frame.Frame]-parseStream replay =+parseStream replay = do+ let get = replay & getStream & BinaryBit.runBitGet+ let stream = replay & #stream & #unpack+ Binary.runGet get stream++getStream :: Replay.ReplayWithoutFrames -> BinaryBit.BitGet [Frame.Frame]+getStream replay = do let numFrames =- replay & #properties & #unpack &- Map.lookup ("NumFrames" & StrictText.pack & Text.Text) &+ replay & #properties & #unpack & Map.lookup "NumFrames" & (\property ->- case property of- Just (Property.PropertyInt int) -> int & #content & Int32.fromInt32- _ -> 0)- get = replay & extractContext & getFrames 0 numFrames & BinaryBit.runBitGet- stream = replay & #stream & #unpack- (_context, frames) = Binary.runGet get stream- in frames+ case property of+ Just (Property.PropertyInt int) -> int & #content & Int32.fromInt32+ _ -> 0)+ trace (Printf.printf "Getting %d frame(s)" numFrames)+ replay & extractContext & getFrames 0 numFrames & fmap snd getFrames :: Word -> Int -> Context -> BinaryBit.BitGet (Context, [Frame.Frame]) getFrames number numFrames context = do+ trace (Printf.printf "Getting frame %d of %d" number numFrames) if fromIntegral number >= numFrames then pure (context, []) else do@@ -130,7 +147,8 @@ case maybeFrame of Nothing -> pure (context, []) Just (newContext, frame) -> do- (newerContext, frames) <- getFrames (number + 1) numFrames newContext+ (newerContext, frames) <-+ getFrames (number + 1) numFrames newContext pure (newerContext, (frame : frames)) getMaybeFrame :: Context@@ -139,6 +157,12 @@ getMaybeFrame context number = do time <- getFloat32 delta <- getFloat32+ trace+ (Printf.printf+ "Getting frame %d at time %.2f with delta %.2f"+ number+ (#unpack time)+ (#unpack delta)) if time == 0 && delta == 0 then pure Nothing else if time < 0.001 || delta < 0.001@@ -156,6 +180,7 @@ -> Float32.Float32 -> BinaryBit.BitGet (Context, Frame.Frame) getFrame context number time delta = do+ trace (Printf.printf "Getting replications for frame %d" number) (newContext, replications) <- getReplications context let frame = Frame.Frame@@ -189,6 +214,7 @@ getReplication :: Context -> BinaryBit.BitGet (Context, Replication.Replication) getReplication context = do actorId <- BinaryBit.getBits maxActorId+ trace (Printf.printf "Getting replication for actor %d" (#value actorId)) isOpen <- getBool let go = if #unpack isOpen@@ -229,22 +255,26 @@ Data.classes (#classMap context) (Int32.fromInt32 objectId)+ trace+ (Printf.printf+ "Got new replication for object %d %s class %d %s"+ (#unpack objectId)+ (show objectName)+ classId+ (show className)) classInit <- Initialization.getInitialization className let thing = Thing unknownFlag objectId objectName classId className classInit let things = #things context let newThings = IntMap.insert (CompressedWord.fromCompressedWord actorId) thing things- let newContext =- context- { contextThings = newThings- }+ let newContext = context {contextThings = newThings} pure ( newContext , Replication.Replication actorId objectName className- State.SOpening+ State.Opening (Just classInit) Map.empty) @@ -259,6 +289,13 @@ Nothing -> fail ("could not find thing for existing actor " ++ show actorId) Just x -> pure x+ trace+ (Printf.printf+ "Getting existing replication properties for object %d %s class %d %s"+ (thing & #objectId & #unpack)+ (thing & #objectName & show)+ (thing & #classId)+ (thing & #className & show)) props <- getProps context thing pure ( context@@ -266,7 +303,7 @@ actorId (#objectName thing) (#className thing)- State.SExisting+ State.Existing Nothing props) @@ -280,20 +317,24 @@ IntMap.lookup (CompressedWord.fromCompressedWord actorId) of Nothing -> fail ("could not find thing for closed actor " ++ show actorId) Just x -> pure x+ trace+ (Printf.printf+ "Got closed replication for object %d %s class %d %s"+ (thing & #objectId & #unpack)+ (thing & #objectName & show)+ (thing & #classId)+ (thing & #className & show)) let newThings = context & #things & IntMap.delete (CompressedWord.fromCompressedWord actorId)- let newContext =- context- { contextThings = newThings- }+ let newContext = context {contextThings = newThings} pure ( newContext , Replication.Replication actorId (#objectName thing) (#className thing)- State.SClosing+ State.Closing Nothing Map.empty) @@ -335,7 +376,9 @@ Nothing -> fail ("could not find property name for property id " ++ show pid) Just x -> pure x+ trace (Printf.printf "Getting property %s" (show name)) value <- getPropValue context name+ trace (Printf.printf "Got property %s" (show value)) pure (name, value) getPropValue :: Context -> StrictText.Text -> BinaryBit.BitGet Value.Value@@ -355,6 +398,8 @@ "int" -> getIntProperty "loadout_online" -> getLoadoutOnlineProperty "loadout" -> getLoadoutProperty+ "loadouts_online" -> getLoadoutsOnlineProperty+ "loadouts" -> getLoadoutsProperty "location" -> getLocationProperty "music_stinger" -> getMusicStingerProperty "party_leader" -> getPartyLeaderProperty@@ -367,6 +412,7 @@ "string" -> getStringProperty "team_paint" -> getTeamPaintProperty "unique_id" -> getUniqueIdProperty+ "welded_info" -> getWeldedInfoProperty _ -> fail ("Don't know how to read property type " ++@@ -472,6 +518,16 @@ pure (x, y))) pure (Value.ValueLoadoutOnline (Value.LoadoutOnlineValue values)) +getLoadoutsOnlineProperty :: BinaryBit.BitGet Value.Value+getLoadoutsOnlineProperty = do+ Value.ValueLoadoutOnline loadout1 <- getLoadoutOnlineProperty+ Value.ValueLoadoutOnline loadout2 <- getLoadoutOnlineProperty+ unknown1 <- BinaryBit.getBits 0+ unknown2 <- BinaryBit.getBits 0+ pure+ (Value.ValueLoadoutsOnline+ (Value.LoadoutsOnlineValue loadout1 loadout2 unknown1 unknown2))+ getLoadoutProperty :: BinaryBit.BitGet Value.Value getLoadoutProperty = do version <- getWord8@@ -499,6 +555,12 @@ g h)) +getLoadoutsProperty :: BinaryBit.BitGet Value.Value+getLoadoutsProperty = do+ Value.ValueLoadout loadout1 <- getLoadoutProperty+ Value.ValueLoadout loadout2 <- getLoadoutProperty+ pure (Value.ValueLoadouts (Value.LoadoutsValue loadout1 loadout2))+ getLocationProperty :: BinaryBit.BitGet Value.Value getLocationProperty = do vector <- Vector.getIntVector@@ -610,7 +672,12 @@ accentFinish <- getWord32 pure (Value.ValueTeamPaint- (Value.TeamPaintValue team primaryColor accentColor primaryFinish accentFinish))+ (Value.TeamPaintValue+ team+ primaryColor+ accentColor+ primaryFinish+ accentFinish)) getUniqueIdProperty :: BinaryBit.BitGet Value.Value getUniqueIdProperty = do@@ -625,12 +692,24 @@ (remoteId, localId) <- if systemId == 0 then pure- (RemoteId.RemoteSplitscreenId (RemoteId.SplitscreenId Nothing), Nothing)+ ( RemoteId.RemoteSplitscreenId (RemoteId.SplitscreenId Nothing)+ , Nothing) else do remoteId <- getRemoteId systemId localId <- fmap Just getWord8 pure (remoteId, localId) pure (Value.ValueUniqueId (Value.UniqueIdValue systemId remoteId localId))++getWeldedInfoProperty :: BinaryBit.BitGet Value.Value+getWeldedInfoProperty = do+ active <- getBool+ actorId <- getInt32+ offset <- Vector.getIntVector+ mass <- getFloat32+ rotation <- Vector.getInt8Vector+ pure+ (Value.ValueWeldedInfo+ (Value.WeldedInfoValue active actorId offset mass rotation)) getUniqueId :: BinaryBit.BitGet (Word8.Word8, RemoteId.RemoteId, Maybe Word8.Word8) getUniqueId = do
octane.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack name: octane-version: 0.15.0+version: 0.16.0 synopsis: Parse Rocket League replays. description: Octane parses Rocket League replays. category: Game@@ -73,8 +73,20 @@ Octane.Type.Message Octane.Type.OptimizedReplay Octane.Type.Property+ Octane.Type.Property.ArrayProperty+ Octane.Type.Property.BoolProperty+ Octane.Type.Property.ByteProperty+ Octane.Type.Property.FloatProperty+ Octane.Type.Property.IntProperty+ Octane.Type.Property.NameProperty+ Octane.Type.Property.QWordProperty+ Octane.Type.Property.StrProperty Octane.Type.RawReplay Octane.Type.RemoteId+ Octane.Type.RemoteId.PlayStationId+ Octane.Type.RemoteId.SplitscreenId+ Octane.Type.RemoteId.SteamId+ Octane.Type.RemoteId.XboxId Octane.Type.Replay Octane.Type.ReplayWithFrames Octane.Type.ReplayWithoutFrames@@ -83,6 +95,32 @@ Octane.Type.Stream Octane.Type.Text Octane.Type.Value+ Octane.Type.Value.BooleanValue+ Octane.Type.Value.ByteValue+ Octane.Type.Value.CamSettingsValue+ Octane.Type.Value.DemolishValue+ Octane.Type.Value.EnumValue+ Octane.Type.Value.ExplosionValue+ Octane.Type.Value.FlaggedIntValue+ Octane.Type.Value.FloatValue+ Octane.Type.Value.GameModeValue+ Octane.Type.Value.IntValue+ Octane.Type.Value.LoadoutOnlineValue+ Octane.Type.Value.LoadoutsOnlineValue+ Octane.Type.Value.LoadoutsValue+ Octane.Type.Value.LoadoutValue+ Octane.Type.Value.LocationValue+ Octane.Type.Value.MusicStingerValue+ Octane.Type.Value.PickupValue+ Octane.Type.Value.PrivateMatchSettingsValue+ Octane.Type.Value.QWordValue+ Octane.Type.Value.RelativeRotationValue+ Octane.Type.Value.ReservationValue+ Octane.Type.Value.RigidBodyStateValue+ Octane.Type.Value.StringValue+ Octane.Type.Value.TeamPaintValue+ Octane.Type.Value.UniqueIdValue+ Octane.Type.Value.WeldedInfoValue Octane.Type.Vector Octane.Type.Word16 Octane.Type.Word32@@ -124,9 +162,15 @@ ghc-options: -Wall -rtsopts -threaded -with-rtsopts=-N build-depends: base+ , binary+ , binary-bits+ , bytestring+ , containers , octane , tasty ==0.11.* , tasty-hspec ==1.1.*+ , tasty-quickcheck ==0.8.*+ , text other-modules: OctaneSpec default-language: Haskell2010
package.yaml view
@@ -65,13 +65,19 @@ octane-test-suite: dependencies: - base+ - binary+ - binary-bits+ - bytestring+ - containers - octane - tasty ==0.11.* - tasty-hspec ==1.1.*+ - tasty-quickcheck ==0.8.*+ - text ghc-options: - -rtsopts - -threaded - -with-rtsopts=-N main: Main.hs source-dirs: test-suite-version: '0.15.0'+version: '0.16.0'
stack.yaml view
@@ -1,1 +1,7 @@+packages:+- .+- extra-dep: true+ location:+ commit: 6c87162af7366105e045f35bf34624db5292dbdb+ git: https://github.com/bitemyapp/hspec-expectations.git resolver: nightly-2016-08-18
test-suite/OctaneSpec.hs view
@@ -1,8 +1,601 @@+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+ module OctaneSpec ( spec ) where +import qualified Data.Binary as Binary+import qualified Data.Binary.Bits as BinaryBit+import qualified Data.Binary.Bits.Get as BinaryBit+import qualified Data.Binary.Bits.Put as BinaryBit+import qualified Data.Binary.Get as Binary+import qualified Data.Binary.Put as Binary+import qualified Data.ByteString.Lazy as LazyBytes+import qualified Data.Foldable as Foldable+import Data.Function ((&))+import qualified Data.Functor.Identity as Identity+import qualified Data.Map.Strict as Map+import qualified Data.Proxy as Proxy+import qualified Data.Text as StrictText+import qualified Data.Typeable as Typeable+import qualified Data.Version as Version+import qualified Octane import qualified Test.Tasty.Hspec as Hspec+import qualified Test.Tasty.QuickCheck as QuickCheck spec :: Hspec.Spec-spec = Hspec.describe "Octane" (do pure ())+spec =+ Hspec.parallel $+ Hspec.describe "Octane" $ do+ Hspec.describe "binary" $ do+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Boolean)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.CacheItem)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.CacheProperty)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.ClassItem)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy (Octane.Dictionary ()))+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Float32)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Int8)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Int32)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.KeyFrame)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy (Octane.List ()))+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Mark)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Message)+ pure () -- TODO: binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.OptimizedReplay)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Property)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy (Octane.ArrayProperty ()))+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.BoolProperty)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.ByteProperty)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.FloatProperty)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.IntProperty)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.NameProperty)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.QWordProperty)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.StrProperty)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.RawReplay)+ pure () -- TODO: binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Replay)+ pure () -- TODO: binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.ReplayWithFrames)+ pure () -- TODO: binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.ReplayWithoutFrames)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Stream)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Text)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Word8)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Word16)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Word32)+ binaryRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Word64)+ Hspec.describe "binary bit" $ do+ binaryBitRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Boolean)+ binaryBitRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Float32)+ binaryBitRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Int8)+ binaryBitRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Int32)+ pure () -- TODO: binaryBitRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.PlayStationId)+ pure () -- TODO: binaryBitRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.SplitscreenId)+ binaryBitRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.SteamId)+ binaryBitRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.XboxId)+ binaryBitRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Text)+ binaryBitRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Word8)+ binaryBitRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Word32)+ binaryBitRoundTrip (Proxy.Proxy :: Proxy.Proxy Octane.Word64)+ Hspec.describe "custom binary bit" $ do+ customBinaryBitRoundTrip+ (Proxy.Proxy :: Proxy.Proxy Octane.CompressedWord)+ (\x -> BinaryBit.putBits undefined x)+ (\x -> BinaryBit.getBits (x & #limit & fromIntegral))+ Hspec.it "can round trip Vector Float" $+ QuickCheck.property $ \input -> do+ let put =+ input & floatVectorUnpack & Octane.putFloatVector &+ BinaryBit.runBitPut+ let get =+ Octane.getFloatVector & BinaryBit.runBitGet & fmap FloatVector+ let output = put & Binary.runPut & Binary.runGet get+ let epsilon = 0.0001+ [#x, #y, #z] &+ map+ (\field -> do+ let expected = input & floatVectorUnpack & field+ let actual = output & floatVectorUnpack & field+ let delta = actual - expected+ Hspec.shouldSatisfy (abs delta) (< epsilon)) &+ Foldable.sequence_+ customBinaryBitRoundTrip+ (Proxy.Proxy :: Proxy.Proxy (Octane.Vector Int))+ (\x -> Octane.putIntVector x)+ (\_ -> Octane.getIntVector)+ customBinaryBitRoundTrip+ (Proxy.Proxy :: Proxy.Proxy (Octane.Vector Octane.Int8))+ (\x -> Octane.putInt8Vector x)+ (\_ -> Octane.getInt8Vector)+ Hspec.describe "Replay" $ do+ let proxy = Proxy.Proxy :: Proxy.Proxy Octane.Replay+ let rid = Identity.runIdentity+ roundTrip+ proxy+ (\x ->+ x & Octane.toOptimizedReplay & rid & Octane.fromOptimizedReplay & rid)+ roundTrip+ proxy+ (\x ->+ x & Octane.toOptimizedReplay & rid & Octane.toReplayWithFrames & rid &+ Octane.fromReplayWithFrames &+ rid &+ Octane.fromOptimizedReplay &+ rid)++binaryRoundTrip+ :: forall a.+ ( QuickCheck.Arbitrary a+ , Binary.Binary a+ , Eq a+ , Show a+ , Typeable.Typeable a+ )+ => Proxy.Proxy a -> Hspec.SpecWith ()+binaryRoundTrip proxy =+ roundTrip proxy (\x -> x & Binary.encode & Binary.decode)++binaryBitRoundTrip+ :: forall a.+ ( QuickCheck.Arbitrary a+ , BinaryBit.BinaryBit a+ , Eq a+ , Show a+ , Typeable.Typeable a+ )+ => Proxy.Proxy a -> Hspec.SpecWith ()+binaryBitRoundTrip proxy =+ customBinaryBitRoundTrip+ proxy+ (\x -> BinaryBit.putBits undefined x)+ (\_ -> BinaryBit.getBits undefined)++customBinaryBitRoundTrip+ :: forall a.+ (QuickCheck.Arbitrary a, Eq a, Show a, Typeable.Typeable a)+ => Proxy.Proxy a+ -> (a -> BinaryBit.BitPut ())+ -> (a -> BinaryBit.BitGet a)+ -> Hspec.SpecWith ()+customBinaryBitRoundTrip proxy bitPut bitGet =+ roundTrip+ proxy+ (\x -> do+ let put = x & bitPut & BinaryBit.runBitPut+ let get = x & bitGet & BinaryBit.runBitGet+ put & Binary.runPut & Binary.runGet get)++roundTrip+ :: forall a.+ (QuickCheck.Arbitrary a, Eq a, Show a, Typeable.Typeable a)+ => Proxy.Proxy a -> (a -> a) -> Hspec.SpecWith ()+roundTrip proxy f =+ Hspec.it+ ("can round trip " ++ typeName proxy)+ (QuickCheck.property (\x -> Hspec.shouldBe (f x) (x :: a)))++typeName+ :: forall a.+ (Typeable.Typeable a)+ => Proxy.Proxy a -> String+typeName _ = (undefined :: a) & Typeable.typeOf & show++instance QuickCheck.Arbitrary Octane.Boolean where+ arbitrary = Octane.Boolean <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.CacheItem where+ arbitrary =+ Octane.CacheItem <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.CacheProperty where+ arbitrary =+ Octane.CacheProperty <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.ClassItem where+ arbitrary = Octane.ClassItem <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.CompressedWord where+ arbitrary = do+ limit <- QuickCheck.choose (1, maxBound)+ value <- QuickCheck.choose (0, limit)+ pure (Octane.CompressedWord limit value)++instance (QuickCheck.Arbitrary a) =>+ QuickCheck.Arbitrary (Octane.Dictionary a) where+ arbitrary =+ Octane.Dictionary <$> QuickCheck.scale (min 2) QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.Float32 where+ arbitrary = Octane.Float32 <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.Frame where+ arbitrary =+ Octane.Frame <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.Initialization where+ arbitrary =+ Octane.Initialization <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.Int8 where+ arbitrary = Octane.Int8 <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.Int32 where+ arbitrary = Octane.Int32 <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.KeyFrame where+ arbitrary =+ Octane.KeyFrame <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance (QuickCheck.Arbitrary a) =>+ QuickCheck.Arbitrary (Octane.List a) where+ arbitrary = Octane.List <$> QuickCheck.scale (min 2) QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.Mark where+ arbitrary = Octane.Mark <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.Message where+ arbitrary =+ Octane.Message <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.OptimizedReplay where+ arbitrary =+ Octane.OptimizedReplay <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.Property where+ arbitrary =+ QuickCheck.oneof+ [ Octane.PropertyArray <$> QuickCheck.arbitrary+ , Octane.PropertyBool <$> QuickCheck.arbitrary+ , Octane.PropertyByte <$> QuickCheck.arbitrary+ , Octane.PropertyFloat <$> QuickCheck.arbitrary+ , Octane.PropertyInt <$> QuickCheck.arbitrary+ , Octane.PropertyName <$> QuickCheck.arbitrary+ , Octane.PropertyQWord <$> QuickCheck.arbitrary+ , Octane.PropertyStr <$> QuickCheck.arbitrary+ ]++instance (QuickCheck.Arbitrary a) =>+ QuickCheck.Arbitrary (Octane.ArrayProperty a) where+ arbitrary =+ Octane.ArrayProperty <$> QuickCheck.arbitrary <*>+ QuickCheck.scale (min 2) QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.BoolProperty where+ arbitrary =+ Octane.BoolProperty <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.ByteProperty where+ arbitrary =+ Octane.ByteProperty <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.FloatProperty where+ arbitrary = Octane.FloatProperty <$> pure 4 <*> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.IntProperty where+ arbitrary = Octane.IntProperty <$> pure 4 <*> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.NameProperty where+ arbitrary =+ Octane.NameProperty <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.QWordProperty where+ arbitrary = Octane.QWordProperty <$> pure 8 <*> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.StrProperty where+ arbitrary =+ Octane.StrProperty <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.RawReplay where+ arbitrary =+ Octane.newRawReplay <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.RemoteId where+ arbitrary =+ QuickCheck.oneof+ [ Octane.RemotePlayStationId <$> QuickCheck.arbitrary+ , Octane.RemoteSplitscreenId <$> QuickCheck.arbitrary+ , Octane.RemoteSteamId <$> QuickCheck.arbitrary+ , Octane.RemoteXboxId <$> QuickCheck.arbitrary+ ]++instance QuickCheck.Arbitrary Octane.PlayStationId where+ arbitrary =+ Octane.PlayStationId <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.SplitscreenId where+ arbitrary = Octane.SplitscreenId <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.SteamId where+ arbitrary = Octane.SteamId <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.XboxId where+ arbitrary = Octane.XboxId <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.Replay where+ arbitrary+ -- The vesion must have exactly two pieces and both must be non-negative.+ = do+ major <- QuickCheck.arbitrarySizedNatural+ minor <- QuickCheck.arbitrarySizedNatural+ let version = Version.makeVersion [major, minor]+ metadata <- QuickCheck.arbitrary+ levels <- QuickCheck.arbitrary+ -- The messages and tick marks must have keys that can be read as+ -- non-negative integers.+ messages <-+ fmap Map.fromList $+ QuickCheck.listOf $ do+ frame <- QuickCheck.arbitrarySizedNatural+ let key = frame & (\x -> x :: Word) & show & StrictText.pack+ value <- QuickCheck.arbitrary+ pure (key, value)+ tickMarks <-+ fmap Map.fromList $+ QuickCheck.listOf $ do+ frame <- QuickCheck.arbitrarySizedNatural+ let key = frame & (\x -> x :: Word) & show & StrictText.pack+ value <- QuickCheck.arbitrary+ pure (key, value)+ packages <- QuickCheck.arbitrary+ -- Each frame has many replications. Each replication has many values. If+ -- we don't limit the number of frames, things get out of hand quickly.+ rawFrames <- QuickCheck.scale (min 10) QuickCheck.arbitrary+ -- The first frame must be a key frame. Only the first frame can be a key+ -- frame.+ let frames =+ rawFrames & zip (True : repeat False) &+ map+ (\(isKeyFrame, frame) -> frame {Octane.frameIsKeyFrame = isKeyFrame})+ pure+ (Octane.Replay version metadata levels messages tickMarks packages frames)++instance QuickCheck.Arbitrary Octane.ReplayWithFrames where+ arbitrary =+ Octane.ReplayWithFrames <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.ReplayWithoutFrames where+ arbitrary =+ Octane.ReplayWithoutFrames <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.Replication where+ arbitrary =+ Octane.Replication <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.State where+ arbitrary =+ QuickCheck.elements [Octane.Opening, Octane.Existing, Octane.Closing]++instance QuickCheck.Arbitrary Octane.Stream where+ arbitrary = Octane.Stream <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.Text where+ arbitrary = Octane.Text <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.Value where+ arbitrary =+ QuickCheck.oneof+ [ Octane.ValueBoolean <$> QuickCheck.arbitrary+ , Octane.ValueByte <$> QuickCheck.arbitrary+ , Octane.ValueCamSettings <$> QuickCheck.arbitrary+ , Octane.ValueDemolish <$> QuickCheck.arbitrary+ , Octane.ValueEnum <$> QuickCheck.arbitrary+ , Octane.ValueExplosion <$> QuickCheck.arbitrary+ , Octane.ValueFlaggedInt <$> QuickCheck.arbitrary+ , Octane.ValueFloat <$> QuickCheck.arbitrary+ , Octane.ValueGameMode <$> QuickCheck.arbitrary+ , Octane.ValueInt <$> QuickCheck.arbitrary+ , Octane.ValueLoadout <$> QuickCheck.arbitrary+ , Octane.ValueLoadoutOnline <$> QuickCheck.arbitrary+ , Octane.ValueLocation <$> QuickCheck.arbitrary+ , Octane.ValueMusicStinger <$> QuickCheck.arbitrary+ , Octane.ValuePickup <$> QuickCheck.arbitrary+ , Octane.ValuePrivateMatchSettings <$> QuickCheck.arbitrary+ , Octane.ValueQWord <$> QuickCheck.arbitrary+ , Octane.ValueRelativeRotation <$> QuickCheck.arbitrary+ , Octane.ValueReservation <$> QuickCheck.arbitrary+ , Octane.ValueRigidBodyState <$> QuickCheck.arbitrary+ , Octane.ValueString <$> QuickCheck.arbitrary+ , Octane.ValueTeamPaint <$> QuickCheck.arbitrary+ , Octane.ValueUniqueId <$> QuickCheck.arbitrary+ ]++instance QuickCheck.Arbitrary Octane.BooleanValue where+ arbitrary = Octane.BooleanValue <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.ByteValue where+ arbitrary = Octane.ByteValue <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.CamSettingsValue where+ arbitrary =+ Octane.CamSettingsValue <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.DemolishValue where+ arbitrary =+ Octane.DemolishValue <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.EnumValue where+ arbitrary = Octane.EnumValue <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.ExplosionValue where+ arbitrary =+ Octane.ExplosionValue <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.FlaggedIntValue where+ arbitrary =+ Octane.FlaggedIntValue <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.FloatValue where+ arbitrary = Octane.FloatValue <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.GameModeValue where+ arbitrary = Octane.GameModeValue <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.IntValue where+ arbitrary = Octane.IntValue <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.LoadoutOnlineValue where+ arbitrary = Octane.LoadoutOnlineValue <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.LoadoutValue where+ arbitrary =+ Octane.LoadoutValue <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.LocationValue where+ arbitrary = Octane.LocationValue <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.MusicStingerValue where+ arbitrary =+ Octane.MusicStingerValue <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.PickupValue where+ arbitrary =+ Octane.PickupValue <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.PrivateMatchSettingsValue where+ arbitrary =+ Octane.PrivateMatchSettingsValue <$> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.QWordValue where+ arbitrary = Octane.QWordValue <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.RelativeRotationValue where+ arbitrary = Octane.RelativeRotationValue <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.ReservationValue where+ arbitrary =+ Octane.ReservationValue <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.RigidBodyStateValue where+ arbitrary =+ Octane.RigidBodyStateValue <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.StringValue where+ arbitrary = Octane.StringValue <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.TeamPaintValue where+ arbitrary =+ Octane.TeamPaintValue <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.UniqueIdValue where+ arbitrary =+ Octane.UniqueIdValue <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance (QuickCheck.Arbitrary a) =>+ QuickCheck.Arbitrary (Octane.Vector a) where+ arbitrary =+ Octane.Vector <$> QuickCheck.arbitrary <*> QuickCheck.arbitrary <*>+ QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.Word8 where+ arbitrary = Octane.Word8 <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.Word16 where+ arbitrary = Octane.Word16 <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.Word32 where+ arbitrary = Octane.Word32 <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Octane.Word64 where+ arbitrary = Octane.Word64 <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary LazyBytes.ByteString where+ arbitrary = LazyBytes.pack <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary StrictText.Text where+ arbitrary = StrictText.pack <$> QuickCheck.arbitrary++instance QuickCheck.Arbitrary Version.Version where+ arbitrary = Version.makeVersion <$> QuickCheck.arbitrary++newtype FloatVector = FloatVector+ { floatVectorUnpack :: Octane.Vector Float+ } deriving (Eq, Show)++instance QuickCheck.Arbitrary FloatVector where+ arbitrary = do+ x <- QuickCheck.choose (-1, 1)+ y <- QuickCheck.choose (-1, 1)+ z <- QuickCheck.choose (-1, 1)+ pure (FloatVector (Octane.Vector x y z))