private void AddButtonClick(object sender, RoutedEventArgs e)
        {
            StageInfoCollection temp = new StageInfoCollection
            {
                IdName = "UNTITLED NEW"
            };

            Stages.Add(temp);
        }
        private void CopyButtonClick(object sender, RoutedEventArgs e)
        {
            if (StageListView.SelectedItem == null)
            {
                return;
            }
            StageInfoCollection temp = Helpers.DeepClone((StageInfoCollection)StageListView.SelectedItem);

            Stages.Add(temp);
        }
        private void ReorderWaves(StageInfoCollection temp)
        {
            EnemyWaveView.Items.Refresh();
            int i = 0;

            foreach (EnemyWave wave in temp.EnemyWaves)
            {
                wave.Id = i++;
            }
        }
        private void AddButtonClickWave(object sender, RoutedEventArgs e)
        {
            if (StageListView.SelectedItem == null)
            {
                return;
            }

            StageInfoCollection temp = StageListView.SelectedItem as StageInfoCollection;

            temp.EnemyWaves.Add(new EnemyWave());

            ReorderWaves(temp);
        }
        private void RemoveSpawnerClick(object sender, RoutedEventArgs e)
        {
            if (StageListView.SelectedItem == null)
            {
                return;
            }
            if (spawnerList.SelectedItem == null)
            {
                return;
            }

            StageInfoCollection s = StageListView.SelectedItem as StageInfoCollection;

            s.SpawnerInfos.Remove(spawnerList.SelectedItem as SpawnerInfo);
        }
        private void RemovePropertiesClick(object sender, RoutedEventArgs e)
        {
            if (StageListView.SelectedItem == null)
            {
                return;
            }
            if (StagePropertiesList.SelectedItem == null)
            {
                return;
            }

            StageInfoCollection s = StageListView.SelectedItem as StageInfoCollection;
            string a = StagePropertiesList.SelectedItem as string;

            s.StageProperties.Remove(a);
        }
        private void DelButtonClickWave(object sender, RoutedEventArgs e)
        {
            if (StageListView.SelectedItem == null)
            {
                return;
            }
            if (EnemyWaveView.SelectedItem == null)
            {
                return;
            }

            StageInfoCollection temp = StageListView.SelectedItem as StageInfoCollection;

            temp.EnemyWaves.Remove((EnemyWave)EnemyWaveView.SelectedItem);

            ReorderWaves(temp);
        }
        private void CopyButtonClickWave(object sender, RoutedEventArgs e)
        {
            if (StageListView.SelectedItem == null)
            {
                return;
            }
            if (EnemyWaveView.SelectedItem == null)
            {
                return;
            }

            StageInfoCollection temp  = StageListView.SelectedItem as StageInfoCollection;
            EnemyWave           temp2 = Helpers.DeepClone((EnemyWave)EnemyWaveView.SelectedItem);

            temp.EnemyWaves.Add(temp2);

            ReorderWaves(temp);
        }
        private void AddPropertiesClick(object sender, RoutedEventArgs e)
        {
            if (StageListView.SelectedItem == null)
            {
                return;
            }
            if (StagePropertiesComboBox.SelectedItem == null)
            {
                return;
            }

            StageInfoCollection s = StageListView.SelectedItem as StageInfoCollection;
            AffixBase           a = StagePropertiesComboBox.SelectedItem as AffixBase;

            if (s.StageProperties.Contains(a.IdName))
            {
                return;
            }
            s.StageProperties.Add(a.IdName);
        }
        private void AddSpawnerClick(object sender, RoutedEventArgs e)
        {
            if (StageListView.SelectedItem == null)
            {
                return;
            }
            if (spawnerBox.Value == null)
            {
                return;
            }

            StageInfoCollection s = StageListView.SelectedItem as StageInfoCollection;
            int selectedValue     = (int)spawnerBox.Value;

            if (s.SpawnerInfos.Where(x => x.Spawner == selectedValue).ToList().Count > 0)
            {
                return;
            }
            SpawnerInfo info = new SpawnerInfo(selectedValue);

            s.SpawnerInfos.Add(info);
            spawnerList.SelectedItem = info;
        }