{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} module Octane.Type.Replay (Replay(..)) where import Octane.Core import Octane.Type.Actor import Octane.Type.CacheItem import Octane.Type.KeyFrame import Octane.Type.Mark import Octane.Type.Message import Octane.Type.Primitive.Dictionary import Octane.Type.Primitive.List import Octane.Type.Primitive.PCString import Octane.Type.Primitive.Stream import Octane.Type.Primitive.Word32LE import Octane.Type.Property data Replay = Replay { replaySize1 :: Word32LE , replayCRC1 :: Word32LE , replayVersion1 :: Word32LE , replayVersion2 :: Word32LE , replayLabel :: PCString , replayProperties :: Dictionary Property , replaySize2 :: Word32LE , replayCRC2 :: Word32LE , replayEffects :: List PCString , replayKeyFrames :: List KeyFrame , replayStream :: Stream , replayMessages :: List Message , replayMarks :: List Mark , replayPackages :: List PCString , replayObjects :: List PCString , replayNames :: List PCString , replayActors :: List Actor , replayCacheItems :: List CacheItem } deriving (Eq, Generic, NFData, Show) instance Binary Replay where get = do size1 <- get crc1 <- get version1 <- get version2 <- get label <- get properties <- get size2 <- get crc2 <- get effects <- get keyFrames <- get stream <- get messages <- get marks <- get packages <- get objects <- get names <- get actors <- get cacheItems <- get return Replay { replaySize1 = size1 , replayCRC1 = crc1 , replayVersion1 = version1 , replayVersion2 = version2 , replayLabel = label , replayProperties = properties , replaySize2 = size2 , replayCRC2 = crc2 , replayEffects = effects , replayKeyFrames = keyFrames , replayStream = stream , replayMessages = messages , replayMarks = marks , replayPackages = packages , replayObjects = objects , replayNames = names , replayActors = actors , replayCacheItems = cacheItems } put replay = do replay & replaySize1 & put replay & replayCRC1 & put replay & replayVersion1 & put replay & replayVersion2 & put replay & replayLabel & put replay & replayProperties & put replay & replaySize2 & put replay & replayCRC2 & put replay & replayEffects & put replay & replayKeyFrames & put replay & replayStream & put replay & replayMessages & put replay & replayMarks & put replay & replayPackages & put replay & replayObjects & put replay & replayNames & put replay & replayActors & put replay & replayCacheItems & put