{-# LANGUAGE TemplateHaskell #-}

module Rattletrap.Type.Initialization
  ( Initialization(..)
  )
where

import Rattletrap.Type.Common
import Rattletrap.Type.Int8Vector
import Rattletrap.Type.Vector

data Initialization = Initialization
  { Initialization -> Maybe Vector
initializationLocation :: Maybe Vector
  -- ^ Not every class has an initial location. See
  -- 'Rattletrap.Data.rawClassesWithLocation'.
  , Initialization -> Maybe Int8Vector
initializationRotation :: Maybe Int8Vector
  -- ^ Only classes with location can have rotation, but not every one does.
  -- See 'Rattletrap.Data.rawClassesWithRotation'.
  } deriving (Initialization -> Initialization -> Bool
(Initialization -> Initialization -> Bool)
-> (Initialization -> Initialization -> Bool) -> Eq Initialization
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Initialization -> Initialization -> Bool
$c/= :: Initialization -> Initialization -> Bool
== :: Initialization -> Initialization -> Bool
$c== :: Initialization -> Initialization -> Bool
Eq, Eq Initialization
Eq Initialization
-> (Initialization -> Initialization -> Ordering)
-> (Initialization -> Initialization -> Bool)
-> (Initialization -> Initialization -> Bool)
-> (Initialization -> Initialization -> Bool)
-> (Initialization -> Initialization -> Bool)
-> (Initialization -> Initialization -> Initialization)
-> (Initialization -> Initialization -> Initialization)
-> Ord Initialization
Initialization -> Initialization -> Bool
Initialization -> Initialization -> Ordering
Initialization -> Initialization -> Initialization
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 :: Initialization -> Initialization -> Initialization
$cmin :: Initialization -> Initialization -> Initialization
max :: Initialization -> Initialization -> Initialization
$cmax :: Initialization -> Initialization -> Initialization
>= :: Initialization -> Initialization -> Bool
$c>= :: Initialization -> Initialization -> Bool
> :: Initialization -> Initialization -> Bool
$c> :: Initialization -> Initialization -> Bool
<= :: Initialization -> Initialization -> Bool
$c<= :: Initialization -> Initialization -> Bool
< :: Initialization -> Initialization -> Bool
$c< :: Initialization -> Initialization -> Bool
compare :: Initialization -> Initialization -> Ordering
$ccompare :: Initialization -> Initialization -> Ordering
$cp1Ord :: Eq Initialization
Ord, Int -> Initialization -> ShowS
[Initialization] -> ShowS
Initialization -> String
(Int -> Initialization -> ShowS)
-> (Initialization -> String)
-> ([Initialization] -> ShowS)
-> Show Initialization
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Initialization] -> ShowS
$cshowList :: [Initialization] -> ShowS
show :: Initialization -> String
$cshow :: Initialization -> String
showsPrec :: Int -> Initialization -> ShowS
$cshowsPrec :: Int -> Initialization -> ShowS
Show)

$(deriveJson ''Initialization)