* If we serialize a bit array (for example, for tooltips in the goto menu) with an unknown source, don't crash: just show it as hex.
* Transparently save metadata after a version update.
* Don't crash if a eye-dropper selection starts out of range.
Image Editor tabs had a header tooltip that described the image loaded in them, but it only worked if the image came from a named table. Now images that are directly anchors will also have tooltips, and if the image has no anchor the original address will be used.
* When checking a dictionary for a case-insensitive key, go ahead and check with matching case first, since that's a much faster check.
* Don't spam-query the palette during the swap-step while dragging pixels around with the selection tool.
There is a second format for compressed tilemaps, where each tile gets only 1 byte instead of 2. This allows for a reduced number of tiles and no h/v flipping, but can save space.
This change implements the ability to import tilemaps with that format, as well as allowing the image editor to work with tilemaps of that format.
Emerald's townmap's tilemap uses only one byte per tile instead of the usual 2 bytes per tile. HMA can now read this format, but I can't write it yet. That'll be the next change hopefully.
If a sprite is being edited and the same sprite is used elsewhere in the same table, allow update using the palettes of the other elements as well. Example: potion, super potion, and hyper potion all share the same sprite.
If a palette is reordered, reorder other palettes used by the same sprite as well. This matters because all the palettes need to be updated or the edited sprite will look wrong.
Don't allow editing default palette
Keep palette collection palette page in sync as the page changes
Keep palette collection has-multiple-pages in sync with image editor
Fix bugs in Fill for non-0 pages
Some tilemaps have a page-offset that means that they don't use palette 0 for colors. But they may still use palette 0 for transparency. Allow tilemaps to always set a tile to palette 0.
I notice that I always zoom in basically as soon as I start using the image editor. With this change, that will still be true, but less so: the default size won't be silly.
Allow editing tilesets. This matters because some tiles in tilesets are used dynamically, such as the change-map button in the townmap. This isn't part of the initial image, but instead some tiles are swapped out dynamically.
When moving blocks around within a tilemap, there's no easy way to guarantee that the user is moving in tile increments, and multilpe tiles may employ different palettes.
As such, conisder that moving a block around moves the *index* of the palette being used, not the color. This will mostly work as expected, but can cause colors to change as they enter or exit regions that use different palettes.
* Only allow eyedropper to do 1x1, 2x2, 4x4, or 8x8 regions.
* If eyedropper does a region smaller than 8x8, only allow it to work on tiles that use that palette.
* If eyedropper does a region 8x8 (or 8x8 tile is selected), allow it to work on tiles that use any palette.
* can edit palettes for tiles
* can draw in valid tiles only (can't draw if the tile has a different palette)
* can bucket in valid tiles only
* eyedropper switches to the correct palette
Fill needs to use the palette-index-plus-palette-page value to set the parent.pixels, but needs to use just palette-index when picking the color to fill the parent.PixelData.
* Fix a few crashes
* Provide a tooltip for the image editor tab header (the name of the first element in the dropdown)
* Add a color mixer into the image editor, which is a free palette that you can use for whatever you want. It's not tied to the game data, it isn't saved anywhere when you exit, but you can play with the colors freely and it's shared between all image editors for the life of the app.
* If you open the mixer in one tab, it'll be open in other tabs.
* Press delete to clear a color
This changes the way we handle selection. Thing can no longer only care about the selection start/end: they have to check each element to see if it's selected.
This requires that the palette control recognize a pointer to the current palette, instead of just the address of the current palette. But since palettes can't be used by the game without a pointer, it's reasonable that there will always be a pointer for any palette being edited.
* Update table tool / sprite tool / image editor palette addresses when palettes get repointed.
Fix zoom limits
Fix selection move limits
Fix issue with 0 draw size when hovering with draw tool
Add tooltip for lz compression start token
Import from default TOML files on version upgrade.
Goto -> potion -> should work
File -> Save -> should work from image editor
Don't double-include the current table as a "related table" when searching for palette tables for a sprite.
If all the colors are in the original image, it works perfectly.
If not all the colors are in the original image, the non-existing colors are replaced with 'transparent'. This needs to be improved with cautious/smart/lazy options.