From 1020310190063279b7951e44d8ae21fe3a623aa3 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 5 Mar 2010 03:32:02 +0100 Subject: Render cannon direction; handle resize in GLX driver --- HTanks.hs | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'HTanks.hs') diff --git a/HTanks.hs b/HTanks.hs index 1f6ac11..1bbae03 100644 --- a/HTanks.hs +++ b/HTanks.hs @@ -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 () -- cgit v1.2.3