{-# LANGUAGE TemplateHaskell #-}

module Rattletrap.Type.LoadoutAttribute
  ( LoadoutAttribute(..)
  )
where

import Rattletrap.Type.Common
import Rattletrap.Type.Word32le
import Rattletrap.Type.Word8le

data LoadoutAttribute = LoadoutAttribute
  { LoadoutAttribute -> Word8le
loadoutAttributeVersion :: Word8le
  , LoadoutAttribute -> Word32le
loadoutAttributeBody :: Word32le
  , LoadoutAttribute -> Word32le
loadoutAttributeDecal :: Word32le
  , LoadoutAttribute -> Word32le
loadoutAttributeWheels :: Word32le
  , LoadoutAttribute -> Word32le
loadoutAttributeRocketTrail :: Word32le
  -- ^ Now known as "rocket boost".
  , LoadoutAttribute -> Word32le
loadoutAttributeAntenna :: Word32le
  , LoadoutAttribute -> Word32le
loadoutAttributeTopper :: Word32le
  , LoadoutAttribute -> Word32le
loadoutAttributeUnknown1 :: Word32le
  , LoadoutAttribute -> Maybe Word32le
loadoutAttributeUnknown2 :: Maybe Word32le
  , LoadoutAttribute -> Maybe Word32le
loadoutAttributeEngineAudio :: Maybe Word32le
  , LoadoutAttribute -> Maybe Word32le
loadoutAttributeTrail :: Maybe Word32le
  , LoadoutAttribute -> Maybe Word32le
loadoutAttributeGoalExplosion :: Maybe Word32le
  , LoadoutAttribute -> Maybe Word32le
loadoutAttributeBanner :: Maybe Word32le
  , LoadoutAttribute -> Maybe Word32le
loadoutAttributeUnknown3 :: Maybe Word32le
  , LoadoutAttribute -> Maybe Word32le
loadoutAttributeUnknown4 :: Maybe Word32le
  , LoadoutAttribute -> Maybe Word32le
loadoutAttributeUnknown5 :: Maybe Word32le
  , LoadoutAttribute -> Maybe Word32le
loadoutAttributeUnknown6 :: Maybe Word32le
  } deriving (LoadoutAttribute -> LoadoutAttribute -> Bool
(LoadoutAttribute -> LoadoutAttribute -> Bool)
-> (LoadoutAttribute -> LoadoutAttribute -> Bool)
-> Eq LoadoutAttribute
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: LoadoutAttribute -> LoadoutAttribute -> Bool
$c/= :: LoadoutAttribute -> LoadoutAttribute -> Bool
== :: LoadoutAttribute -> LoadoutAttribute -> Bool
$c== :: LoadoutAttribute -> LoadoutAttribute -> Bool
Eq, Eq LoadoutAttribute
Eq LoadoutAttribute
-> (LoadoutAttribute -> LoadoutAttribute -> Ordering)
-> (LoadoutAttribute -> LoadoutAttribute -> Bool)
-> (LoadoutAttribute -> LoadoutAttribute -> Bool)
-> (LoadoutAttribute -> LoadoutAttribute -> Bool)
-> (LoadoutAttribute -> LoadoutAttribute -> Bool)
-> (LoadoutAttribute -> LoadoutAttribute -> LoadoutAttribute)
-> (LoadoutAttribute -> LoadoutAttribute -> LoadoutAttribute)
-> Ord LoadoutAttribute
LoadoutAttribute -> LoadoutAttribute -> Bool
LoadoutAttribute -> LoadoutAttribute -> Ordering
LoadoutAttribute -> LoadoutAttribute -> LoadoutAttribute
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 :: LoadoutAttribute -> LoadoutAttribute -> LoadoutAttribute
$cmin :: LoadoutAttribute -> LoadoutAttribute -> LoadoutAttribute
max :: LoadoutAttribute -> LoadoutAttribute -> LoadoutAttribute
$cmax :: LoadoutAttribute -> LoadoutAttribute -> LoadoutAttribute
>= :: LoadoutAttribute -> LoadoutAttribute -> Bool
$c>= :: LoadoutAttribute -> LoadoutAttribute -> Bool
> :: LoadoutAttribute -> LoadoutAttribute -> Bool
$c> :: LoadoutAttribute -> LoadoutAttribute -> Bool
<= :: LoadoutAttribute -> LoadoutAttribute -> Bool
$c<= :: LoadoutAttribute -> LoadoutAttribute -> Bool
< :: LoadoutAttribute -> LoadoutAttribute -> Bool
$c< :: LoadoutAttribute -> LoadoutAttribute -> Bool
compare :: LoadoutAttribute -> LoadoutAttribute -> Ordering
$ccompare :: LoadoutAttribute -> LoadoutAttribute -> Ordering
$cp1Ord :: Eq LoadoutAttribute
Ord, Int -> LoadoutAttribute -> ShowS
[LoadoutAttribute] -> ShowS
LoadoutAttribute -> String
(Int -> LoadoutAttribute -> ShowS)
-> (LoadoutAttribute -> String)
-> ([LoadoutAttribute] -> ShowS)
-> Show LoadoutAttribute
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [LoadoutAttribute] -> ShowS
$cshowList :: [LoadoutAttribute] -> ShowS
show :: LoadoutAttribute -> String
$cshow :: LoadoutAttribute -> String
showsPrec :: Int -> LoadoutAttribute -> ShowS
$cshowsPrec :: Int -> LoadoutAttribute -> ShowS
Show)

$(deriveJson ''LoadoutAttribute)