Moved source files to src directory
This commit is contained in:
parent
2bb8561836
commit
7327695ca3
14 changed files with 3 additions and 6 deletions
36
src/DefaultPlayer.hs
Normal file
36
src/DefaultPlayer.hs
Normal file
|
@ -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
|
Reference in a new issue