diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Main.hs | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/Main.hs b/src/Main.hs index 3b7b3f5..54ec08a 100644 --- a/src/Main.hs +++ b/src/Main.hs | |||
| @@ -53,6 +53,8 @@ import Sequence.Contact.Tests | |||
| 53 | import Sequence.Utils | 53 | import Sequence.Utils |
| 54 | import Sequence.Formula | 54 | import Sequence.Formula |
| 55 | 55 | ||
| 56 | import Numeric.Probability.Game.Event (EventM, makeEventProb, enact) | ||
| 57 | |||
| 56 | import Text.Layout.Table | 58 | import Text.Layout.Table |
| 57 | 59 | ||
| 58 | import Text.Read (readMaybe) | 60 | import Text.Read (readMaybe) |
| @@ -82,6 +84,7 @@ main = do | |||
| 82 | , helpCommand "help" | 84 | , helpCommand "help" |
| 83 | , cmd "entities" listEntities "List all entities" | 85 | , cmd "entities" listEntities "List all entities" |
| 84 | , cmd "tip" focusTip "Focus the entity at the top of the queue" | 86 | , cmd "tip" focusTip "Focus the entity at the top of the queue" |
| 87 | , cmd "ptip" pFocusTip "Focus a random entity" | ||
| 85 | , cmd "focus" setFocus "Focus a specific entity" | 88 | , cmd "focus" setFocus "Focus a specific entity" |
| 86 | , cmd "blur" blur "Focus no entity" | 89 | , cmd "blur" blur "Focus no entity" |
| 87 | , cmd "remove" remove "Remove the focused entity from the queue" | 90 | , cmd "remove" remove "Remove the focused entity from the queue" |
| @@ -213,9 +216,21 @@ listFactions = use inhabitedFactions >>= mapM_ (shellPutStrLn . view faction') | |||
| 213 | listEntities = use (gEntities . to Map.keys) >>= mapM_ (shellPutStrLn <=< toName) | 216 | listEntities = use (gEntities . to Map.keys) >>= mapM_ (shellPutStrLn <=< toName) |
| 214 | 217 | ||
| 215 | -- Automatic focus | 218 | -- Automatic focus |
| 216 | focusTip, blur :: Sh GameState () | 219 | focusTip, blur, pFocusTip :: Sh GameState () |
| 217 | focusTip = gFocus <~ preuse tip | 220 | focusTip = gFocus <~ preuse tip |
| 218 | blur = gFocus .= Nothing | 221 | blur = gFocus .= Nothing |
| 222 | pFocusTip = do | ||
| 223 | round <- use gRound | ||
| 224 | let | ||
| 225 | eWeight :: Maybe SeqVal -> Int | ||
| 226 | eWeight sVal | ||
| 227 | | preview (_Just . seqRound . _Wrapped) sVal == Just round | ||
| 228 | , (preview (_Just . seqVal . _Just) -> Just n) <- sVal = n | ||
| 229 | | otherwise = 0 | ||
| 230 | entities <- map (over _2 . view $ eSeqVal . to eWeight) . Map.toList <$> use gEntities | ||
| 231 | case entities of | ||
| 232 | [] -> gFocus .= Nothing | ||
| 233 | _ -> gFocus <~ Just <$> liftIO (enact $ makeEventProb entities) | ||
| 219 | 234 | ||
| 220 | -- Manual focus | 235 | -- Manual focus |
| 221 | setFocus :: Completable EntityIdentifier -> Sh GameState () | 236 | setFocus :: Completable EntityIdentifier -> Sh GameState () |
