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); }
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; }
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); }
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}"); } // }
public void AddCondtion(ConditionConfig condition) { this.conditions.Add(condition); }