diff options
Diffstat (limited to 'HTanks.hs')
-rw-r--r-- | HTanks.hs | 20 |
1 files changed, 11 insertions, 9 deletions
@@ -44,7 +44,7 @@ main = do when (initialized gl) $ do currentTime <- getCurrentTime let mainState = MainState {run = True, driver = SomeDriver gl, time = currentTime, players = - [ SomePlayer $ DefaultPlayer S.empty + [ SomePlayer $ DefaultPlayer S.empty 0 0 , SomePlayer $ CPUPlayer 0 ]} gameState = GameState {level = testLevel, tanks = [ Tank 0.0 0.0 0 0 2 360 False @@ -52,7 +52,7 @@ main = do ], textures = M.empty} runGame gameState $ do - setup 800 600 + setup runMain mainState mainLoop deinitGL gl @@ -123,11 +123,14 @@ updateAngle angle = do modify $ \tank -> tank {dir = newangle180} -updateTank :: Maybe Micro -> Bool -> State Tank () -updateTank angle move = do +updateTank :: Maybe Micro -> Bool -> Maybe Micro -> State Tank () +updateTank angle move aangle = do when (isJust angle) $ updateAngle $ fromJust angle - + + when (isJust aangle) $ + modify $ \tank -> tank {aim = fromJust aangle} + when move $ do tdir <- gets dir tspeed <- gets speed @@ -154,8 +157,8 @@ simulationStep = do modify $ \state -> state {players = fst pt} lift $ modify $ \state -> state {tanks = snd pt} where - updateTank' (player, tank) = let (p, angle, move) = playerMovement player tank - t = execState (updateTank angle move) tank + updateTank' (player, tank) = let (p, angle, move, aangle) = playerUpdate player tank + t = execState (updateTank angle move aangle) tank in (p, t) @@ -169,6 +172,5 @@ handleEvents = do handleEvent :: SomeEvent -> Main () handleEvent ev - | Just (ResizeEvent w h) <- fromEvent ev = lift $ resize w h - | Just QuitEvent <- fromEvent ev = modify $ \state -> state {run = False} + | Just QuitEvent <- fromEvent ev = modify $ \state -> state {run = False} | otherwise = return () |