/// <summary> /// Initializes the new instance of the <see cref="DefaultDribbleState"/> class. /// </summary> public override void Initialize() { StateChain.Add(this); StateChain.Add(DribbleState.Instance); StateCondition.Add(DribbleState.Instance, ValidateDefaultDribbleToDribble); StateCondition.Add(this, ValidateDefaultDribbleToDefaultDribble); }
/// <summary> /// Creates a new EventDescriptor from metadata /// </summary> public EventDescriptor( string name, Type type, Type[] requiredTypes, string[] sentiments, StateCondition[] stateReqs, RelationCondition[] relationReqs, RuleCondition[] ruleReqs, StateCondition[] stateEffects, RelationCondition[] relationEffects, int[] canEqualPairs) { this.Name = name; this.Type = type; this.RequiredTypes = requiredTypes; this.Sentiments = sentiments; this.StateReqs = stateReqs; this.RelationReqs = relationReqs; this.RuleReqs = ruleReqs; this.StateEffects = stateEffects; this.RelationEffects = relationEffects; this.StateRequirements = this.CollectStateRequirements(); this.canEqual = this.PopulateCanEqual(canEqualPairs); }
private static void ProcessConditionUsages( StateMachine stateMachine, ConditionUsage[] conditionUsages, Dictionary <ScriptableObject, object> createdInstances, out StateCondition[] conditions, out int[] resultGroups) { int count = conditionUsages.Length; conditions = new StateCondition[count]; for (int i = 0; i < count; i++) { conditions[i] = conditionUsages[i].Condition.GetCondition( stateMachine, conditionUsages[i].ExpectedResult == Result.True, createdInstances); } List <int> resultGroupsList = new List <int>(); for (int i = 0; i < count; i++) { resultGroupsList.Add(1); int idx = resultGroupsList.Count - 1; while (i < count - 1 && conditionUsages[i].Operator == Operator.And) { i++; resultGroupsList[idx]++; } } resultGroups = resultGroupsList.ToArray(); }
public void SMG_04_05_Simplyify() { var sm = new StateMachine(); var stype = sm.AddSimpleType("S"); stype.AddStateNames(new[] { "A", "B", "C", "D", "X" }); var v = sm.AddVariable("v", stype); var u = sm.AddVariable("u", stype); // A + B var c1 = new StateCondition(v); c1.SetPreStates(new[] { 0, 1 }); // D var c2 = new StateCondition(v); c2.SetPreStates(new[] { 3 }); // A var c3 = new StateCondition(v); c2.SetPreStates(new[] { 0 }); var c1dc = Gate.ComposeAND(Gate.Invert(c1.Decompose(ConditionMode.Pre)), Gate.Invert(c2.Decompose(ConditionMode.Pre))); Trace("1 === {0}", c1dc); return; }
public void SMG_03_StateCondition() { TraceFlags.ShowDepencencyAnalysis = true; var sm = new StateMachine(); var stype = new SimpleStateType("State"); stype.AddStateNames(new[] { "A", "B", "C" }); var s = sm.AddVariable("s", stype); var t = sm.AddVariable("t", stype); var c = new StateCondition(s); c.SetPreStates("A,B"); c.SetPostStates("C"); var e1 = sm.AddEvent("e1"); var trigger = new Trigger(e1, c); sm.AddTrigger(trigger); var gc1 = new StateCondition(s); gc1.SetPreStates("A"); // gc1.SetPostStates("C"); sm.AddGuard(gc1, GuardType.LEAVE, "g1"); var gc2 = new StateCondition(s); gc2.SetPreStates("C"); sm.AddGuard(gc2, GuardType.ENTER, "g2"); { var c1 = new StateCondition(t); c1.SetPreStates("A"); var c2 = new StateCondition(s); c2.SetPreStates("A"); } sm.Calculate(); // sm.Dump(); var e = sm.Events.First(); Assert.AreEqual("e1", e.Name); Assert.AreEqual(2, e.Triggers.Count); var t1 = e.Triggers[0]; var t2 = e.Triggers[1]; Assert.AreEqual(2, t1.Guards.Count); Assert.AreEqual(1, t2.Guards.Count); Assert.IsTrue(t1.Guards.Any(g => g.Name == "g1")); Assert.IsTrue(t1.Guards.Any(g => g.Name == "g2")); Assert.IsTrue(t2.Guards.Any(g => g.Name == "g2")); }
/// <summary> /// Expresses a post state of a variable as an expression of variable preconditions. /// </summary> /// <param name="v">The variables</param> /// <param name="poststateindex">The post state to express.</param> /// <returns>The resulting gate.</returns> public IGate InferPostState(Variable v, int poststateindex) { IGate r = new FalseGate(); VariableTransitions vt; var match = false; if (_variables.TryGetValue(v.Index, out vt)) { foreach (var t in vt.Where(t => t.NewStateIndexes.Contains(poststateindex))) { foreach (var i in t.PreStateIndexes) { var e = t.Parent.CreateElementaryCondition(i); r = Gate.ComposeOR(r, e); match = true; } } if (!match) { var sc = new StateCondition(vt.Variable); sc.SetPreStates(new int[] { poststateindex }); r = sc.CreateElementaryCondition(poststateindex); } } Gate.TraceLabel(new ElementaryCondition(v, poststateindex), r, "infer state"); return(r); }
private ICondition ReplaceCondition(ICondition c, bool post) { if (c is StateCondition) { var sc = (StateCondition)c; if (_transitions.Contains(sc.Variable)) { // replace the transition condition with either its pre or post states if (sc.IsTransition) { // transition condition if (!post) { // replace with precondition var rc = new StateCondition(sc); rc.SetPreStates(sc.StateIndexes); c = rc; } else { // replace with postcondition var rc = new StateCondition(sc); rc.SetPreStates(sc.PostStateIndexes); c = rc; } } } } return(c); }
public BaoVietTest() { Manager = new Manager(); IStateCondition condiction = new StateCondition(720); Manager.Current.DeviceService = new DeviceService(Manager, condiction); Manager.Database.CreateTable<FeedItem>(); Assert.IsTrue(true); }
private StateTransition AddTransition(EGameState stateIN, StateCondition condition, GameState stateOUT, AfterTransition afterTransition) { StateTransition st = new StateTransition(); st.stateIN = stateIN; st.condition = condition; st.stateOUT = stateOUT; st.afterTransition = afterTransition; return(st); }
bool UpdateCurrentStateTime() { StateCondition condition = m_conditions[(int)m_state]; float elapsed = Time.time - condition.m_startTime; if (elapsed > condition.m_length) { return(false); } return(true); }
internal StateCondition GetCondition(StateMachine stateMachine, bool expectedResult, Dictionary <ScriptableObject, object> createdInstances) { if (createdInstances.TryGetValue(this, out var cond)) { return(new StateCondition((Condition)cond, expectedResult)); } var condition = new StateCondition(CreateCondition(), expectedResult); createdInstances.Add(this, condition._condition); condition._condition.Awake(stateMachine); return(condition); }
public bool TryTransitionDynamic(out StateCondition stateCondition) { foreach (StateCondition transitionCondition in dynamicTransitions) { if (transitionCondition.Condition()) { stateCondition = transitionCondition; return(true); } } stateCondition = null; return(false); }
bool findAndExecuteCondState() { StateCondition maxPriorityCond = null; int currPriority = -1; foreach (StateCondition cond in mCondArr) { if (cond.cond() && cond.priority > currPriority && !mCurrState.GetType().Name.Equals(cond.state)) { currPriority = cond.priority; maxPriorityCond = cond; } } if (maxPriorityCond != null) { switchState(maxPriorityCond.state); return(true); } return(false); }
private void CheckTransition(StateCondition st) { for (int i = 0; i < _allTransitions.Count; i++) { if ( _allTransitions[i].stateIN == _currentGameState.GetGameState() && _allTransitions[i].condition == st ) { _currentGameState.OnStateExit(); if (_allTransitions[i].afterTransition != null) { _allTransitions[i].afterTransition(); } _currentGameState = _allTransitions[i].stateOUT; _currentGameState.OnStateEnter(); return; } } }
void StateCondition(out ICondition cond) { string varname; Variable v; StateCondition scond = null; IdList pre, post; cond = null; Identifier(out varname); v = SM.GetVariable(varname); if (la.kind == 29) { Get(); scond = new StateCondition(v); StateIdentifierList(out pre); scond.SetPreStates(pre); if (la.kind == 27) { Get(); StateIdentifierList(out post); scond.SetPostStates(post); } Expect(30); } cond = (ICondition)scond ?? new BooleanCondition(v); }
public StateWaitTime(StateCondition _condition) { m_Condition = _condition; }
public StateRequiredAttribute(int index, params StateName[] tags) { this.Condition = new StateCondition(index, tags); }
private void Update() { StateCondition st = _currentGameState.OnStateUpdate(); CheckTransition(st); }
protected override void OnCreate(Bundle savedInstanceState) { Log.Debug(TAG, "OnCreate"); base.OnCreate(savedInstanceState); int CommandId = Intent.Extras.GetInt(nameof(CommandModel.Id), 0); if (CommandId > 0) { lock (DatabaseContext.DbLocker) { using (DatabaseContext db = new DatabaseContext(gs.DatabasePathBase)) { command = db.Commands.Include(x => x.Script).Include(x => x.PortExecutionCondition).ThenInclude(x => x.Hardware).FirstOrDefault(x => x.Id == CommandId); } } } AbstractSettingsManage.Command = command; List <string> commands_types_array = new List <string>(Resources.GetStringArray(Resource.Array.commands_types_array)); switch (command.TypeCommand) { case TypesCommands.Port: TypesCommand.SetSelection(commands_types_array.IndexOf(GetString(Resource.String.command_type_array_item_port))); break; case TypesCommands.Controller: TypesCommand.SetSelection(commands_types_array.IndexOf(GetString(Resource.String.command_type_array_item_controller))); break; case TypesCommands.Exit: TypesCommand.SetSelection(commands_types_array.IndexOf(GetString(Resource.String.command_type_array_item_transit))); break; } ScriptId = command.ScriptId; DeleteCommand = new AppCompatButton(this) { Text = GetText(Resource.String.delete_title) }; DeleteCommand.SetTextColor(Color.DarkRed); DeleteCommand.LayoutParameters = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent); FooterLayout.AddView(DeleteCommand); HiddenCommandCheckBox.Checked = command.Hidden; CardTitle.Text = command.Script.ToString(); CardSubtitle.Text = command.ToString(); PauseSecondsBeforeStarting.Text = command.PauseBeforeExecution.ToString(); if (command.PortExecutionCondition != null) { RequiredCondition.Checked = true; HardwareCondition.Enabled = true; HardwareCondition.SetSelection(Hardwares.Keys.ToList().IndexOf(command.PortExecutionCondition.HardwareId)); PortCondition.Enabled = true; PortsList_UpdateSpinner(command.PortExecutionCondition.HardwareId, ref PortCondition, command.PortExecutionCondition.Id); //PortCondition.SetSelection(Ports.Keys.ToList().IndexOf(command.PortExecutionCondition.Id)); StateCondition.Enabled = true; StateCondition.SetSelection(GetIndexPortState(command.PortExecutionConditionAllowingState, new List <string>(Resources.GetStringArray(Resource.Array.required_condition_port_states_array)))); } }
public bool TryActivateTrigger(TTrigger trigger, out StateCondition stateCondition) { return(staticTransitions.TryGetValue(trigger, out stateCondition)); }
private EventTriggerItem_StateCondition GetStateOperation() { this.StatList.Clear(); foreach (GameObject current in this.StateConditionList) { if (!(current == null)) { StateCondition component = current.GetComponent <StateCondition>(); if (!(component == null)) { if (component.IsOperation()) { EventTriggerItem_StateConditionOperation component2 = current.GetComponent <EventTriggerItem_StateConditionOperation>(); component2.Clear(); this.StatList.Add(component2); EventTriggerItem_StateCondition[] components = current.GetComponents <EventTriggerItem_StateCondition>(); if (components.Length > 1) { EventTriggerItem_StateCondition[] array = components; for (int i = 0; i < array.Length; i++) { EventTriggerItem_StateCondition item = array[i]; if (!this.StatList.Contains(item)) { this.StatList.Add(item); } } } } else { this.StatList.Add(current.GetComponent <EventTriggerItem_StateCondition>()); } } } } Stack <EventTriggerItem_StateConditionOperation> stack = new Stack <EventTriggerItem_StateConditionOperation>(); EventTriggerItem_StateConditionOperation eventTriggerItem_StateConditionOperation = null; EventTriggerItem_StateCondition eventTriggerItem_StateCondition = null; foreach (EventTriggerItem_StateCondition current2 in this.StatList) { if (!(current2 == null)) { if (current2 is EventTriggerItem_StateConditionOperation) { EventTriggerItem_StateConditionOperation eventTriggerItem_StateConditionOperation2 = current2 as EventTriggerItem_StateConditionOperation; StateCondition_BracketOpen x = eventTriggerItem_StateConditionOperation2 as StateCondition_BracketOpen; StateCondition_BracketClose x2 = eventTriggerItem_StateConditionOperation2 as StateCondition_BracketClose; if (x != null) { if (eventTriggerItem_StateCondition != null && eventTriggerItem_StateConditionOperation == null) { eventTriggerItem_StateConditionOperation = current2.gameObject.AddComponent <StateCondition_AND>(); eventTriggerItem_StateConditionOperation.lItem = eventTriggerItem_StateCondition; } if (eventTriggerItem_StateConditionOperation != null) { stack.Push(eventTriggerItem_StateConditionOperation); eventTriggerItem_StateConditionOperation = null; eventTriggerItem_StateCondition = null; } } else if (x2 != null) { if (stack.Count > 0) { eventTriggerItem_StateConditionOperation = stack.Pop(); eventTriggerItem_StateConditionOperation.rItem = eventTriggerItem_StateCondition; eventTriggerItem_StateCondition = eventTriggerItem_StateConditionOperation; } } else { if (eventTriggerItem_StateCondition != null) { eventTriggerItem_StateConditionOperation2.lItem = eventTriggerItem_StateCondition; } eventTriggerItem_StateConditionOperation = eventTriggerItem_StateConditionOperation2; } } else { EventTriggerItem_StateCondition eventTriggerItem_StateCondition2 = current2; if (eventTriggerItem_StateCondition != null && eventTriggerItem_StateConditionOperation == null) { eventTriggerItem_StateConditionOperation = current2.gameObject.AddComponent <StateCondition_AND>(); eventTriggerItem_StateConditionOperation.lItem = eventTriggerItem_StateCondition; } if (eventTriggerItem_StateConditionOperation != null) { if (eventTriggerItem_StateConditionOperation.lItem == null) { eventTriggerItem_StateCondition = (eventTriggerItem_StateConditionOperation.lItem = eventTriggerItem_StateCondition2); } else if (eventTriggerItem_StateConditionOperation.rItem == null) { eventTriggerItem_StateConditionOperation.rItem = eventTriggerItem_StateCondition2; eventTriggerItem_StateCondition = eventTriggerItem_StateConditionOperation; } else { eventTriggerItem_StateConditionOperation = current2.gameObject.AddComponent <StateCondition_AND>(); eventTriggerItem_StateConditionOperation.lItem = eventTriggerItem_StateCondition; eventTriggerItem_StateConditionOperation.rItem = eventTriggerItem_StateCondition2; eventTriggerItem_StateCondition = eventTriggerItem_StateConditionOperation; } } else { eventTriggerItem_StateCondition = eventTriggerItem_StateCondition2; } } } } if (eventTriggerItem_StateCondition != null && eventTriggerItem_StateConditionOperation == null) { return(eventTriggerItem_StateCondition); } return(eventTriggerItem_StateConditionOperation); }
//Will set the comparator the the given one public StateEdge(StateNode from, StateNode end, StateCondition cond) { fromNode = from; endNode = end; condition = cond; }