protected PriorityObjectDecision createPriorityObjectDecision(PersonalityBase myPers, PersonalityBase yourPers) { PriorityObjectDecision d = gameObject.AddComponent <PriorityObjectDecision>() as PriorityObjectDecision; d.characterPersonality = myPers; d.targetPersonality = yourPers; return(d); }
protected override void CreateTree() { if (target.tag == "Player") { targetPersonality = this.GetComponent <DecisionTreeCreator>().target.GetComponent <PlayerPersonality>(); } else { targetPersonality = this.GetComponent <DecisionTreeCreator>().target.GetComponent <AIPersonality>(); } root = createDecisionsEnum(ActionsEnum.Actions.ATTACK, myPersonality); iAmMonster = createDecisionsBool(true, myPersonality, DecisionBool.BoolDecisionEnum.ISMONSTER); heIsInGroup = createDecisionsBool(true, targetPersonality, DecisionBool.BoolDecisionEnum.INGROUP); isMonster = createDecisionsBool(true, targetPersonality, DecisionBool.BoolDecisionEnum.ISMONSTER); givingMeObject = createDecisionsEnum(ActionsEnum.Actions.OFFER, myPersonality); inGroup = createDecisionsBool(true, myPersonality, DecisionBool.BoolDecisionEnum.INGROUP); fear = createDecisionsFloat(3, 10, /*aiPersonality.fear*/ myPersonality, FloatDecision.FloatDecisionTypes.FEAR); healthBigger70 = createDecisionsFloat(70, 1000, /*aiPersonality.health*/ myPersonality, FloatDecision.FloatDecisionTypes.HEALTH); healthLess40 = createDecisionsFloat(0, 40, /*aiPersonality.health*/ myPersonality, FloatDecision.FloatDecisionTypes.HEALTH); trustHimMore6 = createDecisionsFloat(6, 10, /* myTrustInOther*/ myPersonality, FloatDecision.FloatDecisionTypes.CONFIDENCEINOTHER); trustHimLess3 = createDecisionsFloat(0, 3, /*myTrustInOther*/ myPersonality, FloatDecision.FloatDecisionTypes.CONFIDENCEINOTHER); agresive1 = createDecisionsFloat(3, 10, /*aiPersonality.selfAssertion*/ myPersonality, FloatDecision.FloatDecisionTypes.AGGRESSIVENESS); charismatic = createDecisionsFloat(3, 10, /* aiPersonality.charisma*/ myPersonality, FloatDecision.FloatDecisionTypes.CHARISMA); agresive2 = createDecisionsFloat(2.5f, 10, /*aiPersonality.selfAssertion*/ myPersonality, FloatDecision.FloatDecisionTypes.AGGRESSIVENESS); randomDecision = createRandomDecisionFloat(8, 10, 1, 10); Join = createDecisionsEnum(ActionsEnum.Actions.JOIN, myPersonality); root.nodeTrue = iAmMonster; root.nodeFalse = givingMeObject; iAmMonster.nodeTrue = heIsInGroup; iAmMonster.nodeFalse = isMonster; createLeaves(heIsInGroup, addActionEvade(), addActionAttack()); isMonster.nodeTrue = inGroup; isMonster.nodeFalse = fear; inGroup.nodeTrue = healthBigger70; inGroup.nodeFalse = addActionEvade(); createLeaves(healthBigger70 as Decision, addActionAttack(), addActionEvade()); fear.nodeTrue = addActionEvade(); fear.nodeFalse = healthLess40; createLeaves(healthLess40, addActionEvade(), addActionAttack()); comparePriorityTreeAction = createPriorityObjectDecision(myPersonality, targetPersonality); givingMeObject.nodeTrue = comparePriorityTreeAction; givingMeObject.nodeFalse = Join; Join.nodeTrue = trustHimMore6; Join.nodeFalse = addActionNothing(); comparePriorityTreeAction.nodeFalse = addActionNothing(); comparePriorityTreeAction.nodeTrue = addActionAcceptObjectOffered(); trustHimMore6.nodeTrue = addActionJoin(); trustHimMore6.nodeFalse = trustHimLess3; trustHimLess3.nodeTrue = agresive1; trustHimLess3.nodeFalse = charismatic; createLeaves(agresive1, addActionAttack(), addActionNothing()); charismatic.nodeTrue = addActionJoin(); charismatic.nodeFalse = agresive2; agresive2.nodeTrue = addActionAttack(); agresive2.nodeFalse = randomDecision; createLeaves(randomDecision, addActionJoin(), addActionNothing()); DecisionCompleted = true; treeCreated = true; //Debug.Log ("fin de creando arbol reaction"); StartTheDecision(); }