summaryrefslogtreecommitdiffstats
path: root/DefaultPlayer.hs
diff options
context:
space:
mode:
Diffstat (limited to 'DefaultPlayer.hs')
-rw-r--r--DefaultPlayer.hs19
1 files changed, 10 insertions, 9 deletions
diff --git a/DefaultPlayer.hs b/DefaultPlayer.hs
index 6f80096..431b298 100644
--- a/DefaultPlayer.hs
+++ b/DefaultPlayer.hs
@@ -9,16 +9,16 @@ import Data.Fixed
import Data.Ratio ((%))
import Data.Typeable
+import Game (Tank(..))
import GLDriver
import Player
-import Tank
-data DefaultPlayer = DefaultPlayer (S.Set Key) Float Float
+data DefaultPlayer = DefaultPlayer (S.Set Key) Float Float Bool
deriving (Typeable, Show)
instance Player DefaultPlayer where
- playerUpdate (DefaultPlayer keys aimx aimy) tank =
+ playerUpdate (DefaultPlayer keys aimx aimy shoot) 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)
@@ -26,10 +26,11 @@ instance Player DefaultPlayer where
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)
+ in (DefaultPlayer keys aimx aimy False, angle, move, aangle, shoot)
- 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 (MouseMotionEvent x y) <- fromEvent ev = DefaultPlayer keys x y
- | otherwise = DefaultPlayer keys aimx aimy
+ handleEvent (DefaultPlayer keys aimx aimy shoot) ev
+ | Just (KeyPressEvent key) <- fromEvent ev = DefaultPlayer (S.insert key keys) aimx aimy shoot
+ | Just (KeyReleaseEvent key) <- fromEvent ev = DefaultPlayer (S.delete key keys) aimx aimy shoot
+ | Just (MouseMotionEvent x y) <- fromEvent ev = DefaultPlayer keys x y shoot
+ | Just (MousePressEvent x y) <- fromEvent ev = DefaultPlayer keys x y True
+ | otherwise = DefaultPlayer keys aimx aimy shoot