summaryrefslogtreecommitdiffstats
path: root/DefaultPlayer.hs
diff options
context:
space:
mode:
Diffstat (limited to 'DefaultPlayer.hs')
-rw-r--r--DefaultPlayer.hs26
1 files changed, 13 insertions, 13 deletions
diff --git a/DefaultPlayer.hs b/DefaultPlayer.hs
index d1c1e24..6f80096 100644
--- a/DefaultPlayer.hs
+++ b/DefaultPlayer.hs
@@ -14,22 +14,22 @@ import Player
import Tank
-data DefaultPlayer = DefaultPlayer (S.Set Key) Micro Micro
+data DefaultPlayer = DefaultPlayer (S.Set Key) Float Float
deriving (Typeable, Show)
instance Player DefaultPlayer where
- playerUpdate (DefaultPlayer keys aimx aimy) tank = playerUpdate' keys aimx aimy tank
+ playerUpdate (DefaultPlayer keys aimx aimy) tank =
+ let x = (if (S.member KeyLeft keys) then (-1) else 0) + (if (S.member KeyRight keys) then 1 else 0)
+ y = (if (S.member KeyDown keys) then (-1) else 0) + (if (S.member KeyUp keys) then 1 else 0)
+ ax = aimx - (fromRational . toRational $ posx tank)
+ ay = aimy - (fromRational . toRational $ posy tank)
+ move = (x /= 0 || y /= 0)
+ angle = if move then Just $ fromRational $ round ((atan2 y x)*1000000*180/pi)%1000000 else Nothing
+ aangle = if (ax /= 0 || ay /= 0) then Just $ fromRational $ round ((atan2 ay ax)*1000000*180/pi)%1000000 else Nothing
+ in (DefaultPlayer keys aimx aimy, angle, move, aangle)
handleEvent (DefaultPlayer keys aimx aimy) ev
- | Just (KeyPressEvent key) <- fromEvent ev = DefaultPlayer (S.insert key keys) aimx aimy
- | Just (KeyReleaseEvent key) <- fromEvent ev = DefaultPlayer (S.delete key keys) aimx aimy
+ | Just (KeyPressEvent key) <- fromEvent ev = DefaultPlayer (S.insert key keys) aimx aimy
+ | Just (KeyReleaseEvent key) <- fromEvent ev = DefaultPlayer (S.delete key keys) aimx aimy
+ | Just (MouseMotionEvent x y) <- fromEvent ev = DefaultPlayer keys x y
| otherwise = DefaultPlayer keys aimx aimy
-
-
-playerUpdate' :: S.Set Key -> Micro -> Micro -> Tank -> (DefaultPlayer, Maybe Micro, Bool, Maybe Micro)
-playerUpdate' keys aimx aimy tank = (DefaultPlayer keys aimx aimy, angle, move, Nothing)
- where
- x = (if (S.member KeyLeft keys) then (-1) else 0) + (if (S.member KeyRight keys) then 1 else 0)
- y = (if (S.member KeyDown keys) then (-1) else 0) + (if (S.member KeyUp keys) then 1 else 0)
- move = (x /= 0 || y /= 0)
- angle = if move then Just $ fromRational $ round ((atan2 y x)*1000000*180/pi)%1000000 else Nothing