private void RepairCss() { if (enCssFile.Cues.Count == jpnCssFile.Cues.Count) { return; } ACB_File main = (enCssFile.Cues.Count > jpnCssFile.Cues.Count) ? enCssFile : jpnCssFile; ACB_File second = (enCssFile.Cues.Count > jpnCssFile.Cues.Count) ? jpnCssFile : enCssFile; while (main.Cues.Count > second.Cues.Count) { if (main.Cues.Count <= second.Cues.Count) { break; } int newCueId = second.GetFreeCueId(); ACB_Cue cueToCopy = main.GetCue(newCueId); if (cueToCopy != null) { second.CopyCue(newCueId, main); } else { break; } } }
private int AssignCommonCssCueId(out bool reusing) { //For whatever reason XV2INS wants to overwrite tracks that are replaced, so best to always add new cues. ACB_Cue enFreeCue = enCssFile.GetCue("X2_FREE"); ACB_Cue jpnFreeCue = jpnCssFile.GetCue("X2_FREE"); int enCueId; int jpnCueId; if (enFreeCue != null && jpnFreeCue != null) { if (enFreeCue.ID == jpnFreeCue.ID) { enCueId = (int)enFreeCue.ID; jpnCueId = (int)enFreeCue.ID; reusing = true; } else { enCueId = enCssFile.GetFreeCueId(); jpnCueId = jpnCssFile.GetFreeCueId(); reusing = false; } } else { enCueId = enCssFile.GetFreeCueId(); jpnCueId = jpnCssFile.GetFreeCueId(); reusing = false; } //int enCueId = enCssFile.GetFreeCueId(); //int jpnCueId = jpnCssFile.GetFreeCueId(); //Repair CSS ACB if out of sync if (enCueId != jpnCueId) { RepairCss(); enCueId = enCssFile.GetFreeCueId(); } //reusing = false; return(enCueId); }