octane-0.17.0: library/Octane/Type/Initialization.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedLabels #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
module Octane.Type.Initialization
( Initialization(..)
) where
import qualified Data.Default.Class as Default
import qualified Data.OverloadedRecords.TH as OverloadedRecords
import qualified Octane.Type.Int8 as Int8
import qualified Octane.Type.Vector as Vector
-- | Information about a new instance of a class.
--
-- This cannot be an instance of 'Data.Binary.Bits.BinaryBit' because it
-- requires out-of-band information (the class name) to decode.
data Initialization = Initialization
{ initializationLocation :: Maybe (Vector.Vector Int)
-- ^ The instance's initial position.
, initializationRotation :: Maybe (Vector.Vector Int8.Int8)
-- ^ The instance's initial rotation.
} deriving (Eq, Show)
$(OverloadedRecords.overloadedRecord Default.def ''Initialization)