added some samples
[ekitaihs.git] / Render.hs
index fc321f6..036944b 100644 (file)
--- a/Render.hs
+++ b/Render.hs
@@ -6,10 +6,14 @@ import Brick.Types
 import Brick.Widgets.Core
 import Graphics.Vty.Input.Events
 
+import qualified Data.Vector as V
+import Sim
+
 type ResourceName = String
 
-data EkitaiState =
-    EkitaiState deriving (Show)
+data EkitaiState = EkitaiState
+    { ekitaiStateSim           :: Simulation
+    } deriving (Show)
 
 ekitaiApp :: App EkitaiState e ResourceName
 ekitaiApp = App
@@ -20,11 +24,15 @@ ekitaiApp = App
     , appAttrMap = const $ attrMap mempty []
     }
 
-buildInitialState :: IO EkitaiState
-buildInitialState = pure EkitaiState
+buildInitialState :: Simulation -> IO EkitaiState
+buildInitialState sim =
+    pure EkitaiState
+    { ekitaiStateSim = sim
+    }
 
 drawEkitai :: EkitaiState -> [Widget ResourceName]
-drawEkitai state = []
+-- drawEkitai state = [ vBox $ drawSim $ ekitaiStateSim state ]
+drawEkitai state = [ vBox [str $ simToString $ ekitaiStateSim state] ]
 
 handleEkitaiEvent :: EkitaiState -> BrickEvent n e -> EventM n (Next EkitaiState)
 handleEkitaiEvent s e =
@@ -32,6 +40,7 @@ handleEkitaiEvent s e =
         VtyEvent vtye ->
             case vtye of
                 EvKey (KChar 'q') [] -> halt s
+                EvKey (KChar 's') [] -> continue s { ekitaiStateSim = physStep $ ekitaiStateSim s }
                 _ -> continue s
         _ -> continue s