Пример #1
0
        private void HandleEvent(ref IUpdateEvent ue)
        {
            evtText  = ue.Text();
            evtType  = ue.Type();
            evtActor = ue.Actor();

            if (evtActor != null)
            {
                evtText = evtActor + ": " + evtText;
            }

            ue.RemoveKeys(Meta.TEXT, Meta.TYPE, Meta.ACTOR);

            switch (evtType)
            {
            case "Say":
                evtText = evtText + " " + ue.Data().Stringify();
                break;

            case "Ask":
                DoPrompt(ue);
                // respond with 'new ChoiceEvent(choiceIdx);'
                break;

            case "Wait":
                evtText = ("(" + (evtType + " " +
                                  ue.Data().Stringify()).Trim() + ")");
                break;

            default:
                evtText = ("(" + evtType + ": " + (evtText + " "
                                                   + ue.Data().Stringify()).Trim() + ")");
                break;
            }

            Display(evtText);

            if (evtType == "Ask")
            {
                // default is to reprompt on timeout
                int timeout = Util.ToMillis(ue.GetDouble(Meta.TIMEOUT));
                while (!DoResponse(timeout))
                {
                    Display(evtText);
                }
            }

            ue = null;  // dispose event
        }
Пример #2
0
        private void SendRandomResponse(IUpdateEvent ue)
        {
            double timeout = ue.GetDouble(Meta.TIMEOUT, -1);

            if (timeout > -1)
            {
                var delay = Util.ToMillis(Util.Rand(timeout / 3, timeout));
                Timers.SetTimeout(delay, () =>
                {
                    // choice a valid response, or -1 for no response
                    int choice = Util.Rand(evtOpts.Length + 1) - 1;
                    Console.WriteLine("\n<choice-index#" + choice + "> after " + delay + "ms\n");
                    gameEvent = new ChoiceEvent(choice);
                });
            }
        }