Esempio n. 1
0
        private void ParseChannel()
        {
            // 4/17 18:44:48.765  [1. General] Reapert: Burn xD
            // 4/26 15:39:15.956  [LocalDefense] Drulgir: bergruu up
            // 12/17 00:05:59.794  [5. world] Anuraj left channel.
            this.MessageType = WarcraftMessageType.Channel;
            var channelName = this.GetStringFromLineUpToSpace();

            if (channelName[channelName.Length - 1] != ']')
            {
                channelName += " " + this.GetStringFromLineUpToSpace();
            }
            channelName = channelName.Substring(1, channelName.Length - 2);

            if (channelName == "Raid Warning")
            {
                this.MessageType = WarcraftMessageType.RaidWarning;
            }

            // get sender name
            var playerName = this.GetStringFromLineUpToSpace();

            if (playerName[playerName.Length - 1] != ':') // has to be chat message, not join,left spam
            {
                this.Valid = false;
                return;
            }
            playerName = playerName.Substring(0, playerName.Length - 1);

            // save text
            var text = this._line;

            // store data in object
            this.Text     = text;
            this.Sender   = playerName;
            this.Receiver = "Channel " + channelName;
        }
Esempio n. 2
0
        private void ParseOtherChat()
        {
            // sending whisper
            // 12/17 09:06:21.040  To Akiyoto-Magtheridon: just testing something, sorry for hte bother
            // 4/18 21:46:23.636  To |Kb6|k0000000|k: really? -- battle net chat, not able to get name
            if (this._line.Substring(0, 3).Equals(PrivateMessageSpecifier))
            {
                this.Sender = "Current player name";
                // skip "To "
                this.GetStringFromLineUpToSpace();
                var name = this.GetStringFromLineUpToSpace();
                if (name[0] == '|') // bnet message
                {
                    this.MessageType = WarcraftMessageType.PrivateMessageBnet;
                    this.Receiver    = "Some Battle.net friend";
                }
                else // ingame message
                {
                    this.MessageType = WarcraftMessageType.PrivateMessageIngame;
                    this.Receiver    = name.Substring(0, name.Length - 1);
                }
            }
            else
            {
                var name = this.GetStringFromLineUpToSpace();
                // check if it does not contain player chat
                // 12/18 11:50:30.514  You perform Herb Gathering on Frostweed.
                if (name.IndexOf('-') == -1)
                {
                    this.Valid = false;
                    return;
                }
                this.Sender = name.Substring(0, name.Length - 1);
                var type = this.GetStringFromLineUpToSpace();
                // determine type of message
                switch (type)
                {
                case "says:":
                    this.MessageType = WarcraftMessageType.Say;
                    this.Receiver    = "Nearby players";
                    break;

                case "yells:":
                    this.MessageType = WarcraftMessageType.Yell;
                    this.Receiver    = "Nearby players";
                    break;

                case "whispers:":
                    this.MessageType = WarcraftMessageType.PrivateMessageIngame;
                    this.Receiver    = "Current player name";
                    break;

                default:
                    this.Valid = false;
                    return;
                }
            }

            // save text itself
            this.Text = this._line;
        }
Esempio n. 3
0
        private void ParseSpecificChannel()
        {
            // 4/18 21:42:03.279  |Kb6|k0000000|k whispers: welcome back Neth :)...I was thinking of sending you a little present, its been a while :D
            if (this._line[1] == 'K')
            {
                // skip unknown sender name and "whispers:"
                this.GetStringFromLineUpToSpace();
                this.GetStringFromLineUpToSpace();

                // set type, sender and receiver
                this.MessageType = WarcraftMessageType.PrivateMessageBnet;
                this.Sender      = "Some Battle.net friend";
                this.Receiver    = "Current player name";
            }
            else
            {
                var type = this._line.Substring(0, this._line.IndexOf("]|h", StringComparison.Ordinal));
                type = type.Substring(type.IndexOf("|h[", StringComparison.Ordinal) + 3);
                switch (type)
                {
                case "Guild":     // 4/22 11:02:32.038  |Hchannel:GUILD|h[Guild]|h Elgreco: #bored day work
                    this.MessageType = WarcraftMessageType.Guild;
                    this.Receiver    = type;
                    break;

                case "Instance":     // 4/18 14:32:25.328  |Hchannel:INSTANCE_CHAT|h[Instance]|h Nethielka-Magtheridon: a pet
                    this.MessageType = WarcraftMessageType.Instance;
                    this.Receiver    = type;
                    break;

                case "Instance Leader":     // 4/18 14:24:36.882  |Hchannel:INSTANCE_CHAT|h[Instance Leader]|h Dreamxx-BronzeDragonflight: tank!!?
                    this.MessageType = WarcraftMessageType.InstanceLeader;
                    this.Receiver    = "Instance";
                    this.GetStringFromLineUpToSpace();
                    break;

                case "Raid":     // 4/18 14:32:25.328  |Hchannel:RAID_CHAT|h[Raid]|h Nethielka-Magtheridon: a pet
                    this.MessageType = WarcraftMessageType.Raid;
                    this.Receiver    = type;
                    break;

                case "Raid Leader":     // 4/18 14:32:25.328  |Hchannel:RAID_CHAT|h[Raid Leader]|h Nethielka-Magtheridon: a pet
                    this.MessageType = WarcraftMessageType.RaidLeader;
                    this.Receiver    = "Raid";
                    this.GetStringFromLineUpToSpace();
                    break;

                case "Party":     // 4/18 17:50:50.090  |Hchannel:PARTY|h[Party]|h Nethielka-Magtheridon: you are a lifesaver
                    this.MessageType = WarcraftMessageType.Party;
                    this.Receiver    = type;
                    break;

                case "Party Leader":     // 4/18 17:50:58.666  |Hchannel:PARTY|h[Party Leader]|h Quakebane-Magtheridon: :)
                    this.MessageType = WarcraftMessageType.PartyLeader;
                    this.Receiver    = "Party";
                    this.GetStringFromLineUpToSpace();
                    break;

                // not supported for example pet battle
                default:     // 4/22 10:25:01.962  |Hchannel:PET_BATTLE_COMBAT_LOG|h[Pet Battle]|h: Battle Recovery healed 495 damage from your
                    this.Valid = false;
                    return;
                }

                // skip identification and get name
                this.GetStringFromLineUpToSpace();
                var name = this.GetStringFromLineUpToSpace();
                this.Sender = name.Substring(0, name.Length - 1);
            }

            // save text itself
            this.Text = this._line;
        }