Exemplo n.º 1
0
        private void ParseIntoTree(DemoFile.DemoMessage msg)
        {
            var node = new TreeNode(String.Format("{0}, tick {1}, {2} bytes", msg.Type, msg.Tick, msg.Data.Length));
            node.Expand();
            node.BackColor = DemoMessageItem.GetTypeColor(msg.Type);

            switch (msg.Type)
            {
                case DemoFile.MessageType.ConsoleCmd:
                    node.Nodes.Add(Encoding.ASCII.GetString(msg.Data));
                    break;
                case DemoFile.MessageType.UserCmd:
                    UserCmd.ParseIntoTreeNode(msg.Data, node);
                    break;
                case DemoFile.MessageType.Signon:
                case DemoFile.MessageType.Packet:
                    Packet.Parse(msg.Data, node);
                    break;
                case DemoFile.MessageType.DataTables:
                    DataTables.Parse(msg.Data, node);
                    break;
                default:
                    node.Nodes.Add("Unhandled demo message type.");
                    break;
            }

            messageTree.Nodes.Add(node);
        }
Exemplo n.º 2
0
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var ofd = new OpenFileDialog
            {
                Filter           = "Demo files|*.dem",
                RestoreDirectory = true
            };

            if (ofd.ShowDialog() == DialogResult.OK)
            {
                messageList.Items.Clear();

                Stream f = ofd.OpenFile();
                _currentFile = new DemoFile(f);
                f.Close();

                foreach (var msg in _currentFile.Messages)
                {
                    messageList.Items.Add(new DemoMessageItem(msg));
                }
            }

            propertiesToolStripMenuItem.Enabled = true;
        }
Exemplo n.º 3
0
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var ofd = new OpenFileDialog
            {
                Filter = "Demo files|*.dem",
                RestoreDirectory = true
            };

            if (ofd.ShowDialog() == DialogResult.OK)
            {
                messageList.Items.Clear();

                Stream f = ofd.OpenFile();
                _currentFile = new DemoFile(f);
                f.Close();

                foreach (var msg in _currentFile.Messages)
                {
                    messageList.Items.Add(new DemoMessageItem(msg));
                }
            }

            propertiesToolStripMenuItem.Enabled = true;
        }
Exemplo n.º 4
0
 public static Color GetTypeColor(DemoFile.MessageType type)
 {
     switch(type) {
         case DemoFile.MessageType.Signon:
         case DemoFile.MessageType.Packet:
             return Color.LightBlue;
         case DemoFile.MessageType.UserCmd:
             return Color.LightGreen;
         case DemoFile.MessageType.ConsoleCmd:
             return Color.LightPink;
         default:
             return Color.White;
     }
 }
Exemplo n.º 5
0
        public DemoMessageItem(DemoFile.DemoMessage msg)
        {
            Msg = msg;

            BackColor = GetTypeColor(msg.Type);
            Text = Msg.Tick.ToString();
            SubItems.Add(Msg.Type.ToString());
            SubItems.Add(Msg.Data.Length.ToString());
        }
Exemplo n.º 6
0
        private TreeNode ParseIntoTree(DemoFile.DemoMessage msg)
        {
            var node = new TreeNode(String.Format("{0}, tick {1}, {2} bytes",
                msg.Type, msg.Tick, msg.Data.Length));
            node.Expand();
            node.BackColor = DemoMessageItem.GetTypeColor(msg.Type);

            Packet packet = new Packet();
            packet.StringTable = _stringTable;
            packet.List = eventsList;

            if (_currentFile.GameEvents.Count != 0)
                packet.GameEvents = _currentFile.GameEvents;

            switch (msg.Type)
            {
                case DemoFile.MessageType.ConsoleCmd:
                    node.Nodes.Add(new TreeNode(Encoding.ASCII.GetString(msg.Data)));
                    break;
                case DemoFile.MessageType.UserCmd:
                    UserCmd.ParseIntoTreeNode(msg.Data, node);
                    break;
                case DemoFile.MessageType.Signon:
                case DemoFile.MessageType.Packet:
                    try
                    {
                        packet.Parse(msg.Data, node);
                    }
                    catch (IndexOutOfRangeException ex)
                    {
                        // There was some error reading the buffers
                        node.Nodes.Add(new TreeNode("Error reading message."));
                        MessageBox.Show("Error reading message: " + msg.Tick);
                        break;
                    }

                    if (packet.GameEvents.Count > 0 && _currentFile.GameEvents.Count == 0)
                        _currentFile.GameEvents = packet.GameEvents;
                    break;
                case DemoFile.MessageType.DataTables:
                    DataTables.Parse(msg.Data, node);
                    break;
                default:
                    node.Nodes.Add(new TreeNode("Unhandled demo message type."));
                    break;
            }

            return node;
        }