Ejemplo n.º 1
0
    protected DecisionActionsEnum createDecisionsEnum(ActionsEnum.Actions vDecision /*, ActionsEnum.Actions vTest*/, PersonalityBase pers)
    {
        DecisionActionsEnum d = gameObject.AddComponent <DecisionActionsEnum>();

        d.valueDecision = vDecision;
        d.personality   = pers;

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