added removePlayer
This commit is contained in:
parent
10318ade8c
commit
3a9592f958
1 changed files with 14 additions and 3 deletions
|
@ -22,7 +22,7 @@ module Data.TickLeiste
|
||||||
where
|
where
|
||||||
|
|
||||||
import qualified Data.Map.Strict as M
|
import qualified Data.Map.Strict as M
|
||||||
import Data.Maybe (fromMaybe)
|
import Data.Maybe (fromMaybe,maybe)
|
||||||
import qualified Data.Text as T
|
import qualified Data.Text as T
|
||||||
import qualified Data.UUID as U
|
import qualified Data.UUID as U
|
||||||
|
|
||||||
|
@ -110,7 +110,14 @@ setPlayerTick p t tl@(TickLeiste l pl) = TickLeiste (insertPlayerToLeiste p t l'
|
||||||
|
|
||||||
-- TODO
|
-- TODO
|
||||||
removePlayer :: Player -> TickLeiste -> TickLeiste
|
removePlayer :: Player -> TickLeiste -> TickLeiste
|
||||||
removePlayer = error "removePlayer not yet implemented (Franzi?)"
|
removePlayer p tl@(TickLeiste {leiste = l, player = pm}) = TickLeiste l' pm'
|
||||||
|
where
|
||||||
|
pt = getPlayerTick p tl
|
||||||
|
l' = maybe
|
||||||
|
l
|
||||||
|
(flip (removePlayerFromLeiste p) l)
|
||||||
|
pt
|
||||||
|
pm' = removePlayerFromPlayerMap p pm
|
||||||
|
|
||||||
-- | convert the Tick[eiste to a list of 'Tick' and 'Player' list pairs. These list are ordered
|
-- | convert the Tick[eiste to a list of 'Tick' and 'Player' list pairs. These list are ordered
|
||||||
toList :: TickLeiste -> [(Tick, [Player])]
|
toList :: TickLeiste -> [(Tick, [Player])]
|
||||||
|
@ -120,7 +127,7 @@ toList (TickLeiste l _) = M.toAscList l
|
||||||
|
|
||||||
-- TODO
|
-- TODO
|
||||||
fromList :: [(Tick, [Player])] -> TickLeiste
|
fromList :: [(Tick, [Player])] -> TickLeiste
|
||||||
fromList = error "not implemented"
|
fromList = error "not implemented (Franzi?)"
|
||||||
|
|
||||||
-- | convert from 'TickLeiste' to a map from 'Tick' to list of 'Player'
|
-- | convert from 'TickLeiste' to a map from 'Tick' to list of 'Player'
|
||||||
toMap :: TickLeiste -> M.Map Tick [Player]
|
toMap :: TickLeiste -> M.Map Tick [Player]
|
||||||
|
@ -130,6 +137,7 @@ toMap = leiste
|
||||||
|
|
||||||
-- it removes a player from a specific tick, if the player
|
-- it removes a player from a specific tick, if the player
|
||||||
-- wasn't at the tick it is the identity.
|
-- wasn't at the tick it is the identity.
|
||||||
|
-- TODO this can be written more beautifully with something like M.update
|
||||||
removePlayerFromLeiste :: Player -> Tick -> M.Map Tick [Player] -> M.Map Tick [Player]
|
removePlayerFromLeiste :: Player -> Tick -> M.Map Tick [Player] -> M.Map Tick [Player]
|
||||||
removePlayerFromLeiste p t l = fromMaybe l $ do
|
removePlayerFromLeiste p t l = fromMaybe l $ do
|
||||||
list <- l M.!? t
|
list <- l M.!? t
|
||||||
|
@ -138,6 +146,9 @@ removePlayerFromLeiste p t l = fromMaybe l $ do
|
||||||
then return $ M.delete t l
|
then return $ M.delete t l
|
||||||
else return $ M.insert t list' l
|
else return $ M.insert t list' l
|
||||||
|
|
||||||
|
removePlayerFromPlayerMap :: Player -> M.Map Player Tick -> M.Map Player Tick
|
||||||
|
removePlayerFromPlayerMap = M.delete
|
||||||
|
|
||||||
insertPlayerToLeiste :: Player -> Tick -> M.Map Tick [Player] -> M.Map Tick [Player]
|
insertPlayerToLeiste :: Player -> Tick -> M.Map Tick [Player] -> M.Map Tick [Player]
|
||||||
insertPlayerToLeiste p t l = M.insert t (M.findWithDefault [] t l ++ [p]) l
|
insertPlayerToLeiste p t l = M.insert t (M.findWithDefault [] t l ++ [p]) l
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue