public override ShotPattern Clone() { CirclePattern pattern = (CirclePattern)base.Clone(); pattern.m_angleOffset = m_angleOffset; pattern.m_angle = 0; return(pattern); }
public static CirclePattern GetPattern(int radius) { CirclePattern result; lock (patterns) { if (!patterns.TryGetValue(radius, out result)) { result = new CirclePattern(radius); patterns.Add(radius, result); } } return(result); }
private void Move(CirclePattern pattern) { switch (pattern.direction) { case "n": Move(0, maxinum); break; case "s": Move(0, -maxinum); break; case "w": Move(-maxinum, 0); break; case "e": Move(maxinum, 0); break; case "ne": Move(maxinum, maxinum); break; case "se": Move(maxinum, -maxinum); break; case "nw": Move(-maxinum, maxinum); break; case "sw": Move(-maxinum, -maxinum); break; default: throw new InvalidOperationException(); } //Debug.Log("Pattern " + pattern + " location : " + (getX()) + " " + getY() + " " + mRigidbody.position.z); }
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."); } }
public CirclePatternViewModel(CirclePattern patternCerchio) { _patternCerchio = patternCerchio; }
private bool IsReach(CirclePattern pattern) { switch (pattern.direction) { case "n": if ((isBetween(getX(), 0.1)) && (getY() > maxinum * 0.9 && getY() < maxinum * 1.1)) { indexofPattern++; return(true); } break; case "s": if (isBetween(getX(), 0.1) && getY() < -maxinum * 0.9) { indexofPattern++; return(true); } break; case "w": if (isBetween(getY(), 0.1) && getX() < -maxinum * 0.9) { indexofPattern++; return(true); } break; case "e": if (isBetween(getY(), 0.1) && getX() > -maxinum * 0.9) { indexofPattern++; return(true); } break; case "ne": if (getX() > maxinum * 0.9 || getY() > maxinum * 0.9) { indexofPattern++; return(true); } break; case "se": if (getX() > maxinum * 0.9 || getY() < -maxinum * 0.9) { indexofPattern++; return(true); } break; case "nw": if (getX() < -maxinum * 0.9 || getY() > maxinum * 0.9) { indexofPattern++; return(true); } break; case "sw": if (getX() < -maxinum * 0.9 || getY() < -maxinum * 0.9) { indexofPattern++; return(true); } break; default: throw new InvalidOperationException(); } return(false); }