/*
 * Copyright 2017 Michael
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
 * documentation files (the "Software"), to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and
 * to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all copies or substantial portions of
 * the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
 * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 * IN THE SOFTWARE.
 */

package de.mirakon.java.mazegrapher.plugins;

import de.mirakon.java.mazegrapher.main.AbstractMaze;
import org.jetbrains.annotations.NotNull;

/**
 * A maze of this class is created by using a randomized version of prim's algorithm (sort of creating a minimal
 * spanning tree). During generation, paths of length two are constructed from possible junctions creating new junctions
 * (therefore the class suffix "L2")
 */
public class PrimAlgoMazeL2 extends AbstractMaze {

    private static final String mazeCategory = "Perfect Mazes";
    private static final String mazeName = "PrimAlgoL2";
    private static final String mazePlugin = "default";

    public PrimAlgoMazeL2() {

    }

    private PrimAlgoMazeL2(int i) {

    }

    @Override
    @NotNull
    public String getMazeCategory() {
        return mazeCategory;
    }

    @Override
    @NotNull
    public String getMazeName() {
        return mazeName;
    }

    @Override
    @NotNull
    public String getMazePlugin() {
        return mazePlugin;
    }
}

@@ -1201,41 +1201,193 @@
 ort 
-org.jetbrains.annotations.NotNull
+de.mirakon.java.mazegrapher.main.GenericCoordinates;%0Aimport de.mirakon.java.mazegrapher.main.Strings;%0Aimport org.jetbrains.annotations.NotNull;%0Aimport org.jetbrains.annotations.Nullable
 ;%0A%0A/
@@ -1902,53 +1902,46 @@
     
-public PrimAlgoMazeL2() %7B%0A%0A    %7D%0A%0A    private
+@SuppressWarnings(%22unused%22)%0A    public
  Pri
@@ -1956,18 +1956,12 @@
 eL2(
-int i
 ) %7B%0A
-%0A
     
@@ -2252,11 +2252,935 @@
 n;%0A    %7D
+%0A%0A    @Override%0A    public @Nullable String getDescription() %7B%0A        return %22This is maze will be created with a randomized version of prim's algorithm.%22;%0A    %7D%0A%0A    @Override%0A    public void generate(int height, int width) throws IllegalArgumentException %7B%0A        // TODO: 20.05.2017 generate %5E%5E%0A        if (height %3C 3 %7C%7C width %3C 3) %7B%0A            throw new IllegalArgumentException(Strings.getString(Strings.ERROR_MAZE_GENERATION_BAD_SIZE, height,%0A                    width));%0A        %7D%0A        GenericCoordinates%5B%5D%5B%5D maze = new GenericCoordinates%5Bheight%5D%5Bwidth%5D;%0A        // TODO: 20.05.2017 bef%C3%BClle maze mit standardzeug%0A        // TODO: 20.05.2017 erstes feld zuf%C3%A4llig w%C3%A4hlen%0A        // TODO: 20.05.2017 erste feld zu nodesWithPossibleConnections hinzuf%C3%BCgen%0A        // TODO: 20.05.2017 findPossibleConnections, und aktualisiere dabei nWPC%0A        // TODO: 20.05.2017 w%C3%A4hle connection f%C3%BCg sie hinzu und wiederhole%0A    %7D
 %0A%7D%0A

generate methode angefangen