{-# LANGUAGE TemplateHaskell #-}

module Rattletrap.Type.GameModeAttribute
  ( GameModeAttribute(..)
  )
where

import Rattletrap.Type.Common

data GameModeAttribute = GameModeAttribute
  { gameModeAttributeNumBits :: Int
  -- ^ This field is guaranteed to be small. In other words, it won't overflow.
  -- It's stored as a regular 'Int' rather than something more precise like an
  -- 'Int8' because it just gets passed to functions that expect 'Int's.
  -- There's no reason to do a bunch of conversions.
  , gameModeAttributeWord :: Word8
  } deriving (Eq, Ord, Show)

$(deriveJson ''GameModeAttribute)