packages feed

starter-snake-haskell-1.1.0: src/Battlesnake/Core/Battlesnake.hs

{-# LANGUAGE DeriveGeneric #-}

module Battlesnake.Core.Battlesnake where

import Battlesnake.Core.Coordinate (Coordinate)
import Battlesnake.Core.Customizations (Customizations)
import Data.Aeson (FromJSON, ToJSON)
import Data.Text
import GHC.Generics

{-|
  A snake in the game.
  See: https://docs.battlesnake.com/api/objects/battlesnake
-}
data Battlesnake = Battlesnake
  { id :: Text
  -- ^ The ID of the snake.
  , name :: Text
  -- ^ The name of the snake.
  , health :: Integer
  -- ^ Current health of the snake (0-100).
  , body :: [Coordinate]
  -- ^ A list of coordinates representing the snake's body.
  , latency :: Text
  -- ^ The snake's latency.
  , head :: Coordinate
  -- ^ The position of the snakes head
  , length :: Integer
  -- ^ The length of the snake.
  , shout :: Text
  -- ^ The snake's last moves shout.
  , squad :: Maybe Text
  -- ^ The squad the snake is a part of (In squad mode).
  , customizations :: Customizations
  -- ^ The customizations of the snake
  }
  deriving (Show, Generic)

instance ToJSON Battlesnake

instance FromJSON Battlesnake