module Game.LambdaHack.Client.UI.HandleHumanM
( cmdHumanSem
#ifdef EXPOSE_INTERNAL
, noRemoteHumanCmd, cmdAction, addNoError
#endif
) where
import Prelude ()
import Game.LambdaHack.Core.Prelude
import Game.LambdaHack.Client.MonadClient
import Game.LambdaHack.Client.Request
import Game.LambdaHack.Client.UI.HandleHelperM
import Game.LambdaHack.Client.UI.HandleHumanGlobalM
import Game.LambdaHack.Client.UI.HandleHumanLocalM
import Game.LambdaHack.Client.UI.HumanCmd
import Game.LambdaHack.Client.UI.MonadClientUI
cmdHumanSem :: (MonadClient m, MonadClientUI m)
=> HumanCmd -> m (Either MError ReqUI)
cmdHumanSem :: HumanCmd -> m (Either MError ReqUI)
cmdHumanSem cmd :: HumanCmd
cmd =
if HumanCmd -> Bool
noRemoteHumanCmd HumanCmd
cmd then do
LevelId
arena <- m LevelId
forall (m :: * -> *). MonadClientUI m => m LevelId
getArenaUI
LevelId
lidV <- m LevelId
forall (m :: * -> *). MonadClientUI m => m LevelId
viewedLevelUI
if LevelId
arena LevelId -> LevelId -> Bool
forall a. Eq a => a -> a -> Bool
/= LevelId
lidV then
FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust (FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> m (FailOrCmd ReqUI)
forall (m :: * -> *) a. MonadClientUI m => Text -> m (FailOrCmd a)
failWith
"command disabled on a remote level, press ESC to switch back"
else HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction HumanCmd
cmd
else HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction HumanCmd
cmd
noRemoteHumanCmd :: HumanCmd -> Bool
noRemoteHumanCmd :: HumanCmd -> Bool
noRemoteHumanCmd cmd :: HumanCmd
cmd = case HumanCmd
cmd of
Wait -> Bool
True
Wait10 -> Bool
True
MoveItem{} -> Bool
True
Apply{} -> Bool
True
AlterDir{} -> Bool
True
AlterWithPointer{} -> Bool
True
MoveOnceToXhair -> Bool
True
RunOnceToXhair -> Bool
True
ContinueToXhair -> Bool
True
_ -> Bool
False
cmdAction :: (MonadClient m, MonadClientUI m)
=> HumanCmd -> m (Either MError ReqUI)
cmdAction :: HumanCmd -> m (Either MError ReqUI)
cmdAction cmd :: HumanCmd
cmd = case HumanCmd
cmd of
Macro kms :: [String]
kms -> m () -> m (Either MError ReqUI)
forall (m :: * -> *). Monad m => m () -> m (Either MError ReqUI)
addNoError (m () -> m (Either MError ReqUI))
-> m () -> m (Either MError ReqUI)
forall a b. (a -> b) -> a -> b
$ [String] -> m ()
forall (m :: * -> *). MonadClientUI m => [String] -> m ()
macroHuman [String]
kms
ByArea l :: [(CmdArea, HumanCmd)]
l -> (HumanCmd -> m (Either MError ReqUI))
-> [(CmdArea, HumanCmd)] -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
(HumanCmd -> m (Either MError ReqUI))
-> [(CmdArea, HumanCmd)] -> m (Either MError ReqUI)
byAreaHuman HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction [(CmdArea, HumanCmd)]
l
ByAimMode AimModeCmd{..} ->
m (Either MError ReqUI)
-> m (Either MError ReqUI) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
m (Either MError ReqUI)
-> m (Either MError ReqUI) -> m (Either MError ReqUI)
byAimModeHuman (HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction HumanCmd
exploration) (HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction HumanCmd
aiming)
ComposeIfLocal cmd1 :: HumanCmd
cmd1 cmd2 :: HumanCmd
cmd2 ->
m (Either MError ReqUI)
-> m (Either MError ReqUI) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
m (Either MError ReqUI)
-> m (Either MError ReqUI) -> m (Either MError ReqUI)
composeIfLocalHuman (HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction HumanCmd
cmd1) (HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction HumanCmd
cmd2)
ComposeUnlessError cmd1 :: HumanCmd
cmd1 cmd2 :: HumanCmd
cmd2 ->
m (Either MError ReqUI)
-> m (Either MError ReqUI) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
m (Either MError ReqUI)
-> m (Either MError ReqUI) -> m (Either MError ReqUI)
composeUnlessErrorHuman (HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction HumanCmd
cmd1) (HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction HumanCmd
cmd2)
Compose2ndLocal cmd1 :: HumanCmd
cmd1 cmd2 :: HumanCmd
cmd2 ->
m (Either MError ReqUI)
-> m (Either MError ReqUI) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
m (Either MError ReqUI)
-> m (Either MError ReqUI) -> m (Either MError ReqUI)
compose2ndLocalHuman (HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction HumanCmd
cmd1) (HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction HumanCmd
cmd2)
LoopOnNothing cmd1 :: HumanCmd
cmd1 -> m (Either MError ReqUI) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
m (Either MError ReqUI) -> m (Either MError ReqUI)
loopOnNothingHuman (HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction HumanCmd
cmd1)
ExecuteIfClear cmd1 :: HumanCmd
cmd1 -> m (Either MError ReqUI) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
m (Either MError ReqUI) -> m (Either MError ReqUI)
executeIfClearHuman (HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction HumanCmd
cmd1)
Wait -> FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust (FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (RequestTimed -> ReqUI
ReqUITimed (RequestTimed -> ReqUI)
-> m (Either FailError RequestTimed) -> m (FailOrCmd ReqUI)
forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
(a -> b) -> f (g a) -> f (g b)
<$$> m (Either FailError RequestTimed)
forall (m :: * -> *).
MonadClientUI m =>
m (Either FailError RequestTimed)
waitHuman)
Wait10 -> FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust (FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (RequestTimed -> ReqUI
ReqUITimed (RequestTimed -> ReqUI)
-> m (Either FailError RequestTimed) -> m (FailOrCmd ReqUI)
forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
(a -> b) -> f (g a) -> f (g b)
<$$> m (Either FailError RequestTimed)
forall (m :: * -> *).
MonadClientUI m =>
m (Either FailError RequestTimed)
waitHuman10)
Yell -> FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust (FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (RequestTimed -> ReqUI
ReqUITimed (RequestTimed -> ReqUI)
-> m (Either FailError RequestTimed) -> m (FailOrCmd ReqUI)
forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
(a -> b) -> f (g a) -> f (g b)
<$$> m (Either FailError RequestTimed)
forall (m :: * -> *).
MonadClientUI m =>
m (Either FailError RequestTimed)
yellHuman)
MoveDir v :: Vector
v ->
FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust (FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (RequestTimed -> ReqUI
ReqUITimed (RequestTimed -> ReqUI)
-> m (Either FailError RequestTimed) -> m (FailOrCmd ReqUI)
forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
(a -> b) -> f (g a) -> f (g b)
<$$> Bool
-> Bool
-> Bool
-> Bool
-> Vector
-> m (Either FailError RequestTimed)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
Bool
-> Bool
-> Bool
-> Bool
-> Vector
-> m (Either FailError RequestTimed)
moveRunHuman Bool
True Bool
True Bool
False Bool
False Vector
v)
RunDir v :: Vector
v -> FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust (FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (RequestTimed -> ReqUI
ReqUITimed (RequestTimed -> ReqUI)
-> m (Either FailError RequestTimed) -> m (FailOrCmd ReqUI)
forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
(a -> b) -> f (g a) -> f (g b)
<$$> Bool
-> Bool
-> Bool
-> Bool
-> Vector
-> m (Either FailError RequestTimed)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
Bool
-> Bool
-> Bool
-> Bool
-> Vector
-> m (Either FailError RequestTimed)
moveRunHuman Bool
True Bool
True Bool
True Bool
True Vector
v)
RunOnceAhead -> RequestTimed -> ReqUI
ReqUITimed (RequestTimed -> ReqUI)
-> m (Either MError RequestTimed) -> m (Either MError ReqUI)
forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
(a -> b) -> f (g a) -> f (g b)
<$$> m (Either MError RequestTimed)
forall (m :: * -> *).
MonadClientUI m =>
m (Either MError RequestTimed)
runOnceAheadHuman
MoveOnceToXhair -> FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust (FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (RequestTimed -> ReqUI
ReqUITimed (RequestTimed -> ReqUI)
-> m (Either FailError RequestTimed) -> m (FailOrCmd ReqUI)
forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
(a -> b) -> f (g a) -> f (g b)
<$$> m (Either FailError RequestTimed)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
m (Either FailError RequestTimed)
moveOnceToXhairHuman)
RunOnceToXhair -> FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust (FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (RequestTimed -> ReqUI
ReqUITimed (RequestTimed -> ReqUI)
-> m (Either FailError RequestTimed) -> m (FailOrCmd ReqUI)
forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
(a -> b) -> f (g a) -> f (g b)
<$$> m (Either FailError RequestTimed)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
m (Either FailError RequestTimed)
runOnceToXhairHuman)
ContinueToXhair -> FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust (FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (RequestTimed -> ReqUI
ReqUITimed (RequestTimed -> ReqUI)
-> m (Either FailError RequestTimed) -> m (FailOrCmd ReqUI)
forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
(a -> b) -> f (g a) -> f (g b)
<$$> m (Either FailError RequestTimed)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
m (Either FailError RequestTimed)
continueToXhairHuman)
MoveItem cLegalRaw :: [CStore]
cLegalRaw toCStore :: CStore
toCStore mverb :: Maybe Part
mverb auto :: Bool
auto ->
FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust
(FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (RequestTimed -> ReqUI
ReqUITimed (RequestTimed -> ReqUI)
-> m (Either FailError RequestTimed) -> m (FailOrCmd ReqUI)
forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
(a -> b) -> f (g a) -> f (g b)
<$$> [CStore]
-> CStore
-> Maybe Part
-> Bool
-> m (Either FailError RequestTimed)
forall (m :: * -> *).
MonadClientUI m =>
[CStore]
-> CStore
-> Maybe Part
-> Bool
-> m (Either FailError RequestTimed)
moveItemHuman [CStore]
cLegalRaw CStore
toCStore Maybe Part
mverb Bool
auto)
Project -> FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust (FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (RequestTimed -> ReqUI
ReqUITimed (RequestTimed -> ReqUI)
-> m (Either FailError RequestTimed) -> m (FailOrCmd ReqUI)
forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
(a -> b) -> f (g a) -> f (g b)
<$$> m (Either FailError RequestTimed)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
m (Either FailError RequestTimed)
projectHuman)
Apply -> FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust (FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (RequestTimed -> ReqUI
ReqUITimed (RequestTimed -> ReqUI)
-> m (Either FailError RequestTimed) -> m (FailOrCmd ReqUI)
forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
(a -> b) -> f (g a) -> f (g b)
<$$> m (Either FailError RequestTimed)
forall (m :: * -> *).
MonadClientUI m =>
m (Either FailError RequestTimed)
applyHuman)
AlterDir ts :: [TriggerTile]
ts -> FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust (FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (RequestTimed -> ReqUI
ReqUITimed (RequestTimed -> ReqUI)
-> m (Either FailError RequestTimed) -> m (FailOrCmd ReqUI)
forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
(a -> b) -> f (g a) -> f (g b)
<$$> [TriggerTile] -> m (Either FailError RequestTimed)
forall (m :: * -> *).
MonadClientUI m =>
[TriggerTile] -> m (Either FailError RequestTimed)
alterDirHuman [TriggerTile]
ts)
AlterWithPointer ts :: [TriggerTile]
ts -> FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust
(FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (RequestTimed -> ReqUI
ReqUITimed (RequestTimed -> ReqUI)
-> m (Either FailError RequestTimed) -> m (FailOrCmd ReqUI)
forall (f :: * -> *) (g :: * -> *) a b.
(Functor f, Functor g) =>
(a -> b) -> f (g a) -> f (g b)
<$$> [TriggerTile] -> m (Either FailError RequestTimed)
forall (m :: * -> *).
MonadClientUI m =>
[TriggerTile] -> m (Either FailError RequestTimed)
alterWithPointerHuman [TriggerTile]
ts)
Help -> (HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
(HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
helpHuman HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction
Hint -> (HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
(HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
hintHuman HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction
ItemMenu -> (HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
(HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
itemMenuHuman HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction
ChooseItemMenu dialogMode :: ItemDialogMode
dialogMode -> (HumanCmd -> m (Either MError ReqUI))
-> ItemDialogMode -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
(HumanCmd -> m (Either MError ReqUI))
-> ItemDialogMode -> m (Either MError ReqUI)
chooseItemMenuHuman HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction ItemDialogMode
dialogMode
MainMenu -> (HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
(HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
mainMenuHuman HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction
MainMenuAutoOn -> (HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
(HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
mainMenuAutoOnHuman HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction
MainMenuAutoOff -> (HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
(HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
mainMenuAutoOffHuman HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction
Dashboard -> (HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
(HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
dashboardHuman HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction
GameDifficultyIncr -> m ()
forall (m :: * -> *). MonadClient m => m ()
gameDifficultyIncr m () -> m (Either MError ReqUI) -> m (Either MError ReqUI)
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> (HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
(HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
challengesMenuHuman HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction
GameWolfToggle -> m ()
forall (m :: * -> *). MonadClient m => m ()
gameWolfToggle m () -> m (Either MError ReqUI) -> m (Either MError ReqUI)
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> (HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
(HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
challengesMenuHuman HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction
GameFishToggle -> m ()
forall (m :: * -> *). MonadClient m => m ()
gameFishToggle m () -> m (Either MError ReqUI) -> m (Either MError ReqUI)
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> (HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
(HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
challengesMenuHuman HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction
GameScenarioIncr -> m ()
forall (m :: * -> *). MonadClient m => m ()
gameScenarioIncr m () -> m (Either MError ReqUI) -> m (Either MError ReqUI)
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> (HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
(HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
mainMenuHuman HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction
GameRestart -> FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust (FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m (FailOrCmd ReqUI)
forall (m :: * -> *). MonadClientUI m => m (FailOrCmd ReqUI)
gameRestartHuman
GameQuit -> FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust (FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m (FailOrCmd ReqUI)
forall (m :: * -> *). MonadClientUI m => m (FailOrCmd ReqUI)
gameQuitHuman
GameDrop -> FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust (FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ReqUI -> FailOrCmd ReqUI) -> m ReqUI -> m (FailOrCmd ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ReqUI -> FailOrCmd ReqUI
forall a b. b -> Either a b
Right m ReqUI
forall (m :: * -> *). MonadClientUI m => m ReqUI
gameDropHuman
GameExit -> FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust (FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ReqUI -> FailOrCmd ReqUI) -> m ReqUI -> m (FailOrCmd ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ReqUI -> FailOrCmd ReqUI
forall a b. b -> Either a b
Right m ReqUI
forall (m :: * -> *). MonadClientUI m => m ReqUI
gameExitHuman
GameSave -> FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust (FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ReqUI -> FailOrCmd ReqUI) -> m ReqUI -> m (FailOrCmd ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ReqUI -> FailOrCmd ReqUI
forall a b. b -> Either a b
Right m ReqUI
forall (m :: * -> *). MonadClientUI m => m ReqUI
gameSaveHuman
Tactic -> FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust (FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m (FailOrCmd ReqUI)
forall (m :: * -> *). MonadClientUI m => m (FailOrCmd ReqUI)
tacticHuman
Automate -> FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust (FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m (FailOrCmd ReqUI)
forall (m :: * -> *). MonadClientUI m => m (FailOrCmd ReqUI)
automateHuman
AutomateToggle -> FailOrCmd ReqUI -> Either MError ReqUI
forall a. FailOrCmd a -> Either MError a
weaveJust (FailOrCmd ReqUI -> Either MError ReqUI)
-> m (FailOrCmd ReqUI) -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m (FailOrCmd ReqUI)
forall (m :: * -> *). MonadClientUI m => m (FailOrCmd ReqUI)
automateToggleHuman
AutomateBack -> m (Either MError ReqUI)
forall (m :: * -> *). MonadClientUI m => m (Either MError ReqUI)
automateBackHuman
ChooseItem dialogMode :: ItemDialogMode
dialogMode -> MError -> Either MError ReqUI
forall a b. a -> Either a b
Left (MError -> Either MError ReqUI)
-> m MError -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ItemDialogMode -> m MError
forall (m :: * -> *). MonadClientUI m => ItemDialogMode -> m MError
chooseItemHuman ItemDialogMode
dialogMode
ChooseItemProject ts :: [TriggerItem]
ts -> MError -> Either MError ReqUI
forall a b. a -> Either a b
Left (MError -> Either MError ReqUI)
-> m MError -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TriggerItem] -> m MError
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
[TriggerItem] -> m MError
chooseItemProjectHuman [TriggerItem]
ts
ChooseItemApply ts :: [TriggerItem]
ts -> MError -> Either MError ReqUI
forall a b. a -> Either a b
Left (MError -> Either MError ReqUI)
-> m MError -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [TriggerItem] -> m MError
forall (m :: * -> *). MonadClientUI m => [TriggerItem] -> m MError
chooseItemApplyHuman [TriggerItem]
ts
PickLeader k :: Int
k -> MError -> Either MError ReqUI
forall a b. a -> Either a b
Left (MError -> Either MError ReqUI)
-> m MError -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Int -> m MError
forall (m :: * -> *). MonadClientUI m => Int -> m MError
pickLeaderHuman Int
k
PickLeaderWithPointer -> MError -> Either MError ReqUI
forall a b. a -> Either a b
Left (MError -> Either MError ReqUI)
-> m MError -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m MError
forall (m :: * -> *). MonadClientUI m => m MError
pickLeaderWithPointerHuman
MemberCycle -> MError -> Either MError ReqUI
forall a b. a -> Either a b
Left (MError -> Either MError ReqUI)
-> m MError -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m MError
forall (m :: * -> *). MonadClientUI m => m MError
memberCycleHuman
MemberBack -> MError -> Either MError ReqUI
forall a b. a -> Either a b
Left (MError -> Either MError ReqUI)
-> m MError -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m MError
forall (m :: * -> *). MonadClientUI m => m MError
memberBackHuman
SelectActor -> m () -> m (Either MError ReqUI)
forall (m :: * -> *). Monad m => m () -> m (Either MError ReqUI)
addNoError m ()
forall (m :: * -> *). MonadClientUI m => m ()
selectActorHuman
SelectNone -> m () -> m (Either MError ReqUI)
forall (m :: * -> *). Monad m => m () -> m (Either MError ReqUI)
addNoError m ()
forall (m :: * -> *). MonadClientUI m => m ()
selectNoneHuman
SelectWithPointer -> MError -> Either MError ReqUI
forall a b. a -> Either a b
Left (MError -> Either MError ReqUI)
-> m MError -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m MError
forall (m :: * -> *). MonadClientUI m => m MError
selectWithPointerHuman
Repeat n :: Int
n -> m () -> m (Either MError ReqUI)
forall (m :: * -> *). Monad m => m () -> m (Either MError ReqUI)
addNoError (m () -> m (Either MError ReqUI))
-> m () -> m (Either MError ReqUI)
forall a b. (a -> b) -> a -> b
$ Int -> m ()
forall (m :: * -> *). MonadClientUI m => Int -> m ()
repeatHuman Int
n
Record -> m () -> m (Either MError ReqUI)
forall (m :: * -> *). Monad m => m () -> m (Either MError ReqUI)
addNoError m ()
forall (m :: * -> *). MonadClientUI m => m ()
recordHuman
AllHistory -> m () -> m (Either MError ReqUI)
forall (m :: * -> *). Monad m => m () -> m (Either MError ReqUI)
addNoError m ()
forall (m :: * -> *). MonadClientUI m => m ()
allHistoryHuman
LastHistory -> m () -> m (Either MError ReqUI)
forall (m :: * -> *). Monad m => m () -> m (Either MError ReqUI)
addNoError m ()
forall (m :: * -> *). MonadClientUI m => m ()
lastHistoryHuman
MarkVision -> m ()
forall (m :: * -> *). MonadClientUI m => m ()
markVisionHuman m () -> m (Either MError ReqUI) -> m (Either MError ReqUI)
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> (HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
(HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
settingsMenuHuman HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction
MarkSmell -> m ()
forall (m :: * -> *). MonadClientUI m => m ()
markSmellHuman m () -> m (Either MError ReqUI) -> m (Either MError ReqUI)
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> (HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
(HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
settingsMenuHuman HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction
MarkSuspect -> m ()
forall (m :: * -> *). MonadClient m => m ()
markSuspectHuman m () -> m (Either MError ReqUI) -> m (Either MError ReqUI)
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> (HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
(HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
settingsMenuHuman HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction
SettingsMenu -> (HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
(HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
settingsMenuHuman HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction
ChallengesMenu -> (HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
forall (m :: * -> *).
MonadClientUI m =>
(HumanCmd -> m (Either MError ReqUI)) -> m (Either MError ReqUI)
challengesMenuHuman HumanCmd -> m (Either MError ReqUI)
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
HumanCmd -> m (Either MError ReqUI)
cmdAction
PrintScreen -> m () -> m (Either MError ReqUI)
forall (m :: * -> *). Monad m => m () -> m (Either MError ReqUI)
addNoError m ()
forall (m :: * -> *). MonadClientUI m => m ()
printScreenHuman
Cancel -> m () -> m (Either MError ReqUI)
forall (m :: * -> *). Monad m => m () -> m (Either MError ReqUI)
addNoError m ()
forall (m :: * -> *). MonadClientUI m => m ()
cancelHuman
Accept -> m () -> m (Either MError ReqUI)
forall (m :: * -> *). Monad m => m () -> m (Either MError ReqUI)
addNoError m ()
forall (m :: * -> *). (MonadClient m, MonadClientUI m) => m ()
acceptHuman
ClearTargetIfItemClear -> m () -> m (Either MError ReqUI)
forall (m :: * -> *). Monad m => m () -> m (Either MError ReqUI)
addNoError m ()
forall (m :: * -> *). (MonadClient m, MonadClientUI m) => m ()
clearTargetIfItemClearHuman
ItemClear -> m () -> m (Either MError ReqUI)
forall (m :: * -> *). Monad m => m () -> m (Either MError ReqUI)
addNoError m ()
forall (m :: * -> *). MonadClientUI m => m ()
itemClearHuman
MoveXhair v :: Vector
v k :: Int
k -> MError -> Either MError ReqUI
forall a b. a -> Either a b
Left (MError -> Either MError ReqUI)
-> m MError -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Vector -> Int -> m MError
forall (m :: * -> *). MonadClientUI m => Vector -> Int -> m MError
moveXhairHuman Vector
v Int
k
AimTgt -> MError -> Either MError ReqUI
forall a b. a -> Either a b
Left (MError -> Either MError ReqUI)
-> m MError -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m MError
forall (m :: * -> *). MonadClientUI m => m MError
aimTgtHuman
AimFloor -> m () -> m (Either MError ReqUI)
forall (m :: * -> *). Monad m => m () -> m (Either MError ReqUI)
addNoError m ()
forall (m :: * -> *). MonadClientUI m => m ()
aimFloorHuman
AimEnemy -> m () -> m (Either MError ReqUI)
forall (m :: * -> *). Monad m => m () -> m (Either MError ReqUI)
addNoError m ()
forall (m :: * -> *). MonadClientUI m => m ()
aimEnemyHuman
AimItem -> m () -> m (Either MError ReqUI)
forall (m :: * -> *). Monad m => m () -> m (Either MError ReqUI)
addNoError m ()
forall (m :: * -> *). MonadClientUI m => m ()
aimItemHuman
AimAscend k :: Int
k -> MError -> Either MError ReqUI
forall a b. a -> Either a b
Left (MError -> Either MError ReqUI)
-> m MError -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Int -> m MError
forall (m :: * -> *). MonadClientUI m => Int -> m MError
aimAscendHuman Int
k
EpsIncr b :: Bool
b -> m () -> m (Either MError ReqUI)
forall (m :: * -> *). Monad m => m () -> m (Either MError ReqUI)
addNoError (m () -> m (Either MError ReqUI))
-> m () -> m (Either MError ReqUI)
forall a b. (a -> b) -> a -> b
$ Bool -> m ()
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
Bool -> m ()
epsIncrHuman Bool
b
XhairUnknown -> MError -> Either MError ReqUI
forall a b. a -> Either a b
Left (MError -> Either MError ReqUI)
-> m MError -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m MError
forall (m :: * -> *). (MonadClient m, MonadClientUI m) => m MError
xhairUnknownHuman
XhairItem -> MError -> Either MError ReqUI
forall a b. a -> Either a b
Left (MError -> Either MError ReqUI)
-> m MError -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m MError
forall (m :: * -> *). (MonadClient m, MonadClientUI m) => m MError
xhairItemHuman
XhairStair up :: Bool
up -> MError -> Either MError ReqUI
forall a b. a -> Either a b
Left (MError -> Either MError ReqUI)
-> m MError -> m (Either MError ReqUI)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Bool -> m MError
forall (m :: * -> *).
(MonadClient m, MonadClientUI m) =>
Bool -> m MError
xhairStairHuman Bool
up
XhairPointerFloor -> m () -> m (Either MError ReqUI)
forall (m :: * -> *). Monad m => m () -> m (Either MError ReqUI)
addNoError m ()
forall (m :: * -> *). MonadClientUI m => m ()
xhairPointerFloorHuman
XhairPointerEnemy -> m () -> m (Either MError ReqUI)
forall (m :: * -> *). Monad m => m () -> m (Either MError ReqUI)
addNoError m ()
forall (m :: * -> *). MonadClientUI m => m ()
xhairPointerEnemyHuman
AimPointerFloor -> m () -> m (Either MError ReqUI)
forall (m :: * -> *). Monad m => m () -> m (Either MError ReqUI)
addNoError m ()
forall (m :: * -> *). MonadClientUI m => m ()
aimPointerFloorHuman
AimPointerEnemy -> m () -> m (Either MError ReqUI)
forall (m :: * -> *). Monad m => m () -> m (Either MError ReqUI)
addNoError m ()
forall (m :: * -> *). MonadClientUI m => m ()
aimPointerEnemyHuman
addNoError :: Monad m => m () -> m (Either MError ReqUI)
addNoError :: m () -> m (Either MError ReqUI)
addNoError cmdCli :: m ()
cmdCli = m ()
cmdCli m () -> m (Either MError ReqUI) -> m (Either MError ReqUI)
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Either MError ReqUI -> m (Either MError ReqUI)
forall (m :: * -> *) a. Monad m => a -> m a
return (MError -> Either MError ReqUI
forall a b. a -> Either a b
Left MError
forall a. Maybe a
Nothing)