From 907cb95dae83a25dabf377228f4d70a1cab3216f Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Mon, 8 Mar 2010 22:32:52 +0100 Subject: Shooting is possible now --- HTanks.hs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/HTanks.hs b/HTanks.hs index 7c648c1..ace90d3 100644 --- a/HTanks.hs +++ b/HTanks.hs @@ -160,14 +160,23 @@ simulationStep = do oldplayers <- gets players oldtanks <- lift $ gets tanks - let pt = unzip $ map updateTank' $ zip oldplayers oldtanks - - modify $ \state -> state {players = fst pt} - lift $ modify $ \state -> state {tanks = snd pt, shoots = map (execState updateShoot) $ shoots state} + let (p, t, s) = unzip3 $ map updateTank' $ zip oldplayers oldtanks + shootingtanks = map fst $ filter snd $ zip t s + newshoots = map (\tank -> Shoot + {shootX = posx tank + , shootY = posy tank + , shootDir = aim tank + , shootSpeed = tankShootSpeed tank + , bouncesLeft = tankShootBounces tank + }) shootingtanks + + + modify $ \state -> state {players = p} + lift $ modify $ \state -> state {tanks = t, shoots = map (execState updateShoot) (shoots state ++ newshoots)} where updateTank' (player, tank) = let (p, angle, move, aangle, shoot) = playerUpdate player tank t = execState (updateTank angle move aangle) tank - in (p, t) + in (p, t, shoot) handleEvents :: Main () -- cgit v1.2.3