예제 #1
0
    public bool CheckValidTarget(AnimalTargetPreferenceRel tpr, Animal an, Fraction targetFrac)      // Transform target) {
    {
        if (targetFrac == null)
        {
            return(false);
        }


        if (!an)
        {
            return(false);
        }


        NumberInfo animalNi = an.GetComponent <NumberInfo>();



//		Debug.Log("hi..");

        bool ret = false;

//		 Debug.Log("ret!");
        switch (tpr.preference)
        {
        case AnimalTargetPreference.Nothing:
            ret = false;
            break;

        case AnimalTargetPreference.Everything:
            ret = true;
            break;

        case AnimalTargetPreference.GreaterThanItself:
            ret = Fraction.Greater(targetFrac, animalNi.fraction);
            break;

        case AnimalTargetPreference.LessThanItself:
            ret = Fraction.Greater(animalNi.fraction, targetFrac);
            break;

        case AnimalTargetPreference.GreaterThanX:
            ret = Fraction.Greater(targetFrac, new Fraction(tpr.preferenceInt, 1));
            break;

        case AnimalTargetPreference.LessThanX:
            ret = Fraction.Greater(new Fraction(tpr.preferenceInt, 1), targetFrac);
            break;

        case AnimalTargetPreference.PrimesOnly:
            ret = MathUtils.isPrime(targetFrac.numerator);
            break;

        case AnimalTargetPreference.FactorsOfItself:
            ret = MathUtils.AIsFactorOfB(targetFrac, animalNi.fraction);
            break;

        case AnimalTargetPreference.MultiplesOfItself:
            ret = MathUtils.AIsFactorOfB(animalNi.fraction, targetFrac);
//			// commented Debug.Log("ret false for "+animalNi.fraction.numerator+" is a factor of "+targetNi.fraction.numerator+".");
            break;

        case AnimalTargetPreference.FactorsOfX:
            ret = MathUtils.AIsFactorOfB(targetFrac, new Fraction(tpr.preferenceInt, 1));
            break;

        case AnimalTargetPreference.MultiplesOfX:
            ret = MathUtils.AIsFactorOfB(new Fraction(tpr.preferenceInt, 1), new Fraction(Mathf.Abs(targetFrac.numerator), targetFrac.denominator));
            break;

        case AnimalTargetPreference.OnlyX:
            ret = Fraction.Equals(targetFrac, new Fraction(tpr.preferenceInt, 1));
            break;

        case AnimalTargetPreference.EverythingButItsOwnNumber:
            ret = !Fraction.Equals(targetFrac, animalNi.fraction);
            break;

        default:
            break;
        }
//		Debug.Log("ret final:"+ret);
//		// commented Debug.Log("hmm:"+ret);
//		// commented Debug.Log("Target preference wa:"+tpr.preference.ToString()+", anni:"+animalNi.fraction.numerator+",targtni:"+targetNi.fraction.numerator+"..__result__:"+ret);
        return(ret);
    }