public AnimalTargetPreferenceRel GetAnimalTargetPreference() { if (tpr == null) { tpr = AnimalBehaviorManager.inst.GetAnimalTargetPreferenceRelFromAnimalType(type); } return(tpr); }
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)); }
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); }