minor improvements to console output

This commit is contained in:
Jesse D. McDonald 2014-04-13 19:54:30 -05:00
parent fa8721ddd5
commit 2810c0ea4b
1 changed files with 11 additions and 7 deletions

View File

@ -19,6 +19,7 @@ import System.Random
import System.Random.Shuffle import System.Random.Shuffle
import qualified Data.IntMap as IM import qualified Data.IntMap as IM
import qualified Data.Map as M
f1 = Faction "Jesters" Blue f1 = Faction "Jesters" Blue
l1 = Lord "Prince Henry XXX" "" (QuestBonus [Skullduggery, Commerce] 4) l1 = Lord "Prince Henry XXX" "" (QuestBonus [Skullduggery, Commerce] 4)
@ -88,6 +89,10 @@ b5 = Building { _buildingCost = 4
clearScreen :: IO () clearScreen :: IO ()
clearScreen = putStr "\o033[H\o033[2J" >> hFlush stdout clearScreen = putStr "\o033[H\o033[2J" >> hFlush stdout
showTavern :: M.Map Resource Int -> String
showTavern = intercalate ", " . map showResource . M.toAscList
where showResource (r, n) = show n ++ " " ++ show r
printWaterdeep :: WaterdeepState -> IO () printWaterdeep :: WaterdeepState -> IO ()
printWaterdeep w = do printWaterdeep w = do
let ps = map snd $ w ^. gamePlayers . to IM.toAscList let ps = map snd $ w ^. gamePlayers . to IM.toAscList
@ -113,7 +118,7 @@ printWaterdeep w = do
forM_ ps $ \p -> do forM_ ps $ \p -> do
putStrLn ((p ^. playerName) ++ "'s State:") putStrLn ((p ^. playerName) ++ "'s State:")
putStrLn (" Score: " ++ show (p ^. playerScore)) putStrLn (" Score: " ++ show (p ^. playerScore))
putStrLn (" Tavern: " ++ show (p ^. playerTavern)) putStrLn (" Tavern: " ++ (p ^. playerTavern . to showTavern))
putStrLn (" Color: " ++ show (p ^. playerFaction . factionColor)) putStrLn (" Color: " ++ show (p ^. playerFaction . factionColor))
putStrLn (" Lord: " ++ (p ^. playerLord . lordName)) putStrLn (" Lord: " ++ (p ^. playerLord . lordName))
putStrLn (" Faction: " ++ (p ^. playerFaction . factionName)) putStrLn (" Faction: " ++ (p ^. playerFaction . factionName))
@ -130,9 +135,9 @@ menuPrompt prm@(SolicitChoice w p t cs) = do
let menuLine n t = putStrLn (show n ++ ") " ++ t) let menuLine n t = putStrLn (show n ++ ") " ++ t)
let blankLine = putStrLn "" let blankLine = putStrLn ""
let redo why = do let redo = do
printWaterdeep w printWaterdeep w
putStrLn ("ERROR: " ++ why) putStrLn ("ERROR: Expected a number between 1 and " ++ show menuSize ++ ".")
blankLine blankLine
menuPrompt prm menuPrompt prm
@ -144,10 +149,9 @@ menuPrompt prm@(SolicitChoice w p t cs) = do
response <- getLine response <- getLine
case reads response of case reads response of
(ix,""):_ -> if ix >= 1 && ix <= menuSize (ix,""):_ | ix >= 1 && ix <= menuSize ->
then blankLine >> return (snd $ cs !! (ix-1)) blankLine >> return (snd $ cs !! (ix-1))
else redo "Invalid choice." _ -> redo
_ -> redo "Expected a number."
main :: IO () main :: IO ()
main = do main = do