module Rattletrap.Encode.AttributeValue
  ( putAttributeValue
  )
where

import Rattletrap.Encode.AppliedDamageAttribute
import Rattletrap.Encode.BooleanAttribute
import Rattletrap.Encode.ByteAttribute
import Rattletrap.Encode.CamSettingsAttribute
import Rattletrap.Encode.ClubColorsAttribute
import Rattletrap.Encode.CustomDemolishAttribute
import Rattletrap.Encode.DamageStateAttribute
import Rattletrap.Encode.DemolishAttribute
import Rattletrap.Encode.EnumAttribute
import Rattletrap.Encode.ExplosionAttribute
import Rattletrap.Encode.ExtendedExplosionAttribute
import Rattletrap.Encode.FlaggedIntAttribute
import Rattletrap.Encode.FlaggedByteAttribute
import Rattletrap.Encode.FloatAttribute
import Rattletrap.Encode.GameModeAttribute
import Rattletrap.Encode.Int64Attribute
import Rattletrap.Encode.IntAttribute
import Rattletrap.Encode.LoadoutAttribute
import Rattletrap.Encode.LoadoutOnlineAttribute
import Rattletrap.Encode.LoadoutsAttribute
import Rattletrap.Encode.LoadoutsOnlineAttribute
import Rattletrap.Encode.LocationAttribute
import Rattletrap.Encode.MusicStingerAttribute
import Rattletrap.Encode.PartyLeaderAttribute
import Rattletrap.Encode.PickupAttribute
import Rattletrap.Encode.PickupAttributeNew
import Rattletrap.Encode.PlayerHistoryKeyAttribute
import Rattletrap.Encode.PrivateMatchSettingsAttribute
import Rattletrap.Encode.QWordAttribute
import Rattletrap.Encode.ReservationAttribute
import Rattletrap.Encode.RigidBodyStateAttribute
import Rattletrap.Encode.StatEventAttribute
import Rattletrap.Encode.StringAttribute
import Rattletrap.Encode.TeamPaintAttribute
import Rattletrap.Encode.TitleAttribute
import Rattletrap.Encode.UniqueIdAttribute
import Rattletrap.Encode.WeldedInfoAttribute
import Rattletrap.Type.AttributeValue

import qualified Data.Binary.Bits.Put as BinaryBits

putAttributeValue :: AttributeValue -> BinaryBits.BitPut ()
putAttributeValue :: AttributeValue -> BitPut ()
putAttributeValue AttributeValue
value = case AttributeValue
value of
  AttributeValueAppliedDamage AppliedDamageAttribute
x -> AppliedDamageAttribute -> BitPut ()
putAppliedDamageAttribute AppliedDamageAttribute
x
  AttributeValueBoolean BooleanAttribute
x -> BooleanAttribute -> BitPut ()
putBooleanAttribute BooleanAttribute
x
  AttributeValueByte ByteAttribute
x -> ByteAttribute -> BitPut ()
putByteAttribute ByteAttribute
x
  AttributeValueCamSettings CamSettingsAttribute
x -> CamSettingsAttribute -> BitPut ()
putCamSettingsAttribute CamSettingsAttribute
x
  AttributeValueClubColors ClubColorsAttribute
x -> ClubColorsAttribute -> BitPut ()
putClubColorsAttribute ClubColorsAttribute
x
  AttributeValueCustomDemolish CustomDemolishAttribute
x -> CustomDemolishAttribute -> BitPut ()
putCustomDemolishAttribute CustomDemolishAttribute
x
  AttributeValueDamageState DamageStateAttribute
x -> DamageStateAttribute -> BitPut ()
putDamageStateAttribute DamageStateAttribute
x
  AttributeValueDemolish DemolishAttribute
x -> DemolishAttribute -> BitPut ()
putDemolishAttribute DemolishAttribute
x
  AttributeValueEnum EnumAttribute
x -> EnumAttribute -> BitPut ()
putEnumAttribute EnumAttribute
x
  AttributeValueExplosion ExplosionAttribute
x -> ExplosionAttribute -> BitPut ()
putExplosionAttribute ExplosionAttribute
x
  AttributeValueExtendedExplosion ExtendedExplosionAttribute
x -> ExtendedExplosionAttribute -> BitPut ()
putExtendedExplosionAttribute ExtendedExplosionAttribute
x
  AttributeValueFlaggedInt FlaggedIntAttribute
x -> FlaggedIntAttribute -> BitPut ()
putFlaggedIntAttribute FlaggedIntAttribute
x
  AttributeValueFlaggedByte FlaggedByteAttribute
x -> FlaggedByteAttribute -> BitPut ()
putFlaggedByteAttribute FlaggedByteAttribute
x
  AttributeValueFloat FloatAttribute
x -> FloatAttribute -> BitPut ()
putFloatAttribute FloatAttribute
x
  AttributeValueGameMode GameModeAttribute
x -> GameModeAttribute -> BitPut ()
putGameModeAttribute GameModeAttribute
x
  AttributeValueInt IntAttribute
x -> IntAttribute -> BitPut ()
putIntAttribute IntAttribute
x
  AttributeValueInt64 Int64Attribute
x -> Int64Attribute -> BitPut ()
putInt64Attribute Int64Attribute
x
  AttributeValueLoadout LoadoutAttribute
x -> LoadoutAttribute -> BitPut ()
putLoadoutAttribute LoadoutAttribute
x
  AttributeValueLoadoutOnline LoadoutOnlineAttribute
x -> LoadoutOnlineAttribute -> BitPut ()
putLoadoutOnlineAttribute LoadoutOnlineAttribute
x
  AttributeValueLoadouts LoadoutsAttribute
x -> LoadoutsAttribute -> BitPut ()
putLoadoutsAttribute LoadoutsAttribute
x
  AttributeValueLoadoutsOnline LoadoutsOnlineAttribute
x -> LoadoutsOnlineAttribute -> BitPut ()
putLoadoutsOnlineAttribute LoadoutsOnlineAttribute
x
  AttributeValueLocation LocationAttribute
x -> LocationAttribute -> BitPut ()
putLocationAttribute LocationAttribute
x
  AttributeValueMusicStinger MusicStingerAttribute
x -> MusicStingerAttribute -> BitPut ()
putMusicStingerAttribute MusicStingerAttribute
x
  AttributeValuePartyLeader PartyLeaderAttribute
x -> PartyLeaderAttribute -> BitPut ()
putPartyLeaderAttribute PartyLeaderAttribute
x
  AttributeValuePickup PickupAttribute
x -> PickupAttribute -> BitPut ()
putPickupAttribute PickupAttribute
x
  AttributeValuePickupNew PickupAttributeNew
x -> PickupAttributeNew -> BitPut ()
putPickupAttributeNew PickupAttributeNew
x
  AttributeValuePlayerHistoryKey PlayerHistoryKeyAttribute
x -> PlayerHistoryKeyAttribute -> BitPut ()
putPlayerHistoryKeyAttribute PlayerHistoryKeyAttribute
x
  AttributeValuePrivateMatchSettings PrivateMatchSettingsAttribute
x -> PrivateMatchSettingsAttribute -> BitPut ()
putPrivateMatchSettingsAttribute PrivateMatchSettingsAttribute
x
  AttributeValueQWord QWordAttribute
x -> QWordAttribute -> BitPut ()
putQWordAttribute QWordAttribute
x
  AttributeValueReservation ReservationAttribute
x -> ReservationAttribute -> BitPut ()
putReservationAttribute ReservationAttribute
x
  AttributeValueRigidBodyState RigidBodyStateAttribute
x -> RigidBodyStateAttribute -> BitPut ()
putRigidBodyStateAttribute RigidBodyStateAttribute
x
  AttributeValueStatEvent StatEventAttribute
x -> StatEventAttribute -> BitPut ()
putStatEventAttribute StatEventAttribute
x
  AttributeValueString StringAttribute
x -> StringAttribute -> BitPut ()
putStringAttribute StringAttribute
x
  AttributeValueTeamPaint TeamPaintAttribute
x -> TeamPaintAttribute -> BitPut ()
putTeamPaintAttribute TeamPaintAttribute
x
  AttributeValueTitle TitleAttribute
x -> TitleAttribute -> BitPut ()
putTitleAttribute TitleAttribute
x
  AttributeValueUniqueId UniqueIdAttribute
x -> UniqueIdAttribute -> BitPut ()
putUniqueIdAttribute UniqueIdAttribute
x
  AttributeValueWeldedInfo WeldedInfoAttribute
x -> WeldedInfoAttribute -> BitPut ()
putWeldedInfoAttribute WeldedInfoAttribute
x