/// <summary> /// Sort entries to be in ascending order with no gaps. /// </summary> private void SortEntries() { //Quick and dirty duplicate ID check var conflicts = bacFile.BacEntries.Where(x => bacFile.BacEntries.Any(y => y.SortID == x.SortID && y != x)); if (conflicts.Count() > 0) { throw new Exception($"Multiple BAC entries with the ID {conflicts.First().SortID} were found!"); } //Duplicate bacFile so changes here dont affect the original (would really cause havok with the undo stack on XenoKit...) bacFile = bacFile.Copy(); bacFile.SortEntries(); if (bacFile.BacEntries.Count == 0) { return; //No bac entries. Gtfo } int lastIndex = bacFile.BacEntries[bacFile.BacEntries.Count - 1].SortID; for (int a = 0; a <= lastIndex; a++) { if (bacFile.BacEntries.FirstOrDefault(x => x.SortID == a) == null) { bacFile.BacEntries.Add(BAC_Entry.Empty(a)); } } bacFile.SortEntries(); }
private int GetTypeCount(BAC_Entry bacEntry, int type) { if (bacEntry.TypeDummy.IndexOf(type) != -1) { return(0); } if (type == 0) { return((bacEntry.Type0 != null) ? bacEntry.Type0.Count() : 0); } else if (type == 1) { return((bacEntry.Type1 != null) ? bacEntry.Type1.Count() : 0); } else if (type == 2) { return((bacEntry.Type2 != null) ? bacEntry.Type2.Count() : 0); } else if (type == 3) { return((bacEntry.Type3 != null) ? bacEntry.Type3.Count() : 0); } else if (type == 4) { return((bacEntry.Type4 != null) ? bacEntry.Type4.Count() : 0); } else if (type == 5) { return((bacEntry.Type5 != null) ? bacEntry.Type5.Count() : 0); } else if (type == 6) { return((bacEntry.Type6 != null) ? bacEntry.Type6.Count() : 0); } else if (type == 7) { return((bacEntry.Type7 != null) ? bacEntry.Type7.Count() : 0); } else if (type == 8) { return((bacEntry.Type8 != null) ? bacEntry.Type8.Count() : 0); } else if (type == 9) { return((bacEntry.Type9 != null) ? bacEntry.Type9.Count() : 0); } else if (type == 10) { return((bacEntry.Type10 != null) ? bacEntry.Type10.Count() : 0); } else if (type == 11) { return((bacEntry.Type11 != null) ? bacEntry.Type11.Count() : 0); } else if (type == 12) { return((bacEntry.Type12 != null) ? bacEntry.Type12.Count() : 0); } else if (type == 13) { return((bacEntry.Type13 != null) ? bacEntry.Type13.Count() : 0); } else if (type == 14) { return((bacEntry.Type14 != null) ? bacEntry.Type14.Count() : 0); } else if (type == 15) { return((bacEntry.Type15 != null) ? bacEntry.Type15.Count() : 0); } else if (type == 16) { return((bacEntry.Type16 != null) ? bacEntry.Type16.Count() : 0); } else if (type == 17) { return((bacEntry.Type17 != null) ? bacEntry.Type17.Count() : 0); } else if (type == 18) { return((bacEntry.Type18 != null) ? bacEntry.Type18.Count() : 0); } else if (type == 19) { return((bacEntry.Type19 != null) ? bacEntry.Type19.Count() : 0); } else if (type == 20) { return((bacEntry.Type20 != null) ? bacEntry.Type20.Count() : 0); } else if (type == 21) { return((bacEntry.Type21 != null) ? bacEntry.Type21.Count() : 0); } else if (type == 22) { return((bacEntry.Type22 != null) ? bacEntry.Type22.Count() : 0); } else if (type == 23) { return((bacEntry.Type23 != null) ? bacEntry.Type23.Count() : 0); } else if (type == 24) { return((bacEntry.Type24 != null) ? bacEntry.Type24.Count() : 0); } else if (type == 25) { return((bacEntry.Type25 != null) ? bacEntry.Type25.Count() : 0); } else if (type == 26) { return((bacEntry.Type26 != null) ? bacEntry.Type26.Count() : 0); } else if (type == 27) { return((bacEntry.Type27 != null) ? bacEntry.Type27.Count() : 0); } else { return(0); } }
private int[] GetSubEntryTypes(BAC_Entry bacEntry) { List <int> types = new List <int>(); if (bacEntry.Type0?.Count > 0) { types.Add(0); } if (bacEntry.Type1?.Count > 0) { types.Add(1); } if (bacEntry.Type2?.Count > 0) { types.Add(2); } if (bacEntry.Type3?.Count > 0) { types.Add(3); } if (bacEntry.Type4?.Count > 0) { types.Add(4); } if (bacEntry.Type5?.Count > 0) { types.Add(5); } if (bacEntry.Type6?.Count > 0) { types.Add(6); } if (bacEntry.Type7?.Count > 0) { types.Add(7); } if (bacEntry.Type8?.Count > 0) { types.Add(8); } if (bacEntry.Type9?.Count > 0) { types.Add(9); } if (bacEntry.Type10?.Count > 0) { types.Add(10); } if (bacEntry.Type11?.Count > 0) { types.Add(11); } if (bacEntry.Type12?.Count > 0) { types.Add(12); } if (bacEntry.Type13?.Count > 0) { types.Add(13); } if (bacEntry.Type14?.Count > 0) { types.Add(14); } if (bacEntry.Type15?.Count > 0) { types.Add(15); } if (bacEntry.Type16?.Count > 0) { types.Add(16); } if (bacEntry.Type17?.Count > 0) { types.Add(17); } if (bacEntry.Type18?.Count > 0) { types.Add(18); } if (bacEntry.Type19?.Count > 0) { types.Add(19); } if (bacEntry.Type20?.Count > 0) { types.Add(20); } if (bacEntry.Type21?.Count > 0) { types.Add(21); } if (bacEntry.Type22?.Count > 0) { types.Add(22); } if (bacEntry.Type23?.Count > 0) { types.Add(23); } if (bacEntry.Type24?.Count > 0) { types.Add(24); } if (bacEntry.Type25?.Count > 0) { types.Add(25); } if (bacEntry.Type26?.Count > 0) { types.Add(26); } if (bacEntry.Type27?.Count > 0) { types.Add(27); } if (bacEntry.TypeDummy != null) { foreach (var i in bacEntry.TypeDummy) { if (types.IndexOf(i) == -1) { types.Add(i); } } } types.Sort(); return(types.ToArray()); }
//Utility private int GetSubEntryCount(BAC_Entry bacEntry) { int count = 0; if (bacEntry.Type0?.Count > 0) { bacEntry.TypeDummy.Remove(0); count++; } if (bacEntry.Type1?.Count > 0) { bacEntry.TypeDummy.Remove(1); count++; } if (bacEntry.Type2?.Count > 0) { bacEntry.TypeDummy.Remove(2); count++; } if (bacEntry.Type3?.Count > 0) { bacEntry.TypeDummy.Remove(3); count++; } if (bacEntry.Type4?.Count > 0) { bacEntry.TypeDummy.Remove(4); count++; } if (bacEntry.Type5?.Count > 0) { bacEntry.TypeDummy.Remove(5); count++; } if (bacEntry.Type6?.Count > 0) { bacEntry.TypeDummy.Remove(6); count++; } if (bacEntry.Type7?.Count > 0) { bacEntry.TypeDummy.Remove(7); count++; } if (bacEntry.Type8?.Count > 0) { bacEntry.TypeDummy.Remove(8); count++; } if (bacEntry.Type9?.Count > 0) { bacEntry.TypeDummy.Remove(9); count++; } if (bacEntry.Type10?.Count > 0) { bacEntry.TypeDummy.Remove(10); count++; } if (bacEntry.Type11?.Count > 0) { bacEntry.TypeDummy.Remove(11); count++; } if (bacEntry.Type12?.Count > 0) { bacEntry.TypeDummy.Remove(12); count++; } if (bacEntry.Type13?.Count > 0) { bacEntry.TypeDummy.Remove(13); count++; } if (bacEntry.Type14?.Count > 0) { bacEntry.TypeDummy.Remove(14); count++; } if (bacEntry.Type15?.Count > 0) { bacEntry.TypeDummy.Remove(15); count++; } if (bacEntry.Type16?.Count > 0) { bacEntry.TypeDummy.Remove(16); count++; } if (bacEntry.Type17?.Count > 0) { bacEntry.TypeDummy.Remove(17); count++; } if (bacEntry.Type18?.Count > 0) { bacEntry.TypeDummy.Remove(18); count++; } if (bacEntry.Type19?.Count > 0) { bacEntry.TypeDummy.Remove(19); count++; } if (bacEntry.Type20?.Count > 0) { bacEntry.TypeDummy.Remove(20); count++; } if (bacEntry.Type21?.Count > 0) { bacEntry.TypeDummy.Remove(21); count++; } if (bacEntry.Type22?.Count > 0) { bacEntry.TypeDummy.Remove(22); count++; } if (bacEntry.Type23?.Count > 0) { bacEntry.TypeDummy.Remove(23); count++; } if (bacEntry.Type24?.Count > 0) { bacEntry.TypeDummy.Remove(24); count++; } if (bacEntry.Type25?.Count > 0) { bacEntry.TypeDummy.Remove(25); count++; } if (bacEntry.Type26?.Count > 0) { bacEntry.TypeDummy.Remove(26); count++; } if (bacEntry.Type27?.Count > 0) { bacEntry.TypeDummy.Remove(27); count++; } if (bacEntry.TypeDummy != null) { count += bacEntry.TypeDummy.Count(); } return(count); }
private int[] GetSubEntryTypes(BAC_Entry bacEntry) { List <int> types = new List <int>(); if (bacEntry.Type0 != null) { types.Add(0); } if (bacEntry.Type1 != null) { types.Add(1); } if (bacEntry.Type2 != null) { types.Add(2); } if (bacEntry.Type3 != null) { types.Add(3); } if (bacEntry.Type4 != null) { types.Add(4); } if (bacEntry.Type5 != null) { types.Add(5); } if (bacEntry.Type6 != null) { types.Add(6); } if (bacEntry.Type7 != null) { types.Add(7); } if (bacEntry.Type8 != null) { types.Add(8); } if (bacEntry.Type9 != null) { types.Add(9); } if (bacEntry.Type10 != null) { types.Add(10); } if (bacEntry.Type11 != null) { types.Add(11); } if (bacEntry.Type12 != null) { types.Add(12); } if (bacEntry.Type13 != null) { types.Add(13); } if (bacEntry.Type14 != null) { types.Add(14); } if (bacEntry.Type15 != null) { types.Add(15); } if (bacEntry.Type16 != null) { types.Add(16); } if (bacEntry.Type17 != null) { types.Add(17); } if (bacEntry.Type18 != null) { types.Add(18); } if (bacEntry.Type19 != null) { types.Add(19); } if (bacEntry.Type20 != null) { types.Add(20); } if (bacEntry.Type21 != null) { types.Add(21); } if (bacEntry.Type22 != null) { types.Add(22); } if (bacEntry.Type23 != null) { types.Add(23); } if (bacEntry.Type24 != null) { types.Add(24); } if (bacEntry.Type25 != null) { types.Add(25); } if (bacEntry.Type26 != null) { types.Add(26); } if (bacEntry.Type27 != null) { types.Add(27); } if (bacEntry.TypeDummy != null) { foreach (var i in bacEntry.TypeDummy) { if (types.IndexOf(i) == -1) { types.Add(i); } } } types.Sort(); return(types.ToArray()); }
//Utility private int GetSubEntryCount(BAC_Entry bacEntry) { int count = 0; if (bacEntry.Type0 != null) { bacEntry.TypeDummy.Remove(0); count++; } if (bacEntry.Type1 != null) { bacEntry.TypeDummy.Remove(1); count++; } if (bacEntry.Type2 != null) { bacEntry.TypeDummy.Remove(2); count++; } if (bacEntry.Type3 != null) { bacEntry.TypeDummy.Remove(3); count++; } if (bacEntry.Type4 != null) { bacEntry.TypeDummy.Remove(4); count++; } if (bacEntry.Type5 != null) { bacEntry.TypeDummy.Remove(5); count++; } if (bacEntry.Type6 != null) { bacEntry.TypeDummy.Remove(6); count++; } if (bacEntry.Type7 != null) { bacEntry.TypeDummy.Remove(7); count++; } if (bacEntry.Type8 != null) { bacEntry.TypeDummy.Remove(8); count++; } if (bacEntry.Type9 != null) { bacEntry.TypeDummy.Remove(9); count++; } if (bacEntry.Type10 != null) { bacEntry.TypeDummy.Remove(10); count++; } if (bacEntry.Type11 != null) { bacEntry.TypeDummy.Remove(11); count++; } if (bacEntry.Type12 != null) { bacEntry.TypeDummy.Remove(12); count++; } if (bacEntry.Type13 != null) { bacEntry.TypeDummy.Remove(13); count++; } if (bacEntry.Type14 != null) { bacEntry.TypeDummy.Remove(14); count++; } if (bacEntry.Type15 != null) { bacEntry.TypeDummy.Remove(15); count++; } if (bacEntry.Type16 != null) { bacEntry.TypeDummy.Remove(16); count++; } if (bacEntry.Type17 != null) { bacEntry.TypeDummy.Remove(17); count++; } if (bacEntry.Type18 != null) { bacEntry.TypeDummy.Remove(18); count++; } if (bacEntry.Type19 != null) { bacEntry.TypeDummy.Remove(19); count++; } if (bacEntry.Type20 != null) { bacEntry.TypeDummy.Remove(20); count++; } if (bacEntry.Type21 != null) { bacEntry.TypeDummy.Remove(21); count++; } if (bacEntry.Type22 != null) { bacEntry.TypeDummy.Remove(22); count++; } if (bacEntry.Type23 != null) { bacEntry.TypeDummy.Remove(23); count++; } if (bacEntry.Type24 != null) { bacEntry.TypeDummy.Remove(24); count++; } if (bacEntry.Type25 != null) { bacEntry.TypeDummy.Remove(25); count++; } if (bacEntry.Type26 != null) { bacEntry.TypeDummy.Remove(26); count++; } if (bacEntry.Type27 != null) { bacEntry.TypeDummy.Remove(27); count++; } if (bacEntry.TypeDummy != null) { count += bacEntry.TypeDummy.Count(); } return(count); }