Work on terminals and machines
This commit is contained in:
@@ -7,7 +7,8 @@ module Dodge.Placement.Instance.Analyser
|
||||
--import Dodge.PlacementSpot
|
||||
import Dodge.Data
|
||||
import Dodge.Base.You
|
||||
--import Dodge.Default
|
||||
import Dodge.Default
|
||||
import Dodge.Terminal
|
||||
--import Dodge.Tree
|
||||
--import Dodge.RoomLink
|
||||
--import Dodge.Room.Door
|
||||
@@ -39,15 +40,6 @@ import Data.Maybe
|
||||
--import Control.Monad.State
|
||||
--import System.Random
|
||||
|
||||
|
||||
initMCUpdate
|
||||
:: (Machine -> World -> World)
|
||||
-> (Machine -> World -> World)
|
||||
-> Machine -> World -> World
|
||||
initMCUpdate initup f mc
|
||||
= (machines . ix (_mcID mc) . mcUpdate .~ f)
|
||||
. initup mc
|
||||
|
||||
analyser
|
||||
:: [String] -- | initial text
|
||||
-> String -- | succeed text
|
||||
@@ -58,35 +50,13 @@ analyser
|
||||
-> PlacementSpot
|
||||
-> Placement
|
||||
analyser starts sucs fails afters upf pslight psmc = extTrigLitPos pslight $ \tp ->
|
||||
Just $ updatebuttonname $ plSpot .~ psmc $ putTerminal' aquamarine (termupdate tp)
|
||||
Just $ plSpot .~ psmc $ putTerminal' aquamarine tparams (termupdate tp)
|
||||
where
|
||||
termupdate tp btid = initMCUpdate
|
||||
(\mc -> buttons . ix btid . btTerminalParams .~
|
||||
const (TerminalParams
|
||||
{ _termDisplayedLines = []
|
||||
, _termFutureLines =
|
||||
map simpleline (topFlushStrings allstrings)
|
||||
++ map simpleline starts
|
||||
++ [testline' (_mcID mc)]
|
||||
++ map simpleline afters
|
||||
, _termMaxLines = 7
|
||||
, _termTitle = "ANALYSER"
|
||||
, _termSel = Nothing
|
||||
-- , _termOptions = []
|
||||
, _termInput = Nothing
|
||||
, _termScrollCommands = []
|
||||
, _termWriteCommands = []
|
||||
})
|
||||
)
|
||||
tparams = const $ defaultTermParams & termFutureLines ++.~
|
||||
(map makeTermLine starts ++ [makeTermLine sucs] ++ map makeTermLine afters)
|
||||
termupdate tp btid =
|
||||
(\mc -> upf mc . (triggers . ix (fromJust $ _plMID tp) .~ const (_sensToggle $ _mcSensor mc))
|
||||
)
|
||||
allstrings = sucs : fails : afters ++ starts
|
||||
simpleline str = TerminalLineDisplay {_tlPause = 0, _tlString = const (str,white)}
|
||||
testline' mcid = TerminalLineDisplay 0 (testline mcid)
|
||||
testline mcid w = case w ^? machines . ix mcid . mcSensor . sensToggle of
|
||||
Just True -> (sucs,green)
|
||||
_ -> (fails,red)
|
||||
updatebuttonname = plType . putButton . btText .~ "ANALYSER"
|
||||
|
||||
analyserTest :: (World -> Bool) -> Machine -> World -> World
|
||||
analyserTest t mc w = case
|
||||
|
||||
Reference in New Issue
Block a user