Noah Petherbridge
4851730ccf
Levels can now be converted to RLE encoded chunk accessors and be re-saved continuously without any loss of information. Off-by-one errors resolved: * The rle.NewGrid() was adding a +1 everywhere making the 2D grids have 129 elements to a side for a 128 chunk size. * In rle.Decompress() the cursor value and translation to X,Y coordinates is fixed to avoid a pixel going missing at the end of the first row (128,0) * The abs.X-- hack in UnmarshalBinary is no longer needed to prevent the chunks from scooting a pixel to the right on every save. Doodad tool updates: * Remove unused CLI flags in `doodad resave` (actors, chunks, script, attachment, verbose) and add a `--output` flag to save to a different file name to the original. * Update `doodad show` to allow debugging of RLE compressed chunks: * CLI flag `--chunk=1,2` to specify a single chunk coordinate to debug * CLI flag `--visualize-rle` will Visualize() RLE compressed chunks in their 2D grid form in your terminal window (VERY noisy for large levels! Use the --chunk option to narrow to one chunk). Bug fixes and misc changes: * Chunk.Usage() to return a better percentage of chunk utilization. * Chunker.ChunkFromZipfile() was split out into two functions: * RawChunkFromZipfile retrieves the raw bytes of the chunk as well as the file extension discovered (.bin or .json) so the caller can interpret the bytes correctly. * ChunkFromZipfile calls the former function and then depending on file extension, unmarshals from binary or json. * The Raw function enables the `doodad show` command to debug and visualize the raw contents of the RLE compressed chunks. * Updated the Visualize() function for the RLE encoder: instead of converting palette indexes to hex (0-F) which would begin causing problems for palette indexes above 16 (as they would use two+ characters), indexes are mapped to a wider range of symbols (0-9A-Z) and roll over if you have more than 36 colors on your level. This at least keeps the Visualize() grid an easy to read 128x128 characters in your terminal. |
||
---|---|---|
.. | ||
balance | ||
branding | ||
campaign | ||
chatbot | ||
collision | ||
cursor | ||
doodads | ||
drawtool | ||
enum | ||
filesystem | ||
gamepad | ||
keybind | ||
level | ||
levelpack | ||
log | ||
modal | ||
native | ||
pattern | ||
physics | ||
plus | ||
savegame | ||
scripting | ||
shmem | ||
sound | ||
sprites | ||
uix | ||
updater | ||
usercfg | ||
userdir | ||
wallpaper | ||
wasm | ||
windows | ||
cheats.go | ||
commands.go | ||
common_menubar.go | ||
config.go | ||
doodle.go | ||
editor_scene_debug.go | ||
editor_scene.go | ||
editor_ui_doodad.go | ||
editor_ui_menubar.go | ||
editor_ui_palette.go | ||
editor_ui_popups.go | ||
editor_ui_toolbar.go | ||
editor_ui.go | ||
fps.go | ||
guitest_scene.go | ||
main_scene.go | ||
menu_scene.go | ||
play_inventory.go | ||
play_scene_menubar.go | ||
play_scene_touch.go | ||
play_scene.go | ||
player_physics.go | ||
scene.go | ||
shell.go |