i was adding color replacement and it got overly complicated very quickly because the file data and the displayed images were not "linked". so i've changed/written/rewritten the code so that if you modify the displayed image, it will automagically update the file and all related images.
so the current color replacement is rudimentary but i wanted to post because i'm just glad the linked images stuff works. there are two other color replacement methods, but this just shows that when you right click on a color, you can replace it with the current color. i'll add some stuff so that it will be obvious how it works. anyway, here it is:
this seemingly minor update required a lot of work.
i fixed the undo/redo code that got busted when switching to the new image system. however, i havent gotten writing the undo/redo code for adding/removing colors because the automatic palette optimization really complicates matters because it can modify many palettes, tiles/sprites and the tile/sprite to palette association table.
a good feature is that now when you add a color, it doesnt reorganize your palette which happened because of how the colors were being stored while creating the new palettes. anyway, it will match up as many color positions that were in the palette before colors were added/removed. it was just something that bothered me.
there isnt anything that could be demonstrated in a screenshot, so no screenshot today.
upon consolidating/fixing undo/redo code i managed to unintentionally fix a very annoying undo bug in the tile editor. however, i haven't added any undo/redo code for the color replacement stuff but i have added global palette color replacement. local image color isn't working though. anyway, the most important parts of the undo/redo system work perfectly which is a core feature. you don't realize how important undo/redo is until it's missing. like i said before, each tab has it's own undo/redo buffer which is also very important. hopefully no more mysterious edge case bugs crop up.
well... i accidentally broke the automagic palette optimizer code and it was beyond repair due to it's hacky nature. anyway, i rewrote the code almost completely from scratch but i did it right this time so it's not hacky at all. i still have some edge cases to fix but in general it works without crazy undo/redo bugs. sane code is nice but spending time on it is not.
the automagic palette optimization is the most distinctive feature of the editor (especially since it's 9-bit color) so i really need to ensure it works. having the editor not crash while you are working on detailed drawing is a good thing too.
i'm considering having a small database that will keep all the undo/redo edits for a file even if you close the program so that you never really lose anything if you mess up and accidentally save it or if you dont save it at all. the whole "are you sure you want to close this document without saving?" dialog is just annoying. i think other programs like word processors should work the same way too. i'm also considering being able to save projects online so that you can freely share it but for right now, i need to finish the editing part of the editor.