checkVictory :: (Monad m) => StateT GameState m (Maybe PlayerID)
checkVictory = do
  state <- get
  return $ if (state^.playerWithID 0.hp) <= 0
           then Just 1
           else if (state^.playerWithID 1.hp) <= 0
                then Just 0
                else Nothing
checkVictory :: (Monad m) => StateT GameState m (Maybe PlayerID)
checkVictory = do
  state <- get
  return $ if (state^.playerWithID 0.hp) <= 0
           then Just 1
           else if (state^.playerWithID 1.hp) <= 0
                then Just 0
                else Nothing
checkVictory = do
  state <- get
  return $ if (state^.playerWithID 0.hp) <= 0
           then Just 1
           else if (state^.playerWithID 1.hp) <= 0
                then Just 0
                else Nothing