packages feed

SoccerFun 0.3 → 0.3.1

raw patch · 9 files changed

+166/−155 lines, 9 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- SoccerFun.Types: AddTime :: ExtraTime -> RefereeAction
- SoccerFun.Types: Advantage :: ATeam -> RefereeAction
- SoccerFun.Types: CenterKick :: ATeam -> RefereeAction
- SoccerFun.Types: ContinueGame :: RefereeAction
- SoccerFun.Types: Corner :: ATeam -> Edge -> RefereeAction
- SoccerFun.Types: DangerousPlay :: PlayerID -> RefereeAction
- SoccerFun.Types: DirectFreeKick :: ATeam -> Position -> RefereeAction
- SoccerFun.Types: DisplacePlayers :: Displacements -> RefereeAction
- SoccerFun.Types: EndHalf :: RefereeAction
- SoccerFun.Types: GameOver :: RefereeAction
- SoccerFun.Types: Goal :: ATeam -> RefereeAction
- SoccerFun.Types: GoalKick :: ATeam -> RefereeAction
- SoccerFun.Types: Hands :: PlayerID -> RefereeAction
- SoccerFun.Types: Offside :: PlayerID -> RefereeAction
- SoccerFun.Types: OwnBallIllegally :: PlayerID -> RefereeAction
- SoccerFun.Types: PauseGame :: RefereeAction
- SoccerFun.Types: Penalty :: ATeam -> RefereeAction
- SoccerFun.Types: ReprimandPlayer :: PlayerID -> Reprimand -> RefereeAction
- SoccerFun.Types: SchwalbeDetected :: PlayerID -> RefereeAction
- SoccerFun.Types: TackleDetected :: PlayerID -> RefereeAction
- SoccerFun.Types: TellMessage :: String -> RefereeAction
- SoccerFun.Types: TheaterDetected :: PlayerID -> RefereeAction
- SoccerFun.Types: ThrowIn :: ATeam -> Position -> RefereeAction
- SoccerFun.Types: data RefereeAction
- SoccerFun.Types: instance Eq RefereeAction
- SoccerFun.Types: instance Show RefereeAction
+ SoccerFun.RefereeAction: AddTime :: ExtraTime -> RefereeAction
+ SoccerFun.RefereeAction: Advantage :: ATeam -> RefereeAction
+ SoccerFun.RefereeAction: CenterKick :: ATeam -> RefereeAction
+ SoccerFun.RefereeAction: ContinueGame :: RefereeAction
+ SoccerFun.RefereeAction: Corner :: ATeam -> Edge -> RefereeAction
+ SoccerFun.RefereeAction: DangerousPlay :: PlayerID -> RefereeAction
+ SoccerFun.RefereeAction: DirectFreeKick :: ATeam -> Position -> RefereeAction
+ SoccerFun.RefereeAction: DisplacePlayers :: Displacements -> RefereeAction
+ SoccerFun.RefereeAction: EndHalf :: RefereeAction
+ SoccerFun.RefereeAction: GameOver :: RefereeAction
+ SoccerFun.RefereeAction: Goal :: ATeam -> RefereeAction
+ SoccerFun.RefereeAction: GoalKick :: ATeam -> RefereeAction
+ SoccerFun.RefereeAction: Hands :: PlayerID -> RefereeAction
+ SoccerFun.RefereeAction: Offside :: PlayerID -> RefereeAction
+ SoccerFun.RefereeAction: OwnBallIllegally :: PlayerID -> RefereeAction
+ SoccerFun.RefereeAction: PauseGame :: RefereeAction
+ SoccerFun.RefereeAction: Penalty :: ATeam -> RefereeAction
+ SoccerFun.RefereeAction: ReprimandPlayer :: PlayerID -> Reprimand -> RefereeAction
+ SoccerFun.RefereeAction: SchwalbeDetected :: PlayerID -> RefereeAction
+ SoccerFun.RefereeAction: TackleDetected :: PlayerID -> RefereeAction
+ SoccerFun.RefereeAction: TellMessage :: String -> RefereeAction
+ SoccerFun.RefereeAction: TheaterDetected :: PlayerID -> RefereeAction
+ SoccerFun.RefereeAction: ThrowIn :: ATeam -> Position -> RefereeAction
+ SoccerFun.RefereeAction: data RefereeAction
+ SoccerFun.RefereeAction: getKickPos :: Field -> Half -> RefereeAction -> Maybe Position
+ SoccerFun.RefereeAction: instance Eq RefereeAction
+ SoccerFun.RefereeAction: instance Show RefereeAction
+ SoccerFun.RefereeAction: isAddTime :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isAdvantage :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isCenterKick :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isContinueGame :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isCorner :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isDangerousPlay :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isDirectFreeKick :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isDisplacePlayers :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isEndHalf :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isGameOver :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isGoal :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isGoal4ATeam :: ATeam -> RefereeAction -> Bool
+ SoccerFun.RefereeAction: isGoalKick :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isHands :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isOffside :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isOwnBallIllegally :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isPauseGame :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isPenalty :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isReprimandPlayer :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isSchwalbeDetected :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isTackleDetected :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isTellMessage :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isTheaterDetected :: RefereeAction -> Bool
+ SoccerFun.RefereeAction: isThrowIn :: RefereeAction -> Bool

Files

SoccerFun.cabal view
@@ -1,5 +1,5 @@ Name:           SoccerFun-Version:        0.3+Version:        0.3.1 Copyright:      (c) 2010, Jan Rochel License:        BSD3 License-File:   LICENSE@@ -31,6 +31,7 @@ 	SoccerFun.Geometry 	SoccerFun.Field 	SoccerFun.Player+	SoccerFun.RefereeAction Other-Modules: 	SoccerFun.MatchGame 	SoccerFun.MatchControl
SoccerFun/MatchControl.hs view
@@ -3,7 +3,6 @@  import Prelude.Unicode import SoccerFun.Prelude-import SoccerFun.Referee import SoccerFun.Geometry import System.Random import SoccerFun.Types
SoccerFun/MatchGame.hs view
@@ -3,6 +3,7 @@  import SoccerFun.Types import SoccerFun.MatchControl+import SoccerFun.RefereeAction import SoccerFun.Prelude  
SoccerFun/Player.hs view
@@ -2,7 +2,7 @@ -- | This module defines the part of the SoccerFun API that is concerned with the player data types. module SoccerFun.Player where ---import Data.Maybe+import SoccerFun.RefereeAction import SoccerFun.Prelude import SoccerFun.Ball import SoccerFun.Geometry
SoccerFun/Referee.hs view
@@ -1,13 +1,14 @@ {-# LANGUAGE UnicodeSyntax, ExistentialQuantification #-} {-| The referee data type, and all available referees within Soccer-Fun. -}-module SoccerFun.Referee where+module SoccerFun.Referee (module SoccerFun.Referee, module SoccerFun.RefereeAction) where  import SoccerFun.Team import SoccerFun.Types import SoccerFun.Ball import SoccerFun.Field import SoccerFun.Geometry+import SoccerFun.RefereeAction import System.Random import Control.Monad.State import Control.Monad.Identity@@ -82,131 +83,6 @@   instance NameOf Referee where nameOf r = rname r---isReprimandPlayer ∷ RefereeAction → Bool-isReprimandPlayer (ReprimandPlayer _ _) = True-isReprimandPlayer _ = False--isHands ∷ RefereeAction → Bool-isHands (Hands _) = True-isHands _ = False--isTackleDetected ∷ RefereeAction → Bool-isTackleDetected (TackleDetected _) = True-isTackleDetected _ = False--isSchwalbeDetected ∷ RefereeAction → Bool-isSchwalbeDetected (SchwalbeDetected _) = True-isSchwalbeDetected _ = False--isTheaterDetected ∷ RefereeAction → Bool-isTheaterDetected (TheaterDetected _) = True-isTheaterDetected _ = False--isDangerousPlay ∷ RefereeAction → Bool-isDangerousPlay (DangerousPlay _) = True-isDangerousPlay _ = False--isGameOver ∷ RefereeAction → Bool-isGameOver GameOver = True-isGameOver _ = False--isPauseGame ∷ RefereeAction → Bool-isPauseGame PauseGame = True-isPauseGame _ = False--isAddTime ∷ RefereeAction → Bool-isAddTime (AddTime _) = True-isAddTime _ = False--isEndHalf ∷ RefereeAction → Bool-isEndHalf EndHalf = True-isEndHalf _ = False--isGoal ∷ RefereeAction → Bool-isGoal (Goal _) = True-isGoal _ = False--isOffside ∷ RefereeAction → Bool-isOffside (Offside _) = True-isOffside _ = False--isDirectFreeKick ∷ RefereeAction → Bool-isDirectFreeKick (DirectFreeKick _ _ ) = True-isDirectFreeKick _ = False--isGoalKick ∷ RefereeAction → Bool-isGoalKick (GoalKick _) = True-isGoalKick _ = False--isCorner ∷ RefereeAction → Bool-isCorner (Corner _ _) = True-isCorner _ = False--isThrowIn ∷ RefereeAction → Bool-isThrowIn (ThrowIn _ _) = True-isThrowIn _ = False--isPenalty ∷ RefereeAction → Bool-isPenalty (Penalty _) = True-isPenalty _ = False--isCenterKick ∷ RefereeAction → Bool-isCenterKick (CenterKick _) = True-isCenterKick _ = False--isAdvantage ∷ RefereeAction → Bool-isAdvantage (Advantage _) = True-isAdvantage _ = False--isOwnBallIllegally ∷ RefereeAction → Bool-isOwnBallIllegally (OwnBallIllegally _) = True-isOwnBallIllegally _ = False--isDisplacePlayers ∷ RefereeAction → Bool-isDisplacePlayers (DisplacePlayers _) = True-isDisplacePlayers _ = False--isContinueGame ∷ RefereeAction → Bool-isContinueGame ContinueGame = True-isContinueGame _ = False--isTellMessage ∷ RefereeAction → Bool-isTellMessage (TellMessage _) = True-isTellMessage _ = False---isGoal4ATeam ∷ ATeam → RefereeAction → Bool-isGoal4ATeam t (Goal t') = t == t'-isGoal4ATeam _ _ = False---- | Position of a referee-granted action like a throw-in, a corner kick, etc.-getKickPos ∷ Field → Half → RefereeAction → Maybe Position-getKickPos field half (GoalKick team) = Just $ Position { py = (fwidth field)/2.0-												   , px = if (team == Team1 && half == FirstHalf || team == Team2 && half == SecondHalf)-															 then penaltyAreaDepth-															 else (flength field) - penaltyAreaDepth }-getKickPos field half (Corner team edge) = Just $ Position { px = if (team == Team1 && half == SecondHalf || team == Team2 && half == FirstHalf)-															 then halfRadiusCornerKickArea-															 else ((flength field) - halfRadiusCornerKickArea)-												   , py = if (edge == North)-															 then halfRadiusCornerKickArea-															 else ((fwidth field) - halfRadiusCornerKickArea)-												   }-	where-	halfRadiusCornerKickArea = radiusCornerKickArea / 2.0-getKickPos field half (Penalty team) = Just $ Position { py = (fwidth field)/2.0-												   , px = if (team == Team1 && half == SecondHalf || team == Team2 && half == FirstHalf)-															 then penaltySpotDepth-															 else ((flength field) - penaltySpotDepth)-												   }-getKickPos field _ (CenterKick _) = Just $ Position { px = (flength field)/2.0-												   , py = (fwidth field) /2.0-												   }-getKickPos _ _ (DirectFreeKick _ pos) = Just pos-getKickPos _ _ (ThrowIn _ pos) = Just pos-getKickPos _ _ _ = Nothing   --defaultImage ∷  FileSystem env ⇒ Match RefereeAction env → (Bitmap,env)
+ SoccerFun/RefereeAction.hs view
@@ -0,0 +1,158 @@+{-# LANGUAGE UnicodeSyntax #-}+module SoccerFun.RefereeAction where++import SoccerFun.Types+import SoccerFun.Geometry+import SoccerFun.Field++data RefereeAction+	= ReprimandPlayer PlayerID Reprimand -- ^ player with given name receives reprimand+	| Hands PlayerID -- ^ person is seen for doing hands+	| TackleDetected PlayerID -- ^ person is seen for doing tackle+	| SchwalbeDetected PlayerID -- ^ person is seen for doing schwalbe+	| TheaterDetected PlayerID+	| DangerousPlay PlayerID -- ^ person is seen for doing dangerous actions+	| GameOver -- ^ end of game+	| PauseGame -- ^ game is paused+	| AddTime ExtraTime -- ^ extra time is added to the game+	| EndHalf -- ^ first half is over, teams go for a second half+	| Goal ATeam -- ^ team playing at home has scored+	| Offside PlayerID -- ^ player is offside at Home+	| DirectFreeKick ATeam Position -- ^ a direct free kick is granted for team home at given position+	| GoalKick ATeam -- ^ a goal kick is granted for team home+	| Corner ATeam Edge -- ^ a corner kick is granted for team home+	| ThrowIn ATeam Position -- ^ a throw in ball is granted for team home at given position+	| Penalty ATeam -- ^ penalty at homeside+	| CenterKick ATeam -- ^ team playing at home may start from the center+	| Advantage ATeam -- ^ referee gives advantages to home-team+	| OwnBallIllegally PlayerID -- ^ ball was for the other team+	| DisplacePlayers Displacements -- ^ displaces all players at the provided position (used with free kicks)+	| ContinueGame+	| TellMessage String -- ^ no effect on match, message is displayed by referee+	deriving (Show, Eq)+++isReprimandPlayer ∷ RefereeAction → Bool+isReprimandPlayer (ReprimandPlayer _ _) = True+isReprimandPlayer _ = False++isHands ∷ RefereeAction → Bool+isHands (Hands _) = True+isHands _ = False++isTackleDetected ∷ RefereeAction → Bool+isTackleDetected (TackleDetected _) = True+isTackleDetected _ = False++isSchwalbeDetected ∷ RefereeAction → Bool+isSchwalbeDetected (SchwalbeDetected _) = True+isSchwalbeDetected _ = False++isTheaterDetected ∷ RefereeAction → Bool+isTheaterDetected (TheaterDetected _) = True+isTheaterDetected _ = False++isDangerousPlay ∷ RefereeAction → Bool+isDangerousPlay (DangerousPlay _) = True+isDangerousPlay _ = False++isGameOver ∷ RefereeAction → Bool+isGameOver GameOver = True+isGameOver _ = False++isPauseGame ∷ RefereeAction → Bool+isPauseGame PauseGame = True+isPauseGame _ = False++isAddTime ∷ RefereeAction → Bool+isAddTime (AddTime _) = True+isAddTime _ = False++isEndHalf ∷ RefereeAction → Bool+isEndHalf EndHalf = True+isEndHalf _ = False++isGoal ∷ RefereeAction → Bool+isGoal (Goal _) = True+isGoal _ = False++isOffside ∷ RefereeAction → Bool+isOffside (Offside _) = True+isOffside _ = False++isDirectFreeKick ∷ RefereeAction → Bool+isDirectFreeKick (DirectFreeKick _ _ ) = True+isDirectFreeKick _ = False++isGoalKick ∷ RefereeAction → Bool+isGoalKick (GoalKick _) = True+isGoalKick _ = False++isCorner ∷ RefereeAction → Bool+isCorner (Corner _ _) = True+isCorner _ = False++isThrowIn ∷ RefereeAction → Bool+isThrowIn (ThrowIn _ _) = True+isThrowIn _ = False++isPenalty ∷ RefereeAction → Bool+isPenalty (Penalty _) = True+isPenalty _ = False++isCenterKick ∷ RefereeAction → Bool+isCenterKick (CenterKick _) = True+isCenterKick _ = False++isAdvantage ∷ RefereeAction → Bool+isAdvantage (Advantage _) = True+isAdvantage _ = False++isOwnBallIllegally ∷ RefereeAction → Bool+isOwnBallIllegally (OwnBallIllegally _) = True+isOwnBallIllegally _ = False++isDisplacePlayers ∷ RefereeAction → Bool+isDisplacePlayers (DisplacePlayers _) = True+isDisplacePlayers _ = False++isContinueGame ∷ RefereeAction → Bool+isContinueGame ContinueGame = True+isContinueGame _ = False++isTellMessage ∷ RefereeAction → Bool+isTellMessage (TellMessage _) = True+isTellMessage _ = False+++isGoal4ATeam ∷ ATeam → RefereeAction → Bool+isGoal4ATeam t (Goal t') = t == t'+isGoal4ATeam _ _ = False++-- | Position of a referee-granted action like a throw-in, a corner kick, etc.+getKickPos ∷ Field → Half → RefereeAction → Maybe Position+getKickPos field half (GoalKick team) = Just $ Position { py = (fwidth field)/2.0+												   , px = if (team == Team1 && half == FirstHalf || team == Team2 && half == SecondHalf)+															 then penaltyAreaDepth+															 else (flength field) - penaltyAreaDepth }+getKickPos field half (Corner team edge) = Just $ Position { px = if (team == Team1 && half == SecondHalf || team == Team2 && half == FirstHalf)+															 then halfRadiusCornerKickArea+															 else ((flength field) - halfRadiusCornerKickArea)+												   , py = if (edge == North)+															 then halfRadiusCornerKickArea+															 else ((fwidth field) - halfRadiusCornerKickArea)+												   }+	where+	halfRadiusCornerKickArea = radiusCornerKickArea / 2.0+getKickPos field half (Penalty team) = Just $ Position { py = (fwidth field)/2.0+												   , px = if (team == Team1 && half == SecondHalf || team == Team2 && half == FirstHalf)+															 then penaltySpotDepth+															 else ((flength field) - penaltySpotDepth)+												   }+getKickPos field _ (CenterKick _) = Just $ Position { px = (flength field)/2.0+												   , py = (fwidth field) /2.0+												   }+getKickPos _ _ (DirectFreeKick _ pos) = Just pos+getKickPos _ _ (ThrowIn _ pos) = Just pos+getKickPos _ _ _ = Nothing+
SoccerFun/Types.hs view
@@ -42,32 +42,6 @@  type FramesToGo = Int -- ^ number of frames to go before event ends -data RefereeAction-	= ReprimandPlayer PlayerID Reprimand -- ^ player with given name receives reprimand-	| Hands PlayerID -- ^ person is seen for doing hands-	| TackleDetected PlayerID -- ^ person is seen for doing tackle-	| SchwalbeDetected PlayerID -- ^ person is seen for doing schwalbe-	| TheaterDetected PlayerID-	| DangerousPlay PlayerID -- ^ person is seen for doing dangerous actions-	| GameOver -- ^ end of game-	| PauseGame -- ^ game is paused-	| AddTime ExtraTime -- ^ extra time is added to the game-	| EndHalf -- ^ first half is over, teams go for a second half-	| Goal ATeam -- ^ team playing at home has scored-	| Offside PlayerID -- ^ player is offside at Home-	| DirectFreeKick ATeam Position -- ^ a direct free kick is granted for team home at given position-	| GoalKick ATeam -- ^ a goal kick is granted for team home-	| Corner ATeam Edge -- ^ a corner kick is granted for team home-	| ThrowIn ATeam Position -- ^ a throw in ball is granted for team home at given position-	| Penalty ATeam -- ^ penalty at homeside-	| CenterKick ATeam -- ^ team playing at home may start from the center-	| Advantage ATeam -- ^ referee gives advantages to home-team-	| OwnBallIllegally PlayerID -- ^ ball was for the other team-	| DisplacePlayers Displacements -- ^ displaces all players at the provided position (used with free kicks)-	| ContinueGame-	| TellMessage String -- ^ no effect on match, message is displayed by referee-	deriving (Show, Eq)- data ATeam = Team1 | Team2 deriving (Eq, Show)  type Displacements = [(PlayerID,Displacement)] -- ^ players that need to be displaced
SoccerFun/UI/GL.hs view
@@ -13,6 +13,7 @@ import SoccerFun.Types import SoccerFun.Geometry import SoccerFun.Referee.Ivanov+import SoccerFun.RefereeAction import System.Random import SoccerFun.MatchGame import SoccerFun.Player
template/Child.hs view
@@ -8,6 +8,7 @@ import Control.Monad.State import SoccerFun.Field import SoccerFun.Ball+import SoccerFun.RefereeAction   -- Generate a child.