very bsaic rendering done
[ekitaihs.git] / Render.hs
1 module Render ( buildInitialState, ekitaiApp ) where
2
3 import Brick.AttrMap
4 import Brick.Main
5 import Brick.Types
6 import Brick.Widgets.Core
7 import Graphics.Vty.Input.Events
8
9 import qualified Data.Vector as V
10 import Sim
11
12 type ResourceName = String
13
14 data EkitaiState = EkitaiState
15     { ekitaiStateSim           :: Simulation
16     } deriving (Show)
17
18 ekitaiApp :: App EkitaiState e ResourceName
19 ekitaiApp = App
20     { appDraw = drawEkitai
21     , appChooseCursor = showFirstCursor
22     , appHandleEvent = handleEkitaiEvent
23     , appStartEvent = pure
24     , appAttrMap = const $ attrMap mempty []
25     }
26
27 buildInitialState :: IO EkitaiState
28 buildInitialState =
29     pure EkitaiState
30     { ekitaiStateSim = testSim
31     }
32
33 drawEkitai :: EkitaiState -> [Widget ResourceName]
34 -- drawEkitai state = [ vBox $ drawSim $ ekitaiStateSim state ]
35 drawEkitai state = [ vBox [str $ simToString $ ekitaiStateSim state] ]
36
37 handleEkitaiEvent :: EkitaiState -> BrickEvent n e -> EventM n (Next EkitaiState)
38 handleEkitaiEvent s e =
39     case e of
40         VtyEvent vtye ->
41             case vtye of
42                 EvKey (KChar 'q') [] -> halt s
43                 _ -> continue s
44         _ -> continue s 
45