Keys count both as path nodes and attributes depending on context.
An example gfx.yaml:
```
gfx:
pics:
pal_file: normal.pal
pic_dimensions: yes
animate: yes
stupid_bitmask_hack: [dewgong, lugia]
pc:
literal_only: yes
```
Here, all graphics matching gfx/pics/.../*.png will use palette gfx/pics/.../normal.pal and be interpreted as animated pics. gfx/pc.2bpp will compress using only the `literal` command.
If gfx.yaml doesn't exist, current behavior is unchanged. Filename arguments override yaml.
Truncate colors in a palette beyond the limit of 4.
Make palette sorting more accurate by taking the sum of the hues rather than by luminance. Ultimately, palette order is up to the whim of whoever was drawing in the tile editor at the time, but this is a reasonable estimation.
Eval should really not be used in the first place, but at least it works again.
Fixes 82b78e5c79, which replaced the constants_to_dict method with BSSReader.
The map editor can now be invoked in ipython:
import extras.pokemontools.map_editor as ed
app = ed.init()
Then <app> can be modified on the fly to make up for lacking functionality.
Also see app.map.crop().
Now works with all maps in both Red and Crystal.
The version defaults to Crystal. To use with pokered, invoke from the command line:
python extras/pokemontools/map_editor.py red
Or in ipython:
import extras.pokemontools.map_editor as ed
app = ed.init(version='red')
Also displays connections, but they're unaligned.
Transposing non-square images would work over the expected width, rather than the current width (the expected height). This never came up since transposed images are typically square.
Before, converting a .2bpp.lz file required calling decompress and convert_to_png
on the compressed and decompressed files respectively.
gfx.py unlz {}.lz
gfx.py png {}
Putting a .lz file into convert_to_png would raise an exception.
Instead, passing compressed graphics into convert_to_png will decompress them first.
This skips the (now optional) manual decompress step.