public PackageFile GetProMidFromPackage(Package pk) { if (pk == null) return null; PackageFile upgradeDTA = null; try { upgradeDTA = pk.GetFile("songs_upgrades", "upgrades.dta"); } catch { return null; } string proName = DTAGetProFileName(upgradeDTA.Data); if (string.IsNullOrEmpty(proName)) { return null; } else { proName = proName.Trim('"'); var s = proName.Split('/'); if (s == null || s.Length != 2 || s[0] != "songs_upgrades") { return null; } else { var proMid = pk.GetFile("songs_upgrades", s[1]); if (proMid == null) { return null; } else { return proMid; } } } }
public byte[] GetUpgradesDTAFromPackage(Package pk) { if (pk == null) return null; try { return pk.GetFile("songs_upgrades", "upgrades.dta").Data; } catch { return null; } }
public bool CheckConPackage(Package pk, ref List<string> fileErrors, SongCacheItem item) { try { if (pk == null) { fileErrors.Add("Cannot open CON File"); return false; } PackageFile upgradeDTA = null; try { upgradeDTA = pk.GetFile("songs_upgrades", "upgrades.dta"); } catch { fileErrors.Add("error extracting upgrades.dta"); return false; } if (upgradeDTA == null) { fileErrors.Add("Cannot find DTA file in package"); return false; } string upgradeFileData = string.Empty; try { upgradeFileData = Encoding.ASCII.GetString(upgradeDTA.Data); } catch { fileErrors.Add("error reading upgrades.dta"); } if (string.IsNullOrEmpty(upgradeFileData)) { fileErrors.Add("upgrades.dta file is empty"); } else { string dtaSongID = string.Empty; try { var songIDList = LoadDTAFile(upgradeDTA.Data); if (songIDList.Any()) { songIDList.GetSongIDs().FirstOrDefault().GetIfNotNull(x => dtaSongID = x.Value); } } catch { } if (dtaSongID.IsEmpty()) { fileErrors.Add("song id missing in upgrades.dta"); } else { var g6D = InstrumentDifficulty.INVALID; try { g6D = InstrumentDifficultyUtil.DTAGetGuitarDifficulty(upgradeDTA.Data); } catch { } if (g6D == InstrumentDifficulty.INVALID) { fileErrors.Add("invalid guitar difficulty in upgrades.dta"); } var g6B = InstrumentDifficulty.INVALID; try { g6B = InstrumentDifficultyUtil.DTAGetBassDifficulty(upgradeDTA.Data); } catch { } if (g6B == InstrumentDifficulty.INVALID) { fileErrors.Add("invalid bass difficulty in upgrades.dta"); } if (!pk.GetFiles("songs_upgrades", ".mid|.midi").Any()) { fileErrors.Add("No \".mid\" file found in package"); } string shortName = string.Empty; try { shortName = DTAGetSongShortName(upgradeDTA.Data); } catch { } if (shortName.IsEmpty()) { fileErrors.Add("Song Name Missing from DTA"); } else { string proName = DTAGetProFileName(upgradeDTA.Data); if (proName.IsEmpty()) { fileErrors.Add("Missing pro file name in upgrades.dta"); } else { proName = proName.Trim('"'); var s = proName.Split('/'); if (s == null || s.Length != 2 || s[0] != "songs_upgrades") { fileErrors.Add("Invalid path to pro mid file in upgrades.dta: " + proName); } else { var proMid = pk.GetFile("songs_upgrades", s[1]); if (proMid == null) { fileErrors.Add("pro midi file set in upgrades.dta not found in package"); } else { var sq = proMid.Data.LoadSequence(); if (sq != null) { if (!sq.IsFileTypePro()) { fileErrors.Add("Unable to open pro midi file from package"); } else { fileErrors.AddRange(VerifySongData(proName, sq, item)); } } } } } } } } } catch { } return fileErrors.Count == 0; }