Ejemplo n.º 1
0
    protected DistanceDecision createDistanceDecisionFloat(Transform myTransf, Transform otherTransf, int mindist)
    {
        DistanceDecision d = gameObject.AddComponent <DistanceDecision>() as DistanceDecision;

        d.MySelfTransform = myTransf;
        d.TargetTransform = otherTransf;
        d.mindistance     = mindist;

        return(d);
    }
Ejemplo n.º 2
0
    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();
    }