public EnemyWaves(Board board,Point castlePos, Point enemyStartingPosition) {
        int nrOfWaves = 10;
        final double groupActivationTime = 1000.0;
        int y = board.getCastlePos().getY();
        int x = 0;

        EnemyPath enemyPathing = new EnemyPath(enemyStartingPosition, castlePos);
        path = enemyPathing.getPath();


        for (int i = 0; i < nrOfWaves; i++) {
            Enemy enemyPrototype;
            int nrOfEnemiesInAWave = 10;
            @SuppressWarnings("MagicNumber") // pretty self explainatory variable initiation, nothing magic about it.
            double activationTime = 1000.0;

            switch (i) {
                case 0:
                    enemyPrototype = new FastEnemy(board, x, y);
                    nrOfEnemiesInAWave += 3;
                    break;

                case 2: enemyPrototype = new SlowEnemy(board, x, y);
                    nrOfEnemiesInAWave += 10;
                    break;

                case 1: enemyPrototype = new StrongEnemy(board, x, y);
                    nrOfEnemiesInAWave -= 5;
                    activationTime *= 2;
                    break;

                default: enemyPrototype = new DefaultEnemy(board, 0, board.getCastlePos().getY());
                    break;
            }


            EnemyWave enemyWave = new EnemyWave(enemyPrototype, nrOfEnemiesInAWave, groupActivationTime, activationTime);
            addEnemyGroupToAllGroups(enemyWave);
        }
    }