From 335c10654f7d41053ffcabed19cb003d1c0ce13e Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Mon, 8 Mar 2010 22:13:35 +0100 Subject: Added bullet texture and movement; restructured game state --- DefaultPlayer.hs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'DefaultPlayer.hs') 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 -- cgit v1.2.3