octane-0.16.3: Parse Rocket League replays.

Safe HaskellNone
LanguageHaskell2010

Octane.Type.Replay

Synopsis

Documentation

data Replay Source #

A fully-processed, optimized replay. This is the nicest format for humans to work with. It can be converted all the way back down to a RawReplay for serialization.

Constructors

Replay 

Fields

  • replayVersion :: Version
     
  • replayMetadata :: Map Text Property

    High-level metadata about the replay. Only one key is actually required to be able to view the replay in Rocket League:

    There are many other properties that affect how the replay looks in the list of replays in Rocket League:

    • Date: A StrProperty with the format YYYY-mm-dd:HH-MM. 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.
    • MatchType: A NameProperty. If this is not one of the expected values, nothing will be shown next to the replay's map. The expected values are: Online, Offline, Private, and Season.
    • NumFrames: This IntProperty is used to calculate the length of the match. There are 30 frames per second, meaning 9000 frames is a 5-minute match.
    • PrimaryPlayerTeam: This is an IntProperty. 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.
    • ReplayName: An optional StrProperty with a user-supplied name for the replay.
    • Team0Score: The blue team's score as an IntProperty. Can be omitted if the score is 0.
    • Team1Score: The orange team's score as an IntProperty. Can also be omitted if the score is 0.
    • TeamSize: An IntProperty 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" BoolProperty to True.
  • replayLevels :: [Text]
     
  • replayMessages :: Map Text Text
     
  • replayTickMarks :: Map Text Text
     
  • replayPackages :: [Text]
     
  • replayFrames :: [Frame]
     

Instances

Eq Replay Source # 

Methods

(==) :: Replay -> Replay -> Bool #

(/=) :: Replay -> Replay -> Bool #

Show Replay Source # 
Generic Replay Source # 

Associated Types

type Rep Replay :: * -> * #

Methods

from :: Replay -> Rep Replay x #

to :: Rep Replay x -> Replay #

ToJSON Replay Source # 
Binary Replay Source # 

Methods

put :: Replay -> Put #

get :: Get Replay #

putList :: [Replay] -> Put #

NFData Replay Source # 

Methods

rnf :: Replay -> () #

HasField "version" Replay Version Source # 

Methods

getField :: Proxy# Symbol "version" -> Replay -> Version #

ModifyField "version" Replay Replay Version Version Source # 

Methods

modifyField :: Proxy# Symbol "version" -> (Version -> Version) -> Replay -> Replay #

setField :: Proxy# Symbol "version" -> Replay -> Version -> Replay #

fieldLens :: Functor f => Proxy# Symbol "version" -> (Version -> f Version) -> Replay -> f Replay #

ModifyField "frames" Replay Replay [Frame] [Frame] Source # 

Methods

modifyField :: Proxy# Symbol "frames" -> ([Frame] -> [Frame]) -> Replay -> Replay #

setField :: Proxy# Symbol "frames" -> Replay -> [Frame] -> Replay #

fieldLens :: Functor f => Proxy# Symbol "frames" -> ([Frame] -> f [Frame]) -> Replay -> f Replay #

ModifyField "levels" Replay Replay [Text] [Text] Source # 

Methods

modifyField :: Proxy# Symbol "levels" -> ([Text] -> [Text]) -> Replay -> Replay #

setField :: Proxy# Symbol "levels" -> Replay -> [Text] -> Replay #

fieldLens :: Functor f => Proxy# Symbol "levels" -> ([Text] -> f [Text]) -> Replay -> f Replay #

ModifyField "packages" Replay Replay [Text] [Text] Source # 

Methods

modifyField :: Proxy# Symbol "packages" -> ([Text] -> [Text]) -> Replay -> Replay #

setField :: Proxy# Symbol "packages" -> Replay -> [Text] -> Replay #

fieldLens :: Functor f => Proxy# Symbol "packages" -> ([Text] -> f [Text]) -> Replay -> f Replay #

ModifyField "messages" Replay Replay (Map Text Text) (Map Text Text) Source # 

Methods

modifyField :: Proxy# Symbol "messages" -> (Map Text Text -> Map Text Text) -> Replay -> Replay #

setField :: Proxy# Symbol "messages" -> Replay -> Map Text Text -> Replay #

fieldLens :: Functor f => Proxy# Symbol "messages" -> (Map Text Text -> f (Map Text Text)) -> Replay -> f Replay #

ModifyField "metadata" Replay Replay (Map Text Property) (Map Text Property) Source # 

Methods

modifyField :: Proxy# Symbol "metadata" -> (Map Text Property -> Map Text Property) -> Replay -> Replay #

setField :: Proxy# Symbol "metadata" -> Replay -> Map Text Property -> Replay #

fieldLens :: Functor f => Proxy# Symbol "metadata" -> (Map Text Property -> f (Map Text Property)) -> Replay -> f Replay #

ModifyField "tickMarks" Replay Replay (Map Text Text) (Map Text Text) Source # 

Methods

modifyField :: Proxy# Symbol "tickMarks" -> (Map Text Text -> Map Text Text) -> Replay -> Replay #

setField :: Proxy# Symbol "tickMarks" -> Replay -> Map Text Text -> Replay #

fieldLens :: Functor f => Proxy# Symbol "tickMarks" -> (Map Text Text -> f (Map Text Text)) -> Replay -> f Replay #

HasField "frames" Replay [Frame] Source # 

Methods

getField :: Proxy# Symbol "frames" -> Replay -> [Frame] #

HasField "levels" Replay [Text] Source # 

Methods

getField :: Proxy# Symbol "levels" -> Replay -> [Text] #

HasField "packages" Replay [Text] Source # 

Methods

getField :: Proxy# Symbol "packages" -> Replay -> [Text] #

HasField "messages" Replay (Map Text Text) Source # 

Methods

getField :: Proxy# Symbol "messages" -> Replay -> Map Text Text #

HasField "metadata" Replay (Map Text Property) Source # 

Methods

getField :: Proxy# Symbol "metadata" -> Replay -> Map Text Property #

HasField "tickMarks" Replay (Map Text Text) Source # 

Methods

getField :: Proxy# Symbol "tickMarks" -> Replay -> Map Text Text #

ModifyRec "version" Version cs0 => HasField "version" (Rec cs0 Replay) Version Source # 

Methods

getField :: Proxy# Symbol "version" -> Rec cs0 Replay -> Version #

ModifyRec "frames" [Frame] cs0 => HasField "frames" (Rec cs0 Replay) [Frame] Source # 

Methods

getField :: Proxy# Symbol "frames" -> Rec cs0 Replay -> [Frame] #

ModifyRec "levels" [Text] cs0 => HasField "levels" (Rec cs0 Replay) [Text] Source # 

Methods

getField :: Proxy# Symbol "levels" -> Rec cs0 Replay -> [Text] #

ModifyRec "packages" [Text] cs0 => HasField "packages" (Rec cs0 Replay) [Text] Source # 

Methods

getField :: Proxy# Symbol "packages" -> Rec cs0 Replay -> [Text] #

ModifyRec "messages" (Map Text Text) cs0 => HasField "messages" (Rec cs0 Replay) (Map Text Text) Source # 

Methods

getField :: Proxy# Symbol "messages" -> Rec cs0 Replay -> Map Text Text #

ModifyRec "metadata" (Map Text Property) cs0 => HasField "metadata" (Rec cs0 Replay) (Map Text Property) Source # 

Methods

getField :: Proxy# Symbol "metadata" -> Rec cs0 Replay -> Map Text Property #

ModifyRec "tickMarks" (Map Text Text) cs0 => HasField "tickMarks" (Rec cs0 Replay) (Map Text Text) Source # 

Methods

getField :: Proxy# Symbol "tickMarks" -> Rec cs0 Replay -> Map Text Text #

ModifyRec "version" Version cs0 => ModifyField "version" (Rec cs0 Replay) (Rec cs0 Replay) Version Version Source # 

Methods

modifyField :: Proxy# Symbol "version" -> (Version -> Version) -> Rec cs0 Replay -> Rec cs0 Replay #

setField :: Proxy# Symbol "version" -> Rec cs0 Replay -> Version -> Rec cs0 Replay #

fieldLens :: Functor f => Proxy# Symbol "version" -> (Version -> f Version) -> Rec cs0 Replay -> f (Rec cs0 Replay) #

ModifyRec "frames" [Frame] cs0 => ModifyField "frames" (Rec cs0 Replay) (Rec cs0 Replay) [Frame] [Frame] Source # 

Methods

modifyField :: Proxy# Symbol "frames" -> ([Frame] -> [Frame]) -> Rec cs0 Replay -> Rec cs0 Replay #

setField :: Proxy# Symbol "frames" -> Rec cs0 Replay -> [Frame] -> Rec cs0 Replay #

fieldLens :: Functor f => Proxy# Symbol "frames" -> ([Frame] -> f [Frame]) -> Rec cs0 Replay -> f (Rec cs0 Replay) #

ModifyRec "levels" [Text] cs0 => ModifyField "levels" (Rec cs0 Replay) (Rec cs0 Replay) [Text] [Text] Source # 

Methods

modifyField :: Proxy# Symbol "levels" -> ([Text] -> [Text]) -> Rec cs0 Replay -> Rec cs0 Replay #

setField :: Proxy# Symbol "levels" -> Rec cs0 Replay -> [Text] -> Rec cs0 Replay #

fieldLens :: Functor f => Proxy# Symbol "levels" -> ([Text] -> f [Text]) -> Rec cs0 Replay -> f (Rec cs0 Replay) #

ModifyRec "packages" [Text] cs0 => ModifyField "packages" (Rec cs0 Replay) (Rec cs0 Replay) [Text] [Text] Source # 

Methods

modifyField :: Proxy# Symbol "packages" -> ([Text] -> [Text]) -> Rec cs0 Replay -> Rec cs0 Replay #

setField :: Proxy# Symbol "packages" -> Rec cs0 Replay -> [Text] -> Rec cs0 Replay #

fieldLens :: Functor f => Proxy# Symbol "packages" -> ([Text] -> f [Text]) -> Rec cs0 Replay -> f (Rec cs0 Replay) #

ModifyRec "messages" (Map Text Text) cs0 => ModifyField "messages" (Rec cs0 Replay) (Rec cs0 Replay) (Map Text Text) (Map Text Text) Source # 

Methods

modifyField :: Proxy# Symbol "messages" -> (Map Text Text -> Map Text Text) -> Rec cs0 Replay -> Rec cs0 Replay #

setField :: Proxy# Symbol "messages" -> Rec cs0 Replay -> Map Text Text -> Rec cs0 Replay #

fieldLens :: Functor f => Proxy# Symbol "messages" -> (Map Text Text -> f (Map Text Text)) -> Rec cs0 Replay -> f (Rec cs0 Replay) #

ModifyRec "metadata" (Map Text Property) cs0 => ModifyField "metadata" (Rec cs0 Replay) (Rec cs0 Replay) (Map Text Property) (Map Text Property) Source # 

Methods

modifyField :: Proxy# Symbol "metadata" -> (Map Text Property -> Map Text Property) -> Rec cs0 Replay -> Rec cs0 Replay #

setField :: Proxy# Symbol "metadata" -> Rec cs0 Replay -> Map Text Property -> Rec cs0 Replay #

fieldLens :: Functor f => Proxy# Symbol "metadata" -> (Map Text Property -> f (Map Text Property)) -> Rec cs0 Replay -> f (Rec cs0 Replay) #

ModifyRec "tickMarks" (Map Text Text) cs0 => ModifyField "tickMarks" (Rec cs0 Replay) (Rec cs0 Replay) (Map Text Text) (Map Text Text) Source # 

Methods

modifyField :: Proxy# Symbol "tickMarks" -> (Map Text Text -> Map Text Text) -> Rec cs0 Replay -> Rec cs0 Replay #

setField :: Proxy# Symbol "tickMarks" -> Rec cs0 Replay -> Map Text Text -> Rec cs0 Replay #

fieldLens :: Functor f => Proxy# Symbol "tickMarks" -> (Map Text Text -> f (Map Text Text)) -> Rec cs0 Replay -> f (Rec cs0 Replay) #

type Rep Replay Source # 
type FieldType "frames" Replay Source # 
type FieldType "frames" Replay = [Frame]
type FieldType "levels" Replay Source # 
type FieldType "levels" Replay = [Text]
type FieldType "messages" Replay Source # 
type FieldType "messages" Replay = Map Text Text
type FieldType "metadata" Replay Source # 
type FieldType "metadata" Replay = Map Text Property
type FieldType "packages" Replay Source # 
type FieldType "packages" Replay = [Text]
type FieldType "tickMarks" Replay Source # 
type FieldType "tickMarks" Replay = Map Text Text
type FieldType "version" Replay Source # 
type FieldType "version" Replay = Version
type UpdateType "version" Replay Version Source # 
type UpdateType "version" Replay Version = Replay
type UpdateType "frames" Replay [Frame] Source # 
type UpdateType "frames" Replay [Frame] = Replay
type UpdateType "levels" Replay [Text] Source # 
type UpdateType "levels" Replay [Text] = Replay
type UpdateType "packages" Replay [Text] Source # 
type UpdateType "packages" Replay [Text] = Replay
type UpdateType "messages" Replay (Map Text Text) Source # 
type UpdateType "messages" Replay (Map Text Text) = Replay
type UpdateType "metadata" Replay (Map Text Property) Source # 
type UpdateType "metadata" Replay (Map Text Property) = Replay
type UpdateType "tickMarks" Replay (Map Text Text) Source # 
type UpdateType "tickMarks" Replay (Map Text Text) = Replay

fromOptimizedReplay :: Monad m => OptimizedReplay -> m Replay Source #

Converts an OptimizedReplay into a Replay. Operates in a Monad so that it can fail somewhat gracefully.

toOptimizedReplay :: Monad m => Replay -> m OptimizedReplay Source #

Converts a Replay into an OptimizedReplay. Operates in a Monad so that it can fail somewhat gracefully.