Example #1
0
        internal static void OnKnubotAnswerList(N3Message n3Msg)
        {
            KnuBotAnswerListMessage  knubotMsg = (KnuBotAnswerListMessage)n3Msg;
            Dictionary <int, string> options   = new Dictionary <int, string>();

            for (int i = 0; i < knubotMsg.DialogOptions.Length; i++)
            {
                options.Add(i, knubotMsg.DialogOptions[i].Text);
            }

            AnswerListChanged?.Invoke(knubotMsg.Target, options);
        }
Example #2
0
        static void savePacket(int srcPort, Message message, Stream data)
        {
            if (message != null)
            {
                Console.WriteLine(srcPort + " " + message.Body.GetType().Name + " size=" + message.Header.Size);

                //What packet do you get when you literally walk away from a conversation?  Change playfield?
                //Can you have multiple conversations simultaneously?
                //You still need to fix your TCP parser to reassemble packets (erp)
                //What about timing information (for animations and reponses)? (probably also requires refactoring)

                if (message.Body is KnuBotOpenChatWindowMessage)
                {
                    KnuBotOpenChatWindowMessage body = (KnuBotOpenChatWindowMessage)message.Body;
                    string conversationIdentity      = body.Identity.Instance.ToString();
                    Console.WriteLine("    Begin conversation with " + conversationIdentity);
                }
                else if (message.Body is  KnuBotAnswerListMessage)
                {
                    KnuBotAnswerListMessage body = (KnuBotAnswerListMessage)message.Body;
                    Console.WriteLine("    Dialog Options: ");
                    foreach (var option in body.DialogOptions)
                    {
                        Console.WriteLine("    - " + option.Text);
                    }
                }
                else if (message.Body is KnuBotAnswerMessage)
                {
                    KnuBotAnswerMessage body    = (KnuBotAnswerMessage)message.Body;
                    string conversationIdentity = body.Identity.Instance.ToString();
                    Console.WriteLine("Answered with option: " + body.Answer);
                    Console.WriteLine("ok?");
                }
                else if (message.Body is KnuBotAppendTextMessage)
                {
                    KnuBotAppendTextMessage body = (KnuBotAppendTextMessage)message.Body;
                    string conversationIdentity  = body.Identity.Instance.ToString();
                    Console.WriteLine(conversationIdentity + " says: " + body.Text);
                    Console.WriteLine("ok?");
                }
                else if (message.Body is CharacterActionMessage)
                {
                    CharacterActionMessage body = (CharacterActionMessage)message.Body;
                    string identity             = body.Identity.Instance.ToString();
                    Console.WriteLine("    Character " + identity + " performs action " + body.Action.ToString());
                }
            }
            else
            {
                data.Position = 0;
                byte[] buffer    = new byte[20];
                int    countRead = data.Read(buffer, 0, buffer.Length);

                bool allZero = true;
                foreach (byte b in buffer)
                {
                    if (b != 0)
                    {
                        allZero = false;
                        break;
                    }
                }

                if (countRead <= 0)
                {
                    Console.WriteLine(srcPort + " Could not deserialize: EMPTY PACKET");
                }
                else if (allZero)
                {
                    Console.WriteLine(srcPort + " Could not deserialize: ZEROES EVERYWHERE");
                }
                else if (countRead > 0)
                {
                    Console.WriteLine(srcPort + " Could not deserialize, unknown packet: " + BitConverter.ToString(buffer));
                }
                else
                {
                    Console.WriteLine(srcPort + " Could not deserialize, empty packet");
                }
            }
        }