From 7327695ca3d9aee5da1d0bc98572d877dd8c8546 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Tue, 9 Mar 2010 03:49:15 +0100 Subject: Moved source files to src directory --- src/DefaultPlayer.hs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/DefaultPlayer.hs (limited to 'src/DefaultPlayer.hs') diff --git a/src/DefaultPlayer.hs b/src/DefaultPlayer.hs new file mode 100644 index 0000000..af9aaf5 --- /dev/null +++ b/src/DefaultPlayer.hs @@ -0,0 +1,36 @@ +{-# LANGUAGE DeriveDataTypeable, PatternGuards #-} + +module DefaultPlayer ( DefaultPlayer(..) + ) where + + +import qualified Data.Set as S +import Data.Fixed +import Data.Ratio ((%)) +import Data.Typeable + +import Game (Tank(..)) +import GLDriver +import Player + + +data DefaultPlayer = DefaultPlayer (S.Set Key) Float Float Bool + deriving (Typeable, Show) + +instance Player DefaultPlayer where + 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 . tankX $ tank) + ay = aimy - (fromRational . toRational . tankY $ 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 False, angle, move, aangle, shoot) + + 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