-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Parse and generate Rocket League replays.
--   
--   Rattletrap parses and generates Rocket League replays.
@package rattletrap
@version 4.1.1

module Rattletrap.Type.Bitstream
newtype Bitstream
Bitstream :: [Bool] -> Bitstream
[bitstreamValue] :: Bitstream -> [Bool]
instance GHC.Show.Show Rattletrap.Type.Bitstream.Bitstream
instance GHC.Classes.Ord Rattletrap.Type.Bitstream.Bitstream
instance GHC.Classes.Eq Rattletrap.Type.Bitstream.Bitstream
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.Bitstream.Bitstream
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.Bitstream.Bitstream

module Rattletrap.Encode.Bitstream
putBitstream :: Bitstream -> BitPut ()

module Rattletrap.Type.Common

-- | 8-bit signed integer type
data Int8

-- | 32-bit signed integer type
data Int32

-- | 64-bit signed integer type
data Int64

-- | A Map from keys <tt>k</tt> to values <tt>a</tt>.
data Map k a

-- | A space efficient, packed, unboxed Unicode text type.
data Text

-- | 8-bit unsigned integer type
data Word8

-- | 16-bit unsigned integer type
data Word16

-- | 32-bit unsigned integer type
data Word32

-- | 64-bit unsigned integer type
data Word64
deriveJson :: Name -> Q [Dec]

module Rattletrap.Type.BooleanAttribute
newtype BooleanAttribute
BooleanAttribute :: Bool -> BooleanAttribute
[booleanAttributeValue] :: BooleanAttribute -> Bool
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.BooleanAttribute.BooleanAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.BooleanAttribute.BooleanAttribute
instance GHC.Show.Show Rattletrap.Type.BooleanAttribute.BooleanAttribute
instance GHC.Classes.Ord Rattletrap.Type.BooleanAttribute.BooleanAttribute
instance GHC.Classes.Eq Rattletrap.Type.BooleanAttribute.BooleanAttribute

module Rattletrap.Encode.BooleanAttribute
putBooleanAttribute :: BooleanAttribute -> BitPut ()

module Rattletrap.Type.AttributeType
data AttributeType
AttributeTypeAppliedDamage :: AttributeType
AttributeTypeBoolean :: AttributeType
AttributeTypeByte :: AttributeType
AttributeTypeCamSettings :: AttributeType
AttributeTypeClubColors :: AttributeType
AttributeTypeDamageState :: AttributeType
AttributeTypeDemolish :: AttributeType
AttributeTypeEnum :: AttributeType
AttributeTypeExplosion :: AttributeType
AttributeTypeExtendedExplosion :: AttributeType
AttributeTypeFlaggedInt :: AttributeType
AttributeTypeFloat :: AttributeType
AttributeTypeGameMode :: AttributeType
AttributeTypeInt :: AttributeType
AttributeTypeLoadout :: AttributeType
AttributeTypeLoadoutOnline :: AttributeType
AttributeTypeLoadouts :: AttributeType
AttributeTypeLoadoutsOnline :: AttributeType
AttributeTypeLocation :: AttributeType
AttributeTypeMusicStinger :: AttributeType
AttributeTypePartyLeader :: AttributeType
AttributeTypePickup :: AttributeType
AttributeTypePlayerHistoryKey :: AttributeType
AttributeTypePrivateMatchSettings :: AttributeType
AttributeTypeQWord :: AttributeType
AttributeTypeReservation :: AttributeType
AttributeTypeRigidBodyState :: AttributeType
AttributeTypeStatEvent :: AttributeType
AttributeTypeString :: AttributeType
AttributeTypeTeamPaint :: AttributeType
AttributeTypeTitle :: AttributeType
AttributeTypeUniqueId :: AttributeType
AttributeTypeWeldedInfo :: AttributeType
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.AttributeType.AttributeType
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.AttributeType.AttributeType
instance GHC.Show.Show Rattletrap.Type.AttributeType.AttributeType
instance GHC.Classes.Ord Rattletrap.Type.AttributeType.AttributeType
instance GHC.Classes.Eq Rattletrap.Type.AttributeType.AttributeType

module Rattletrap.Data
rawParentClasses :: [(String, String)]
rawClassesWithLocation :: [String]
rawClassesWithRotation :: [String]
rawObjectClasses :: [(String, String)]
rawAttributeTypes :: [(String, AttributeType)]
rawCrc32Table :: Integral a => [a]

module Rattletrap.Type.CompressedWord
data CompressedWord
CompressedWord :: Word -> Word -> CompressedWord
[compressedWordLimit] :: CompressedWord -> Word
[compressedWordValue] :: CompressedWord -> Word
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.CompressedWord.CompressedWord
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.CompressedWord.CompressedWord
instance GHC.Show.Show Rattletrap.Type.CompressedWord.CompressedWord
instance GHC.Classes.Ord Rattletrap.Type.CompressedWord.CompressedWord
instance GHC.Classes.Eq Rattletrap.Type.CompressedWord.CompressedWord

module Rattletrap.Encode.CompressedWord
putCompressedWord :: CompressedWord -> BitPut ()

module Rattletrap.Type.CompressedWordVector
data CompressedWordVector
CompressedWordVector :: CompressedWord -> CompressedWord -> CompressedWord -> CompressedWordVector
[compressedWordVectorX] :: CompressedWordVector -> CompressedWord
[compressedWordVectorY] :: CompressedWordVector -> CompressedWord
[compressedWordVectorZ] :: CompressedWordVector -> CompressedWord
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.CompressedWordVector.CompressedWordVector
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.CompressedWordVector.CompressedWordVector
instance GHC.Show.Show Rattletrap.Type.CompressedWordVector.CompressedWordVector
instance GHC.Classes.Ord Rattletrap.Type.CompressedWordVector.CompressedWordVector
instance GHC.Classes.Eq Rattletrap.Type.CompressedWordVector.CompressedWordVector

module Rattletrap.Encode.CompressedWordVector
putCompressedWordVector :: CompressedWordVector -> BitPut ()

module Rattletrap.Type.DestroyedReplication

-- | Destroyed replications don't actually contain any extra information.
--   All you need to know is the actor's ID, which is given by the
--   <a>Replication</a>.
data DestroyedReplication
DestroyedReplication :: DestroyedReplication
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.DestroyedReplication.DestroyedReplication
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.DestroyedReplication.DestroyedReplication
instance GHC.Show.Show Rattletrap.Type.DestroyedReplication.DestroyedReplication
instance GHC.Classes.Ord Rattletrap.Type.DestroyedReplication.DestroyedReplication
instance GHC.Classes.Eq Rattletrap.Type.DestroyedReplication.DestroyedReplication

module Rattletrap.Encode.DestroyedReplication
putDestroyedReplication :: DestroyedReplication -> BitPut ()

module Rattletrap.Type.EnumAttribute
newtype EnumAttribute
EnumAttribute :: Word16 -> EnumAttribute
[enumAttributeValue] :: EnumAttribute -> Word16
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.EnumAttribute.EnumAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.EnumAttribute.EnumAttribute
instance GHC.Show.Show Rattletrap.Type.EnumAttribute.EnumAttribute
instance GHC.Classes.Ord Rattletrap.Type.EnumAttribute.EnumAttribute
instance GHC.Classes.Eq Rattletrap.Type.EnumAttribute.EnumAttribute

module Rattletrap.Encode.EnumAttribute
putEnumAttribute :: EnumAttribute -> BitPut ()

module Rattletrap.Type.Float32le
newtype Float32le
Float32le :: Float -> Float32le
[float32leValue] :: Float32le -> Float
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.Float32le.Float32le
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.Float32le.Float32le
instance GHC.Show.Show Rattletrap.Type.Float32le.Float32le
instance GHC.Classes.Ord Rattletrap.Type.Float32le.Float32le
instance GHC.Classes.Eq Rattletrap.Type.Float32le.Float32le

module Rattletrap.Type.CamSettingsAttribute
data CamSettingsAttribute
CamSettingsAttribute :: Float32le -> Float32le -> Float32le -> Float32le -> Float32le -> Float32le -> Maybe Float32le -> CamSettingsAttribute
[camSettingsAttributeFov] :: CamSettingsAttribute -> Float32le
[camSettingsAttributeHeight] :: CamSettingsAttribute -> Float32le
[camSettingsAttributeAngle] :: CamSettingsAttribute -> Float32le
[camSettingsAttributeDistance] :: CamSettingsAttribute -> Float32le
[camSettingsAttributeStiffness] :: CamSettingsAttribute -> Float32le
[camSettingsAttributeSwivelSpeed] :: CamSettingsAttribute -> Float32le
[camSettingsAttributeTransitionSpeed] :: CamSettingsAttribute -> Maybe Float32le
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.CamSettingsAttribute.CamSettingsAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.CamSettingsAttribute.CamSettingsAttribute
instance GHC.Show.Show Rattletrap.Type.CamSettingsAttribute.CamSettingsAttribute
instance GHC.Classes.Ord Rattletrap.Type.CamSettingsAttribute.CamSettingsAttribute
instance GHC.Classes.Eq Rattletrap.Type.CamSettingsAttribute.CamSettingsAttribute

module Rattletrap.Type.FloatAttribute
newtype FloatAttribute
FloatAttribute :: Float32le -> FloatAttribute
[floatAttributeValue] :: FloatAttribute -> Float32le
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.FloatAttribute.FloatAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.FloatAttribute.FloatAttribute
instance GHC.Show.Show Rattletrap.Type.FloatAttribute.FloatAttribute
instance GHC.Classes.Ord Rattletrap.Type.FloatAttribute.FloatAttribute
instance GHC.Classes.Eq Rattletrap.Type.FloatAttribute.FloatAttribute

module Rattletrap.Type.GameModeAttribute
data GameModeAttribute
GameModeAttribute :: Int -> Word8 -> GameModeAttribute
[gameModeAttributeNumBits] :: GameModeAttribute -> Int
[gameModeAttributeWord] :: GameModeAttribute -> Word8
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.GameModeAttribute.GameModeAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.GameModeAttribute.GameModeAttribute
instance GHC.Show.Show Rattletrap.Type.GameModeAttribute.GameModeAttribute
instance GHC.Classes.Ord Rattletrap.Type.GameModeAttribute.GameModeAttribute
instance GHC.Classes.Eq Rattletrap.Type.GameModeAttribute.GameModeAttribute

module Rattletrap.Encode.GameModeAttribute
putGameModeAttribute :: GameModeAttribute -> BitPut ()

module Rattletrap.Type.Int32le
newtype Int32le
Int32le :: Int32 -> Int32le
[int32leValue] :: Int32le -> Int32
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.Int32le.Int32le
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.Int32le.Int32le
instance GHC.Show.Show Rattletrap.Type.Int32le.Int32le
instance GHC.Classes.Ord Rattletrap.Type.Int32le.Int32le
instance GHC.Classes.Eq Rattletrap.Type.Int32le.Int32le

module Rattletrap.Type.FlaggedIntAttribute
data FlaggedIntAttribute
FlaggedIntAttribute :: Bool -> Int32le -> FlaggedIntAttribute
[flaggedIntAttributeFlag] :: FlaggedIntAttribute -> Bool
[flaggedIntAttributeInt] :: FlaggedIntAttribute -> Int32le
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.FlaggedIntAttribute.FlaggedIntAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.FlaggedIntAttribute.FlaggedIntAttribute
instance GHC.Show.Show Rattletrap.Type.FlaggedIntAttribute.FlaggedIntAttribute
instance GHC.Classes.Ord Rattletrap.Type.FlaggedIntAttribute.FlaggedIntAttribute
instance GHC.Classes.Eq Rattletrap.Type.FlaggedIntAttribute.FlaggedIntAttribute

module Rattletrap.Type.Int8le
newtype Int8le
Int8le :: Int8 -> Int8le
[int8leValue] :: Int8le -> Int8
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.Int8le.Int8le
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.Int8le.Int8le
instance GHC.Show.Show Rattletrap.Type.Int8le.Int8le
instance GHC.Classes.Ord Rattletrap.Type.Int8le.Int8le
instance GHC.Classes.Eq Rattletrap.Type.Int8le.Int8le

module Rattletrap.Type.Int8Vector
data Int8Vector
Int8Vector :: Maybe Int8le -> Maybe Int8le -> Maybe Int8le -> Int8Vector
[int8VectorX] :: Int8Vector -> Maybe Int8le
[int8VectorY] :: Int8Vector -> Maybe Int8le
[int8VectorZ] :: Int8Vector -> Maybe Int8le
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.Int8Vector.Int8Vector
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.Int8Vector.Int8Vector
instance GHC.Show.Show Rattletrap.Type.Int8Vector.Int8Vector
instance GHC.Classes.Ord Rattletrap.Type.Int8Vector.Int8Vector
instance GHC.Classes.Eq Rattletrap.Type.Int8Vector.Int8Vector

module Rattletrap.Type.IntAttribute
newtype IntAttribute
IntAttribute :: Int32le -> IntAttribute
[intAttributeValue] :: IntAttribute -> Int32le
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.IntAttribute.IntAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.IntAttribute.IntAttribute
instance GHC.Show.Show Rattletrap.Type.IntAttribute.IntAttribute
instance GHC.Classes.Ord Rattletrap.Type.IntAttribute.IntAttribute
instance GHC.Classes.Eq Rattletrap.Type.IntAttribute.IntAttribute

module Rattletrap.Type.List
newtype List a
List :: [a] -> List a
[listValue] :: List a -> [a]
instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (Rattletrap.Type.List.List a)
instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Rattletrap.Type.List.List a)
instance GHC.Show.Show a => GHC.Show.Show (Rattletrap.Type.List.List a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Rattletrap.Type.List.List a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Rattletrap.Type.List.List a)

module Rattletrap.Type.PlayerHistoryKeyAttribute
newtype PlayerHistoryKeyAttribute
PlayerHistoryKeyAttribute :: Bitstream -> PlayerHistoryKeyAttribute
[playerHistoryKeyAttributeUnknown] :: PlayerHistoryKeyAttribute -> Bitstream
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.PlayerHistoryKeyAttribute.PlayerHistoryKeyAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.PlayerHistoryKeyAttribute.PlayerHistoryKeyAttribute
instance GHC.Show.Show Rattletrap.Type.PlayerHistoryKeyAttribute.PlayerHistoryKeyAttribute
instance GHC.Classes.Ord Rattletrap.Type.PlayerHistoryKeyAttribute.PlayerHistoryKeyAttribute
instance GHC.Classes.Eq Rattletrap.Type.PlayerHistoryKeyAttribute.PlayerHistoryKeyAttribute

module Rattletrap.Encode.PlayerHistoryKeyAttribute
putPlayerHistoryKeyAttribute :: PlayerHistoryKeyAttribute -> BitPut ()

module Rattletrap.Type.StatEventAttribute
data StatEventAttribute
StatEventAttribute :: Bool -> Int32le -> StatEventAttribute
[statEventAttributeUnknown] :: StatEventAttribute -> Bool
[statEventAttributeObjectId] :: StatEventAttribute -> Int32le
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.StatEventAttribute.StatEventAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.StatEventAttribute.StatEventAttribute
instance GHC.Show.Show Rattletrap.Type.StatEventAttribute.StatEventAttribute
instance GHC.Classes.Ord Rattletrap.Type.StatEventAttribute.StatEventAttribute
instance GHC.Classes.Eq Rattletrap.Type.StatEventAttribute.StatEventAttribute

module Rattletrap.Type.Str
newtype Str
Str :: Text -> Str
[strValue] :: Str -> Text
toStr :: String -> Str
fromStr :: Str -> String
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.Str.Str
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.Str.Str
instance GHC.Show.Show Rattletrap.Type.Str.Str
instance GHC.Classes.Ord Rattletrap.Type.Str.Str
instance GHC.Classes.Eq Rattletrap.Type.Str.Str

module Rattletrap.Type.Dictionary
data Dictionary a
DictionaryElement :: Str -> a -> (Dictionary a) -> Dictionary a
DictionaryEnd :: Str -> Dictionary a
dictionaryLookup :: Str -> Dictionary a -> Maybe a
instance GHC.Show.Show a => GHC.Show.Show (Rattletrap.Type.Dictionary.Dictionary a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Rattletrap.Type.Dictionary.Dictionary a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Rattletrap.Type.Dictionary.Dictionary a)
instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Rattletrap.Type.Dictionary.Dictionary a)
instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (Rattletrap.Type.Dictionary.Dictionary a)

module Rattletrap.Type.StringAttribute
newtype StringAttribute
StringAttribute :: Str -> StringAttribute
[stringAttributeValue] :: StringAttribute -> Str
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.StringAttribute.StringAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.StringAttribute.StringAttribute
instance GHC.Show.Show Rattletrap.Type.StringAttribute.StringAttribute
instance GHC.Classes.Ord Rattletrap.Type.StringAttribute.StringAttribute
instance GHC.Classes.Eq Rattletrap.Type.StringAttribute.StringAttribute

module Rattletrap.Type.Vector
data Vector
Vector :: CompressedWord -> Word -> Int -> Int -> Int -> Vector
[vectorSize] :: Vector -> CompressedWord
[vectorBias] :: Vector -> Word
[vectorX] :: Vector -> Int
[vectorY] :: Vector -> Int
[vectorZ] :: Vector -> Int
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.Vector.Vector
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.Vector.Vector
instance GHC.Show.Show Rattletrap.Type.Vector.Vector
instance GHC.Classes.Ord Rattletrap.Type.Vector.Vector
instance GHC.Classes.Eq Rattletrap.Type.Vector.Vector

module Rattletrap.Type.RigidBodyStateAttribute
data RigidBodyStateAttribute
RigidBodyStateAttribute :: Bool -> Vector -> Maybe Bool -> CompressedWordVector -> Maybe Bool -> Maybe Vector -> Maybe Vector -> RigidBodyStateAttribute
[rigidBodyStateAttributeSleeping] :: RigidBodyStateAttribute -> Bool
[rigidBodyStateAttributeLocation] :: RigidBodyStateAttribute -> Vector
[rigidBodyStateAttributeUnknown1] :: RigidBodyStateAttribute -> Maybe Bool
[rigidBodyStateAttributeRotation] :: RigidBodyStateAttribute -> CompressedWordVector
[rigidBodyStateAttributeUnknown2] :: RigidBodyStateAttribute -> Maybe Bool
[rigidBodyStateAttributeLinearVelocity] :: RigidBodyStateAttribute -> Maybe Vector
[rigidBodyStateAttributeAngularVelocity] :: RigidBodyStateAttribute -> Maybe Vector
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.RigidBodyStateAttribute.RigidBodyStateAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.RigidBodyStateAttribute.RigidBodyStateAttribute
instance GHC.Show.Show Rattletrap.Type.RigidBodyStateAttribute.RigidBodyStateAttribute
instance GHC.Classes.Ord Rattletrap.Type.RigidBodyStateAttribute.RigidBodyStateAttribute
instance GHC.Classes.Eq Rattletrap.Type.RigidBodyStateAttribute.RigidBodyStateAttribute

module Rattletrap.Type.LocationAttribute
newtype LocationAttribute
LocationAttribute :: Vector -> LocationAttribute
[locationAttributeValue] :: LocationAttribute -> Vector
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.LocationAttribute.LocationAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.LocationAttribute.LocationAttribute
instance GHC.Show.Show Rattletrap.Type.LocationAttribute.LocationAttribute
instance GHC.Classes.Ord Rattletrap.Type.LocationAttribute.LocationAttribute
instance GHC.Classes.Eq Rattletrap.Type.LocationAttribute.LocationAttribute

module Rattletrap.Type.Initialization
data Initialization
Initialization :: Maybe Vector -> Maybe Int8Vector -> Initialization

-- | Not every class has an initial location. See
--   <a>rawClassesWithLocation</a>.
[initializationLocation] :: Initialization -> Maybe Vector

-- | Only classes with location can have rotation, but not every one does.
--   See <a>rawClassesWithRotation</a>.
[initializationRotation] :: Initialization -> Maybe Int8Vector
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.Initialization.Initialization
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.Initialization.Initialization
instance GHC.Show.Show Rattletrap.Type.Initialization.Initialization
instance GHC.Classes.Ord Rattletrap.Type.Initialization.Initialization
instance GHC.Classes.Eq Rattletrap.Type.Initialization.Initialization

module Rattletrap.Type.ExplosionAttribute
data ExplosionAttribute
ExplosionAttribute :: Bool -> Int32le -> Vector -> ExplosionAttribute
[explosionAttributeFlag] :: ExplosionAttribute -> Bool
[explosionAttributeActorId] :: ExplosionAttribute -> Int32le
[explosionAttributeLocation] :: ExplosionAttribute -> Vector
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.ExplosionAttribute.ExplosionAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.ExplosionAttribute.ExplosionAttribute
instance GHC.Show.Show Rattletrap.Type.ExplosionAttribute.ExplosionAttribute
instance GHC.Classes.Ord Rattletrap.Type.ExplosionAttribute.ExplosionAttribute
instance GHC.Classes.Eq Rattletrap.Type.ExplosionAttribute.ExplosionAttribute

module Rattletrap.Type.ExtendedExplosionAttribute
data ExtendedExplosionAttribute
ExtendedExplosionAttribute :: ExplosionAttribute -> FlaggedIntAttribute -> ExtendedExplosionAttribute
[extendedExplosionAttributeExplosion] :: ExtendedExplosionAttribute -> ExplosionAttribute
[extendedExplosionAttributeUnknown] :: ExtendedExplosionAttribute -> FlaggedIntAttribute
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.ExtendedExplosionAttribute.ExtendedExplosionAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.ExtendedExplosionAttribute.ExtendedExplosionAttribute
instance GHC.Show.Show Rattletrap.Type.ExtendedExplosionAttribute.ExtendedExplosionAttribute
instance GHC.Classes.Ord Rattletrap.Type.ExtendedExplosionAttribute.ExtendedExplosionAttribute
instance GHC.Classes.Eq Rattletrap.Type.ExtendedExplosionAttribute.ExtendedExplosionAttribute

module Rattletrap.Encode.Vector
putVector :: Vector -> BitPut ()

module Rattletrap.Encode.RigidBodyStateAttribute
putRigidBodyStateAttribute :: RigidBodyStateAttribute -> BitPut ()

module Rattletrap.Encode.LocationAttribute
putLocationAttribute :: LocationAttribute -> BitPut ()

module Rattletrap.Type.WeldedInfoAttribute
data WeldedInfoAttribute
WeldedInfoAttribute :: Bool -> Int32le -> Vector -> Float32le -> Int8Vector -> WeldedInfoAttribute
[weldedInfoAttributeActive] :: WeldedInfoAttribute -> Bool
[weldedInfoAttributeActorId] :: WeldedInfoAttribute -> Int32le
[weldedInfoAttributeOffset] :: WeldedInfoAttribute -> Vector
[weldedInfoAttributeMass] :: WeldedInfoAttribute -> Float32le
[weldedInfoAttributeRotation] :: WeldedInfoAttribute -> Int8Vector
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.WeldedInfoAttribute.WeldedInfoAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.WeldedInfoAttribute.WeldedInfoAttribute
instance GHC.Show.Show Rattletrap.Type.WeldedInfoAttribute.WeldedInfoAttribute
instance GHC.Classes.Ord Rattletrap.Type.WeldedInfoAttribute.WeldedInfoAttribute
instance GHC.Classes.Eq Rattletrap.Type.WeldedInfoAttribute.WeldedInfoAttribute

module Rattletrap.Type.Word32le
newtype Word32le
Word32le :: Word32 -> Word32le
[word32leValue] :: Word32le -> Word32
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.Word32le.Word32le
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.Word32le.Word32le
instance GHC.Show.Show Rattletrap.Type.Word32le.Word32le
instance GHC.Classes.Ord Rattletrap.Type.Word32le.Word32le
instance GHC.Classes.Eq Rattletrap.Type.Word32le.Word32le

module Rattletrap.Type.TitleAttribute
data TitleAttribute
TitleAttribute :: Bool -> Bool -> Word32le -> Word32le -> Word32le -> Word32le -> Word32le -> Bool -> TitleAttribute
[titleAttributeUnknown1] :: TitleAttribute -> Bool
[titleAttributeUnknown2] :: TitleAttribute -> Bool
[titleAttributeUnknown3] :: TitleAttribute -> Word32le
[titleAttributeUnknown4] :: TitleAttribute -> Word32le
[titleAttributeUnknown5] :: TitleAttribute -> Word32le
[titleAttributeUnknown6] :: TitleAttribute -> Word32le
[titleAttributeUnknown7] :: TitleAttribute -> Word32le
[titleAttributeUnknown8] :: TitleAttribute -> Bool
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.TitleAttribute.TitleAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.TitleAttribute.TitleAttribute
instance GHC.Show.Show Rattletrap.Type.TitleAttribute.TitleAttribute
instance GHC.Classes.Ord Rattletrap.Type.TitleAttribute.TitleAttribute
instance GHC.Classes.Eq Rattletrap.Type.TitleAttribute.TitleAttribute

module Rattletrap.Type.SpawnedReplication
data SpawnedReplication
SpawnedReplication :: Bool -> Maybe Word32le -> Maybe Str -> Word32le -> Str -> Str -> Initialization -> SpawnedReplication

-- | Unclear what this is.
[spawnedReplicationFlag] :: SpawnedReplication -> Bool
[spawnedReplicationNameIndex] :: SpawnedReplication -> Maybe Word32le

-- | Read-only! Changing a replication's name requires editing the
--   <a>spawnedReplicationNameIndex</a> and maybe the class attribute map.
[spawnedReplicationName] :: SpawnedReplication -> Maybe Str
[spawnedReplicationObjectId] :: SpawnedReplication -> Word32le

-- | Read-only! Changing a replication's object requires editing the class
--   attribute map.
[spawnedReplicationObjectName] :: SpawnedReplication -> Str

-- | Read-only! Changing a replication's class requires editing the class
--   attribute map.
[spawnedReplicationClassName] :: SpawnedReplication -> Str
[spawnedReplicationInitialization] :: SpawnedReplication -> Initialization
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.SpawnedReplication.SpawnedReplication
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.SpawnedReplication.SpawnedReplication
instance GHC.Show.Show Rattletrap.Type.SpawnedReplication.SpawnedReplication
instance GHC.Classes.Ord Rattletrap.Type.SpawnedReplication.SpawnedReplication
instance GHC.Classes.Eq Rattletrap.Type.SpawnedReplication.SpawnedReplication

module Rattletrap.Type.Section

-- | A section is a large piece of a <a>Replay</a>. It has a 32-bit size
--   (in bytes), a 32-bit CRC (see <a>Rattletrap.Utility.Crc</a>), and then
--   a bunch of data (the body). This interface is provided so that you
--   don't have to think about the size and CRC.
data Section a
Section :: Word32le -> Word32le -> a -> Section a

-- | read only
[sectionSize] :: Section a -> Word32le

-- | read only
[sectionCrc] :: Section a -> Word32le

-- | The actual content in the section.
[sectionBody] :: Section a -> a
instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (Rattletrap.Type.Section.Section a)
instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Rattletrap.Type.Section.Section a)
instance GHC.Show.Show a => GHC.Show.Show (Rattletrap.Type.Section.Section a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Rattletrap.Type.Section.Section a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Rattletrap.Type.Section.Section a)

module Rattletrap.Type.ProductAttribute
data ProductAttribute
ProductAttribute :: Bool -> Word32le -> Maybe Str -> Maybe (Either CompressedWord Word32) -> ProductAttribute
[productAttributeUnknown] :: ProductAttribute -> Bool
[productAttributeObjectId] :: ProductAttribute -> Word32le

-- | read-only
[productAttributeObjectName] :: ProductAttribute -> Maybe Str
[productAttributeValue] :: ProductAttribute -> Maybe (Either CompressedWord Word32)
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.ProductAttribute.ProductAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.ProductAttribute.ProductAttribute
instance GHC.Show.Show Rattletrap.Type.ProductAttribute.ProductAttribute
instance GHC.Classes.Ord Rattletrap.Type.ProductAttribute.ProductAttribute
instance GHC.Classes.Eq Rattletrap.Type.ProductAttribute.ProductAttribute

module Rattletrap.Type.LoadoutOnlineAttribute
newtype LoadoutOnlineAttribute
LoadoutOnlineAttribute :: [[ProductAttribute]] -> LoadoutOnlineAttribute
[loadoutAttributeValue] :: LoadoutOnlineAttribute -> [[ProductAttribute]]
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.LoadoutOnlineAttribute.LoadoutOnlineAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.LoadoutOnlineAttribute.LoadoutOnlineAttribute
instance GHC.Show.Show Rattletrap.Type.LoadoutOnlineAttribute.LoadoutOnlineAttribute
instance GHC.Classes.Ord Rattletrap.Type.LoadoutOnlineAttribute.LoadoutOnlineAttribute
instance GHC.Classes.Eq Rattletrap.Type.LoadoutOnlineAttribute.LoadoutOnlineAttribute

module Rattletrap.Type.LoadoutsOnlineAttribute
data LoadoutsOnlineAttribute
LoadoutsOnlineAttribute :: LoadoutOnlineAttribute -> LoadoutOnlineAttribute -> Bool -> Bool -> LoadoutsOnlineAttribute
[loadoutsOnlineAttributeBlue] :: LoadoutsOnlineAttribute -> LoadoutOnlineAttribute
[loadoutsOnlineAttributeOrange] :: LoadoutsOnlineAttribute -> LoadoutOnlineAttribute
[loadoutsOnlineAttributeUnknown1] :: LoadoutsOnlineAttribute -> Bool
[loadoutsOnlineAttributeUnknown2] :: LoadoutsOnlineAttribute -> Bool
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.LoadoutsOnlineAttribute.LoadoutsOnlineAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.LoadoutsOnlineAttribute.LoadoutsOnlineAttribute
instance GHC.Show.Show Rattletrap.Type.LoadoutsOnlineAttribute.LoadoutsOnlineAttribute
instance GHC.Classes.Ord Rattletrap.Type.LoadoutsOnlineAttribute.LoadoutsOnlineAttribute
instance GHC.Classes.Eq Rattletrap.Type.LoadoutsOnlineAttribute.LoadoutsOnlineAttribute

module Rattletrap.Type.PrivateMatchSettingsAttribute
data PrivateMatchSettingsAttribute
PrivateMatchSettingsAttribute :: Str -> Word32le -> Word32le -> Str -> Str -> Bool -> PrivateMatchSettingsAttribute
[privateMatchSettingsAttributeMutators] :: PrivateMatchSettingsAttribute -> Str
[privateMatchSettingsAttributeJoinableBy] :: PrivateMatchSettingsAttribute -> Word32le
[privateMatchSettingsAttributeMaxPlayers] :: PrivateMatchSettingsAttribute -> Word32le
[privateMatchSettingsAttributeGameName] :: PrivateMatchSettingsAttribute -> Str
[privateMatchSettingsAttributePassword] :: PrivateMatchSettingsAttribute -> Str
[privateMatchSettingsAttributeFlag] :: PrivateMatchSettingsAttribute -> Bool
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.PrivateMatchSettingsAttribute.PrivateMatchSettingsAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.PrivateMatchSettingsAttribute.PrivateMatchSettingsAttribute
instance GHC.Show.Show Rattletrap.Type.PrivateMatchSettingsAttribute.PrivateMatchSettingsAttribute
instance GHC.Classes.Ord Rattletrap.Type.PrivateMatchSettingsAttribute.PrivateMatchSettingsAttribute
instance GHC.Classes.Eq Rattletrap.Type.PrivateMatchSettingsAttribute.PrivateMatchSettingsAttribute

module Rattletrap.Type.PickupAttribute
data PickupAttribute
PickupAttribute :: Maybe Word32le -> Bool -> PickupAttribute
[pickupAttributeInstigatorId] :: PickupAttribute -> Maybe Word32le
[pickupAttributePickedUp] :: PickupAttribute -> Bool
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.PickupAttribute.PickupAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.PickupAttribute.PickupAttribute
instance GHC.Show.Show Rattletrap.Type.PickupAttribute.PickupAttribute
instance GHC.Classes.Ord Rattletrap.Type.PickupAttribute.PickupAttribute
instance GHC.Classes.Eq Rattletrap.Type.PickupAttribute.PickupAttribute

module Rattletrap.Type.Message
data Message
Message :: Word32le -> Str -> Str -> Message

-- | Which frame this message belongs to, starting from 0.
[messageFrame] :: Message -> Word32le

-- | The primary player's name.
[messageName] :: Message -> Str

-- | The content of the message.
[messageValue] :: Message -> Str
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.Message.Message
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.Message.Message
instance GHC.Show.Show Rattletrap.Type.Message.Message
instance GHC.Classes.Ord Rattletrap.Type.Message.Message
instance GHC.Classes.Eq Rattletrap.Type.Message.Message

module Rattletrap.Type.Mark
data Mark
Mark :: Str -> Word32le -> Mark

-- | Which type of mark this is, like <tt>Team0Goal</tt>.
[markValue] :: Mark -> Str

-- | Which frame this mark belongs to, starting from 0.
[markFrame] :: Mark -> Word32le
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.Mark.Mark
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.Mark.Mark
instance GHC.Show.Show Rattletrap.Type.Mark.Mark
instance GHC.Classes.Ord Rattletrap.Type.Mark.Mark
instance GHC.Classes.Eq Rattletrap.Type.Mark.Mark

module Rattletrap.Type.KeyFrame
data KeyFrame
KeyFrame :: Float32le -> Word32le -> Word32le -> KeyFrame

-- | When this key frame occurs, in seconds.
[keyFrameTime] :: KeyFrame -> Float32le

-- | The frame number of this key frame, starting from 0.
[keyFrameFrame] :: KeyFrame -> Word32le

-- | The bit position of this key frame in the stream.
[keyFramePosition] :: KeyFrame -> Word32le
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.KeyFrame.KeyFrame
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.KeyFrame.KeyFrame
instance GHC.Show.Show Rattletrap.Type.KeyFrame.KeyFrame
instance GHC.Classes.Ord Rattletrap.Type.KeyFrame.KeyFrame
instance GHC.Classes.Eq Rattletrap.Type.KeyFrame.KeyFrame

module Rattletrap.Type.DemolishAttribute
data DemolishAttribute
DemolishAttribute :: Bool -> Word32le -> Bool -> Word32le -> Vector -> Vector -> DemolishAttribute
[demolishAttributeAttackerFlag] :: DemolishAttribute -> Bool
[demolishAttributeAttackerActorId] :: DemolishAttribute -> Word32le
[demolishAttributeVictimFlag] :: DemolishAttribute -> Bool
[demolishAttributeVictimActorId] :: DemolishAttribute -> Word32le
[demolishAttributeAttackerVelocity] :: DemolishAttribute -> Vector
[demolishAttributeVictimVelocity] :: DemolishAttribute -> Vector
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.DemolishAttribute.DemolishAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.DemolishAttribute.DemolishAttribute
instance GHC.Show.Show Rattletrap.Type.DemolishAttribute.DemolishAttribute
instance GHC.Classes.Ord Rattletrap.Type.DemolishAttribute.DemolishAttribute
instance GHC.Classes.Eq Rattletrap.Type.DemolishAttribute.DemolishAttribute

module Rattletrap.Type.ClassMapping
data ClassMapping
ClassMapping :: Str -> Word32le -> ClassMapping
[classMappingName] :: ClassMapping -> Str
[classMappingStreamId] :: ClassMapping -> Word32le
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.ClassMapping.ClassMapping
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.ClassMapping.ClassMapping
instance GHC.Show.Show Rattletrap.Type.ClassMapping.ClassMapping
instance GHC.Classes.Ord Rattletrap.Type.ClassMapping.ClassMapping
instance GHC.Classes.Eq Rattletrap.Type.ClassMapping.ClassMapping

module Rattletrap.Type.AttributeMapping
data AttributeMapping
AttributeMapping :: Word32le -> Word32le -> AttributeMapping
[attributeMappingObjectId] :: AttributeMapping -> Word32le
[attributeMappingStreamId] :: AttributeMapping -> Word32le
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.AttributeMapping.AttributeMapping
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.AttributeMapping.AttributeMapping
instance GHC.Show.Show Rattletrap.Type.AttributeMapping.AttributeMapping
instance GHC.Classes.Ord Rattletrap.Type.AttributeMapping.AttributeMapping
instance GHC.Classes.Eq Rattletrap.Type.AttributeMapping.AttributeMapping

module Rattletrap.Type.Cache
data Cache
Cache :: Word32le -> Word32le -> Word32le -> List AttributeMapping -> Cache
[cacheClassId] :: Cache -> Word32le
[cacheParentCacheId] :: Cache -> Word32le
[cacheCacheId] :: Cache -> Word32le
[cacheAttributeMappings] :: Cache -> List AttributeMapping
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.Cache.Cache
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.Cache.Cache
instance GHC.Show.Show Rattletrap.Type.Cache.Cache
instance GHC.Classes.Ord Rattletrap.Type.Cache.Cache
instance GHC.Classes.Eq Rattletrap.Type.Cache.Cache

module Rattletrap.Type.ClassAttributeMap

-- | This data structure holds all the information about classes, objects,
--   and attributes in the replay. The class hierarchy is not fixed; it is
--   encoded in the <a>Content</a>. Similarly, the attributes that belong
--   to each class are not fixed either. Converting the raw data into a
--   usable structure is tedious; see <a>makeClassAttributeMap</a>.
data ClassAttributeMap
ClassAttributeMap :: Map Word32le Str -> Map Word32le Word32le -> Map Word32le (Map Word32le Word32le) -> IntMap Str -> ClassAttributeMap

-- | A map from object IDs to their names.
[classAttributeMapObjectMap] :: ClassAttributeMap -> Map Word32le Str

-- | A map from object IDs to their class IDs.
[classAttributeMapObjectClassMap] :: ClassAttributeMap -> Map Word32le Word32le

-- | A map from class IDs to a map from attribute stream IDs to attribute
--   IDs.
[classAttributeMapValue] :: ClassAttributeMap -> Map Word32le (Map Word32le Word32le)
[classAttributeMapNameMap] :: ClassAttributeMap -> IntMap Str
classHasLocation :: Str -> Bool
classHasRotation :: Str -> Bool
getAttributeIdLimit :: Map Word32le Word32le -> Maybe Word
getAttributeMap :: ClassAttributeMap -> Map CompressedWord Word32le -> CompressedWord -> Maybe (Map Word32le Word32le)
getAttributeName :: ClassAttributeMap -> Map Word32le Word32le -> CompressedWord -> Maybe Str
getClassName :: Str -> Maybe Str
getName :: IntMap Str -> Word32le -> Maybe Str
getObjectName :: Map Word32le Str -> Word32le -> Maybe Str

-- | Makes a <a>ClassAttributeMap</a> given the necessary fields from the
--   <a>Content</a>.
makeClassAttributeMap :: List Str -> List ClassMapping -> List Cache -> List Str -> ClassAttributeMap
instance GHC.Show.Show Rattletrap.Type.ClassAttributeMap.ClassAttributeMap
instance GHC.Classes.Ord Rattletrap.Type.ClassAttributeMap.ClassAttributeMap
instance GHC.Classes.Eq Rattletrap.Type.ClassAttributeMap.ClassAttributeMap

module Rattletrap.Type.Word64le
newtype Word64le
Word64le :: Word64 -> Word64le
[word64leValue] :: Word64le -> Word64
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.Word64le.Word64le
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.Word64le.Word64le
instance GHC.Show.Show Rattletrap.Type.Word64le.Word64le
instance GHC.Classes.Ord Rattletrap.Type.Word64le.Word64le
instance GHC.Classes.Eq Rattletrap.Type.Word64le.Word64le

module Rattletrap.Type.RemoteId
data RemoteId
RemoteIdPlayStation :: Text -> [Word8] -> RemoteId
RemoteIdSplitscreen :: Word32 -> RemoteId
RemoteIdSteam :: Word64le -> RemoteId
RemoteIdSwitch :: Bitstream -> RemoteId
RemoteIdXbox :: Word64le -> RemoteId
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.RemoteId.RemoteId
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.RemoteId.RemoteId
instance GHC.Show.Show Rattletrap.Type.RemoteId.RemoteId
instance GHC.Classes.Ord Rattletrap.Type.RemoteId.RemoteId
instance GHC.Classes.Eq Rattletrap.Type.RemoteId.RemoteId

module Rattletrap.Type.QWordAttribute
newtype QWordAttribute
QWordAttribute :: Word64le -> QWordAttribute
[qWordAttributeValue] :: QWordAttribute -> Word64le
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.QWordAttribute.QWordAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.QWordAttribute.QWordAttribute
instance GHC.Show.Show Rattletrap.Type.QWordAttribute.QWordAttribute
instance GHC.Classes.Ord Rattletrap.Type.QWordAttribute.QWordAttribute
instance GHC.Classes.Eq Rattletrap.Type.QWordAttribute.QWordAttribute

module Rattletrap.Type.Word8le
newtype Word8le
Word8le :: Word8 -> Word8le
[word8leValue] :: Word8le -> Word8
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.Word8le.Word8le
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.Word8le.Word8le
instance GHC.Show.Show Rattletrap.Type.Word8le.Word8le
instance GHC.Classes.Ord Rattletrap.Type.Word8le.Word8le
instance GHC.Classes.Eq Rattletrap.Type.Word8le.Word8le

module Rattletrap.Type.UniqueIdAttribute
data UniqueIdAttribute
UniqueIdAttribute :: Word8le -> RemoteId -> Word8le -> UniqueIdAttribute
[uniqueIdAttributeSystemId] :: UniqueIdAttribute -> Word8le
[uniqueIdAttributeRemoteId] :: UniqueIdAttribute -> RemoteId
[uniqueIdAttributeLocalId] :: UniqueIdAttribute -> Word8le
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.UniqueIdAttribute.UniqueIdAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.UniqueIdAttribute.UniqueIdAttribute
instance GHC.Show.Show Rattletrap.Type.UniqueIdAttribute.UniqueIdAttribute
instance GHC.Classes.Ord Rattletrap.Type.UniqueIdAttribute.UniqueIdAttribute
instance GHC.Classes.Eq Rattletrap.Type.UniqueIdAttribute.UniqueIdAttribute

module Rattletrap.Type.ReservationAttribute
data ReservationAttribute
ReservationAttribute :: CompressedWord -> UniqueIdAttribute -> Maybe Str -> Bool -> Bool -> Maybe Word8 -> ReservationAttribute
[reservationAttributeNumber] :: ReservationAttribute -> CompressedWord
[reservationAttributeUniqueId] :: ReservationAttribute -> UniqueIdAttribute
[reservationAttributeName] :: ReservationAttribute -> Maybe Str
[reservationAttributeUnknown1] :: ReservationAttribute -> Bool
[reservationAttributeUnknown2] :: ReservationAttribute -> Bool
[reservationAttributeUnknown3] :: ReservationAttribute -> Maybe Word8
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.ReservationAttribute.ReservationAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.ReservationAttribute.ReservationAttribute
instance GHC.Show.Show Rattletrap.Type.ReservationAttribute.ReservationAttribute
instance GHC.Classes.Ord Rattletrap.Type.ReservationAttribute.ReservationAttribute
instance GHC.Classes.Eq Rattletrap.Type.ReservationAttribute.ReservationAttribute

module Rattletrap.Type.TeamPaintAttribute
data TeamPaintAttribute
TeamPaintAttribute :: Word8le -> Word8le -> Word8le -> Word32le -> Word32le -> TeamPaintAttribute
[teamPaintAttributeTeam] :: TeamPaintAttribute -> Word8le
[teamPaintAttributePrimaryColor] :: TeamPaintAttribute -> Word8le
[teamPaintAttributeAccentColor] :: TeamPaintAttribute -> Word8le
[teamPaintAttributePrimaryFinish] :: TeamPaintAttribute -> Word32le
[teamPaintAttributeAccentFinish] :: TeamPaintAttribute -> Word32le
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.TeamPaintAttribute.TeamPaintAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.TeamPaintAttribute.TeamPaintAttribute
instance GHC.Show.Show Rattletrap.Type.TeamPaintAttribute.TeamPaintAttribute
instance GHC.Classes.Ord Rattletrap.Type.TeamPaintAttribute.TeamPaintAttribute
instance GHC.Classes.Eq Rattletrap.Type.TeamPaintAttribute.TeamPaintAttribute

module Rattletrap.Type.PropertyValue
data PropertyValue a

-- | Yes, a list of dictionaries. No, it doesn't make sense. These usually
--   only have one element.
PropertyValueArray :: (List (Dictionary a)) -> PropertyValue a
PropertyValueBool :: Word8le -> PropertyValue a

-- | This is a strange name for essentially a key-value pair.
PropertyValueByte :: Str -> (Maybe Str) -> PropertyValue a
PropertyValueFloat :: Float32le -> PropertyValue a
PropertyValueInt :: Int32le -> PropertyValue a

-- | It's unclear how exactly this is different than a
--   <tt>StrProperty</tt>.
PropertyValueName :: Str -> PropertyValue a
PropertyValueQWord :: Word64le -> PropertyValue a
PropertyValueStr :: Str -> PropertyValue a
instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (Rattletrap.Type.PropertyValue.PropertyValue a)
instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Rattletrap.Type.PropertyValue.PropertyValue a)
instance GHC.Show.Show a => GHC.Show.Show (Rattletrap.Type.PropertyValue.PropertyValue a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Rattletrap.Type.PropertyValue.PropertyValue a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Rattletrap.Type.PropertyValue.PropertyValue a)

module Rattletrap.Type.Property
data Property
Property :: Str -> Word64le -> PropertyValue Property -> Property
[propertyKind] :: Property -> Str

-- | Not used.
[propertySize] :: Property -> Word64le
[propertyValue] :: Property -> PropertyValue Property
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.Property.Property
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.Property.Property
instance GHC.Show.Show Rattletrap.Type.Property.Property
instance GHC.Classes.Ord Rattletrap.Type.Property.Property
instance GHC.Classes.Eq Rattletrap.Type.Property.Property

module Rattletrap.Type.Header

-- | Contains high-level metadata about a <a>Replay</a>.
data Header
Header :: Word32le -> Word32le -> Maybe Word32le -> Str -> Dictionary Property -> Header

-- | The "major" ("engine") version number.
[headerEngineVersion] :: Header -> Word32le

-- | The "minor" ("licensee") version number.
[headerLicenseeVersion] :: Header -> Word32le

-- | The "patch" ("net") version number.
[headerPatchVersion] :: Header -> Maybe Word32le

-- | Always <tt>TAGame.Replay_Soccar_TA</tt>.
[headerLabel] :: Header -> Str

-- | These properties determine how a replay will look in the list of
--   replays in-game. One element is required for the replay to show up:
--   
--   <ul>
--   <li>MapName: This is a <a>NameProperty</a> with a case-insensitive map
--   identifier, like <tt>Stadium_P</tt>.</li>
--   </ul>
--   
--   There are many other properties that affect how the replay looks in
--   the list of replays.
--   
--   <ul>
--   <li>Date: A <a>StrProperty</a> with the format
--   <tt>YYYY-mm-dd:HH-MM</tt>. Dates are not validated, but the month must
--   be between 1 and 12 to show up. The hour is shown modulo 12 with AM or
--   PM.</li>
--   <li>MatchType: A <a>NameProperty</a>. If this is not one of the
--   expected values, nothing will be shown next to the replay's map. The
--   expected values are: <tt>Online</tt>, <tt>Offline</tt>,
--   <tt>Private</tt>, and <tt>Season</tt>.</li>
--   <li>NumFrames: This <a>IntProperty</a> is used to calculate the length
--   of the match. There are 30 frames per second, a typical 5-minute match
--   has about 9,000 frames.</li>
--   <li>PrimaryPlayerTeam: This is an <a>IntProperty</a>. It is either 0
--   (blue) or 1 (orange). Any other value is ignored. If this would be 0,
--   you don't have to set it at all.</li>
--   <li>ReplayName: An optional <a>StrProperty</a> with a user-supplied
--   name for the replay.</li>
--   <li>Team0Score: The blue team's score as an <a>IntProperty</a>. Can be
--   omitted if the score is 0.</li>
--   <li>Team1Score: The orange team's score as an <a>IntProperty</a>. Can
--   also be omitted if the score is 0.</li>
--   <li>TeamSize: An <a>IntProperty</a> with the number of players per
--   team. This value is not validated, so you can put absurd values like
--   99. To get an "unfair" team size like 1v4, you must set the
--   bUnfairBots <a>BoolProperty</a> to <tt>True</tt>.</li>
--   </ul>
[headerProperties] :: Header -> Dictionary Property
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.Header.Header
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.Header.Header
instance GHC.Show.Show Rattletrap.Type.Header.Header
instance GHC.Classes.Ord Rattletrap.Type.Header.Header
instance GHC.Classes.Eq Rattletrap.Type.Header.Header

module Rattletrap.Type.PartyLeaderAttribute
data PartyLeaderAttribute
PartyLeaderAttribute :: Word8le -> Maybe (RemoteId, Word8le) -> PartyLeaderAttribute
[partyLeaderAttributeSystemId] :: PartyLeaderAttribute -> Word8le
[partyLeaderAttributeId] :: PartyLeaderAttribute -> Maybe (RemoteId, Word8le)
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.PartyLeaderAttribute.PartyLeaderAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.PartyLeaderAttribute.PartyLeaderAttribute
instance GHC.Show.Show Rattletrap.Type.PartyLeaderAttribute.PartyLeaderAttribute
instance GHC.Classes.Ord Rattletrap.Type.PartyLeaderAttribute.PartyLeaderAttribute
instance GHC.Classes.Eq Rattletrap.Type.PartyLeaderAttribute.PartyLeaderAttribute

module Rattletrap.Type.MusicStingerAttribute
data MusicStingerAttribute
MusicStingerAttribute :: Bool -> Word32le -> Word8le -> MusicStingerAttribute
[musicStingerAttributeFlag] :: MusicStingerAttribute -> Bool
[musicStingerAttributeCue] :: MusicStingerAttribute -> Word32le
[musicStingerAttributeTrigger] :: MusicStingerAttribute -> Word8le
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.MusicStingerAttribute.MusicStingerAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.MusicStingerAttribute.MusicStingerAttribute
instance GHC.Show.Show Rattletrap.Type.MusicStingerAttribute.MusicStingerAttribute
instance GHC.Classes.Ord Rattletrap.Type.MusicStingerAttribute.MusicStingerAttribute
instance GHC.Classes.Eq Rattletrap.Type.MusicStingerAttribute.MusicStingerAttribute

module Rattletrap.Type.LoadoutAttribute
data LoadoutAttribute
LoadoutAttribute :: Word8le -> Word32le -> Word32le -> Word32le -> Word32le -> Word32le -> Word32le -> Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> LoadoutAttribute
[loadoutAttributeVersion] :: LoadoutAttribute -> Word8le
[loadoutAttributeBody] :: LoadoutAttribute -> Word32le
[loadoutAttributeDecal] :: LoadoutAttribute -> Word32le
[loadoutAttributeWheels] :: LoadoutAttribute -> Word32le

-- | Now known as "rocket boost".
[loadoutAttributeRocketTrail] :: LoadoutAttribute -> Word32le
[loadoutAttributeAntenna] :: LoadoutAttribute -> Word32le
[loadoutAttributeTopper] :: LoadoutAttribute -> Word32le
[loadoutAttributeUnknown1] :: LoadoutAttribute -> Word32le
[loadoutAttributeUnknown2] :: LoadoutAttribute -> Maybe Word32le
[loadoutAttributeEngineAudio] :: LoadoutAttribute -> Maybe Word32le
[loadoutAttributeTrail] :: LoadoutAttribute -> Maybe Word32le
[loadoutAttributeGoalExplosion] :: LoadoutAttribute -> Maybe Word32le
[loadoutAttributeBanner] :: LoadoutAttribute -> Maybe Word32le
[loadoutAttributeUnknown3] :: LoadoutAttribute -> Maybe Word32le
[loadoutAttributeUnknown4] :: LoadoutAttribute -> Maybe Word32le
[loadoutAttributeUnknown5] :: LoadoutAttribute -> Maybe Word32le
[loadoutAttributeUnknown6] :: LoadoutAttribute -> Maybe Word32le
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.LoadoutAttribute.LoadoutAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.LoadoutAttribute.LoadoutAttribute
instance GHC.Show.Show Rattletrap.Type.LoadoutAttribute.LoadoutAttribute
instance GHC.Classes.Ord Rattletrap.Type.LoadoutAttribute.LoadoutAttribute
instance GHC.Classes.Eq Rattletrap.Type.LoadoutAttribute.LoadoutAttribute

module Rattletrap.Type.LoadoutsAttribute
data LoadoutsAttribute
LoadoutsAttribute :: LoadoutAttribute -> LoadoutAttribute -> LoadoutsAttribute
[loadoutsAttributeBlue] :: LoadoutsAttribute -> LoadoutAttribute
[loadoutsAttributeOrange] :: LoadoutsAttribute -> LoadoutAttribute
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.LoadoutsAttribute.LoadoutsAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.LoadoutsAttribute.LoadoutsAttribute
instance GHC.Show.Show Rattletrap.Type.LoadoutsAttribute.LoadoutsAttribute
instance GHC.Classes.Ord Rattletrap.Type.LoadoutsAttribute.LoadoutsAttribute
instance GHC.Classes.Eq Rattletrap.Type.LoadoutsAttribute.LoadoutsAttribute

module Rattletrap.Type.DamageStateAttribute
data DamageStateAttribute
DamageStateAttribute :: Word8le -> Bool -> Int32le -> Vector -> Bool -> Bool -> DamageStateAttribute
[damageStateAttributeUnknown1] :: DamageStateAttribute -> Word8le
[damageStateAttributeUnknown2] :: DamageStateAttribute -> Bool
[damageStateAttributeUnknown3] :: DamageStateAttribute -> Int32le
[damageStateAttributeUnknown4] :: DamageStateAttribute -> Vector
[damageStateAttributeUnknown5] :: DamageStateAttribute -> Bool
[damageStateAttributeUnknown6] :: DamageStateAttribute -> Bool
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.DamageStateAttribute.DamageStateAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.DamageStateAttribute.DamageStateAttribute
instance GHC.Show.Show Rattletrap.Type.DamageStateAttribute.DamageStateAttribute
instance GHC.Classes.Ord Rattletrap.Type.DamageStateAttribute.DamageStateAttribute
instance GHC.Classes.Eq Rattletrap.Type.DamageStateAttribute.DamageStateAttribute

module Rattletrap.Type.ClubColorsAttribute
data ClubColorsAttribute
ClubColorsAttribute :: Bool -> Word8le -> Bool -> Word8le -> ClubColorsAttribute
[clubColorsAttributeBlueFlag] :: ClubColorsAttribute -> Bool
[clubColorsAttributeBlueColor] :: ClubColorsAttribute -> Word8le
[clubColorsAttributeOrangeFlag] :: ClubColorsAttribute -> Bool
[clubColorsAttributeOrangeColor] :: ClubColorsAttribute -> Word8le
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.ClubColorsAttribute.ClubColorsAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.ClubColorsAttribute.ClubColorsAttribute
instance GHC.Show.Show Rattletrap.Type.ClubColorsAttribute.ClubColorsAttribute
instance GHC.Classes.Ord Rattletrap.Type.ClubColorsAttribute.ClubColorsAttribute
instance GHC.Classes.Eq Rattletrap.Type.ClubColorsAttribute.ClubColorsAttribute

module Rattletrap.Type.ByteAttribute
newtype ByteAttribute
ByteAttribute :: Word8le -> ByteAttribute
[byteAttributeValue] :: ByteAttribute -> Word8le
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.ByteAttribute.ByteAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.ByteAttribute.ByteAttribute
instance GHC.Show.Show Rattletrap.Type.ByteAttribute.ByteAttribute
instance GHC.Classes.Ord Rattletrap.Type.ByteAttribute.ByteAttribute
instance GHC.Classes.Eq Rattletrap.Type.ByteAttribute.ByteAttribute

module Rattletrap.Type.AppliedDamageAttribute
data AppliedDamageAttribute
AppliedDamageAttribute :: Word8le -> Vector -> Int32le -> Int32le -> AppliedDamageAttribute
[appliedDamageAttributeUnknown1] :: AppliedDamageAttribute -> Word8le
[appliedDamageAttributeLocation] :: AppliedDamageAttribute -> Vector
[appliedDamageAttributeUnknown3] :: AppliedDamageAttribute -> Int32le
[appliedDamageAttributeUnknown4] :: AppliedDamageAttribute -> Int32le
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.AppliedDamageAttribute.AppliedDamageAttribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.AppliedDamageAttribute.AppliedDamageAttribute
instance GHC.Show.Show Rattletrap.Type.AppliedDamageAttribute.AppliedDamageAttribute
instance GHC.Classes.Ord Rattletrap.Type.AppliedDamageAttribute.AppliedDamageAttribute
instance GHC.Classes.Eq Rattletrap.Type.AppliedDamageAttribute.AppliedDamageAttribute

module Rattletrap.Type.AttributeValue
data AttributeValue
AttributeValueAppliedDamage :: AppliedDamageAttribute -> AttributeValue
AttributeValueBoolean :: BooleanAttribute -> AttributeValue
AttributeValueByte :: ByteAttribute -> AttributeValue
AttributeValueCamSettings :: CamSettingsAttribute -> AttributeValue
AttributeValueClubColors :: ClubColorsAttribute -> AttributeValue
AttributeValueDamageState :: DamageStateAttribute -> AttributeValue
AttributeValueDemolish :: DemolishAttribute -> AttributeValue
AttributeValueEnum :: EnumAttribute -> AttributeValue
AttributeValueExplosion :: ExplosionAttribute -> AttributeValue
AttributeValueExtendedExplosion :: ExtendedExplosionAttribute -> AttributeValue
AttributeValueFlaggedInt :: FlaggedIntAttribute -> AttributeValue
AttributeValueFloat :: FloatAttribute -> AttributeValue
AttributeValueGameMode :: GameModeAttribute -> AttributeValue
AttributeValueInt :: IntAttribute -> AttributeValue
AttributeValueLoadout :: LoadoutAttribute -> AttributeValue
AttributeValueLoadoutOnline :: LoadoutOnlineAttribute -> AttributeValue
AttributeValueLoadouts :: LoadoutsAttribute -> AttributeValue
AttributeValueLoadoutsOnline :: LoadoutsOnlineAttribute -> AttributeValue
AttributeValueLocation :: LocationAttribute -> AttributeValue
AttributeValueMusicStinger :: MusicStingerAttribute -> AttributeValue
AttributeValuePartyLeader :: PartyLeaderAttribute -> AttributeValue
AttributeValuePickup :: PickupAttribute -> AttributeValue
AttributeValuePlayerHistoryKey :: PlayerHistoryKeyAttribute -> AttributeValue
AttributeValuePrivateMatchSettings :: PrivateMatchSettingsAttribute -> AttributeValue
AttributeValueQWord :: QWordAttribute -> AttributeValue
AttributeValueReservation :: ReservationAttribute -> AttributeValue
AttributeValueRigidBodyState :: RigidBodyStateAttribute -> AttributeValue
AttributeValueStatEvent :: StatEventAttribute -> AttributeValue
AttributeValueString :: StringAttribute -> AttributeValue
AttributeValueTeamPaint :: TeamPaintAttribute -> AttributeValue
AttributeValueTitle :: TitleAttribute -> AttributeValue
AttributeValueUniqueId :: UniqueIdAttribute -> AttributeValue
AttributeValueWeldedInfo :: WeldedInfoAttribute -> AttributeValue
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.AttributeValue.AttributeValue
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.AttributeValue.AttributeValue
instance GHC.Show.Show Rattletrap.Type.AttributeValue.AttributeValue
instance GHC.Classes.Ord Rattletrap.Type.AttributeValue.AttributeValue
instance GHC.Classes.Eq Rattletrap.Type.AttributeValue.AttributeValue

module Rattletrap.Type.Attribute
data Attribute
Attribute :: CompressedWord -> Str -> AttributeValue -> Attribute
[attributeId] :: Attribute -> CompressedWord

-- | Read-only! Changing an attribute's name requires editing the class
--   attribute map.
[attributeName] :: Attribute -> Str
[attributeValue] :: Attribute -> AttributeValue
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.Attribute.Attribute
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.Attribute.Attribute
instance GHC.Show.Show Rattletrap.Type.Attribute.Attribute
instance GHC.Classes.Ord Rattletrap.Type.Attribute.Attribute
instance GHC.Classes.Eq Rattletrap.Type.Attribute.Attribute

module Rattletrap.Type.UpdatedReplication
newtype UpdatedReplication
UpdatedReplication :: [Attribute] -> UpdatedReplication
[updatedReplicationAttributes] :: UpdatedReplication -> [Attribute]
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.UpdatedReplication.UpdatedReplication
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.UpdatedReplication.UpdatedReplication
instance GHC.Show.Show Rattletrap.Type.UpdatedReplication.UpdatedReplication
instance GHC.Classes.Ord Rattletrap.Type.UpdatedReplication.UpdatedReplication
instance GHC.Classes.Eq Rattletrap.Type.UpdatedReplication.UpdatedReplication

module Rattletrap.Type.ReplicationValue
data ReplicationValue

-- | Creates a new actor.
ReplicationValueSpawned :: SpawnedReplication -> ReplicationValue

-- | Updates an existing actor.
ReplicationValueUpdated :: UpdatedReplication -> ReplicationValue

-- | Destroys an existing actor.
ReplicationValueDestroyed :: DestroyedReplication -> ReplicationValue
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.ReplicationValue.ReplicationValue
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.ReplicationValue.ReplicationValue
instance GHC.Show.Show Rattletrap.Type.ReplicationValue.ReplicationValue
instance GHC.Classes.Ord Rattletrap.Type.ReplicationValue.ReplicationValue
instance GHC.Classes.Eq Rattletrap.Type.ReplicationValue.ReplicationValue

module Rattletrap.Type.Replication
data Replication
Replication :: CompressedWord -> ReplicationValue -> Replication
[replicationActorId] :: Replication -> CompressedWord
[replicationValue] :: Replication -> ReplicationValue
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.Replication.Replication
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.Replication.Replication
instance GHC.Show.Show Rattletrap.Type.Replication.Replication
instance GHC.Classes.Ord Rattletrap.Type.Replication.Replication
instance GHC.Classes.Eq Rattletrap.Type.Replication.Replication

module Rattletrap.Type.Frame
data Frame
Frame :: Float32le -> Float32le -> [Replication] -> Frame

-- | Time in seconds since the beginning of the match.
[frameTime] :: Frame -> Float32le

-- | Time in seconds since the last frame. Usually about 0.03 since there
--   are 30 frames per second.
[frameDelta] :: Frame -> Float32le
[frameReplications] :: Frame -> [Replication]
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.Frame.Frame
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.Frame.Frame
instance GHC.Show.Show Rattletrap.Type.Frame.Frame
instance GHC.Classes.Ord Rattletrap.Type.Frame.Frame
instance GHC.Classes.Eq Rattletrap.Type.Frame.Frame

module Rattletrap.Type.Content

-- | Contains low-level game data about a <a>Replay</a>.
data Content
Content :: List Str -> List KeyFrame -> Word32le -> [Frame] -> List Message -> List Mark -> List Str -> List Str -> List Str -> List ClassMapping -> List Cache -> Content

-- | This typically only has one element, like
--   <tt>stadium_oob_audio_map</tt>.
[contentLevels] :: Content -> List Str

-- | A list of which frames are key frames. Although they aren't necessary
--   for replay, key frames are frames that replicate every actor. They
--   typically happen once every 10 seconds.
[contentKeyFrames] :: Content -> List KeyFrame

-- | The size of the stream in bytes. This is only really necessary because
--   the stream has some arbitrary amount of padding at the end.
[contentStreamSize] :: Content -> Word32le

-- | The actual game data. This is where all the interesting information
--   is.
[contentFrames] :: Content -> [Frame]

-- | Debugging messages. In newer replays, this is always empty.
[contentMessages] :: Content -> List Message

-- | Tick marks shown on the scrubber when watching a replay.
[contentMarks] :: Content -> List Mark

-- | A list of <tt>.upk</tt> files to load, like
--   <tt>..\..\TAGame\CookedPCConsole\Stadium_P.upk</tt>.
[contentPackages] :: Content -> List Str

-- | Objects in the stream. Used for the <a>ClassAttributeMap</a>.
[contentObjects] :: Content -> List Str

-- | It's not clear what these are used for. This list is usually not
--   empty, but appears unused otherwise.
[contentNames] :: Content -> List Str

-- | A mapping between classes and their ID in the stream. Used for the
--   <a>ClassAttributeMap</a>.
[contentClassMappings] :: Content -> List ClassMapping

-- | A list of classes along with their parent classes and attributes. Used
--   for the <a>ClassAttributeMap</a>.
[contentCaches] :: Content -> List Cache
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.Content.Content
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.Content.Content
instance GHC.Show.Show Rattletrap.Type.Content.Content
instance GHC.Classes.Ord Rattletrap.Type.Content.Content
instance GHC.Classes.Eq Rattletrap.Type.Content.Content

module Rattletrap.Type.Replay

-- | A Rocket League replay.
data Replay
Replay :: Section Header -> Section Content -> Replay

-- | This has most of the high-level metadata.
[replayHeader] :: Replay -> Section Header

-- | This has most of the low-level game data.
[replayContent] :: Replay -> Section Content
instance Data.Aeson.Types.ToJSON.ToJSON Rattletrap.Type.Replay.Replay
instance Data.Aeson.Types.FromJSON.FromJSON Rattletrap.Type.Replay.Replay
instance GHC.Show.Show Rattletrap.Type.Replay.Replay
instance GHC.Classes.Ord Rattletrap.Type.Replay.Replay
instance GHC.Classes.Eq Rattletrap.Type.Replay.Replay

module Rattletrap.Utility.Bytes
encodeLatin1 :: Text -> ByteString
padBytes :: Integral a => a -> ByteString -> ByteString
reverseByte :: Word8 -> Word8
reverseBytes :: ByteString -> ByteString

module Rattletrap.Encode.Word8le
putWord8 :: Word8le -> Put
putWord8Bits :: Word8le -> BitPut ()

module Rattletrap.Encode.ClubColorsAttribute
putClubColorsAttribute :: ClubColorsAttribute -> BitPut ()

module Rattletrap.Encode.ByteAttribute
putByteAttribute :: ByteAttribute -> BitPut ()

module Rattletrap.Encode.Word64le
putWord64 :: Word64le -> Put
putWord64Bits :: Word64le -> BitPut ()

module Rattletrap.Encode.QWordAttribute
putQWordAttribute :: QWordAttribute -> BitPut ()

module Rattletrap.Encode.Word32le
putWord32 :: Word32le -> Put
putWord32Bits :: Word32le -> BitPut ()

module Rattletrap.Encode.TitleAttribute
putTitleAttribute :: TitleAttribute -> BitPut ()

module Rattletrap.Encode.TeamPaintAttribute
putTeamPaintAttribute :: TeamPaintAttribute -> BitPut ()

module Rattletrap.Encode.ProductAttribute
putProductAttributes :: [ProductAttribute] -> BitPut ()
putProductAttribute :: ProductAttribute -> BitPut ()

module Rattletrap.Encode.LoadoutOnlineAttribute
putLoadoutOnlineAttribute :: LoadoutOnlineAttribute -> BitPut ()

module Rattletrap.Encode.LoadoutsOnlineAttribute
putLoadoutsOnlineAttribute :: LoadoutsOnlineAttribute -> BitPut ()

module Rattletrap.Encode.PickupAttribute
putPickupAttribute :: PickupAttribute -> BitPut ()

module Rattletrap.Encode.MusicStingerAttribute
putMusicStingerAttribute :: MusicStingerAttribute -> BitPut ()

module Rattletrap.Encode.LoadoutAttribute
putLoadoutAttribute :: LoadoutAttribute -> BitPut ()

module Rattletrap.Encode.LoadoutsAttribute
putLoadoutsAttribute :: LoadoutsAttribute -> BitPut ()

module Rattletrap.Encode.List
putList :: (a -> Put) -> List a -> Put

module Rattletrap.Encode.DemolishAttribute
putDemolishAttribute :: DemolishAttribute -> BitPut ()

module Rattletrap.Encode.AttributeMapping
putAttributeMapping :: AttributeMapping -> Put

module Rattletrap.Encode.Cache
putCache :: Cache -> Put

module Rattletrap.Encode.RemoteId
putRemoteId :: RemoteId -> BitPut ()

module Rattletrap.Encode.UniqueIdAttribute
putUniqueIdAttribute :: UniqueIdAttribute -> BitPut ()

module Rattletrap.Encode.PartyLeaderAttribute
putPartyLeaderAttribute :: PartyLeaderAttribute -> BitPut ()

module Rattletrap.Encode.Int8le
putInt8 :: Int8le -> Put
putInt8Bits :: Int8le -> BitPut ()

module Rattletrap.Encode.Int8Vector
putInt8Vector :: Int8Vector -> BitPut ()

module Rattletrap.Encode.Initialization
putInitialization :: Initialization -> BitPut ()

module Rattletrap.Encode.SpawnedReplication
putSpawnedReplication :: SpawnedReplication -> BitPut ()

module Rattletrap.Encode.Int32le
putInt32 :: Int32le -> Put
putInt32Bits :: Int32le -> BitPut ()

module Rattletrap.Encode.Str
putText :: Str -> Put
putTextBits :: Str -> BitPut ()

module Rattletrap.Encode.StringAttribute
putStringAttribute :: StringAttribute -> BitPut ()

module Rattletrap.Encode.ReservationAttribute
putReservationAttribute :: ReservationAttribute -> BitPut ()

module Rattletrap.Encode.PrivateMatchSettingsAttribute
putPrivateMatchSettingsAttribute :: PrivateMatchSettingsAttribute -> BitPut ()

module Rattletrap.Encode.Message
putMessage :: Message -> Put

module Rattletrap.Encode.Mark
putMark :: Mark -> Put

module Rattletrap.Encode.Dictionary
putDictionary :: (a -> Put) -> Dictionary a -> Put

module Rattletrap.Encode.ClassMapping
putClassMapping :: ClassMapping -> Put

module Rattletrap.Encode.StatEventAttribute
putStatEventAttribute :: StatEventAttribute -> BitPut ()

module Rattletrap.Encode.IntAttribute
putIntAttribute :: IntAttribute -> BitPut ()

module Rattletrap.Encode.FlaggedIntAttribute
putFlaggedIntAttribute :: FlaggedIntAttribute -> BitPut ()

module Rattletrap.Encode.ExplosionAttribute
putExplosionAttribute :: ExplosionAttribute -> BitPut ()

module Rattletrap.Encode.ExtendedExplosionAttribute
putExtendedExplosionAttribute :: ExtendedExplosionAttribute -> BitPut ()

module Rattletrap.Encode.DamageStateAttribute
putDamageStateAttribute :: DamageStateAttribute -> BitPut ()

module Rattletrap.Encode.AppliedDamageAttribute
putAppliedDamageAttribute :: AppliedDamageAttribute -> BitPut ()

module Rattletrap.Encode.Float32le
putFloat32 :: Float32le -> Put
putFloat32Bits :: Float32le -> BitPut ()

module Rattletrap.Encode.WeldedInfoAttribute
putWeldedInfoAttribute :: WeldedInfoAttribute -> BitPut ()

module Rattletrap.Encode.PropertyValue
putPropertyValue :: (a -> Put) -> PropertyValue a -> Put

module Rattletrap.Encode.Property
putProperty :: Property -> Put

module Rattletrap.Encode.Header
putHeader :: Header -> Put

module Rattletrap.Encode.KeyFrame
putKeyFrame :: KeyFrame -> Put

module Rattletrap.Encode.FloatAttribute
putFloatAttribute :: FloatAttribute -> BitPut ()

module Rattletrap.Encode.CamSettingsAttribute
putCamSettingsAttribute :: CamSettingsAttribute -> BitPut ()

module Rattletrap.Encode.AttributeValue
putAttributeValue :: AttributeValue -> BitPut ()

module Rattletrap.Encode.Attribute
putAttributes :: [Attribute] -> BitPut ()
putAttribute :: Attribute -> BitPut ()

module Rattletrap.Encode.UpdatedReplication
putUpdatedReplication :: UpdatedReplication -> BitPut ()

module Rattletrap.Encode.ReplicationValue
putReplicationValue :: ReplicationValue -> BitPut ()

module Rattletrap.Encode.Replication
putReplications :: [Replication] -> BitPut ()
putReplication :: Replication -> BitPut ()

module Rattletrap.Encode.Frame
putFrames :: [Frame] -> BitPut ()
putFrame :: Frame -> BitPut ()

module Rattletrap.Encode.Content
putContent :: Content -> Put

module Rattletrap.Decode.Common
type Decode = Get
type DecodeBits = BitGet
decodeWhen :: (Applicative m, Alternative f) => Bool -> m a -> m (f a)
getLazyByteStringBits :: Int -> DecodeBits ByteString
getWord8Bits :: Int -> DecodeBits Word8
runDecode :: Decode a -> ByteString -> Either String a
runDecodeBits :: DecodeBits a -> ByteString -> Either String a
toBits :: Decode a -> Int -> DecodeBits a

-- | Read a <a>Float</a> in little endian IEEE-754 format.
getFloatle :: Get Float

-- | An efficient get method for lazy ByteStrings. Fails if fewer than
--   <tt>n</tt> bytes are left in the input.
getLazyByteString :: Int64 -> Get ByteString

-- | Read an Int8 from the monad state
getInt8 :: Get Int8

-- | Read an Int32 in little endian format.
getInt32le :: Get Int32

-- | Read a Word8 from the monad state
getWord8 :: Get Word8

-- | Read a Word32 in little endian format
getWord32le :: Get Word32

-- | Read a Word64 in little endian format
getWord64le :: Get Word64

-- | Get 1 bit as a <a>Bool</a>.
getBool :: BitGet Bool

-- | Get <tt>n</tt> bits as a <a>Word16</a>. <tt>n</tt> must be within
--   <tt>[0..16]</tt>.
getWord16be :: Int -> BitGet Word16

-- | Get <tt>n</tt> bits as a <a>Word32</a>. <tt>n</tt> must be within
--   <tt>[0..32]</tt>.
getWord32be :: Int -> BitGet Word32

module Rattletrap.Decode.Word8le
decodeWord8le :: Decode Word8le
decodeWord8leBits :: DecodeBits Word8le

module Rattletrap.Decode.Word64le
decodeWord64le :: Decode Word64le
decodeWord64leBits :: DecodeBits Word64le

module Rattletrap.Decode.Word32le
decodeWord32le :: Decode Word32le
decodeWord32leBits :: DecodeBits Word32le

module Rattletrap.Decode.TitleAttribute
decodeTitleAttributeBits :: DecodeBits TitleAttribute

module Rattletrap.Decode.TeamPaintAttribute
decodeTeamPaintAttributeBits :: DecodeBits TeamPaintAttribute

module Rattletrap.Decode.QWordAttribute
decodeQWordAttributeBits :: DecodeBits QWordAttribute

module Rattletrap.Decode.PickupAttribute
decodePickupAttributeBits :: DecodeBits PickupAttribute

module Rattletrap.Decode.MusicStingerAttribute
decodeMusicStingerAttributeBits :: DecodeBits MusicStingerAttribute

module Rattletrap.Decode.LoadoutAttribute
decodeLoadoutAttributeBits :: DecodeBits LoadoutAttribute

module Rattletrap.Decode.LoadoutsAttribute
decodeLoadoutsAttributeBits :: DecodeBits LoadoutsAttribute

module Rattletrap.Decode.List
decodeList :: Decode a -> Decode (List a)

module Rattletrap.Decode.Int8le
decodeInt8le :: Decode Int8le
decodeInt8leBits :: DecodeBits Int8le

module Rattletrap.Decode.Int8Vector
decodeInt8VectorBits :: DecodeBits Int8Vector

module Rattletrap.Decode.Int32le
decodeInt32le :: Decode Int32le
decodeInt32leBits :: DecodeBits Int32le

module Rattletrap.Decode.Str
decodeStr :: Decode Str
decodeStrBits :: DecodeBits Str

module Rattletrap.Decode.StringAttribute
decodeStringAttributeBits :: DecodeBits StringAttribute

module Rattletrap.Decode.PrivateMatchSettingsAttribute
decodePrivateMatchSettingsAttributeBits :: DecodeBits PrivateMatchSettingsAttribute

module Rattletrap.Decode.Message
decodeMessage :: Decode Message

module Rattletrap.Decode.Mark
decodeMark :: Decode Mark

module Rattletrap.Decode.StatEventAttribute
decodeStatEventAttributeBits :: DecodeBits StatEventAttribute

module Rattletrap.Decode.IntAttribute
decodeIntAttributeBits :: DecodeBits IntAttribute

module Rattletrap.Decode.GameModeAttribute
decodeGameModeAttributeBits :: (Int, Int, Int) -> DecodeBits GameModeAttribute

module Rattletrap.Decode.Float32le
decodeFloat32le :: Decode Float32le
decodeFloat32leBits :: DecodeBits Float32le

module Rattletrap.Decode.KeyFrame
decodeKeyFrame :: Decode KeyFrame

module Rattletrap.Decode.FloatAttribute
decodeFloatAttributeBits :: DecodeBits FloatAttribute

module Rattletrap.Decode.FlaggedIntAttribute
decodeFlaggedIntAttributeBits :: DecodeBits FlaggedIntAttribute

module Rattletrap.Decode.EnumAttribute
decodeEnumAttributeBits :: DecodeBits EnumAttribute

module Rattletrap.Decode.Dictionary
decodeDictionary :: Decode a -> Decode (Dictionary a)

module Rattletrap.Decode.PropertyValue
decodePropertyValue :: Decode a -> Str -> Decode (PropertyValue a)

module Rattletrap.Decode.Property
decodeProperty :: Decode Property

module Rattletrap.Decode.Header
decodeHeader :: Decode Header

module Rattletrap.Decode.DestroyedReplication
decodeDestroyedReplicationBits :: DecodeBits DestroyedReplication

module Rattletrap.Decode.CompressedWord
decodeCompressedWordBits :: Word -> DecodeBits CompressedWord

module Rattletrap.Decode.Vector
decodeVectorBits :: (Int, Int, Int) -> DecodeBits Vector

module Rattletrap.Decode.WeldedInfoAttribute
decodeWeldedInfoAttributeBits :: (Int, Int, Int) -> DecodeBits WeldedInfoAttribute

module Rattletrap.Decode.LocationAttribute
decodeLocationAttributeBits :: (Int, Int, Int) -> DecodeBits LocationAttribute

module Rattletrap.Decode.Initialization
decodeInitializationBits :: (Int, Int, Int) -> Bool -> Bool -> DecodeBits Initialization

module Rattletrap.Decode.SpawnedReplication
decodeSpawnedReplicationBits :: (Int, Int, Int) -> ClassAttributeMap -> CompressedWord -> StateT (Map CompressedWord Word32le) DecodeBits SpawnedReplication

module Rattletrap.Decode.ExplosionAttribute
decodeExplosionAttributeBits :: (Int, Int, Int) -> DecodeBits ExplosionAttribute

module Rattletrap.Decode.ExtendedExplosionAttribute
decodeExtendedExplosionAttributeBits :: (Int, Int, Int) -> DecodeBits ExtendedExplosionAttribute

module Rattletrap.Decode.DemolishAttribute
decodeDemolishAttributeBits :: (Int, Int, Int) -> DecodeBits DemolishAttribute

module Rattletrap.Decode.DamageStateAttribute
decodeDamageStateAttributeBits :: (Int, Int, Int) -> DecodeBits DamageStateAttribute

module Rattletrap.Decode.ProductAttribute
decodeProductAttributesBits :: (Int, Int, Int) -> Map Word32le Str -> DecodeBits [ProductAttribute]
decodeProductAttributeBits :: (Int, Int, Int) -> Map Word32le Str -> DecodeBits ProductAttribute

module Rattletrap.Decode.LoadoutOnlineAttribute
decodeLoadoutOnlineAttributeBits :: (Int, Int, Int) -> Map Word32le Str -> DecodeBits LoadoutOnlineAttribute

module Rattletrap.Decode.LoadoutsOnlineAttribute
decodeLoadoutsOnlineAttributeBits :: (Int, Int, Int) -> Map Word32le Str -> DecodeBits LoadoutsOnlineAttribute

module Rattletrap.Decode.CompressedWordVector
decodeCompressedWordVectorBits :: (Int, Int, Int) -> DecodeBits CompressedWordVector

module Rattletrap.Decode.RigidBodyStateAttribute
decodeRigidBodyStateAttributeBits :: (Int, Int, Int) -> DecodeBits RigidBodyStateAttribute

module Rattletrap.Decode.ClubColorsAttribute
decodeClubColorsAttributeBits :: DecodeBits ClubColorsAttribute

module Rattletrap.Decode.ClassMapping
decodeClassMapping :: Decode ClassMapping

module Rattletrap.Decode.CamSettingsAttribute
decodeCamSettingsAttributeBits :: (Int, Int, Int) -> DecodeBits CamSettingsAttribute

module Rattletrap.Decode.ByteAttribute
decodeByteAttributeBits :: DecodeBits ByteAttribute

module Rattletrap.Decode.BooleanAttribute
decodeBooleanAttributeBits :: DecodeBits BooleanAttribute

module Rattletrap.Decode.Bitstream
decodeBitstreamBits :: Int -> DecodeBits Bitstream

module Rattletrap.Decode.RemoteId
decodeRemoteIdBits :: (Int, Int, Int) -> Word8le -> DecodeBits RemoteId

module Rattletrap.Decode.UniqueIdAttribute
decodeUniqueIdAttributeBits :: (Int, Int, Int) -> DecodeBits UniqueIdAttribute

module Rattletrap.Decode.ReservationAttribute
decodeReservationAttributeBits :: (Int, Int, Int) -> DecodeBits ReservationAttribute

module Rattletrap.Decode.PartyLeaderAttribute
decodePartyLeaderAttributeBits :: (Int, Int, Int) -> DecodeBits PartyLeaderAttribute

module Rattletrap.Decode.PlayerHistoryKeyAttribute
decodePlayerHistoryKeyAttributeBits :: DecodeBits PlayerHistoryKeyAttribute

module Rattletrap.Decode.AttributeMapping
decodeAttributeMapping :: Decode AttributeMapping

module Rattletrap.Decode.Cache
decodeCache :: Decode Cache

module Rattletrap.Decode.AppliedDamageAttribute
decodeAppliedDamageAttributeBits :: (Int, Int, Int) -> DecodeBits AppliedDamageAttribute

module Rattletrap.Decode.AttributeValue
decodeAttributeValueBits :: (Int, Int, Int) -> Map Word32le Str -> Str -> DecodeBits AttributeValue

module Rattletrap.Decode.Attribute
decodeAttributesBits :: (Int, Int, Int) -> ClassAttributeMap -> Map CompressedWord Word32le -> CompressedWord -> DecodeBits [Attribute]
decodeAttributeBits :: (Int, Int, Int) -> ClassAttributeMap -> Map CompressedWord Word32le -> CompressedWord -> DecodeBits Attribute

module Rattletrap.Decode.UpdatedReplication
decodeUpdatedReplicationBits :: (Int, Int, Int) -> ClassAttributeMap -> Map CompressedWord Word32le -> CompressedWord -> DecodeBits UpdatedReplication

module Rattletrap.Decode.ReplicationValue
decodeReplicationValueBits :: (Int, Int, Int) -> ClassAttributeMap -> CompressedWord -> StateT (Map CompressedWord Word32le) DecodeBits ReplicationValue

module Rattletrap.Decode.Replication
decodeReplicationsBits :: (Int, Int, Int) -> Word -> ClassAttributeMap -> StateT (Map CompressedWord Word32le) DecodeBits [Replication]
decodeReplicationBits :: (Int, Int, Int) -> Word -> ClassAttributeMap -> StateT (Map CompressedWord Word32le) DecodeBits Replication

module Rattletrap.Decode.Frame
decodeFramesBits :: (Int, Int, Int) -> Int -> Word -> ClassAttributeMap -> StateT (Map CompressedWord Word32le) DecodeBits [Frame]
decodeFrameBits :: (Int, Int, Int) -> Word -> ClassAttributeMap -> StateT (Map CompressedWord Word32le) DecodeBits Frame

module Rattletrap.Decode.Content
decodeContent :: (Int, Int, Int) -> Int -> Word -> Decode Content

module Rattletrap.Utility.Crc

-- | Computes the CRC32 of some bytes. This is done to ensure that the
--   bytes are valid before trying to parse them.
--   
--   <pre>
--   getCrc32 (<a>pack</a> [0x00])
--   </pre>
--   
--   This CRC uses an initial value of <tt>0xefcbf201</tt> and a polynomial
--   of <tt>0x04c11db7</tt>.
getCrc32 :: ByteString -> Word32

module Rattletrap.Encode.Section

-- | Given a way to put the <a>sectionBody</a>, puts a section. This will
--   also put the size and CRC.
--   
--   <pre>
--   let bytes = <a>runPut</a> (<a>putSection</a> <a>putContent</a> content)
--   </pre>
putSection :: (a -> Put) -> Section a -> Put

module Rattletrap.Encode.Replay

-- | Generates a raw replay. Use this with <a>runPut</a>.
--   
--   <pre>
--   let bytes = <a>runPut</a> (<a>putReplay</a> replay)
--   </pre>
putReplay :: Replay -> Put

module Rattletrap.Decode.Section
decodeSection :: Decode a -> Decode (Section a)

module Rattletrap.Decode.Replay
decodeReplay :: Decode Replay


-- | This module provides helper functions for converting replays to and
--   from both their binary format and JSON.
module Rattletrap.Utility.Helper

-- | Parses a raw replay.
decodeReplayFile :: ByteString -> Either String Replay

-- | Encodes a replay as JSON.
encodeReplayJson :: Replay -> ByteString

-- | Parses a JSON replay.
decodeReplayJson :: ByteString -> Either String Replay

-- | Encodes a raw replay.
encodeReplayFile :: Replay -> ByteString

module Rattletrap

-- | Parses a raw replay.
decodeReplayFile :: ByteString -> Either String Replay

-- | Encodes a replay as JSON.
encodeReplayJson :: Replay -> ByteString

-- | Parses a JSON replay.
decodeReplayJson :: ByteString -> Either String Replay

-- | Encodes a raw replay.
encodeReplayFile :: Replay -> ByteString

-- | A Rocket League replay.
data Replay
Replay :: Section Header -> Section Content -> Replay

-- | This has most of the high-level metadata.
[replayHeader] :: Replay -> Section Header

-- | This has most of the low-level game data.
[replayContent] :: Replay -> Section Content

-- | A section is a large piece of a <a>Replay</a>. It has a 32-bit size
--   (in bytes), a 32-bit CRC (see <a>Rattletrap.Utility.Crc</a>), and then
--   a bunch of data (the body). This interface is provided so that you
--   don't have to think about the size and CRC.
data Section a
Section :: Word32le -> Word32le -> a -> Section a

-- | read only
[sectionSize] :: Section a -> Word32le

-- | read only
[sectionCrc] :: Section a -> Word32le

-- | The actual content in the section.
[sectionBody] :: Section a -> a

-- | Contains high-level metadata about a <a>Replay</a>.
data Header
Header :: Word32le -> Word32le -> Maybe Word32le -> Str -> Dictionary Property -> Header

-- | The "major" ("engine") version number.
[headerEngineVersion] :: Header -> Word32le

-- | The "minor" ("licensee") version number.
[headerLicenseeVersion] :: Header -> Word32le

-- | The "patch" ("net") version number.
[headerPatchVersion] :: Header -> Maybe Word32le

-- | Always <tt>TAGame.Replay_Soccar_TA</tt>.
[headerLabel] :: Header -> Str

-- | These properties determine how a replay will look in the list of
--   replays in-game. One element is required for the replay to show up:
--   
--   <ul>
--   <li>MapName: This is a <a>NameProperty</a> with a case-insensitive map
--   identifier, like <tt>Stadium_P</tt>.</li>
--   </ul>
--   
--   There are many other properties that affect how the replay looks in
--   the list of replays.
--   
--   <ul>
--   <li>Date: A <a>StrProperty</a> with the format
--   <tt>YYYY-mm-dd:HH-MM</tt>. Dates are not validated, but the month must
--   be between 1 and 12 to show up. The hour is shown modulo 12 with AM or
--   PM.</li>
--   <li>MatchType: A <a>NameProperty</a>. If this is not one of the
--   expected values, nothing will be shown next to the replay's map. The
--   expected values are: <tt>Online</tt>, <tt>Offline</tt>,
--   <tt>Private</tt>, and <tt>Season</tt>.</li>
--   <li>NumFrames: This <a>IntProperty</a> is used to calculate the length
--   of the match. There are 30 frames per second, a typical 5-minute match
--   has about 9,000 frames.</li>
--   <li>PrimaryPlayerTeam: This is an <a>IntProperty</a>. It is either 0
--   (blue) or 1 (orange). Any other value is ignored. If this would be 0,
--   you don't have to set it at all.</li>
--   <li>ReplayName: An optional <a>StrProperty</a> with a user-supplied
--   name for the replay.</li>
--   <li>Team0Score: The blue team's score as an <a>IntProperty</a>. Can be
--   omitted if the score is 0.</li>
--   <li>Team1Score: The orange team's score as an <a>IntProperty</a>. Can
--   also be omitted if the score is 0.</li>
--   <li>TeamSize: An <a>IntProperty</a> with the number of players per
--   team. This value is not validated, so you can put absurd values like
--   99. To get an "unfair" team size like 1v4, you must set the
--   bUnfairBots <a>BoolProperty</a> to <tt>True</tt>.</li>
--   </ul>
[headerProperties] :: Header -> Dictionary Property
newtype Word32le
Word32le :: Word32 -> Word32le
[word32leValue] :: Word32le -> Word32
newtype Str
Str :: Text -> Str
[strValue] :: Str -> Text
data Dictionary a
DictionaryElement :: Str -> a -> (Dictionary a) -> Dictionary a
DictionaryEnd :: Str -> Dictionary a
data Property
Property :: Str -> Word64le -> PropertyValue Property -> Property
[propertyKind] :: Property -> Str

-- | Not used.
[propertySize] :: Property -> Word64le
[propertyValue] :: Property -> PropertyValue Property
newtype Word64le
Word64le :: Word64 -> Word64le
[word64leValue] :: Word64le -> Word64
data PropertyValue a

-- | Yes, a list of dictionaries. No, it doesn't make sense. These usually
--   only have one element.
PropertyValueArray :: (List (Dictionary a)) -> PropertyValue a
PropertyValueBool :: Word8le -> PropertyValue a

-- | This is a strange name for essentially a key-value pair.
PropertyValueByte :: Str -> (Maybe Str) -> PropertyValue a
PropertyValueFloat :: Float32le -> PropertyValue a
PropertyValueInt :: Int32le -> PropertyValue a

-- | It's unclear how exactly this is different than a
--   <tt>StrProperty</tt>.
PropertyValueName :: Str -> PropertyValue a
PropertyValueQWord :: Word64le -> PropertyValue a
PropertyValueStr :: Str -> PropertyValue a
newtype List a
List :: [a] -> List a
[listValue] :: List a -> [a]
newtype Word8le
Word8le :: Word8 -> Word8le
[word8leValue] :: Word8le -> Word8
newtype Float32le
Float32le :: Float -> Float32le
[float32leValue] :: Float32le -> Float
newtype Int32le
Int32le :: Int32 -> Int32le
[int32leValue] :: Int32le -> Int32

-- | Contains low-level game data about a <a>Replay</a>.
data Content
Content :: List Str -> List KeyFrame -> Word32le -> [Frame] -> List Message -> List Mark -> List Str -> List Str -> List Str -> List ClassMapping -> List Cache -> Content

-- | This typically only has one element, like
--   <tt>stadium_oob_audio_map</tt>.
[contentLevels] :: Content -> List Str

-- | A list of which frames are key frames. Although they aren't necessary
--   for replay, key frames are frames that replicate every actor. They
--   typically happen once every 10 seconds.
[contentKeyFrames] :: Content -> List KeyFrame

-- | The size of the stream in bytes. This is only really necessary because
--   the stream has some arbitrary amount of padding at the end.
[contentStreamSize] :: Content -> Word32le

-- | The actual game data. This is where all the interesting information
--   is.
[contentFrames] :: Content -> [Frame]

-- | Debugging messages. In newer replays, this is always empty.
[contentMessages] :: Content -> List Message

-- | Tick marks shown on the scrubber when watching a replay.
[contentMarks] :: Content -> List Mark

-- | A list of <tt>.upk</tt> files to load, like
--   <tt>..\..\TAGame\CookedPCConsole\Stadium_P.upk</tt>.
[contentPackages] :: Content -> List Str

-- | Objects in the stream. Used for the <a>ClassAttributeMap</a>.
[contentObjects] :: Content -> List Str

-- | It's not clear what these are used for. This list is usually not
--   empty, but appears unused otherwise.
[contentNames] :: Content -> List Str

-- | A mapping between classes and their ID in the stream. Used for the
--   <a>ClassAttributeMap</a>.
[contentClassMappings] :: Content -> List ClassMapping

-- | A list of classes along with their parent classes and attributes. Used
--   for the <a>ClassAttributeMap</a>.
[contentCaches] :: Content -> List Cache
data KeyFrame
KeyFrame :: Float32le -> Word32le -> Word32le -> KeyFrame

-- | When this key frame occurs, in seconds.
[keyFrameTime] :: KeyFrame -> Float32le

-- | The frame number of this key frame, starting from 0.
[keyFrameFrame] :: KeyFrame -> Word32le

-- | The bit position of this key frame in the stream.
[keyFramePosition] :: KeyFrame -> Word32le
data Frame
Frame :: Float32le -> Float32le -> [Replication] -> Frame

-- | Time in seconds since the beginning of the match.
[frameTime] :: Frame -> Float32le

-- | Time in seconds since the last frame. Usually about 0.03 since there
--   are 30 frames per second.
[frameDelta] :: Frame -> Float32le
[frameReplications] :: Frame -> [Replication]
data Replication
Replication :: CompressedWord -> ReplicationValue -> Replication
[replicationActorId] :: Replication -> CompressedWord
[replicationValue] :: Replication -> ReplicationValue
data CompressedWord
CompressedWord :: Word -> Word -> CompressedWord
[compressedWordLimit] :: CompressedWord -> Word
[compressedWordValue] :: CompressedWord -> Word
data ReplicationValue

-- | Creates a new actor.
ReplicationValueSpawned :: SpawnedReplication -> ReplicationValue

-- | Updates an existing actor.
ReplicationValueUpdated :: UpdatedReplication -> ReplicationValue

-- | Destroys an existing actor.
ReplicationValueDestroyed :: DestroyedReplication -> ReplicationValue
data SpawnedReplication
SpawnedReplication :: Bool -> Maybe Word32le -> Maybe Str -> Word32le -> Str -> Str -> Initialization -> SpawnedReplication

-- | Unclear what this is.
[spawnedReplicationFlag] :: SpawnedReplication -> Bool
[spawnedReplicationNameIndex] :: SpawnedReplication -> Maybe Word32le

-- | Read-only! Changing a replication's name requires editing the
--   <a>spawnedReplicationNameIndex</a> and maybe the class attribute map.
[spawnedReplicationName] :: SpawnedReplication -> Maybe Str
[spawnedReplicationObjectId] :: SpawnedReplication -> Word32le

-- | Read-only! Changing a replication's object requires editing the class
--   attribute map.
[spawnedReplicationObjectName] :: SpawnedReplication -> Str

-- | Read-only! Changing a replication's class requires editing the class
--   attribute map.
[spawnedReplicationClassName] :: SpawnedReplication -> Str
[spawnedReplicationInitialization] :: SpawnedReplication -> Initialization
data Initialization
Initialization :: Maybe Vector -> Maybe Int8Vector -> Initialization

-- | Not every class has an initial location. See
--   <a>rawClassesWithLocation</a>.
[initializationLocation] :: Initialization -> Maybe Vector

-- | Only classes with location can have rotation, but not every one does.
--   See <a>rawClassesWithRotation</a>.
[initializationRotation] :: Initialization -> Maybe Int8Vector
data Vector
Vector :: CompressedWord -> Word -> Int -> Int -> Int -> Vector
[vectorSize] :: Vector -> CompressedWord
[vectorBias] :: Vector -> Word
[vectorX] :: Vector -> Int
[vectorY] :: Vector -> Int
[vectorZ] :: Vector -> Int
data Int8Vector
Int8Vector :: Maybe Int8le -> Maybe Int8le -> Maybe Int8le -> Int8Vector
[int8VectorX] :: Int8Vector -> Maybe Int8le
[int8VectorY] :: Int8Vector -> Maybe Int8le
[int8VectorZ] :: Int8Vector -> Maybe Int8le
newtype Int8le
Int8le :: Int8 -> Int8le
[int8leValue] :: Int8le -> Int8
newtype UpdatedReplication
UpdatedReplication :: [Attribute] -> UpdatedReplication
[updatedReplicationAttributes] :: UpdatedReplication -> [Attribute]
data Attribute
Attribute :: CompressedWord -> Str -> AttributeValue -> Attribute
[attributeId] :: Attribute -> CompressedWord

-- | Read-only! Changing an attribute's name requires editing the class
--   attribute map.
[attributeName] :: Attribute -> Str
[attributeValue] :: Attribute -> AttributeValue
data AttributeValue
AttributeValueAppliedDamage :: AppliedDamageAttribute -> AttributeValue
AttributeValueBoolean :: BooleanAttribute -> AttributeValue
AttributeValueByte :: ByteAttribute -> AttributeValue
AttributeValueCamSettings :: CamSettingsAttribute -> AttributeValue
AttributeValueClubColors :: ClubColorsAttribute -> AttributeValue
AttributeValueDamageState :: DamageStateAttribute -> AttributeValue
AttributeValueDemolish :: DemolishAttribute -> AttributeValue
AttributeValueEnum :: EnumAttribute -> AttributeValue
AttributeValueExplosion :: ExplosionAttribute -> AttributeValue
AttributeValueExtendedExplosion :: ExtendedExplosionAttribute -> AttributeValue
AttributeValueFlaggedInt :: FlaggedIntAttribute -> AttributeValue
AttributeValueFloat :: FloatAttribute -> AttributeValue
AttributeValueGameMode :: GameModeAttribute -> AttributeValue
AttributeValueInt :: IntAttribute -> AttributeValue
AttributeValueLoadout :: LoadoutAttribute -> AttributeValue
AttributeValueLoadoutOnline :: LoadoutOnlineAttribute -> AttributeValue
AttributeValueLoadouts :: LoadoutsAttribute -> AttributeValue
AttributeValueLoadoutsOnline :: LoadoutsOnlineAttribute -> AttributeValue
AttributeValueLocation :: LocationAttribute -> AttributeValue
AttributeValueMusicStinger :: MusicStingerAttribute -> AttributeValue
AttributeValuePartyLeader :: PartyLeaderAttribute -> AttributeValue
AttributeValuePickup :: PickupAttribute -> AttributeValue
AttributeValuePlayerHistoryKey :: PlayerHistoryKeyAttribute -> AttributeValue
AttributeValuePrivateMatchSettings :: PrivateMatchSettingsAttribute -> AttributeValue
AttributeValueQWord :: QWordAttribute -> AttributeValue
AttributeValueReservation :: ReservationAttribute -> AttributeValue
AttributeValueRigidBodyState :: RigidBodyStateAttribute -> AttributeValue
AttributeValueStatEvent :: StatEventAttribute -> AttributeValue
AttributeValueString :: StringAttribute -> AttributeValue
AttributeValueTeamPaint :: TeamPaintAttribute -> AttributeValue
AttributeValueTitle :: TitleAttribute -> AttributeValue
AttributeValueUniqueId :: UniqueIdAttribute -> AttributeValue
AttributeValueWeldedInfo :: WeldedInfoAttribute -> AttributeValue
data AppliedDamageAttribute
AppliedDamageAttribute :: Word8le -> Vector -> Int32le -> Int32le -> AppliedDamageAttribute
[appliedDamageAttributeUnknown1] :: AppliedDamageAttribute -> Word8le
[appliedDamageAttributeLocation] :: AppliedDamageAttribute -> Vector
[appliedDamageAttributeUnknown3] :: AppliedDamageAttribute -> Int32le
[appliedDamageAttributeUnknown4] :: AppliedDamageAttribute -> Int32le
newtype BooleanAttribute
BooleanAttribute :: Bool -> BooleanAttribute
[booleanAttributeValue] :: BooleanAttribute -> Bool
newtype ByteAttribute
ByteAttribute :: Word8le -> ByteAttribute
[byteAttributeValue] :: ByteAttribute -> Word8le
data CamSettingsAttribute
CamSettingsAttribute :: Float32le -> Float32le -> Float32le -> Float32le -> Float32le -> Float32le -> Maybe Float32le -> CamSettingsAttribute
[camSettingsAttributeFov] :: CamSettingsAttribute -> Float32le
[camSettingsAttributeHeight] :: CamSettingsAttribute -> Float32le
[camSettingsAttributeAngle] :: CamSettingsAttribute -> Float32le
[camSettingsAttributeDistance] :: CamSettingsAttribute -> Float32le
[camSettingsAttributeStiffness] :: CamSettingsAttribute -> Float32le
[camSettingsAttributeSwivelSpeed] :: CamSettingsAttribute -> Float32le
[camSettingsAttributeTransitionSpeed] :: CamSettingsAttribute -> Maybe Float32le
data ClubColorsAttribute
ClubColorsAttribute :: Bool -> Word8le -> Bool -> Word8le -> ClubColorsAttribute
[clubColorsAttributeBlueFlag] :: ClubColorsAttribute -> Bool
[clubColorsAttributeBlueColor] :: ClubColorsAttribute -> Word8le
[clubColorsAttributeOrangeFlag] :: ClubColorsAttribute -> Bool
[clubColorsAttributeOrangeColor] :: ClubColorsAttribute -> Word8le
data DamageStateAttribute
DamageStateAttribute :: Word8le -> Bool -> Int32le -> Vector -> Bool -> Bool -> DamageStateAttribute
[damageStateAttributeUnknown1] :: DamageStateAttribute -> Word8le
[damageStateAttributeUnknown2] :: DamageStateAttribute -> Bool
[damageStateAttributeUnknown3] :: DamageStateAttribute -> Int32le
[damageStateAttributeUnknown4] :: DamageStateAttribute -> Vector
[damageStateAttributeUnknown5] :: DamageStateAttribute -> Bool
[damageStateAttributeUnknown6] :: DamageStateAttribute -> Bool
data DemolishAttribute
DemolishAttribute :: Bool -> Word32le -> Bool -> Word32le -> Vector -> Vector -> DemolishAttribute
[demolishAttributeAttackerFlag] :: DemolishAttribute -> Bool
[demolishAttributeAttackerActorId] :: DemolishAttribute -> Word32le
[demolishAttributeVictimFlag] :: DemolishAttribute -> Bool
[demolishAttributeVictimActorId] :: DemolishAttribute -> Word32le
[demolishAttributeAttackerVelocity] :: DemolishAttribute -> Vector
[demolishAttributeVictimVelocity] :: DemolishAttribute -> Vector
newtype EnumAttribute
EnumAttribute :: Word16 -> EnumAttribute
[enumAttributeValue] :: EnumAttribute -> Word16
data ExplosionAttribute
ExplosionAttribute :: Bool -> Int32le -> Vector -> ExplosionAttribute
[explosionAttributeFlag] :: ExplosionAttribute -> Bool
[explosionAttributeActorId] :: ExplosionAttribute -> Int32le
[explosionAttributeLocation] :: ExplosionAttribute -> Vector
data ExtendedExplosionAttribute
ExtendedExplosionAttribute :: ExplosionAttribute -> FlaggedIntAttribute -> ExtendedExplosionAttribute
[extendedExplosionAttributeExplosion] :: ExtendedExplosionAttribute -> ExplosionAttribute
[extendedExplosionAttributeUnknown] :: ExtendedExplosionAttribute -> FlaggedIntAttribute
data FlaggedIntAttribute
FlaggedIntAttribute :: Bool -> Int32le -> FlaggedIntAttribute
[flaggedIntAttributeFlag] :: FlaggedIntAttribute -> Bool
[flaggedIntAttributeInt] :: FlaggedIntAttribute -> Int32le
newtype FloatAttribute
FloatAttribute :: Float32le -> FloatAttribute
[floatAttributeValue] :: FloatAttribute -> Float32le
data GameModeAttribute
GameModeAttribute :: Int -> Word8 -> GameModeAttribute
[gameModeAttributeNumBits] :: GameModeAttribute -> Int
[gameModeAttributeWord] :: GameModeAttribute -> Word8
newtype IntAttribute
IntAttribute :: Int32le -> IntAttribute
[intAttributeValue] :: IntAttribute -> Int32le
data LoadoutAttribute
LoadoutAttribute :: Word8le -> Word32le -> Word32le -> Word32le -> Word32le -> Word32le -> Word32le -> Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> Maybe Word32le -> LoadoutAttribute
[loadoutAttributeVersion] :: LoadoutAttribute -> Word8le
[loadoutAttributeBody] :: LoadoutAttribute -> Word32le
[loadoutAttributeDecal] :: LoadoutAttribute -> Word32le
[loadoutAttributeWheels] :: LoadoutAttribute -> Word32le

-- | Now known as "rocket boost".
[loadoutAttributeRocketTrail] :: LoadoutAttribute -> Word32le
[loadoutAttributeAntenna] :: LoadoutAttribute -> Word32le
[loadoutAttributeTopper] :: LoadoutAttribute -> Word32le
[loadoutAttributeUnknown1] :: LoadoutAttribute -> Word32le
[loadoutAttributeUnknown2] :: LoadoutAttribute -> Maybe Word32le
[loadoutAttributeEngineAudio] :: LoadoutAttribute -> Maybe Word32le
[loadoutAttributeTrail] :: LoadoutAttribute -> Maybe Word32le
[loadoutAttributeGoalExplosion] :: LoadoutAttribute -> Maybe Word32le
[loadoutAttributeBanner] :: LoadoutAttribute -> Maybe Word32le
[loadoutAttributeUnknown3] :: LoadoutAttribute -> Maybe Word32le
[loadoutAttributeUnknown4] :: LoadoutAttribute -> Maybe Word32le
[loadoutAttributeUnknown5] :: LoadoutAttribute -> Maybe Word32le
[loadoutAttributeUnknown6] :: LoadoutAttribute -> Maybe Word32le
newtype LoadoutOnlineAttribute
LoadoutOnlineAttribute :: [[ProductAttribute]] -> LoadoutOnlineAttribute
[loadoutAttributeValue] :: LoadoutOnlineAttribute -> [[ProductAttribute]]
data ProductAttribute
ProductAttribute :: Bool -> Word32le -> Maybe Str -> Maybe (Either CompressedWord Word32) -> ProductAttribute
[productAttributeUnknown] :: ProductAttribute -> Bool
[productAttributeObjectId] :: ProductAttribute -> Word32le

-- | read-only
[productAttributeObjectName] :: ProductAttribute -> Maybe Str
[productAttributeValue] :: ProductAttribute -> Maybe (Either CompressedWord Word32)
data LoadoutsAttribute
LoadoutsAttribute :: LoadoutAttribute -> LoadoutAttribute -> LoadoutsAttribute
[loadoutsAttributeBlue] :: LoadoutsAttribute -> LoadoutAttribute
[loadoutsAttributeOrange] :: LoadoutsAttribute -> LoadoutAttribute
data LoadoutsOnlineAttribute
LoadoutsOnlineAttribute :: LoadoutOnlineAttribute -> LoadoutOnlineAttribute -> Bool -> Bool -> LoadoutsOnlineAttribute
[loadoutsOnlineAttributeBlue] :: LoadoutsOnlineAttribute -> LoadoutOnlineAttribute
[loadoutsOnlineAttributeOrange] :: LoadoutsOnlineAttribute -> LoadoutOnlineAttribute
[loadoutsOnlineAttributeUnknown1] :: LoadoutsOnlineAttribute -> Bool
[loadoutsOnlineAttributeUnknown2] :: LoadoutsOnlineAttribute -> Bool
newtype LocationAttribute
LocationAttribute :: Vector -> LocationAttribute
[locationAttributeValue] :: LocationAttribute -> Vector
data MusicStingerAttribute
MusicStingerAttribute :: Bool -> Word32le -> Word8le -> MusicStingerAttribute
[musicStingerAttributeFlag] :: MusicStingerAttribute -> Bool
[musicStingerAttributeCue] :: MusicStingerAttribute -> Word32le
[musicStingerAttributeTrigger] :: MusicStingerAttribute -> Word8le
data PartyLeaderAttribute
PartyLeaderAttribute :: Word8le -> Maybe (RemoteId, Word8le) -> PartyLeaderAttribute
[partyLeaderAttributeSystemId] :: PartyLeaderAttribute -> Word8le
[partyLeaderAttributeId] :: PartyLeaderAttribute -> Maybe (RemoteId, Word8le)
data RemoteId
RemoteIdPlayStation :: Text -> [Word8] -> RemoteId
RemoteIdSplitscreen :: Word32 -> RemoteId
RemoteIdSteam :: Word64le -> RemoteId
RemoteIdSwitch :: Bitstream -> RemoteId
RemoteIdXbox :: Word64le -> RemoteId
data PickupAttribute
PickupAttribute :: Maybe Word32le -> Bool -> PickupAttribute
[pickupAttributeInstigatorId] :: PickupAttribute -> Maybe Word32le
[pickupAttributePickedUp] :: PickupAttribute -> Bool
data PrivateMatchSettingsAttribute
PrivateMatchSettingsAttribute :: Str -> Word32le -> Word32le -> Str -> Str -> Bool -> PrivateMatchSettingsAttribute
[privateMatchSettingsAttributeMutators] :: PrivateMatchSettingsAttribute -> Str
[privateMatchSettingsAttributeJoinableBy] :: PrivateMatchSettingsAttribute -> Word32le
[privateMatchSettingsAttributeMaxPlayers] :: PrivateMatchSettingsAttribute -> Word32le
[privateMatchSettingsAttributeGameName] :: PrivateMatchSettingsAttribute -> Str
[privateMatchSettingsAttributePassword] :: PrivateMatchSettingsAttribute -> Str
[privateMatchSettingsAttributeFlag] :: PrivateMatchSettingsAttribute -> Bool
newtype QWordAttribute
QWordAttribute :: Word64le -> QWordAttribute
[qWordAttributeValue] :: QWordAttribute -> Word64le
data ReservationAttribute
ReservationAttribute :: CompressedWord -> UniqueIdAttribute -> Maybe Str -> Bool -> Bool -> Maybe Word8 -> ReservationAttribute
[reservationAttributeNumber] :: ReservationAttribute -> CompressedWord
[reservationAttributeUniqueId] :: ReservationAttribute -> UniqueIdAttribute
[reservationAttributeName] :: ReservationAttribute -> Maybe Str
[reservationAttributeUnknown1] :: ReservationAttribute -> Bool
[reservationAttributeUnknown2] :: ReservationAttribute -> Bool
[reservationAttributeUnknown3] :: ReservationAttribute -> Maybe Word8
data UniqueIdAttribute
UniqueIdAttribute :: Word8le -> RemoteId -> Word8le -> UniqueIdAttribute
[uniqueIdAttributeSystemId] :: UniqueIdAttribute -> Word8le
[uniqueIdAttributeRemoteId] :: UniqueIdAttribute -> RemoteId
[uniqueIdAttributeLocalId] :: UniqueIdAttribute -> Word8le
data RigidBodyStateAttribute
RigidBodyStateAttribute :: Bool -> Vector -> Maybe Bool -> CompressedWordVector -> Maybe Bool -> Maybe Vector -> Maybe Vector -> RigidBodyStateAttribute
[rigidBodyStateAttributeSleeping] :: RigidBodyStateAttribute -> Bool
[rigidBodyStateAttributeLocation] :: RigidBodyStateAttribute -> Vector
[rigidBodyStateAttributeUnknown1] :: RigidBodyStateAttribute -> Maybe Bool
[rigidBodyStateAttributeRotation] :: RigidBodyStateAttribute -> CompressedWordVector
[rigidBodyStateAttributeUnknown2] :: RigidBodyStateAttribute -> Maybe Bool
[rigidBodyStateAttributeLinearVelocity] :: RigidBodyStateAttribute -> Maybe Vector
[rigidBodyStateAttributeAngularVelocity] :: RigidBodyStateAttribute -> Maybe Vector
data CompressedWordVector
CompressedWordVector :: CompressedWord -> CompressedWord -> CompressedWord -> CompressedWordVector
[compressedWordVectorX] :: CompressedWordVector -> CompressedWord
[compressedWordVectorY] :: CompressedWordVector -> CompressedWord
[compressedWordVectorZ] :: CompressedWordVector -> CompressedWord
newtype StringAttribute
StringAttribute :: Str -> StringAttribute
[stringAttributeValue] :: StringAttribute -> Str
data TeamPaintAttribute
TeamPaintAttribute :: Word8le -> Word8le -> Word8le -> Word32le -> Word32le -> TeamPaintAttribute
[teamPaintAttributeTeam] :: TeamPaintAttribute -> Word8le
[teamPaintAttributePrimaryColor] :: TeamPaintAttribute -> Word8le
[teamPaintAttributeAccentColor] :: TeamPaintAttribute -> Word8le
[teamPaintAttributePrimaryFinish] :: TeamPaintAttribute -> Word32le
[teamPaintAttributeAccentFinish] :: TeamPaintAttribute -> Word32le
data WeldedInfoAttribute
WeldedInfoAttribute :: Bool -> Int32le -> Vector -> Float32le -> Int8Vector -> WeldedInfoAttribute
[weldedInfoAttributeActive] :: WeldedInfoAttribute -> Bool
[weldedInfoAttributeActorId] :: WeldedInfoAttribute -> Int32le
[weldedInfoAttributeOffset] :: WeldedInfoAttribute -> Vector
[weldedInfoAttributeMass] :: WeldedInfoAttribute -> Float32le
[weldedInfoAttributeRotation] :: WeldedInfoAttribute -> Int8Vector

-- | Destroyed replications don't actually contain any extra information.
--   All you need to know is the actor's ID, which is given by the
--   <a>Replication</a>.
data DestroyedReplication
DestroyedReplication :: DestroyedReplication
data Message
Message :: Word32le -> Str -> Str -> Message

-- | Which frame this message belongs to, starting from 0.
[messageFrame] :: Message -> Word32le

-- | The primary player's name.
[messageName] :: Message -> Str

-- | The content of the message.
[messageValue] :: Message -> Str
data Mark
Mark :: Str -> Word32le -> Mark

-- | Which type of mark this is, like <tt>Team0Goal</tt>.
[markValue] :: Mark -> Str

-- | Which frame this mark belongs to, starting from 0.
[markFrame] :: Mark -> Word32le
data ClassMapping
ClassMapping :: Str -> Word32le -> ClassMapping
[classMappingName] :: ClassMapping -> Str
[classMappingStreamId] :: ClassMapping -> Word32le
data Cache
Cache :: Word32le -> Word32le -> Word32le -> List AttributeMapping -> Cache
[cacheClassId] :: Cache -> Word32le
[cacheParentCacheId] :: Cache -> Word32le
[cacheCacheId] :: Cache -> Word32le
[cacheAttributeMappings] :: Cache -> List AttributeMapping
data AttributeMapping
AttributeMapping :: Word32le -> Word32le -> AttributeMapping
[attributeMappingObjectId] :: AttributeMapping -> Word32le
[attributeMappingStreamId] :: AttributeMapping -> Word32le

module Rattletrap.Console.Main
main :: IO ()
rattletrap :: String -> [String] -> IO ()
instance GHC.Show.Show Rattletrap.Console.Main.Config
instance GHC.Show.Show Rattletrap.Console.Main.Mode
