private bool CompareItems() { if (System.IO.File.Exists(file1Text.Text) && System.IO.File.Exists(file2Text.Text)) { ServerItemList items1 = new ServerItemList(); ServerItemList items2 = new ServerItemList(); bool result; result = Otb.Open(file1Text.Text, ref items1); if (!result) { MessageBox.Show("Could not open {0}.", file1Text.Text); return(false); } result = Otb.Open(file2Text.Text, ref items2); if (!result) { MessageBox.Show("Could not open {0}.", file2Text.Text); return(false); } IEnumerator <ServerItem> enumerator1 = items1.GetEnumerator(); IEnumerator <ServerItem> enumerator2 = items2.GetEnumerator(); if (items1.Count != items2.Count) { resultTextBox.AppendText(string.Format("Item count: [ {0} / {1} ]" + Environment.NewLine, items1.Count, items2.Count)); } while (enumerator1.MoveNext()) { if (!enumerator2.MoveNext()) { return(false); } ServerItem item1 = enumerator1.Current; ServerItem item2 = enumerator2.Current; if (item1.spriteId != item2.spriteId) { resultTextBox.AppendText(string.Format("Id: {0} - Sprite changed - [ {1} / {2} ]" + Environment.NewLine, item1.id, item1.spriteId, item2.spriteId)); continue; } if (item1.SpriteHash != null && item2.SpriteHash != null && !Utils.ByteArrayCompare(item1.SpriteHash, item2.SpriteHash)) { resultTextBox.AppendText(string.Format("Id: {0} - Sprite updated." + Environment.NewLine, item1.id)); } foreach (PropertyInfo property in item1.GetType().GetProperties()) { if (property.Name != "spriteHash" && property.Name != "spriteId") { object value1 = property.GetValue(item1, null); object value2 = item2.GetType().GetProperty(property.Name).GetValue(item2, null); if (!value1.Equals(value2)) { resultTextBox.AppendText(string.Format("Id: {0} - {1} - [ {2} / {3} ]{4}", item1.id, property.Name, value1, value2, Environment.NewLine)); } } } } if (resultTextBox.Text.Length == 0) { MessageBox.Show("No differences found!"); } return(true); } return(false); }
private bool CompareItems() { OtbReader reader1 = new OtbReader(); if (!reader1.Read(this.file1Text.Text)) { MessageBox.Show("Could not open {0}.", this.file1Text.Text); return(false); } OtbReader reader2 = new OtbReader(); if (!reader2.Read(this.file2Text.Text)) { MessageBox.Show("Could not open {0}.", this.file2Text.Text); return(false); } IEnumerator <ServerItem> enumerator1 = reader1.Items.GetEnumerator(); IEnumerator <ServerItem> enumerator2 = reader2.Items.GetEnumerator(); if (reader1.Count != reader2.Count) { resultTextBox.AppendText(string.Format("Item count: [ {0} / {1} ]" + Environment.NewLine, reader1.Count, reader2.Count)); } while (enumerator1.MoveNext()) { if (!enumerator2.MoveNext()) { return(false); } ServerItem item1 = enumerator1.Current; ServerItem item2 = enumerator2.Current; if (item1.ClientId != item2.ClientId) { resultTextBox.AppendText(string.Format("ID: {0} - Sprite changed - [ {1} / {2} ]" + Environment.NewLine, item1.ID, item1.ClientId, item2.ClientId)); continue; } if (item1.SpriteHash != null && item2.SpriteHash != null && !Utils.ByteArrayCompare(item1.SpriteHash, item2.SpriteHash)) { resultTextBox.AppendText(string.Format("ID: {0} - Sprite updated." + Environment.NewLine, item1.ID)); } foreach (PropertyInfo property in item1.GetType().GetProperties()) { if (property.Name != "SpriteHash" && property.Name != "ClientId") { object value1 = property.GetValue(item1, null); object value2 = item2.GetType().GetProperty(property.Name).GetValue(item2, null); if (!value1.Equals(value2)) { resultTextBox.AppendText(string.Format("ID: {0} - {1} - [ {2} / {3} ]{4}", item1.ID, property.Name, value1, value2, Environment.NewLine)); } } } } if (resultTextBox.Text.Length == 0) { MessageBox.Show("No differences found!"); } return(true); }