diff options
author | Matthias Schiffer <matthias@gamezock.de> | 2010-03-05 03:32:02 +0100 |
---|---|---|
committer | Matthias Schiffer <matthias@gamezock.de> | 2010-03-05 03:32:02 +0100 |
commit | 1020310190063279b7951e44d8ae21fe3a623aa3 (patch) | |
tree | f28f74ee4f9c37b6ec5dcac8e3dfb45c12b1e377 /HTanks.hs | |
parent | 88fd16d93080801014336ba8946a37919125b90c (diff) | |
download | htanks-1020310190063279b7951e44d8ae21fe3a623aa3.tar htanks-1020310190063279b7951e44d8ae21fe3a623aa3.zip |
Render cannon direction; handle resize in GLX driver
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 () |