private void treeView2_dat_AfterSelect(object sender, TreeViewEventArgs e) { var node = e.Node; if (node == null || !(node.Tag is Tuple <string, string, int>)) { return; } var info = node.Tag as Tuple <string, string, int>; var temp = AtumZip.ZippedFile.UnzipItems(LoadingData.directory + info.Item1); using (var tempstream = new MemoryStream(temp[0].Data)) _DatData = MapFormatter.Read(tempstream); if (info.Item2 == "base") { string temp5 = info.Item1; temp5 = temp5.Remove(temp5.Length - 4, 4); pictureBox2.Image = new Bitmap(PaintStuff.GetMapImage(LoadingData.directory + temp5 + ".map"), new Size(512, 512)); PictureBox cc = new PictureBox(); cc.Width = pictureBox2.Width; cc.Height = pictureBox2.Height; Controls.Add(cc); Bitmap crap = (Bitmap)pictureBox2.Image; Graphics g = Graphics.FromImage(crap); Bitmap ttt = PaintStuff.GetWaterImage(_DatData); // g.DrawImage(ttt, 0, 0, 512, 512); SolidBrush sb = new SolidBrush(Color.Red); g.FillEllipse(sb, 20, 20, 20, 20); g.DrawEllipse(new Pen(Color.Red), 20, 20, 20, 20); pictureBox2.Refresh(); } switch (info.Item2) { case "mapdata": var tempdt = MapFormatter.GetFormatter(0).GetSchema(); tempdt.Rows.Add(_DatData[0] as object[]); dataGridView3.DataSource = tempdt; // dataGridView3.DataSource = MapFormatter.GetFormatter(0).GetSchema(new object[] { (_DatData[0] as object[] }); break; case "vertexinfo": dataGridView3.DataSource = MapFormatter.GetFormatter(1).GetSchema(_DatData[1] as object[][]); break; case "tileinfo": dataGridView3.DataSource = MapFormatter.GetFormatter(2).GetSchema(_DatData[2] as object[][]); break; case "objectinfo": dataGridView3.DataSource = MapFormatter.GetFormatter(3).GetSchema(_DatData[3] as object[][]); break; } }
private void treeView_AfterSelect(object sender, TreeViewEventArgs e) { var node = e.Node; var tag = node?.Tag as treeViewTag; if (tag == null) { return; } var type = (int)tag.Operation; var format = tag.Formatter; var data = tag.Data; dataGridView.ReadOnly = true; if (type == 0) { dataGridView.DataSource = format.GetSchema(data as IEnumerable <object[]>); } if (type == 1 && node.Nodes.Count == 0) { foreach (var group in data as IEnumerable <IGrouping <object, object[]> > ) { var child = new TreeNode(group.Key.ToString() + " [" + group.Count() + "]"); child.Tag = new object[] { 2, null, group }; node.Nodes.Add(child); } } if (type == 2) { dataGridView.DataSource = ((node.Parent.Parent.Tag as object[])[1] as Formatter.Struct).GetSchema(data as IEnumerable <object[]>); } if (type == 3 && node.Nodes.Count == 0) { var mapinf = ((CachedInfo)data).Data as object[]; if (mapinf == null) { node.Name = data as string + " [Invalid]"; } else { for (int i = 1; i < 4; ++i) { var formatter = MapFormatter.GetFormatter(i); var child = new TreeNode(formatter.Name + " [" + (mapinf[i] as object[]).Length + "]"); child.Tag = new treeViewTag(0, formatter, mapinf[i], null); node.Nodes.Add(child); } } } if (type == 4 && data != null) { var objinfname = ((CachedInfo)data).Name; var objinf0 = ((CachedInfo)data).Data as object[]; if (objinf0 == null) { return; } var objinf = (objinf0[1] as IEnumerable <object>).Select(x => x as object[]).Select(x => new { data = x[0] as object[], effects = x[1] as object[][] }); if (node.Nodes.Count == 0) { node.Nodes.Add("Name: " + (objinf0[0] as object[])[0] as string); var idx1 = FormatterOmi.GetFormatter("ti_Item")["ItemNum"]; var idx2 = FormatterOmi.GetFormatter("ti_Item")["Kind"]; var idx3 = FormatterOmi.GetFormatter("ti_Item")["ItemName"]; var idx4 = FormatterOmi.GetFormatter("ti_Item")["SourceIndex"]; int sourceindex; if (int.TryParse(objinfname, out sourceindex)) { var usages = from item in omi[0] as object[][] where (uint)item[idx4] == sourceindex || (((byte)item[idx2] == 16 || (byte)item[idx2] == 60) && (uint)item[idx4] == (sourceindex - 4000000)) || (((byte)item[idx2] < 16) && (uint)item[idx4] == (sourceindex - 100000)) || (((byte)item[idx2] == 25) && (uint)item[idx4] == (sourceindex - 500000)) select new { ItemNum = (uint)item[idx1], ItemName = item[idx3] as string }; var usagesnode = new TreeNode("Used by items [" + usages.Count() + "]"); foreach (var usage in usages) { var child = new TreeNode("[" + usage.ItemNum + "] " + usage.ItemName); child.Tag = new treeViewTag(0, FormatterOmi.GetFormatter("ti_Item"), (omi[0] as object[][]).Where(x => (uint)x[idx1] == usage.ItemNum), null); usagesnode.Nodes.Add(child); } node.Nodes.Add(usagesnode); } var effectsnode = new TreeNode("Body Condition Effects"); var idx = format["BodyConditionName"]; foreach (var row in objinf) { var child = new TreeNode(row.data[idx] as string + " [" + row.effects.Length + "]"); child.Tag = new treeViewTag(0, ObjectInfoFormatter.GetFormatter("effects"), row.effects, null); effectsnode.Nodes.Add(child); } node.Nodes.Add(effectsnode); } dataGridView.DataSource = format.GetSchema(objinf.Select(x => x.data)); } if (type == 5 && data != null) { dataGridView.ReadOnly = false; var temp = ((CachedInfo)data).Data as object[]; var idx = EffectInfoFormatter.HeaderFormatter["EffectType"]; var efftype = (uint)(temp[0] as object[])[idx]; var formatter = EffectInfoFormatter.GetFormatter(efftype); dataGridView.DataSource = formatter.GetSchema( new object[][] { temp[1] as object[] }); } }