public SDATInfo(NitroFile sdat, uint offset) { m_Offset = offset; m_Type = sdat.ReadString(m_Offset + 0x00, 4).ToCharArray(); m_Size = sdat.Read32(m_Offset + 0x04); m_RecordOffset = new uint[8]; for (int i = 0; i < 8; i++) { m_RecordOffset[i] = sdat.Read32(m_Offset + 0x08 + (uint)(i * 4)); } m_Reserved = sdat.ReadBlock(m_Offset + 0x28, 24); m_Records = new SDATInfoRecord[8]; for (int i = 0; i < 8; i++) { m_Records[i] = new SDATInfoRecord(sdat, m_Offset + m_RecordOffset[i]); } m_Records0SEQ = new SDATInfoSEQ[m_Records[0].m_Count]; for (int i = 0; i < m_Records[0].m_Count; i++) { m_Records0SEQ[i] = new SDATInfoSEQ(sdat, m_Offset + m_Records[0].m_EntryOffset[i]); } m_Records1SEQARC = new SDATInfoSEQARC[m_Records[1].m_Count]; for (int i = 0; i < m_Records[1].m_Count; i++) { m_Records1SEQARC[i] = new SDATInfoSEQARC(sdat, m_Offset + m_Records[1].m_EntryOffset[i]); } m_Records2BANK = new SDATInfoBANK[m_Records[2].m_Count]; for (int i = 0; i < m_Records[2].m_Count; i++) { m_Records2BANK[i] = new SDATInfoBANK(sdat, m_Offset + m_Records[2].m_EntryOffset[i]); } m_Records3WAVEARC = new SDATInfoWAVEARC[m_Records[3].m_Count]; for (int i = 0; i < m_Records[3].m_Count; i++) { m_Records3WAVEARC[i] = new SDATInfoWAVEARC(sdat, m_Offset + m_Records[3].m_EntryOffset[i]); } m_Records4PLAYER = new SDATInfoPLAYER[m_Records[4].m_Count]; for (int i = 0; i < m_Records[4].m_Count; i++) { m_Records4PLAYER[i] = new SDATInfoPLAYER(sdat, m_Offset + m_Records[4].m_EntryOffset[i]); } m_Records5GROUP = new SDATInfoGROUP[m_Records[5].m_Count]; for (int i = 0; i < m_Records[5].m_Count; i++) { m_Records5GROUP[i] = new SDATInfoGROUP(sdat, m_Offset + m_Records[5].m_EntryOffset[i]); } m_Records6PLAYER2 = new SDATInfoPLAYER2[m_Records[6].m_Count]; for (int i = 0; i < m_Records[6].m_Count; i++) { m_Records6PLAYER2[i] = new SDATInfoPLAYER2(sdat, m_Offset + m_Records[6].m_EntryOffset[i]); } m_Records7STREAM = new SDATInfoSTREAM[m_Records[7].m_Count]; for (int i = 0; i < m_Records[7].m_Count; i++) { m_Records7STREAM[i] = new SDATInfoSTREAM(sdat, m_Offset + m_Records[7].m_EntryOffset[i]); } }
char[] m_Type; // 'INFO' #endregion Fields #region Constructors public SDATInfo(NitroFile sdat, uint offset) { m_Offset = offset; m_Type = sdat.ReadString(m_Offset + 0x00, 4).ToCharArray(); m_Size = sdat.Read32(m_Offset + 0x04); m_RecordOffset = new uint[8]; for (int i = 0; i < 8; i++) m_RecordOffset[i] = sdat.Read32(m_Offset + 0x08 + (uint)(i * 4)); m_Reserved = sdat.ReadBlock(m_Offset + 0x28, 24); m_Records = new SDATInfoRecord[8]; for (int i = 0; i < 8; i++) { m_Records[i] = new SDATInfoRecord(sdat, m_Offset + m_RecordOffset[i]); } m_Records0SEQ = new SDATInfoSEQ[m_Records[0].m_Count]; for (int i = 0; i < m_Records[0].m_Count; i++) { m_Records0SEQ[i] = new SDATInfoSEQ(sdat, m_Offset + m_Records[0].m_EntryOffset[i]); } m_Records1SEQARC = new SDATInfoSEQARC[m_Records[1].m_Count]; for (int i = 0; i < m_Records[1].m_Count; i++) { m_Records1SEQARC[i] = new SDATInfoSEQARC(sdat, m_Offset + m_Records[1].m_EntryOffset[i]); } m_Records2BANK = new SDATInfoBANK[m_Records[2].m_Count]; for (int i = 0; i < m_Records[2].m_Count; i++) { m_Records2BANK[i] = new SDATInfoBANK(sdat, m_Offset + m_Records[2].m_EntryOffset[i]); } m_Records3WAVEARC = new SDATInfoWAVEARC[m_Records[3].m_Count]; for (int i = 0; i < m_Records[3].m_Count; i++) { m_Records3WAVEARC[i] = new SDATInfoWAVEARC(sdat, m_Offset + m_Records[3].m_EntryOffset[i]); } m_Records4PLAYER = new SDATInfoPLAYER[m_Records[4].m_Count]; for (int i = 0; i < m_Records[4].m_Count; i++) { m_Records4PLAYER[i] = new SDATInfoPLAYER(sdat, m_Offset + m_Records[4].m_EntryOffset[i]); } m_Records5GROUP = new SDATInfoGROUP[m_Records[5].m_Count]; for (int i = 0; i < m_Records[5].m_Count; i++) { m_Records5GROUP[i] = new SDATInfoGROUP(sdat, m_Offset + m_Records[5].m_EntryOffset[i]); } m_Records6PLAYER2 = new SDATInfoPLAYER2[m_Records[6].m_Count]; for (int i = 0; i < m_Records[6].m_Count; i++) { m_Records6PLAYER2[i] = new SDATInfoPLAYER2(sdat, m_Offset + m_Records[6].m_EntryOffset[i]); } m_Records7STREAM = new SDATInfoSTREAM[m_Records[7].m_Count]; for (int i = 0; i < m_Records[7].m_Count; i++) { m_Records7STREAM[i] = new SDATInfoSTREAM(sdat, m_Offset + m_Records[7].m_EntryOffset[i]); } }