Exemple #1
0
    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);
    }
Exemple #4
0
    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);
    }