コード例 #1
0
ファイル: Brain.cs プロジェクト: VitalyZaborov/ew8
    //	Staff
    protected void think()
    {
        //	Debug.Log("Brain think " + pattern);
        List <GameObject> targets = unit.visibleUnits;
        Action            action;
        ActionContext     cnxt = new ActionContext()
        {
            caster = gameObject, memory = memory
        };

        for (int i = 0; i < aiArray.Length; i++)
        {
            AINode ai_node = aiArray[i];
            if (ai_node.probability == 100 || Random.value * 100 <= ai_node.probability)
            {
                action = ai_node.action(cnxt);
                action.init(gameObject);
                GameObject character = ai_node.character != null?getTarget(ai_node.character, gameObject, ai_node.target != null?null : action, targets) : (canDo(gameObject, action) ? gameObject : null);

                //	Debug.Log("-- " + character);
                if (character != null)
                {
                    GameObject target = ai_node.target != null?getTarget(ai_node.target, gameObject, action, targets) : character;

                    if (target != null && performAction(action, target))
                    {
                        if (ai_node.extra != null)
                        {
                            cnxt.target    = target;
                            cnxt.character = character;
                            ai_node.extra(cnxt);
                        }
                        return;
                    }
                }
            }
        }
        action = new Stay();
        action.init(gameObject);
        performAction(action);
    }