unmed2-0.0: src/MEDPlaySeq.hs
module MEDPlaySeq where
import Amiga (stringFromBytes)
import qualified MMD0Song
import MMD0Song(MMD0Song)
import qualified PlaySeq
import PlaySeq(PlaySeq)
import Human
import qualified Data.List as List
data MEDPlaySeq = MEDPlaySeq
{ name :: String
, indices :: [Int] -- ^ block indices
}
playSeq0 :: MMD0Song -> MEDPlaySeq
playSeq0 song =
MEDPlaySeq "" $ take (fromIntegral $ MMD0Song.songlen song) $
map fromIntegral $ MMD0Song.playseq song
playSeq2 :: PlaySeq -> MEDPlaySeq
playSeq2 pseq =
MEDPlaySeq
{ name = stringFromBytes (PlaySeq.name pseq)
, indices = map fromIntegral (PlaySeq.seq pseq)
}
instance Human MEDPlaySeq where
human (MEDPlaySeq name' indices') =
(if null name' then "playseq" else name') ++ ": " ++
List.intercalate ", " (map show indices')