public SimpleResponder(string targetIntent, List <string> responds, ConditionConfig conditionConfig)
 {
     this.targetIntent = targetIntent;
     this.responds     = responds;
     this.cRandom      = new System.Random();
     this.condition    = Condition.Load(conditionConfig);
 }
Beispiel #2
0
    public void Update(ActionNode node, float deltaTime)
    {
        ConditionConfig   config     = (ConditionConfig)node.config;
        IActionMachine    machine    = node.actionMachine;
        IActionController controller = (IActionController)node.actionMachine.controller;

        if (!config.delayInvoke || !config.EnableBeginEnd())
        {
            if (!Checker(config.checker, machine, controller))
            {
                return;
            }
        }
        else
        {
            int successCnt = (int)node.data;
            if (Checker(config.checker, machine, controller))
            {//为true时计数+1
                node.data = ++successCnt;
            }

            if (successCnt == 0 ||//true的次数为0
                config.allFrameCheck && successCnt != (node.updateCnt + 1) ||//每一帧都必须为true,updateCnt需要+1是因为updateCnt在Update后才会递增
                machine.GetStateFrameIndex() != config.GetEndFrame())//不是最后一帧
            {
                return;
            }
        }

        machine.ChangeState(config.stateName, config.priority);
    }
 public EngineConfig(
     PlaceholderConfig placeholder,
     ArrayConfig arrayConfig,
     ConditionConfig condition)
 {
     this.Placeholder = placeholder;
     this.Array       = arrayConfig;
     this.Condition   = condition;
 }
Beispiel #4
0
    public void Update(ActionNode node, float deltaTime)
    {
        ConditionConfig         config     = (ConditionConfig)node.config;
        IActionMachine          machine    = node.actionMachine;
        ActionMachineController controller = (ActionMachineController)node.actionMachine.controller;

        if (Checker(config.checker, node))
        {
            machine.ChangeState(config.stateName, config.priority);
        }
    }
    public void AddData(string conditionExpress, string val,
                        Dictionary <int, int> rewards)
    {
        ConditionConfig c = new ConditionConfig();

        c.ConditionExpress = conditionExpress;
        c.Val     = val;
        c.Rewards = new Dictionary <int, int>();
        foreach (KeyValuePair <int, int> pair in rewards)
        {
            c.Rewards.Add(pair.Key, pair.Value);
        }
        Rewards.Add(c);
    }
Beispiel #6
0
    public void Enter(ActionNode node)
    {
        ConditionConfig config = (ConditionConfig)node.config;

        //IActionMachine machine = node.actionMachine;
        //IActionController controller = (IActionController)node.actionMachine.controller;
        node.data = 0;

        //校验
        if (config.delayInvoke && !config.EnableBeginEnd())
        {
            throw new RuntimeException($"使用延迟调用(DelayInvoke),必须启用区间(EnableBeginEnd)\n{node}");
        }
        //
    }
Beispiel #7
0
 public void AddCondtion(ConditionConfig condition)
 {
     this.conditions.Add(condition);
 }