private void reloadItem(OtbItem item) { //to avoid problems with events OtbItem tmpItem = currentItem; currentItem = null; SpriteItem spriteItem; if (currentPlugin.Instance.Items.TryGetValue(item.spriteId, out spriteItem)) { if (showUpdateOutput) { Trace.WriteLine(String.Format("Reloading item id: {0}", item.id)); } UInt16 tmpId = item.id; item.itemImpl = (ItemImpl)spriteItem.itemImpl.Clone(); item.id = tmpId; Buffer.BlockCopy(spriteItem.spriteHash, 0, item.spriteHash, 0, spriteItem.spriteHash.Length); currentItem = tmpItem; } }
private bool showItem(OtbItem item) { currentItem = null; resetAllDatabindings(this); if (item == null) { return false; } SpriteItem spriteItem; if (!currentPlugin.Instance.Items.TryGetValue(item.spriteId, out spriteItem)) { return false; } duplicateItemToolStripMenuItem.Enabled = true; drawSprite(pictureBox, spriteItem); if (!item.isCustomCreated && item.spriteHash != null && spriteItem.spriteHash != null) { pictureBox.BackColor = ((Utils.ByteArrayCompare(item.spriteHash, spriteItem.spriteHash) ? Color.White : Color.Red)); } typeCombo.Text = item.type.ToString(); typeCombo.ForeColor = (item.type == spriteItem.type ? Color.Black : Color.Red); // serverIdLbl.DataBindings.Add("Text", item, "id"); clientIdUpDown.Minimum = items.minId; clientIdUpDown.Maximum = items.maxId; clientIdUpDown.DataBindings.Add("Value", spriteItem, "id"); //Options blockObjectCheck.DataBindings.Add("Checked", item, "blockObject"); blockObjectCheck.ForeColor = (item.blockObject == spriteItem.blockObject ? Color.Black : Color.Red); blockProjectileCheck.DataBindings.Add("Checked", item, "blockProjectile"); blockProjectileCheck.ForeColor = (item.blockProjectile == spriteItem.blockProjectile ? Color.Black : Color.Red); blockPathFindCheck.DataBindings.Add("Checked", item, "blockPathFind"); blockPathFindCheck.ForeColor = (item.blockPathFind == spriteItem.blockPathFind ? Color.Black : Color.Red); moveableCheck.DataBindings.Add("Checked", item, "isMoveable"); moveableCheck.ForeColor = (item.isMoveable == spriteItem.isMoveable ? Color.Black : Color.Red); hasHeightCheck.DataBindings.Add("Checked", item, "hasHeight"); hasHeightCheck.ForeColor = (item.hasHeight == spriteItem.hasHeight ? Color.Black : Color.Red); pickupableCheck.DataBindings.Add("Checked", item, "isPickupable"); pickupableCheck.ForeColor = (item.isPickupable == spriteItem.isPickupable ? Color.Black : Color.Red); hangableCheck.DataBindings.Add("Checked", item, "isHangable"); hangableCheck.ForeColor = (item.isHangable == spriteItem.isHangable ? Color.Black : Color.Red); useableCheck.DataBindings.Add("Checked", item, "hasUseWith"); useableCheck.ForeColor = (item.hasUseWith == spriteItem.hasUseWith ? Color.Black : Color.Red); rotatableCheck.DataBindings.Add("Checked", item, "isRotatable"); rotatableCheck.ForeColor = (item.isRotatable == spriteItem.isRotatable ? Color.Black : Color.Red); stackableCheck.DataBindings.Add("Checked", item, "isStackable"); stackableCheck.ForeColor = (item.isStackable == spriteItem.isStackable ? Color.Black : Color.Red); verticalCheck.DataBindings.Add("Checked", item, "isVertical"); verticalCheck.ForeColor = (item.isVertical == spriteItem.isVertical ? Color.Black : Color.Red); walkStackCheck.DataBindings.Add("Checked", item, "walkStack"); walkStackCheck.ForeColor = (item.walkStack == spriteItem.walkStack ? Color.Black : Color.Red); horizontalCheck.DataBindings.Add("Checked", item, "isHorizontal"); horizontalCheck.ForeColor = (item.isHorizontal == spriteItem.isHorizontal ? Color.Black : Color.Red); alwaysOnTopCheck.DataBindings.Add("Checked", item, "alwaysOnTop"); alwaysOnTopCheck.ForeColor = (item.alwaysOnTop == spriteItem.alwaysOnTop ? Color.Black : Color.Red); readableCheck.DataBindings.Add("Checked", item, "isReadable"); readableCheck.ForeColor = (item.isReadable == spriteItem.isReadable ? Color.Black : Color.Red); speedText.DataBindings.Add("Text", item, "groundSpeed"); speedText.ForeColor = (item.groundSpeed == spriteItem.groundSpeed ? Color.Black : Color.Red); topOrderText.DataBindings.Add("Text", item, "alwaysOnTopOrder"); topOrderText.ForeColor = (item.alwaysOnTopOrder == spriteItem.alwaysOnTopOrder ? Color.Black : Color.Red); lightLevelText.DataBindings.Add("Text", item, "lightLevel"); lightLevelText.ForeColor = (item.lightLevel == spriteItem.lightLevel ? Color.Black : Color.Red); lightColorText.DataBindings.Add("Text", item, "lightColor"); lightColorText.ForeColor = (item.lightColor == spriteItem.lightColor ? Color.Black : Color.Red); maxReadCharsText.DataBindings.Add("Text", item, "maxReadChars"); maxReadCharsText.ForeColor = (item.maxReadChars == spriteItem.maxReadChars ? Color.Black : Color.Red); maxReadWriteCharsText.DataBindings.Add("Text", item, "maxReadWriteChars"); maxReadWriteCharsText.ForeColor = (item.maxReadWriteChars == spriteItem.maxReadWriteChars ? Color.Black : Color.Red); lookThroughCheck.DataBindings.Add("Checked", item, "lookThrough"); lookThroughCheck.ForeColor = (item.lookThrough == spriteItem.lookThrough ? Color.Black : Color.Red); minimapColorText.DataBindings.Add("Text", item, "minimapColor"); minimapColorText.ForeColor = (item.minimapColor == spriteItem.minimapColor ? Color.Black : Color.Red); wareIdText.DataBindings.Add("Text", item, "wareId"); wareIdText.ForeColor = (item.wareId == spriteItem.wareId ? Color.Black : Color.Red); nameText.DataBindings.Add("Text", item, "name"); nameText.ForeColor = (item.name.CompareTo(spriteItem.name) == 0 ? Color.Black : Color.Red); tableLayoutPanelCandidates.Visible = false; for (int i = 0; i < tableLayoutPanelCandidates.ColumnCount; ++i) { PictureBox box = (PictureBox)tableLayoutPanelCandidates.GetControlFromPosition(i, 0); box.Image = null; } if (previousPlugin != null) { SpriteItem prevSpriteItem; if (previousPlugin.Instance.Items.TryGetValue(item.prevSpriteId, out prevSpriteItem)) { drawSprite(prevPictureBox, prevSpriteItem); if (prevSpriteItem.spriteSignature != null) { //Sprite does not match, use the sprite signature to find possible candidates showSpriteCandidates(prevSpriteItem); } } else { prevPictureBox.Image = null; } } currentItem = item; return true; }
private void openToolStripMenuItem_Click(object sender, EventArgs e) { FileDialog dialog = new OpenFileDialog(); //Now set the file type dialog.Filter = "otb files (*.otb)|*.otb|All files (*.*)|*.*"; dialog.Title = "Open otb file..."; if (dialog.ShowDialog() != DialogResult.OK || dialog.FileName.Length == 0) { return; } currentItem = null; currentPlugin = null; previousPlugin = null; currentOtbVersion = 0; items.Clear(); if (otb.open(dialog.FileName, ref items, showOtbOutput)) { currentOtbFullPath = dialog.FileName; currentOtbVersion = items.dwMinorVersion; saveAsToolStripMenuItem.Enabled = true; saveToolStripMenuItem.Enabled = true; //try find a plugin that can handle this version of otb currentPlugin = Program.plugins.AvailablePlugins.Find(currentOtbVersion); if (currentPlugin == null) { items.Clear(); MessageBox.Show(String.Format("Could not find a plugin that could handle client version {0}", currentOtbVersion)); return; } if (!loadClient(currentPlugin, currentOtbVersion)) { currentPlugin = null; items.Clear(); return; } createItemToolStripMenuItem.Enabled = true; updateToolStripMenuItem.Enabled = true; buildTreeView(); } }
private void onSelectItem(TreeNode node) { if (node != null && node.Tag != null) { OtbItem item = (OtbItem)node.Tag; showItem(item); } else { currentItem = null; pictureBox.Image = null; pictureBox.BackColor = Color.White; prevPictureBox.Image = null; prevPictureBox.BackColor = Color.White; tableLayoutPanelCandidates.Visible = false; clientIdUpDown.Value = clientIdUpDown.Minimum; serverIdLbl.Text = "0"; typeCombo.Text = ""; typeCombo.ForeColor = Color.Black; duplicateItemToolStripMenuItem.Enabled = false; foreach (Control control in optionGroupBox.Controls) { if (control is CheckBox) { ((CheckBox)control).Checked = false; control.ForeColor = Color.Black; } else if (control is TextBox) { ((TextBox)control).Text = ""; control.ForeColor = Color.Black; } } } }
private void itemTreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e) { if (currentItem != null && currentItem.isCustomCreated) { //Making sure the hash is updated SpriteItem spriteItem; if (currentPlugin.Instance.Items.TryGetValue(currentItem.spriteId, out spriteItem)) { Buffer.BlockCopy(spriteItem.spriteHash, 0, currentItem.spriteHash, 0, spriteItem.spriteHash.Length); } } currentItem = null; }
private UInt16 createItem(Item item) { UInt16 newId = (UInt16)(items.maxId + 1); //create a new otb item OtbItem newItem = new OtbItem(item); newItem.id = newId; newItem.spriteHash = new byte[16]; if (item != null) { newItem.spriteId = item.id; Buffer.BlockCopy(item.spriteHash, 0, newItem.spriteHash, 0, newItem.spriteHash.Length); } else { newItem.spriteId = items.minId; newItem.isCustomCreated = true; } items.Add(newItem); return newId; }
private bool compareItem(OtbItem item, bool compareHash) { if (item.type == ItemType.Deprecated) { return true; } SpriteItem spriteItem; if (currentPlugin.Instance.Items.TryGetValue(item.spriteId, out spriteItem)) { if (compareHash && !Utils.ByteArrayCompare(item.spriteHash, spriteItem.spriteHash)) { return false; } return item.isEqual(spriteItem); } return false; }