Renamed WiimotePlayer to HWiidPlayer
This commit is contained in:
parent
2ff529b0b1
commit
d2be8eb410
3 changed files with 16 additions and 16 deletions
|
@ -14,7 +14,7 @@ data-files: tex/*.png
|
||||||
executable: HTanks
|
executable: HTanks
|
||||||
hs-source-dirs: src
|
hs-source-dirs: src
|
||||||
main-is: HTanks.hs
|
main-is: HTanks.hs
|
||||||
other-modules: Collision, CPUPlayer, DefaultPlayer, WiimotePlayer, Game, GLDriver, GLX, Level, MainLoop, Paths_htanks, Player, Render, Simulation, Texture, Debris,
|
other-modules: Collision, CPUPlayer, DefaultPlayer, HWiidPlayer, Game, GLDriver, GLX, Level, MainLoop, Paths_htanks, Player, Render, Simulation, Texture, Debris,
|
||||||
Tank, Bindings.GLX, Bindings.GLPng
|
Tank, Bindings.GLX, Bindings.GLPng
|
||||||
--ghc-options: -threaded
|
--ghc-options: -threaded
|
||||||
extra-libraries: glpng
|
extra-libraries: glpng
|
||||||
|
|
|
@ -7,7 +7,7 @@ import Render
|
||||||
import Player
|
import Player
|
||||||
import CPUPlayer
|
import CPUPlayer
|
||||||
import DefaultPlayer
|
import DefaultPlayer
|
||||||
import WiimotePlayer
|
import HWiidPlayer
|
||||||
import Simulation
|
import Simulation
|
||||||
import Tank
|
import Tank
|
||||||
|
|
||||||
|
@ -27,14 +27,14 @@ import Foreign.C.Types
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = do
|
main = do
|
||||||
let theLevel = testLevel
|
let theLevel = testLevel
|
||||||
wiimotePlayer <- newWiimotePlayer
|
hwiidPlayer <- newHWiidPlayer
|
||||||
gl <- initGL $ glxDriver (levelWidth theLevel) (levelHeight theLevel)
|
gl <- initGL $ glxDriver (levelWidth theLevel) (levelHeight theLevel)
|
||||||
|
|
||||||
when (initialized gl) $ do
|
when (initialized gl) $ do
|
||||||
currentTime <- getCurrentTime
|
currentTime <- getCurrentTime
|
||||||
let mainState = MainState {run = True, driver = SomeDriver gl, time = currentTime, players =
|
let mainState = MainState {run = True, driver = SomeDriver gl, time = currentTime, players =
|
||||||
[ --SomePlayer $ DefaultPlayer S.empty 0 0 False
|
[ --SomePlayer $ DefaultPlayer S.empty 0 0 False
|
||||||
SomePlayer $ wiimotePlayer
|
SomePlayer $ hwiidPlayer
|
||||||
, SomePlayer $ CPUPlayer 0
|
, SomePlayer $ CPUPlayer 0
|
||||||
], textures = M.empty}
|
], textures = M.empty}
|
||||||
gameState = GameState {level = theLevel, tanks = [ Tank 5.0 5.0 0 0 1.5 270 False 3 1 5 1
|
gameState = GameState {level = theLevel, tanks = [ Tank 5.0 5.0 0 0 1.5 270 False 3 1 5 1
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
{-# LANGUAGE DeriveDataTypeable #-}
|
{-# LANGUAGE DeriveDataTypeable #-}
|
||||||
|
|
||||||
module WiimotePlayer ( WiimotePlayer
|
module HWiidPlayer ( HWiidPlayer
|
||||||
, newWiimotePlayer
|
, newHWiidPlayer
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
import Data.Bits
|
import Data.Bits
|
||||||
|
@ -22,11 +22,11 @@ import Player
|
||||||
import Tank
|
import Tank
|
||||||
|
|
||||||
|
|
||||||
data WiimotePlayer = WiimotePlayer Wiimote WiimoteAccCal [(Float, Float)]
|
data HWiidPlayer = HWiidPlayer Wiimote WiimoteAccCal [(Float, Float)]
|
||||||
deriving (Typeable, Show)
|
deriving (Typeable, Show)
|
||||||
|
|
||||||
instance Player WiimotePlayer where
|
instance Player HWiidPlayer where
|
||||||
playerUpdate (WiimotePlayer wiimote cal oldaims) tank = do
|
playerUpdate (HWiidPlayer wiimote cal oldaims) tank = do
|
||||||
state <- getState wiimote
|
state <- getState wiimote
|
||||||
messages <- getMesg wiimote
|
messages <- getMesg wiimote
|
||||||
|
|
||||||
|
@ -59,10 +59,10 @@ instance Player WiimotePlayer where
|
||||||
angle = atan2 my mx
|
angle = atan2 my mx
|
||||||
moveangle = if move then Just $ fromRational $ round ((angle - (sin $ 8*x)/8)*1000000*180/pi)%1000000 else Nothing
|
moveangle = if move then Just $ fromRational $ round ((angle - (sin $ 8*x)/8)*1000000*180/pi)%1000000 else Nothing
|
||||||
when foo $ print state
|
when foo $ print state
|
||||||
return (WiimotePlayer wiimote cal aims, moveangle, move, aangle, shoot)
|
return (HWiidPlayer wiimote cal aims, moveangle, move, aangle, shoot)
|
||||||
|
|
||||||
renderPlayer (WiimotePlayer _ _ []) = return ()
|
renderPlayer (HWiidPlayer _ _ []) = return ()
|
||||||
renderPlayer (WiimotePlayer _ _ aims) = unsafePreservingMatrix $ do
|
renderPlayer (HWiidPlayer _ _ aims) = unsafePreservingMatrix $ do
|
||||||
let (x, y) = mulV (1/(fromIntegral $ length aims)) $ foldr addV (0, 0) aims
|
let (x, y) = mulV (1/(fromIntegral $ length aims)) $ foldr addV (0, 0) aims
|
||||||
|
|
||||||
translate $ Vector3 x y (0 :: GLfloat)
|
translate $ Vector3 x y (0 :: GLfloat)
|
||||||
|
@ -136,13 +136,13 @@ lengthSqV a = dotV a a
|
||||||
lengthV a = sqrt $ lengthSqV a
|
lengthV a = sqrt $ lengthSqV a
|
||||||
|
|
||||||
|
|
||||||
newWiimotePlayer :: IO WiimotePlayer
|
newHWiidPlayer :: IO HWiidPlayer
|
||||||
newWiimotePlayer = do
|
newHWiidPlayer = do
|
||||||
wiimote <- open bdAddrAny (flagMesgInterface .|. flagNonblock)
|
wiimote <- open bdAddrAny (flagMesgInterface .|. flagNonblock)
|
||||||
when (wiimote == nullWiimote) $ fail "Wiimote error"
|
when (wiimote == nullWiimote) $ fail "Wiimote error"
|
||||||
setReportMode wiimote (reportButtons .|. reportAcc .|. reportIR .|. reportNunchuk)
|
setReportMode wiimote (reportButtons .|. reportAcc .|. reportIR .|. reportNunchuk)
|
||||||
cal <- getAccCal wiimote extNone
|
cal <- getAccCal wiimote extNone
|
||||||
return $ WiimotePlayer wiimote cal []
|
return $ HWiidPlayer wiimote cal []
|
||||||
|
|
||||||
test :: (Bits a) => a -> a -> Bool
|
test :: (Bits a) => a -> a -> Bool
|
||||||
test field bits = (field .&. bits) == bits
|
test field bits = (field .&. bits) == bits
|
Reference in a new issue