public SongProperties(byte[] file) { numberOfIniStrings = EOFUtility.bytesToInt16(file.Skip(25).Take(2).ToArray()); nextByteindex += 2; if (numberOfIniStrings != 0) { // TODO : iniStrings data extraction // iniStrings = getIniStrings(file.Skip(25).Take(2).ToArray(), ref nextByteindex); } numberOfIniBoolean = EOFUtility.bytesToInt16(file.Skip(nextByteindex).Take(2).ToArray()); nextByteindex += 2; if (numberOfIniBoolean != 0) { // TODO : iniBooleans data extraction // iniBooleans = getIniBooleans(file.Skip(nextByteindex).Take(2).ToArray(), ref nextByteindex); } numberOfIniNumber = EOFUtility.bytesToInt16(file.Skip(nextByteindex).Take(2).ToArray()); nextByteindex += 2; if (numberOfIniNumber != 0) { iniNumbers = getIniNumbers(file, ref nextByteindex, numberOfIniNumber); } endByteIndex = nextByteindex; }
public OGGProfil(byte[] file, ref int nextByteIndex) { int nameLength = EOFUtility.bytesToInt16(file.Skip(nextByteIndex).Take(2).ToArray()); nextByteIndex += 2; name = String.Join("", (from character in file.Skip(nextByteIndex).Take(nameLength) select((char)character).ToString()).ToArray()); nextByteIndex += nameLength; // Not used by EOF the moment, always 0 int filenameLength = EOFUtility.bytesToInt16(file.Skip(nextByteIndex).Take(2).ToArray()); nextByteIndex += 2; int oggProfileDescriptionLength = EOFUtility.bytesToInt16(file.Skip(nextByteIndex).Take(2).ToArray()); nextByteIndex += 2; description = String.Join("", (from character in file.Skip(nextByteIndex).Take(oggProfileDescriptionLength) select((char)character).ToString()).ToArray()); nextByteIndex += oggProfileDescriptionLength; delay = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; flags = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; }
public LegacyNote(byte[] file, ref int nextByteIndex) { int nameLength = EOFUtility.bytesToInt16(file.Skip(nextByteIndex).Take(2).ToArray()); nextByteIndex += 2; chordName = String.Join("", (from character in file.Skip(nextByteIndex).Take(nameLength) select((char)character).ToString()).ToArray()); nextByteIndex += nameLength; difficulty = file.Skip(nextByteIndex).Take(1).First(); nextByteIndex += 1; bitFlag = file.Skip(nextByteIndex).Take(1).First(); nextByteIndex += 1; position = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; length = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; flags = file.Skip(nextByteIndex).Take(4).ToArray(); nextByteIndex += 4; if (flags[0] == 2) { Debug.Log("STAR POWER !"); } }
public Track(byte[] file, ref int nextByteIndex) { int nameLength = EOFUtility.bytesToInt16(file.Skip(nextByteIndex).Take(2).ToArray()); nextByteIndex += 2; name = String.Join("", (from character in file.Skip(nextByteIndex).Take(nameLength) select((char)character).ToString()).ToArray()); nextByteIndex += nameLength; format = file.Skip(nextByteIndex).Take(1).First(); nextByteIndex += 1; behavior = file.Skip(nextByteIndex).Take(1).First(); nextByteIndex += 1; type = file.Skip(nextByteIndex).Take(1).First(); nextByteIndex += 1; difficulty = file.Skip(nextByteIndex).Take(1).First(); nextByteIndex += 1; flags = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; int trackComplianceFlag = EOFUtility.bytesToInt16(file.Skip(nextByteIndex).Take(2).ToArray()); nextByteIndex += 2; getTrackData(file, ref nextByteIndex); sections = getSections(file, ref nextByteIndex); getCustomDataBlocks(file, ref nextByteIndex); }
public IniNumber(byte[] section) { // type = Convert.ToString(section.Take(1).ToArray()); type = String.Join("", (from header in section.Take(1) select Convert.ToString(header)).ToArray()); // type = EOFUtility.bytesToChar(section.Take(1).ToArray()); value = EOFUtility.bytesToInt32(section.Skip(1).Take(4).ToArray()); }
public int timeDivision = 0; // Unused for the moment in EOF public ChartProperties(byte[] file) { // Get project revision number // Get 4 bytes that describe the number and join them into a string with a comprehension list projectRevisionNumber = String.Join(".", (from header in file.Skip(16).Take(4) select Convert.ToString(header)).ToArray()); timingFormat = Convert.ToBoolean(file.Skip(20).Take(1).First()); timeDivision = EOFUtility.bytesToInt32(file.Skip(21).Take(4).ToArray()); }
public IniString(byte[] file, ref int nextByteIndex) { nextByteIndex += 1; int nameLength = EOFUtility.bytesToInt16(file.Skip(nextByteIndex).Take(2).ToArray()); nextByteIndex += 2; // string name = String.Join("", (from character in file.Skip(nextByteIndex).Take(nameLength) select ((char)character).ToString()).ToArray()); nextByteIndex += nameLength; }
string getTrackFormat(byte[] file, int startByteIndex) { int nameLength = EOFUtility.bytesToInt16(file.Skip(startByteIndex).Take(2).ToArray()); startByteIndex += 2; startByteIndex += nameLength; byte format = file.Skip(startByteIndex).Take(1).First(); startByteIndex += 1; return(Convert.ToString(format)); }
public CustomDataBlock(byte[] file, ref int nextByteIndex) { int numberOfBytes = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; id = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; data = file.Skip(nextByteIndex).Take(numberOfBytes - 4).ToArray(); nextByteIndex += numberOfBytes - 4; }
override protected void getTrackData(byte[] file, ref int nextByteIndex) { numberOfLanes = file.Skip(nextByteIndex).Take(1).First(); nextByteIndex += 1; numberOfNotes = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; for (int i = 0; i < numberOfNotes; i++) { notes.Add(new LegacyNote(file, ref nextByteIndex)); } }
override protected void getTrackData(byte[] file, ref int nextByteIndex) { toneSet = file.Skip(nextByteIndex).Take(1).First(); nextByteIndex += 1; int numberOfLyrics = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; for (int i = 0; i < numberOfLyrics; i++) { lyrics.Add(new LyricChunk(file, ref nextByteIndex)); } }
public Section(byte[] file, ref int nextByteIndex) { type = EOFUtility.bytesToInt16(file.Skip(nextByteIndex).Take(2).ToArray()); nextByteIndex += 2; int numberOfSectionChunk = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; for (int i = 0; i < numberOfSectionChunk; i++) { sections.Add(new SectionChunk(file, ref nextByteIndex)); } }
public Beat(byte[] file, ref int nextByteIndex) { ppqn = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; position = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; flags = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; key = file.Skip(nextByteIndex).Take(1).First(); nextByteIndex += 1; }
public TrackData(byte[] file, int startByteIndex) { nextByteIndex = startByteIndex; int numberOfTracks = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; for (int i = 0; i < numberOfTracks; i++) { string format = getTrackFormat(file, nextByteIndex); // Available formats in EOF file description // 0=Global,1=Legacy,2=Vocal,3=Pro Keys,4=Pro Guitar/Bass,5=Variable Lane Legacy,... switch (format) { case "0": GeneralTrack generalTrack = new GeneralTrack(file, ref nextByteIndex); tracks.Add(generalTrack); break; case "1": LegacyTrack legacyTrack = new LegacyTrack(file, ref nextByteIndex); tracks.Add(legacyTrack); break; case "2": VocalTrack vocalTrack = new VocalTrack(file, ref nextByteIndex); tracks.Add(vocalTrack); break; case "3": ProKeysTrack proKeysTrack = new ProKeysTrack(file, ref nextByteIndex); tracks.Add(proKeysTrack); break; case "4": ProGuitarTrack proGuitarTrack = new ProGuitarTrack(file, ref nextByteIndex); tracks.Add(proGuitarTrack); break; case "5": LaneLegacyTrack laneLegacyTrack = new LaneLegacyTrack(file, ref nextByteIndex); tracks.Add(laneLegacyTrack); break; } } endByteIndex = nextByteIndex; }
protected List <Section> getSections(byte[] file, ref int nextByteIndex) { List <Section> sections = new List <Section>(); int numberOfSection = EOFUtility.bytesToInt16(file.Skip(nextByteIndex).Take(2).ToArray()); nextByteIndex += 2; for (int i = 0; i < numberOfSection; i++) { sections.Add(new Section(file, ref nextByteIndex)); } return(sections); }
protected void getCustomDataBlocks(byte[] file, ref int nextByteIndex) { int numberOfCustomDataBlock = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; for (int i = 0; i < numberOfCustomDataBlock; i++) { // TODO : Manage custom data block int tmp = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; nextByteIndex += 4; nextByteIndex += tmp - 4; } }
public TextEvent(byte[] file, ref int nextByteIndex) { int nameLength = EOFUtility.bytesToInt16(file.Skip(nextByteIndex).Take(2).ToArray()); nextByteIndex += 2; description = String.Join("", (from character in file.Skip(nextByteIndex).Take(nameLength) select((char)character).ToString()).ToArray()); nextByteIndex += nameLength; beat = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; trackNumber = EOFUtility.bytesToInt16(file.Skip(nextByteIndex).Take(2).ToArray()); nextByteIndex += 2; flags = EOFUtility.bytesToInt16(file.Skip(nextByteIndex).Take(2).ToArray()); nextByteIndex += 2; }
public LegacyNote(byte[] file, ref int nextByteIndex) { int nameLength = EOFUtility.bytesToInt16(file.Skip(nextByteIndex).Take(2).ToArray()); nextByteIndex += 2; chordName = String.Join("", (from character in file.Skip(nextByteIndex).Take(nameLength) select((char)character).ToString()).ToArray()); nextByteIndex += nameLength; difficulty = file.Skip(nextByteIndex).Take(1).First(); nextByteIndex += 1; bitFlag = file.Skip(nextByteIndex).Take(1).First(); var stringLanes = new string(Convert.ToString(bitFlag, 2).Reverse().ToArray()).PadRight(2, '0'); for (int i = 0; i < 2; i++) { if (stringLanes[i] == '0') { lanes[i] = false; } else { lanes[i] = true; } } nextByteIndex += 1; position = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; length = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; flags = file.Skip(nextByteIndex).Take(4).ToArray(); nextByteIndex += 4; if (flags[0] == 2) { // TODO : Use Star Power, maybe. } }
public ChartData(byte[] file, int startByteIndex) { nextByteIndex = startByteIndex; // OGG data extraction numberOfOGGProfiles = EOFUtility.bytesToInt16(file.Skip(nextByteIndex).Take(2).ToArray()); nextByteIndex += 2; for (int i = 0; i < numberOfOGGProfiles; i++) { OGGProfiles.Add(new OGGProfil(file, ref nextByteIndex)); } // Beat data extraction numberOfBeats = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray());; nextByteIndex += 4; for (int i = 0; i < numberOfBeats; i++) { beats.Add(new Beat(file, ref nextByteIndex)); } // Text event data extraction numberOfTextEvents = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray());; nextByteIndex += 4; for (int i = 0; i < numberOfTextEvents; i++) { textEvents.Add(new TextEvent(file, ref nextByteIndex)); } // Custom data block extraction numberOfCustomDataBlock = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray());; nextByteIndex += 4; for (int i = 0; i < numberOfCustomDataBlock; i++) { customDataBlocks.Add(new CustomDataBlock(file, ref nextByteIndex)); } endByteIndex = nextByteIndex; }
public SectionChunk(byte[] file, ref int nextByteIndex) { int nameLength = EOFUtility.bytesToInt16(file.Skip(nextByteIndex).Take(2).ToArray()); nextByteIndex += 2; name = String.Join("", (from character in file.Skip(nextByteIndex).Take(nameLength) select((char)character).ToString()).ToArray()); nextByteIndex += nameLength; difficulty = file.Skip(nextByteIndex).Take(1).First(); nextByteIndex += 1; startPosition = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; endPosition = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; flags = file.Skip(nextByteIndex).Take(4).ToArray(); nextByteIndex += 4; }
override protected void getTrackData(byte[] file, ref int nextByteIndex) { nextByteIndex += 1; byte numberOfStrings = file.Skip(nextByteIndex).Take(1).First(); nextByteIndex += 1; for (int i = 0; i < numberOfStrings; i++) { nextByteIndex += 1; } int numberOfNotes = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; for (int i = 0; i < numberOfNotes; i++) { int nameLength = EOFUtility.bytesToInt16(file.Skip(nextByteIndex).Take(2).ToArray()); nextByteIndex += 2; nextByteIndex += nameLength; nextByteIndex += 1; // Chord number nextByteIndex += 1; // Difficulty nextByteIndex += 1; // Note bitflag Debug.Log(nextByteIndex); nextByteIndex += 1; // Ghost bitflag /* * for (int i = 0; i < bitInGhostBitflag; i++) { * * } */ nextByteIndex += 1; // Legacy bitflag nextByteIndex += 4; // Note position nextByteIndex += 4; // Note length nextByteIndex += 4; // Note flags } }
public LyricChunk(byte[] file, ref int nextByteIndex) { int nameLength = EOFUtility.bytesToInt16(file.Skip(nextByteIndex).Take(2).ToArray()); nextByteIndex += 2; name = String.Join("", (from character in file.Skip(nextByteIndex).Take(nameLength) select((char)character).ToString()).ToArray()); nextByteIndex += nameLength; lyricSet = file.Skip(nextByteIndex).Take(1).First(); nextByteIndex += 1; notePitch = file.Skip(nextByteIndex).Take(1).First(); nextByteIndex += 1; position = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; length = EOFUtility.bytesToInt32(file.Skip(nextByteIndex).Take(4).ToArray()); nextByteIndex += 4; flags = file.Skip(nextByteIndex).Take(2).ToArray(); nextByteIndex += 2; }