private void ImportTilemap(byte[] array, int layer, int offset) { if (!checkBox4.Checked || tilemap.Tilemaps_tiles[layer] == null) { return; } int counter = 0; int extratiles = 256; bool mirror, invert; for (int i = 0; i < tilemap.Tilemaps_tiles[layer].Length; i++) { int tile = Bits.GetShort(array, offset) & 0x1FF; mirror = Bits.GetBit(array, offset + 1, 6); invert = Bits.GetBit(array, offset + 1, 7); tilemap.Tilemaps_tiles[layer][i] = tileset.Tilesets_tiles[layer][tile]; if (layer != 2) { Bits.SetShort(tilemap.Tilemaps_bytes[layer], counter, tile); counter += 2; offset += 2; } else { tilemap.Tilemaps_bytes[layer][counter] = (byte)tile; counter++; offset += 2; } if (tileset.Tilesets_tiles[layer] == null || tileset.Tilesets_tiles[layer].Length != 512) { continue; } if (mirror || invert) { Tile copy = tileset.Tilesets_tiles[layer][tile].Copy(); if (mirror) { Do.FlipHorizontal(copy); } if (invert) { Do.FlipVertical(copy); } Tile contains = Do.Contains(tileset.Tilesets_tiles[layer], copy); if (contains == null) { tileset.Tilesets_tiles[layer][extratiles] = copy; tileset.Tilesets_tiles[layer][extratiles].Index = extratiles; tilemap.Tilemaps_tiles[layer][i] = tileset.Tilesets_tiles[layer][extratiles]; Bits.SetShort(tilemap.Tilemaps_bytes[layer], counter - 2, extratiles); extratiles++; } else { tilemap.Tilemaps_tiles[layer][i] = tileset.Tilesets_tiles[layer][contains.Index]; Bits.SetShort(tilemap.Tilemaps_bytes[layer], counter - 2, contains.Index); } } } }
/// <summary> /// Enable or disable all or some controls within a parent control, starting at the parent control. /// Returns the controls that already have the enable status set. /// </summary> /// <param name="main">The main parent controls.</param> /// <param name="enable">Enable or disable the controls.</param> /// <param name="childOnly">If set to true, only controls that contain no child controls will be modified.</param> /// <param name="skip">The controls to ignore when changing enabled status.</param> public static ArrayList EnableControls(object main, bool enable, bool childOnly, bool firstLoop, params object[] skip) { if (firstLoop) { set = new ArrayList(); } if (main is ToolStrip) { foreach (ToolStripItem item in ((ToolStrip)main).Items) { if (!Do.Contains(item, skip)) { if (item.Enabled == enable) { set.Add(item); } else { item.Enabled = enable; } } } } else { foreach (Control parent in ((Control)main).Controls) { if (parent.Controls.Count == 0 || !childOnly && !Do.Contains(parent, skip)) { if (parent.Enabled == enable) { set.Add(parent); } else { parent.Enabled = enable; } } EnableControls(parent, enable, childOnly, false, skip); } } return(set); }
public void LoadHexEditor() { this.Updating = true; // vScrollBar1.Value = offset / 16; string bytes2 = ""; string bytes3 = ""; string offsets = ""; // in case enlarging when at end of ROM while (last_line > current.Length) { offset -= 16; } // int offset_line = offset & 0xFFFFF0; for (int i = 0; i < line_count; i++) { offsets += (i * 16 + offset_line).ToString("X6"); if (i < line_count - 1) { offsets += "\r"; } for (int a = 0; a < 16; a++) { bytes2 += (current[i * 16 + offset_line + a]).ToString("X2") + " "; bytes3 += (original[i * 16 + offset_line + a]).ToString("X2") + " "; } } // ROMOffsets.BeginUpdate(); ROMOffsets.Text = offsets; ROMOffsets.EndUpdate(); // ROMData.BeginUpdate(); currentROMData.Text = bytes2; originalROMData.Text = bytes3; currentROMData.SelectionStart = 0; currentROMData.SelectionLength = currentROMData.Text.Length; currentROMData.SelectionColor = Color.DarkBlue; for (int offsetCounter = offset & 0xFFFFF0, i = 0; i < line_count * 16; i++) { // first set the length of the changed offsets, to colorize all at once (b/c faster) int changedStart = 0; int changedLength = 0; Change change = Do.FindOffset(oldChanges, offsetCounter++); if (change != null) { changedStart = i * 3; if (change.Values.Length == 1) { changedLength = 3; while (Do.Contains(oldChanges, offsetCounter++)) { changedLength += 3; } i += changedLength / 3; } else { offsetCounter--; changedLength = (change.Values.Length - (offsetCounter - change.Offset)) * 3; i += changedLength / 3; offsetCounter += changedLength / 3; offsetCounter++; } } if (changedLength > 0) { currentROMData.SelectionStart = changedStart; currentROMData.SelectionLength = changedLength; currentROMData.SelectionColor = change.Color; } } currentROMData.SelectionStart = originalROMData.SelectionStart = selectionStart; currentROMData.SelectionLength = originalROMData.SelectionLength = selectionLength; ROMData.Focus(); ROMData.EndUpdate(); // UpdateInfoLabels(); // Finished this.Updating = false; }