public ItemLauncher()
 {
     _currentWaveNum = 1;
     _shootables = new List<Shootable>();
     _waves.Add(new Wave(new List<WaveItem> {
                new WaveItem(1, 0f, new Microsoft.Xna.Framework.Vector2(2, -4)),
                new WaveItem(2, 4f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(3, 8f, new Microsoft.Xna.Framework.Vector2(2, -4)),
                new WaveItem(4, 14f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(5, 18f, new Microsoft.Xna.Framework.Vector2(2, -4)),
                new WaveItem(1, 19f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(1, 25f, new Microsoft.Xna.Framework.Vector2(3, -3))
                 }));
     _waves.Add(new Wave(new List<WaveItem> {
                new WaveItem(2, 0f, new Microsoft.Xna.Framework.Vector2(2, -3)),
                new WaveItem(1, 4f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(1, 8f, new Microsoft.Xna.Framework.Vector2(2, -3)),
                new WaveItem(1, 14f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(1, 18f, new Microsoft.Xna.Framework.Vector2(2, -4)),
                new WaveItem(1, 19f, new Microsoft.Xna.Framework.Vector2(3, -2)),
                new WaveItem(5, 25f, new Microsoft.Xna.Framework.Vector2(1, -3))
                 }));
     _waves.Add(new Wave(new List<WaveItem> {
                new WaveItem(2, 2f, new Microsoft.Xna.Framework.Vector2(2, -6)),
                new WaveItem(1, 2f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(2, 2f, new Microsoft.Xna.Framework.Vector2(4, -3)),
                new WaveItem(2, 2f, new Microsoft.Xna.Framework.Vector2(5, -2)),
                new WaveItem(3, 10f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(5, 14f, new Microsoft.Xna.Framework.Vector2(1, -4)),
                new WaveItem(2, 19f, new Microsoft.Xna.Framework.Vector2(3, -2)),
                new WaveItem(1, 25f, new Microsoft.Xna.Framework.Vector2(3, -3))
                 }));
     _waves.Add(new Wave(new List<WaveItem> {
                new WaveItem(1, 3f, new Microsoft.Xna.Framework.Vector2(2, -6)),
                new WaveItem(1, 4f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(1, 5f, new Microsoft.Xna.Framework.Vector2(4, -3)),
                new WaveItem(3, 10f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(5, 14f, new Microsoft.Xna.Framework.Vector2(0.5f, -4)),
                new WaveItem(2, 19f, new Microsoft.Xna.Framework.Vector2(3, -2)),
                new WaveItem(1, 25f, new Microsoft.Xna.Framework.Vector2(3, -3))
                 }));
     _waves.Add(new Wave(new List<WaveItem> {
                new WaveItem(3, 0f, new Microsoft.Xna.Framework.Vector2(2, -3)),
                new WaveItem(2, 4f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(1, 8f, new Microsoft.Xna.Framework.Vector2(2, -3)),
                new WaveItem(1, 14f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(2, 18f, new Microsoft.Xna.Framework.Vector2(2, -4)),
                new WaveItem(1, 19f, new Microsoft.Xna.Framework.Vector2(3, -2)),
                new WaveItem(1, 25f, new Microsoft.Xna.Framework.Vector2(3, -3))
                 }));
     _waves.Add(new Wave(new List<WaveItem> {
                new WaveItem(2, 1f, new Microsoft.Xna.Framework.Vector2(2, -6)),
                new WaveItem(1, 1f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(2, 1f, new Microsoft.Xna.Framework.Vector2(4, -3)),
                new WaveItem(1, 1f, new Microsoft.Xna.Framework.Vector2(5, -2)),
                new WaveItem(2, 1.5f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(1, 1.5f, new Microsoft.Xna.Framework.Vector2(2, -4)),
                new WaveItem(2, 2f, new Microsoft.Xna.Framework.Vector2(3, -2)),
                new WaveItem(1, 2f, new Microsoft.Xna.Framework.Vector2(3, -3))
                 }));
     _waves.Add(new Wave(new List<WaveItem> {
                new WaveItem(4, 3f, new Microsoft.Xna.Framework.Vector2(2, -6)),
                new WaveItem(2, 4f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(1, 8f, new Microsoft.Xna.Framework.Vector2(2, -3)),
                new WaveItem(1, 14f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(5, 18f, new Microsoft.Xna.Framework.Vector2(1, -4)),
                new WaveItem(2, 19f, new Microsoft.Xna.Framework.Vector2(3, -2)),
                new WaveItem(1, 25f, new Microsoft.Xna.Framework.Vector2(3, -3))
                 }));
     _waves.Add(new Wave(new List<WaveItem> {
                new WaveItem(1, 3f, new Microsoft.Xna.Framework.Vector2(2, -6)),
                new WaveItem(1, 4f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(1, 5f, new Microsoft.Xna.Framework.Vector2(4, -3)),
                new WaveItem(3, 10f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(5, 14f, new Microsoft.Xna.Framework.Vector2(1, -4)),
                new WaveItem(2, 19f, new Microsoft.Xna.Framework.Vector2(3, -2)),
                new WaveItem(1, 25f, new Microsoft.Xna.Framework.Vector2(3, -3))
                 }));
     _waves.Add(new Wave(new List<WaveItem> {
                new WaveItem(2, 2f, new Microsoft.Xna.Framework.Vector2(2, -6)),
                new WaveItem(1, 2f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(2, 2f, new Microsoft.Xna.Framework.Vector2(4, -3)),
                new WaveItem(2, 2f, new Microsoft.Xna.Framework.Vector2(5, -2)),
                new WaveItem(3, 10f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(5, 14f, new Microsoft.Xna.Framework.Vector2(1, -4)),
                new WaveItem(2, 19f, new Microsoft.Xna.Framework.Vector2(3, -2)),
                new WaveItem(1, 25f, new Microsoft.Xna.Framework.Vector2(3, -3))
                 }));
     _waves.Add(new Wave(new List<WaveItem> {
                new WaveItem(1, 3f, new Microsoft.Xna.Framework.Vector2(2, -6)),
                new WaveItem(1, 4f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(1, 5f, new Microsoft.Xna.Framework.Vector2(4, -3)),
                new WaveItem(3, 10f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(5, 14f, new Microsoft.Xna.Framework.Vector2(1, -4)),
                new WaveItem(2, 19f, new Microsoft.Xna.Framework.Vector2(3, -2)),
                new WaveItem(1, 25f, new Microsoft.Xna.Framework.Vector2(3, -3))
                 }));
     _waves.Add(new Wave(new List<WaveItem> {
                new WaveItem(2, 1f, new Microsoft.Xna.Framework.Vector2(2, -6)),
                new WaveItem(1, 1f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(2, 1f, new Microsoft.Xna.Framework.Vector2(4, -3)),
                new WaveItem(1, 1f, new Microsoft.Xna.Framework.Vector2(5, -2)),
                new WaveItem(2, 1.5f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(1, 1.5f, new Microsoft.Xna.Framework.Vector2(2, -4)),
                new WaveItem(2, 2f, new Microsoft.Xna.Framework.Vector2(3, -2)),
                new WaveItem(1, 2f, new Microsoft.Xna.Framework.Vector2(3, -3))
                 }));
     _waves.Add(new Wave(new List<WaveItem> {
                new WaveItem(2, 0f, new Microsoft.Xna.Framework.Vector2(2, -3)),
                new WaveItem(4, 4f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(1, 8f, new Microsoft.Xna.Framework.Vector2(2, -3)),
                new WaveItem(1, 14f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(1, 18f, new Microsoft.Xna.Framework.Vector2(2, -4)),
                new WaveItem(1, 19f, new Microsoft.Xna.Framework.Vector2(3, -2)),
                new WaveItem(5, 25f, new Microsoft.Xna.Framework.Vector2(1, -3))
                 }));
     _waves.Add(new Wave(new List<WaveItem> {
                new WaveItem(2, 2f, new Microsoft.Xna.Framework.Vector2(2, -6)),
                new WaveItem(1, 2f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(2, 2f, new Microsoft.Xna.Framework.Vector2(4, -3)),
                new WaveItem(2, 2f, new Microsoft.Xna.Framework.Vector2(5, -2)),
                new WaveItem(3, 10f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(5, 14f, new Microsoft.Xna.Framework.Vector2(1, -4)),
                new WaveItem(2, 19f, new Microsoft.Xna.Framework.Vector2(3, -2)),
                new WaveItem(1, 25f, new Microsoft.Xna.Framework.Vector2(3, -3))
                 }));
     _waves.Add(new Wave(new List<WaveItem> {
                new WaveItem(3, 0f, new Microsoft.Xna.Framework.Vector2(2, -3)),
                new WaveItem(2, 4f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(1, 8f, new Microsoft.Xna.Framework.Vector2(2, -3)),
                new WaveItem(1, 14f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(2, 18f, new Microsoft.Xna.Framework.Vector2(2, -4)),
                new WaveItem(5, 19f, new Microsoft.Xna.Framework.Vector2(1, -2)),
                new WaveItem(1, 25f, new Microsoft.Xna.Framework.Vector2(3, -3))
                 }));
     _waves.Add(new Wave(new List<WaveItem> {
                new WaveItem(4, 3f, new Microsoft.Xna.Framework.Vector2(2, -6)),
                new WaveItem(2, 4f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(1, 8f, new Microsoft.Xna.Framework.Vector2(2, -3)),
                new WaveItem(1, 14f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(5, 18f, new Microsoft.Xna.Framework.Vector2(1, -4)),
                new WaveItem(2, 19f, new Microsoft.Xna.Framework.Vector2(3, -2)),
                new WaveItem(1, 25f, new Microsoft.Xna.Framework.Vector2(3, -3))
                 }));
     _waves.Add(new Wave(new List<WaveItem> {
                new WaveItem(1, 3f, new Microsoft.Xna.Framework.Vector2(2, -6)),
                new WaveItem(1, 4f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(1, 5f, new Microsoft.Xna.Framework.Vector2(4, -3)),
                new WaveItem(3, 10f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(5, 14f, new Microsoft.Xna.Framework.Vector2(1, -4)),
                new WaveItem(2, 19f, new Microsoft.Xna.Framework.Vector2(3, -2)),
                new WaveItem(1, 25f, new Microsoft.Xna.Framework.Vector2(3, -3))
                 }));
     _waves.Add(new Wave(new List<WaveItem> {
                new WaveItem(2, 2f, new Microsoft.Xna.Framework.Vector2(2, -6)),
                new WaveItem(5, 2f, new Microsoft.Xna.Framework.Vector2(1, -4)),
                new WaveItem(2, 2f, new Microsoft.Xna.Framework.Vector2(4, -3)),
                new WaveItem(2, 2f, new Microsoft.Xna.Framework.Vector2(1, -2)),
                new WaveItem(2, 2.5f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(2, 2.5f, new Microsoft.Xna.Framework.Vector2(2, -4)),
                new WaveItem(4, 3f, new Microsoft.Xna.Framework.Vector2(3, -2)),
                new WaveItem(2, 3f, new Microsoft.Xna.Framework.Vector2(3, -3))
                 }));
     _waves.Add(new Wave(new List<WaveItem> {
                new WaveItem(2, 1f, new Microsoft.Xna.Framework.Vector2(2, -6)),
                new WaveItem(1, 1f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(2, 1f, new Microsoft.Xna.Framework.Vector2(4, -3)),
                new WaveItem(1, 1f, new Microsoft.Xna.Framework.Vector2(5, -2)),
                new WaveItem(2, 1.5f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(1, 1.5f, new Microsoft.Xna.Framework.Vector2(2, -4)),
                new WaveItem(2, 2f, new Microsoft.Xna.Framework.Vector2(3, -2)),
                new WaveItem(1, 2f, new Microsoft.Xna.Framework.Vector2(3, -3))
                 }));
     _waves.Add(new Wave(new List<WaveItem> {
                new WaveItem(2, 1f, new Microsoft.Xna.Framework.Vector2(2, -6)),
                new WaveItem(1, 1f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(2, 1f, new Microsoft.Xna.Framework.Vector2(4, -3)),
                new WaveItem(1, 1f, new Microsoft.Xna.Framework.Vector2(5, -2)),
                new WaveItem(2, 1.5f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(1, 1.5f, new Microsoft.Xna.Framework.Vector2(2, -4)),
                new WaveItem(2, 2f, new Microsoft.Xna.Framework.Vector2(3, -2)),
                new WaveItem(1, 2f, new Microsoft.Xna.Framework.Vector2(3, -3))
                 }));
     _waves.Add(new Wave(new List<WaveItem> {
                new WaveItem(2, 1f, new Microsoft.Xna.Framework.Vector2(2, -6)),
                new WaveItem(1, 1f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(2, 1f, new Microsoft.Xna.Framework.Vector2(4, -3)),
                new WaveItem(1, 1f, new Microsoft.Xna.Framework.Vector2(5, -2)),
                new WaveItem(2, 1.5f, new Microsoft.Xna.Framework.Vector2(3, -4)),
                new WaveItem(1, 1.5f, new Microsoft.Xna.Framework.Vector2(2, -4)),
                new WaveItem(2, 2f, new Microsoft.Xna.Framework.Vector2(3, -2)),
                new WaveItem(1, 2f, new Microsoft.Xna.Framework.Vector2(3, -3))
                 }));
     _currentWave = _waves[0];
 }
        public void Update()
        {
            _timer += 0.016f;
            try
            {
                if ((int)(_currentWave._waveItems[0]._timeToComeIn) == (int)_timer)
                {
                    switch (_currentWave._waveItems[0]._itemType)
                    {
                        case 1:
                            _shootables.Add(new Bottle(_currentWave._waveItems[0]._velocity, new Vector2(-10, 300)));
                            break;

                        case 2:
                            _shootables.Add(new Egg(_currentWave._waveItems[0]._velocity, new Vector2(-10, 300)));
                            break;

                        case 3:
                            _shootables.Add(new Life(_currentWave._waveItems[0]._velocity, new Vector2(-10, 300)));
                            break;

                        case 4:
                            _shootables.Add(new spring(_currentWave._waveItems[0]._velocity, new Vector2(-10, 300)));
                            break;
                        case 5:
                            _shootables.Add(new TinCan(_currentWave._waveItems[0]._velocity, new Vector2(-10, 300)));
                            break;
                    }

                    _currentWave._waveItems.RemoveAt(0);

                }
                if (_currentWave._waveItems.Count == 0)
                {
                    _currentWaveNum++;
                    _currentWave = _waves[_currentWaveNum - 1];
                    _timer = 0;
                }
                Console.WriteLine((int)_timer);
            }
            catch (ArgumentOutOfRangeException e)
            {
                //say na'hin
            }
        }