{-# LANGUAGE StrictData #-} module Octane.Type.RemoteId ( RemoteId(..) , module Octane.Type.RemoteId.PlayStationId , module Octane.Type.RemoteId.SplitscreenId , module Octane.Type.RemoteId.SteamId , module Octane.Type.RemoteId.XboxId ) where import Octane.Type.RemoteId.PlayStationId import Octane.Type.RemoteId.SplitscreenId import Octane.Type.RemoteId.SteamId import Octane.Type.RemoteId.XboxId import qualified Data.Aeson as Aeson -- | A player's canonical remote ID. This is the best way to uniquely identify -- players data RemoteId = RemotePlayStationId PlayStationId | RemoteSplitscreenId SplitscreenId | RemoteSteamId SteamId | RemoteXboxId XboxId deriving (Eq, Show) instance Aeson.ToJSON RemoteId where toJSON remoteId = case remoteId of RemotePlayStationId x -> Aeson.toJSON x RemoteSplitscreenId x -> Aeson.toJSON x RemoteSteamId x -> Aeson.toJSON x RemoteXboxId x -> Aeson.toJSON x