Пример #1
0
 public AnimalTargetPreferenceRel GetAnimalTargetPreference()
 {
     if (tpr == null)
     {
         tpr = AnimalBehaviorManager.inst.GetAnimalTargetPreferenceRelFromAnimalType(type);
     }
     return(tpr);
 }
Пример #2
0
    public bool CheckValidTarget(AnimalTargetPreferenceRel tpr, Animal an, NumberInfo targetNi, bool careAboutRigidbodies = true)    // Transform target) {
    {
        if (targetNi.myShape == NumberShape.Tetrahedron || targetNi.myShape == NumberShape.Ghost)
        {
            return(false);
        }
        if (careAboutRigidbodies && !targetNi.GetComponent <Animal>())
        {
            if (targetNi.GetComponent <Rigidbody>())
            {
                if (targetNi.GetComponent <Rigidbody>().isKinematic)
                {
                    return(false);
                }
            }
            else if (!targetNi.transform.parent)                // if we found a non-rigidbody with no parent ignore it
            {
                return(false);
            }
            else if (!targetNi.transform.parent.GetComponent <LevelMachinePrefab_NumberFlower>())               // if the parent was a flower, let it be targeted, else return false
            {
                return(false);
            }
        }
//		Debug.Log("here1");
        Animal selfCheck = targetNi.GetComponent <Animal>();

        if (selfCheck)
        {
            if (selfCheck == an)
            {
                return(false);
            }
        }
        if (!targetNi)
        {
            return(false);
        }
//		Debug.Log("here2");
        Fraction targetFrac;

//		if (targetNi.transform.tag == "Player"){
//			targetFrac = Player.inst.PlayerHoldingNumberInfo();
//		} else {
        targetFrac = targetNi.fraction;
//		}
        if (!tpr.cannibalize && TargetAndAnimalAreSameType(an, targetNi.transform))
        {
            return(false);
//			Debug.Log("!! here2");
        }
//		Debug.Log("here");
        return(CheckValidTarget(tpr, an, targetFrac));
    }
Пример #3
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);
    }