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(); }
protected override void CreateTree() { // base.targetPersonality = targetpers; //TESTING //Debug.Log("creando arbol what to do "); if (target.tag == "Player") { targetPersonality = this.GetComponent <DecisionTreeCreator>().target.GetComponent <PlayerPersonality>(); } else { targetPersonality = this.GetComponent <DecisionTreeCreator>().target.GetComponent <AIPersonality>(); } //Esto puede ser necesario en algun momento, pensamos que como se modifica desde fuera no es necesario //target = targetPersonality.gameObject; root = createDistanceDecisionFloat(this.gameObject.transform, target.transform, 60); iAmMonster = createDecisionsBool(true, myPersonality, DecisionBool.BoolDecisionEnum.ISMONSTER); targetIsHuman = createDecisionsBool(false, targetPersonality, DecisionBool.BoolDecisionEnum.ISMONSTER); isHeMonster = createDecisionsBool(true, targetPersonality, DecisionBool.BoolDecisionEnum.ISMONSTER); targetInGroup = createDecisionsBool(true, targetPersonality, DecisionBool.BoolDecisionEnum.INGROUP); iamInGroup = createDecisionsBool(true, myPersonality, DecisionBool.BoolDecisionEnum.INGROUP); healthBigger70 = createDecisionsFloat(70, 100, myPersonality, FloatDecision.FloatDecisionTypes.HEALTH); TrustHimMore7 = createDecisionsFloat(7, 10, myPersonality, FloatDecision.FloatDecisionTypes.CONFIDENCEINOTHER); isInMyGroup = createDecisionsBool(true, targetPersonality, DecisionBool.BoolDecisionEnum.IAMGROUPLEADER); hisHealthLess40 = createDecisionsFloat(0, 40, targetPersonality, FloatDecision.FloatDecisionTypes.HEALTH); iHaveBotiquin = createObjectDecision(ObjectHandler.ObjectType.MEDICALAID, myPersonality); iHaveMono = createObjectDecision(ObjectHandler.ObjectType.JUMPSUIT, myPersonality); iHaveShield = createObjectDecision(ObjectHandler.ObjectType.SHIELD, myPersonality); TrustHimMore8 = createDecisionsFloat(8, 10, myPersonality, FloatDecision.FloatDecisionTypes.CONFIDENCEINOTHER); MyObjectIsNothing1 = createObjectDecision(ObjectHandler.ObjectType.NONE, myPersonality); CharismBigger3 = createDecisionsFloat(3, 10, myPersonality, FloatDecision.FloatDecisionTypes.CHARISMA); MyObjectIsNothing2 = createObjectDecision(ObjectHandler.ObjectType.NONE, myPersonality); random1 = createRandomDecisionFloat(1, 3, 1, 2); TrustHimmore5 = createDecisionsFloat(5, 10, myPersonality, FloatDecision.FloatDecisionTypes.CONFIDENCEINOTHER); hisHealthLess45 = createDecisionsFloat(0, 45, targetPersonality, FloatDecision.FloatDecisionTypes.HEALTH); Agressive = createDecisionsFloat(3, 10, myPersonality, FloatDecision.FloatDecisionTypes.AGGRESSIVENESS); random2 = random1 = createRandomDecisionFloat(1, 3, 1, 2); iHaveBotiquin2 = createObjectDecision(ObjectHandler.ObjectType.MEDICALAID, myPersonality); CharismaBigger3_2 = createDecisionsFloat(3, 10, myPersonality, FloatDecision.FloatDecisionTypes.CHARISMA); iHaveBotiquin2 = createObjectDecision(ObjectHandler.ObjectType.MEDICALAID, myPersonality); iHaveMono2 = createObjectDecision(ObjectHandler.ObjectType.JUMPSUIT, myPersonality); iHaveShield2 = createObjectDecision(ObjectHandler.ObjectType.SHIELD, myPersonality); CharismBigger3_3 = createDecisionsFloat(3, 10, myPersonality, FloatDecision.FloatDecisionTypes.CHARISMA); Fear = createDecisionsFloat(3, 10, myPersonality, FloatDecision.FloatDecisionTypes.FEAR); random3 = createRandomDecisionFloat(1, 10, 8, 10); random4 = createRandomDecisionFloat(1, 5, 1, 2); TrustHimLess3 = createDecisionsFloat(0, 3, myPersonality, FloatDecision.FloatDecisionTypes.CONFIDENCEINOTHER);; Agressive2 = createDecisionsFloat(3, 10, myPersonality, FloatDecision.FloatDecisionTypes.AGGRESSIVENESS); CharismaBigger3_4 = createDecisionsFloat(3, 10, myPersonality, FloatDecision.FloatDecisionTypes.CHARISMA); iHaveAxe = createObjectDecision(ObjectHandler.ObjectType.AXE, myPersonality); myHealthBigger80 = createDecisionsFloat(80, 100, myPersonality, FloatDecision.FloatDecisionTypes.HEALTH); Agressive3 = createDecisionsFloat(3, 10, myPersonality, FloatDecision.FloatDecisionTypes.AGGRESSIVENESS); hisHealthLess45_2 = createDecisionsFloat(0, 45, targetPersonality, FloatDecision.FloatDecisionTypes.HEALTH); random5 = createRandomDecisionFloat(1, 10, 1, 8); CharismaBigger3_5 = createDecisionsFloat(3, 10, myPersonality, FloatDecision.FloatDecisionTypes.CHARISMA); random6 = createRandomDecisionFloat(1, 10, 1, 4); root.nodeTrue = iAmMonster; root.nodeFalse = root; iAmMonster.nodeTrue = targetIsHuman; iAmMonster.nodeFalse = isHeMonster; createLeaves(targetInGroup, addActionEvade(), addActionAttack()); targetIsHuman.nodeTrue = targetInGroup; targetIsHuman.nodeFalse = addActionNothing(); isHeMonster.nodeTrue = iamInGroup; isHeMonster.nodeFalse = TrustHimMore7; iamInGroup.nodeTrue = healthBigger70; iamInGroup.nodeFalse = addActionEvade(); createLeaves(healthBigger70, addActionAttack(), addActionEvade()); TrustHimMore7.nodeTrue = isInMyGroup; TrustHimMore7.nodeFalse = TrustHimmore5; isInMyGroup.nodeTrue = hisHealthLess40; isInMyGroup.nodeFalse = addActionOfferJoinGroup(); // OFREZCO unirse a mi grupo hisHealthLess40.nodeTrue = iHaveBotiquin; hisHealthLess40.nodeFalse = TrustHimMore8; iHaveBotiquin.nodeTrue = addActionOffer(); iHaveBotiquin.nodeFalse = iHaveMono; TrustHimMore8.nodeTrue = MyObjectIsNothing1; TrustHimMore8.nodeFalse = CharismBigger3; CharismBigger3.nodeTrue = MyObjectIsNothing2; CharismBigger3.nodeFalse = addActionNothing(); iHaveMono.nodeTrue = addActionOffer(); iHaveMono.nodeFalse = iHaveShield; MyObjectIsNothing1.nodeTrue = addActionNothing(); MyObjectIsNothing1.nodeFalse = addActionOffer(); MyObjectIsNothing2.nodeTrue = addActionNothing(); MyObjectIsNothing2.nodeFalse = random1; createLeaves(iHaveShield, addActionOffer(), addActionNothing()); createLeaves(random1, addActionOffer(), addActionNothing()); TrustHimmore5.nodeTrue = hisHealthLess45; TrustHimmore5.nodeFalse = TrustHimLess3; hisHealthLess45.nodeTrue = Agressive; hisHealthLess45.nodeFalse = CharismBigger3_3; Agressive.nodeTrue = random2; Agressive.nodeFalse = iHaveBotiquin2; createLeaves(random2, addActionAttack(), addActionNothing()); iHaveBotiquin2.nodeTrue = addActionOffer(); iHaveBotiquin2.nodeFalse = CharismaBigger3_2; CharismaBigger3_2.nodeTrue = iHaveMono2; CharismaBigger3_2.nodeFalse = addActionNothing(); iHaveMono2.nodeTrue = addActionOffer(); iHaveMono2.nodeFalse = iHaveShield2; createLeaves(iHaveShield2, addActionOffer(), addActionNothing()); CharismBigger3_3.nodeTrue = addActionOfferJoinGroup(); CharismBigger3_3.nodeFalse = Fear; Fear.nodeTrue = random3; Fear.nodeFalse = random4; createLeaves(random3, addActionOfferJoinGroup(), addActionNothing()); createLeaves(random4, addActionAttack(), addActionOfferJoinGroup()); TrustHimLess3.nodeTrue = Agressive2; TrustHimLess3.nodeFalse = Agressive3; Agressive2.nodeTrue = addActionAttack(); Agressive2.nodeFalse = CharismaBigger3_4; CharismaBigger3_4.nodeTrue = iHaveAxe; CharismaBigger3_4.nodeFalse = addActionNothing(); iHaveAxe.nodeTrue = myHealthBigger80; iHaveAxe.nodeFalse = addActionNothing(); createLeaves(myHealthBigger80, addActionAttack(), addActionNothing()); Agressive3.nodeTrue = hisHealthLess45; Agressive3.nodeFalse = CharismaBigger3_5; hisHealthLess45.nodeTrue = addActionAttack(); hisHealthLess45.nodeFalse = random5; CharismaBigger3_5.nodeTrue = random6; CharismaBigger3_5.nodeFalse = addActionNothing(); createLeaves(random5, addActionAttack(), addActionNothing()); createLeaves(random6, addActionOfferJoinGroup(), addActionNothing()); DecisionCompleted = true; reaction = this.GetComponent <DecisionTreeReactionAfterInteraction>(); StartTheDecision(); }