Пример #1
0
        /// <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();
        }
Пример #2
0
        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);
            }
        }
Пример #3
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());
        }
Пример #4
0
        //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);
        }
Пример #5
0
        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());
        }
Пример #6
0
        //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);
        }