Post-Cancellation, Pre-Nisei Netrunner Rotation
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

53 行
1.6KB

  1. module Preview where
  2. import Data.List
  3. import Data.Maybe
  4. import Packs
  5. import State
  6. import Timestamp
  7. import Format
  8. import Utils
  9. type Preview = ([DataPack], [DataPack], Maybe BigBox, Maybe BigBox)
  10. extractPreview :: Maybe Preview -> ([DataPack],[DataPack],Maybe BigBox, Maybe BigBox)
  11. extractPreview Nothing = ([],[],Nothing, Nothing)
  12. extractPreview (Just (i,o,ib,ob)) = (i,o,ib,ob)
  13. diffRot :: [InRot] -> [InRot] -> ([DataPack], [DataPack])
  14. diffRot c f = (packIn, packOut)
  15. where
  16. packIn = map clean $ changes f c
  17. packOut = map clean $ changes c f
  18. clean = (\(Ir n) -> n)
  19. getPreview :: Timestamp -> Maybe Preview
  20. getPreview n
  21. | isPreviewSeason n = Just $ (fst packsChange, snd packsChange, head b, head (rotate 1 b))
  22. | otherwise = Nothing
  23. where
  24. ((i,o), (Bq b), r) = currentFormat n
  25. packsChange = diffRot i ni
  26. ((ni,_),_,_) = nextFormat ((i,o),(Bq b),r)
  27. printLegal :: State -> [String]
  28. printLegal ((i,o),(Bq b),_) = [
  29. "===Evergreen:\nRevised Core Set x3"
  30. , "===Deluxes :\n" ++ (intercalate "\n" $ sort $ map show $ catMaybes (tail b))
  31. , "===Datapacks:\n" ++ (intercalate "\n" $ sort $ map show $ map (\(Ir n) -> n) i)
  32. ]
  33. printPreview :: Maybe Preview -> [String]
  34. printPreview (Just (i, o, bi, bo)) = [
  35. "===Upcoming Changes:"
  36. , ("===In :\n" ++ (intercalate "\n" $ (map show i) ++ (map show cbi)))
  37. , ("===Out:\n" ++ (intercalate "\n" $ (map show o) ++ (map show cbo)))
  38. ]
  39. where
  40. rmEmp = filter (/="")
  41. cbi = catMaybes [bi]
  42. cbo = catMaybes [bo]
  43. cleanDP = map (\(Or n _) -> n)
  44. printPreview Nothing = []