{-# LANGUAGE TemplateHaskell #-}

module Rattletrap.Type.Replication
  ( Replication(..)
  )
where

import Rattletrap.Type.Common
import Rattletrap.Type.CompressedWord
import Rattletrap.Type.ReplicationValue

data Replication = Replication
  { Replication -> CompressedWord
replicationActorId :: CompressedWord
  , Replication -> ReplicationValue
replicationValue :: ReplicationValue
  } deriving (Replication -> Replication -> Bool
(Replication -> Replication -> Bool)
-> (Replication -> Replication -> Bool) -> Eq Replication
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Replication -> Replication -> Bool
$c/= :: Replication -> Replication -> Bool
== :: Replication -> Replication -> Bool
$c== :: Replication -> Replication -> Bool
Eq, Eq Replication
Eq Replication
-> (Replication -> Replication -> Ordering)
-> (Replication -> Replication -> Bool)
-> (Replication -> Replication -> Bool)
-> (Replication -> Replication -> Bool)
-> (Replication -> Replication -> Bool)
-> (Replication -> Replication -> Replication)
-> (Replication -> Replication -> Replication)
-> Ord Replication
Replication -> Replication -> Bool
Replication -> Replication -> Ordering
Replication -> Replication -> Replication
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Replication -> Replication -> Replication
$cmin :: Replication -> Replication -> Replication
max :: Replication -> Replication -> Replication
$cmax :: Replication -> Replication -> Replication
>= :: Replication -> Replication -> Bool
$c>= :: Replication -> Replication -> Bool
> :: Replication -> Replication -> Bool
$c> :: Replication -> Replication -> Bool
<= :: Replication -> Replication -> Bool
$c<= :: Replication -> Replication -> Bool
< :: Replication -> Replication -> Bool
$c< :: Replication -> Replication -> Bool
compare :: Replication -> Replication -> Ordering
$ccompare :: Replication -> Replication -> Ordering
$cp1Ord :: Eq Replication
Ord, Int -> Replication -> ShowS
[Replication] -> ShowS
Replication -> String
(Int -> Replication -> ShowS)
-> (Replication -> String)
-> ([Replication] -> ShowS)
-> Show Replication
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Replication] -> ShowS
$cshowList :: [Replication] -> ShowS
show :: Replication -> String
$cshow :: Replication -> String
showsPrec :: Int -> Replication -> ShowS
$cshowsPrec :: Int -> Replication -> ShowS
Show)

$(deriveJson ''Replication)