コード例 #1
0
        public override Boolean Run(List <object> parameterList, out string targetContext, out string targetID)
        {
            base.Run(parameterList, out targetContext, out targetID);

            string prefixString    = outputAction.GetString(ownerAgent.RandomNumberGenerator, null); //The one outputaction pattern
            string travelDialogue  = "";
            string prevString      = "";
            string travelInfo      = "";
            string currOrigin      = "";
            string currDestination = "";
            string currTime        = "";

            foreach (string query in speechQueries)
            {
                MemoryItem itemSought = ItemHandler.PopItem(ownerAgent, query);

                if (itemSought == null)
                {
                    prevString = "";
                    continue;
                }
                string itemSoughtString = (string)itemSought.GetContent();
                Console.WriteLine(itemSought.ToString() + "     " + itemSought.GetContent());
                if (itemSoughtString == "")
                {
                    prevString = "";
                    continue;
                }

                if (prevString == "to")
                {
                    currDestination = itemSoughtString;
                    travelInfo     += ItemHandler.SEP + ItemHandler.DESTINATION + currDestination;
                }
                else if (prevString == "from")
                {
                    currOrigin  = itemSoughtString;
                    travelInfo += ItemHandler.SEP + ItemHandler.ORIGIN + currOrigin;
                }
                else if (prevString == "at")
                {
                    currTime    = itemSoughtString;
                    travelInfo += ItemHandler.SEP + ItemHandler.TIME + currTime;
                }
                travelDialogue += " " + itemSoughtString;
                prevString      = itemSoughtString;
            }

            /*
             * //clears all queries
             * StringMemoryItem matchMemoryClean = new StringMemoryItem();
             * matchMemoryClean.TagList = speechQueries;
             * matchMemoryClean.SetContent("");
             * ownerAgent.WorkingMemory.AddItem(matchMemoryClean);
             */

            //puts <Q3> = currOrigin, <Q4> = currDestination, <Q5> = currTime

            ItemHandler.StoreTermOnTag(ownerAgent, AgentConstants.QUERY_TAG_3, currOrigin);
            ItemHandler.StoreTermOnTag(ownerAgent, AgentConstants.QUERY_TAG_4, currDestination);
            ItemHandler.StoreTermOnTag(ownerAgent, AgentConstants.QUERY_TAG_5, currTime);

            Console.WriteLine(currDestination + " " + currOrigin + " " + currTime);
            if (currOrigin != "" && currDestination != "")
            {
                ownerAgent.SendExpression("squinteyes");
                //ownerAgent.SendSpeechOutput(prefixString + travelDialogue);
                //mapControl.NavigateDestination(currDestination, currOrigin, currTime);
                targetID = outputAction.TargetID;
            }
            else if (currOrigin == "" && currDestination == "")
            {
                ownerAgent.SendExpression("shakehead");
                ownerAgent.SendSpeechOutput("I'm sorry I could not make out your origin or destination.");
                targetContext = "";
                targetID      = "";
                return(false);
            }
            else
            {
                string missingLocation = "";
                if (currOrigin != "")
                {
                    missingLocation = "destination";
                }
                else
                {
                    missingLocation = "origin";
                }


                ownerAgent.SendSpeechOutput(partialFailurePrefix[random.Next(partialFailurePrefix.Length - 1)] + missingLocation);
                targetID = partialFailureID;
            }
            //(TRAVEL_MARK + travelInfo);
            Console.WriteLine(travelInfo);
            targetContext = outputAction.TargetContext;


            return(true);
        }