public RDMazeGenSettings(Location worldSize) : base() { Size = worldSize; FillPatterns.Add(new BlankRegionPattern()); FillPatterns.Add(new SteppedHallwayPattern(new PlateauFixedNumbAndSpace(4, 2, 2), 0.3f)); FillPatterns.Add(new SteppedHallwayPattern(new PlateauFixedWidthAndSpace(2, 2, 2), 0.3f)); FillPatterns.Add(new SteppedHallwayPattern(new PlateauFixedWidthAndSpace(5, 1, 2), 0.3f)); FillPatterns.Add(new ThickHurdlePattern(new PlateauFixedNumbAndSpace(4, 2, 2), 0.6f, 0.3f)); FillPatterns.Add(new ThickHurdlePattern(new PlateauFixedWidthAndSpace(2, 2, 2), 0.1f, 0.0f)); FillPatterns.Add(new ThickHurdlePattern(new PlateauFixedWidthAndSpace(5, 1, 2), 0.8f, 0.15f)); FillPatterns.Add(new CarvedPlusPattern()); FillPatterns.Add(new XPattern(new Interval(0.46f, 2.174f, true, 3))); FillPatterns.Add(new CirclePattern(2)); FillPatterns.Add(new CirclePattern(3)); PlatformsPattern temp = new PlatformsPattern(2, 2, 0.3f, 15, new Interval(0.8f, 1.25f, true, 3)); temp.MaxSuitability = Suitability.Little; FillPatterns.Add(temp); temp = new PlatformsPattern(2, 1, 0.2f, 15, new Interval(0.8f, 1.25f, true, 3)); temp.MaxSuitability = Suitability.Little; FillPatterns.Add(temp); FillPatterns.Add(new ConcentricSquaresPattern()); FillPatterns.Add(new LinePattern()); FillPatterns.Add(new AlternatingStepsPattern()); }
private FillPattern GetFillPattern(string fillType, XmlNode pattNode) { string var = ""; Func <string> GetCh = () => GetChild(pattNode, var).InnerText, GetAtt = () => GetAttribute(pattNode, var); string maxSuitability = "very"; if (GetAttribute(pattNode, "maxSuitability") != null) { maxSuitability = GetAttribute(pattNode, "maxSuitability"); } Suitability maxSuit; switch (maxSuitability) { case ("little"): maxSuit = Suitability.Little; break; case ("moderate"): maxSuit = Suitability.Moderate; break; case ("very"): maxSuit = Suitability.Very; break; default: throw new ArgumentException("Not a valid max suitability for the " + fillType + " fill pattern."); } switch (fillType) { case ("blank"): BlankRegionPattern brp = new BlankRegionPattern(); brp.MaxSuitability = maxSuit; return(brp); case ("carvedPlus"): CarvedPlusPattern cpp = new CarvedPlusPattern(); cpp.MaxSuitability = maxSuit; return(cpp); case ("concentricSquares"): ConcentricSquaresPattern csp = new ConcentricSquaresPattern(); csp.MaxSuitability = maxSuit; return(csp); case ("line"): LinePattern lp = new LinePattern(); lp.MaxSuitability = maxSuit; return(lp); case ("alternatingSteps"): AlternatingStepsPattern asp = new AlternatingStepsPattern(); asp.MaxSuitability = maxSuit; return(asp); case ("x"): var = "minXToYRatio"; float min = Single.Parse(GetCh()); var = "maxXToYRatio"; float max = Single.Parse(GetCh()); XPattern xp = new XPattern(new Interval(min, max, true, 2)); xp.MaxSuitability = maxSuit; return(xp); case ("circle"): var = "radius"; int radius = Int32.Parse(GetCh()); CirclePattern cp = new CirclePattern(radius); cp.MaxSuitability = maxSuit; return(cp); case ("platforms"): var = "spaceBetween"; int spaceBetween = Int32.Parse(GetCh()); var = "border"; int border = Int32.Parse(GetCh()); var = "proportionHoles"; float proportionHoles = Single.Parse(GetCh()); var = "minArea"; int minArea = Int32.Parse(GetCh()); var = "minAcceptableXToYRatio"; float minRatio = Single.Parse(GetCh()); var = "maxAcceptableXToYRatio"; float maxRatio = Single.Parse(GetCh()); PlatformsPattern pp = new PlatformsPattern(spaceBetween, border, proportionHoles, minArea, new Interval(minRatio, maxRatio, true, 3)); pp.MaxSuitability = maxSuit; return(pp); case ("steppedHallway"): var = "relativeHeight"; float relHeight = Single.Parse(GetCh()); return(new SteppedHallwayPattern(GetPlateauGen(GetChild(pattNode, "plateau")), relHeight)); case ("thickHurdle"): var = "averageRelativeHeight"; float avRelHeight = Single.Parse(GetCh()); var = "relativeHeightVariance"; float relheightVariance = Single.Parse(GetCh()); return(new ThickHurdlePattern(GetPlateauGen(GetChild(pattNode, "plateau")), avRelHeight, relheightVariance)); default: throw new ArgumentException("Not a valid fill pattern."); } }