drawCard :: (Monad m) => PlayerID -> StateT GameState m ()
drawCard pID =
  zoom (playerWithID pID) $ do
    oldDeck <- use deck
    when (null oldDeck) $ error "drawCard taking head of empty deck"
    hand <>= [head oldDeck]
    deck .= tail oldDeck
drawCard :: (Monad m) => PlayerID -> StateT GameState m ()
drawCard pID =
  zoom (playerWithID pID) $ do
    oldDeck <- use deck
    when (null oldDeck) $ error "drawCard taking head of empty deck"
    hand <>= [head oldDeck]
    deck .= tail oldDeck
drawCard pID =
  zoom (playerWithID pID) $ do
    oldDeck <- use deck
    when (null oldDeck) $ error "drawCard taking head of empty deck"
    hand <>= [head oldDeck]
    deck .= tail oldDeck