// Update is called once per frame void Update() { if (eventsStatus.Keys.Count > 0) { Debug.Log(eventsStatus.Keys.Count); String nextIncompleteEvent = GetNextIncompleteEvent(); Debug.Log("Next incomplete event: " + nextIncompleteEvent); Debug.Log("Next queued event: " + nextQueuedEvent); if (nextIncompleteEvent != "") { if (SatisfactionTest.IsSatisfied(nextIncompleteEvent) == true) { Debug.Log("Satisfied " + nextIncompleteEvent); eventsStatus[nextIncompleteEvent] = true; if (nextQueuedEvent != "") { SatisfactionTest.ComputeSatisfactionConditions(nextQueuedEvent); Debug.Log("eventsStatus.Keys.Count:" + eventsStatus.Keys.Count.ToString()); ExecuteCommand(nextQueuedEvent); } else { nextIncompleteEvent = ""; } } } } }
String GetNextIncompleteEvent() { String[] keys = new String[eventsStatus.Keys.Count]; bool[] values = new bool[eventsStatus.Keys.Count]; eventsStatus.Keys.CopyTo(keys, 0); eventsStatus.Values.CopyTo(values, 0); String nextIncompleteEvent = ""; for (int i = 0; i < keys.Length; i++) { if ((bool)eventsStatus[keys[i]] == false) { nextIncompleteEvent = (String)keys[i]; if (i < events.Count - 1) { SatisfactionTest.ComputeSatisfactionConditions(events[i + 1]); eventsStatus.Keys.CopyTo(keys, 0); eventsStatus.Values.CopyTo(values, 0); nextQueuedEvent = (String)keys[i + 1]; } else { nextQueuedEvent = ""; //put(spoon,on(mug));put(apple,on(plate)) //put(block1,on(block2));put(block3,on(block1)) } break; } } return(nextIncompleteEvent); /*SatisfactionTest.ComputeSatisfactionConditions(events[eventsStatus.Keys.Count-1]); * * eventsStatus.Keys.CopyTo (keys,0); * eventsStatus.Values.CopyTo (values,0); * * String nextIncompleteEvent = keys [keys.Length - 1]; * * if (events.Count > eventsStatus.Keys.Count) { * nextQueuedEvent = SatisfactionTest.ComputeSatisfactionConditions(events[eventsStatus.Keys.Count]); * * eventsStatus.Keys.CopyTo (keys,0); * eventsStatus.Values.CopyTo (values,0); * * nextQueuedEvent = keys [keys.Length - 1]; * } * else { * nextQueuedEvent = ""; * } * * return nextIncompleteEvent;*/ }
void OnGUI() { Event e = Event.current; if (e.keyCode == KeyCode.Return) { if (inputString != "") { eventManager.ClearEvents(); foreach (KeyValuePair <String, String> kv in macros.commandMacros) { if (inputString == kv.Key) { inputString = kv.Value; break; } } Debug.Log("User entered: " + inputString); commands = inputString.Split(';'); //String commandString = inputString; foreach (String commandString in commands) { ClearRDFTriples(); ClearSkolems(); ParseCommand(commandString); FinishSkolemization(); skolemized = Skolemize(commandString); Debug.Log("Skolemized command: " + skolemized); //EvaluateSkolemizedCommand(skolemized); EvaluateSkolemConstants(); evaluated = ApplySkolems(skolemized); Debug.Log("Evaluated command: " + evaluated); eventManager.events.Add(evaluated); } //foreach (String ev in eventManager.events) { SatisfactionTest.ComputeSatisfactionConditions(eventManager.events[0]); //} eventManager.ExecuteNextCommand(); } inputString = GUI.TextField(new Rect(0, 0, 600, 25), ""); } else { inputString = GUI.TextField(new Rect(0, 0, 600, 25), inputString); } }