private void PaletteListBox_MouseDoubleClick(object sender, MouseButtonEventArgs e) { DisplayTuple <string, TilesetModel> selectedTileset = (DisplayTuple <string, TilesetModel>)TilesetListBox.SelectedItem; if (selectedTileset == null) { return; } DisplayTuple <int, PaletteModel> selected = (DisplayTuple <int, PaletteModel>)PaletteListBox.SelectedItem; if (selected == null) { return; } PaletteEditorWindow paletteEditorWindow = new PaletteEditorWindow(selected.Value, selected.Index); paletteEditorWindow.Owner = this; bool result = (bool)paletteEditorWindow.ShowDialog(); if (result && paletteEditorWindow.DialogDataResult != null) { int selectedIndex = PaletteListBox.SelectedIndex; selected.Value = paletteEditorWindow.DialogDataResult; selectedTileset.Value.SelectedPalette = selectedTileset.Value.Palettes[selectedIndex]; } }
private void ChangeGraphicButton_Click(object sender, RoutedEventArgs e) { DisplayTuple <string, TilesetModel> selected = (DisplayTuple <string, TilesetModel>)TilesetListBox.SelectedItem; if (selected == null) { return; } loadGraphicDialog.FileName = ""; System.Windows.Forms.DialogResult result = loadGraphicDialog.ShowDialog(); if (result == System.Windows.Forms.DialogResult.Abort || result == System.Windows.Forms.DialogResult.Cancel) { return; } try { BitmapImage img = new BitmapImage(new Uri(loadGraphicDialog.FileName, UriKind.Absolute)); if (img.Format != PixelFormats.Indexed4) { throw new Exception("Image has not 4 indexed bit per pixel"); } selected.Value.GraphicPath = loadGraphicDialog.FileName; } catch (Exception ex) { MessageBox.Show("Error: " + ex.Message, "Import error", MessageBoxButton.OK, MessageBoxImage.Error); } }
private void AddMapContextEntry_Click(object sender, RoutedEventArgs e) { DisplayTuple <int, IBankModel> selected = (DisplayTuple <int, IBankModel>)MapTreeView.SelectedItem; if (selected == null || selected.Value.EntryMode == BankEntryType.Nullpointer) { return; } ((BankModel)selected.Value).Maps.Add(new DisplayTuple <int, IMapModel>(((BankModel)selected.Value).Maps.Count, new MapHeaderModel(new LazyReference <MapHeader>(new MapHeader()), ((BankModel)selected.Value), App.MainViewModel))); }
public TilesetModel(LazyReference <Tileset> tileset, BlockEditorModel parentEditorModel) : base(tileset) { _graphicPath = tileset.Data.Graphic; _compressed = tileset.Data.Compressed; _secondary = tileset.Data.Secondary; _field2 = tileset.Data.Field2; _field3 = tileset.Data.Field3; _palettes = new ObservableCollectionEx <DisplayTuple <int, PaletteModel> >(tileset.Data.Palettes.Select((p, pi) => new DisplayTuple <int, PaletteModel>(pi, new PaletteModel(p)))); _palettes.ItemPropertyChanged += Palettes_ItemPropertyChanged; _blocks = new ObservableCollectionEx <TilesetEntryModel>(tileset.Data.Blocks.Select(p => new TilesetEntryModel(p, this))); _selectedPalette = _palettes[0]; _blockEditorViewModel = parentEditorModel; _phHandler = new PropertyDependencyHandler(this); }
private void RemoveTilesetContextEntry_Click(object sender, RoutedEventArgs e) { DisplayTuple <string, TilesetModel> selected = (DisplayTuple <string, TilesetModel>)TilesetListBox.SelectedItem; if (selected == null) { return; } MessageBoxResult result = MessageBox.Show("Delete this tileset?", "Delete tileset", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel); if (result == MessageBoxResult.Cancel) { return; } dataModel.Tilesets.Remove(selected); }
private void ReplaceEmptyMapContextEntry_Click(object sender, RoutedEventArgs e) { DisplayTuple <int, IBankModel> selected = (DisplayTuple <int, IBankModel>)MapTreeView.SelectedItem; if (selected == null || selected.Value.EntryMode == BankEntryType.Bank) { return; } MessageBoxResult result = MessageBoxResult.Cancel; result = MessageBox.Show("Replace this bank placeholder with a real one?", "Replace map", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel); if (result == MessageBoxResult.OK) { selected.Value = new BankModel(new List <LazyReference <MapHeader> >(), App.MainViewModel); } }
private void ReplaceMapContextEntry_Click(object sender, RoutedEventArgs e) { DisplayTuple <int, IMapModel> selected = (DisplayTuple <int, IMapModel>)MapTreeView.SelectedItem; if (selected == null) { return; } MessageBoxResult result = MessageBoxResult.Cancel; result = MessageBox.Show("Replace this map with a new one?", "Replace map", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel); if (result == MessageBoxResult.OK) { selected.Value = new MapHeaderModel(new LazyReference <MapHeader>(new MapHeader()), selected.Value.Bank, App.MainViewModel); } }
private void AddTilesetButton_Click(object sender, RoutedEventArgs e) { string namePrefix = "NONAME"; int nameCounter = 0; while (true) { if (!dataModel.Tilesets.Any(p => p.Index == namePrefix + nameCounter)) { break; } nameCounter++; } DisplayTuple <string, TilesetModel> newElement = new DisplayTuple <string, TilesetModel>(namePrefix + nameCounter, new TilesetModel(new LazyReference <Tileset>(new Tileset()), dataModel)); dataModel.Tilesets.Add(newElement); TilesetListBox.SelectedItem = newElement; }
private void MoveBankDownContextEntry_Click(object sender, RoutedEventArgs e) { DisplayTuple <int, IBankModel> selected = (DisplayTuple <int, IBankModel>)MapTreeView.SelectedItem; if (selected == null) { return; } int index = App.MainViewModel.Banks.IndexOf(selected); if (index < App.MainViewModel.Banks.Count - 1) { DisplayTuple <int, IBankModel> target = App.MainViewModel.Banks[index + 1]; target.Index -= 1; selected.Index += 1; App.MainViewModel.Banks[index + 1] = App.MainViewModel.Banks[index]; App.MainViewModel.Banks[index] = target; } }
private void MoveMapDownContextEntry_Click(object sender, RoutedEventArgs e) { DisplayTuple <int, IMapModel> selected = (DisplayTuple <int, IMapModel>)MapTreeView.SelectedItem; if (selected == null) { return; } BankModel currentBank = selected.Value.Bank; int index = currentBank.Maps.IndexOf(selected); if (index < selected.Value.Bank.Maps.Count - 1) { DisplayTuple <int, IMapModel> target = selected.Value.Bank.Maps[index + 1]; target.Index -= 1; selected.Index += 1; currentBank.Maps[index + 1] = selected.Value.Bank.Maps[index]; currentBank.Maps[index] = target; } }
private void RemoveMapContextEntry_Click(object sender, RoutedEventArgs e) { DisplayTuple <int, IMapModel> selected = (DisplayTuple <int, IMapModel>)MapTreeView.SelectedItem; if (selected == null) { return; } MessageBoxResult result = MessageBoxResult.Cancel; if (selected.Value.EntryMode == MapEntryType.Map) { result = MessageBox.Show ("You are about to delete a map. Do you want to replace it with a placeholder?", "Delete map", MessageBoxButton.YesNoCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel); } else { result = MessageBox.Show ("You are about to delete a map placeholder. Update indices?", "Delete map placeholder", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel); } if (result != MessageBoxResult.Cancel) { if (result == MessageBoxResult.Yes) { selected.Value = new NullpointerMapModel(selected.Value.Bank); } else if (result == MessageBoxResult.No || result == MessageBoxResult.OK) { var bank = selected.Value.Bank; bank.Maps.Remove(selected); for (int i = 0; i < bank.Maps.Count; i++) { bank.Maps[i].Index = i; } } } }